PageSourceSearch

https://limewire.com/build/chunks/dynamic/pdf-viewer-suspended-BTKzWNhw.js

js limewire.com collected 2026-09-24 08:25:36 UTC 2,320,608 bytes, 148 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["build/chunks/dynamic/lib-BiapEtK1-CLg7zBhG.js","build/chunks/jsx-runtime-D_zvdyIk.js","build/chunks/index-5zs3RZdd.js","build/chunks/chunk-4N6VE7H7-CYH4PXiQ.js","build/chunks/preload-helper-ckwbz45p.js","build/chunks/tooltip-Dh-GCyoz.js","build/chunks/use-controlled-state-6BKWRsRt.js","build/chunks/use-state-ref-0aYGV7fB.js","build/chunks/use-callback-ref-CJ9SODNh.js","build/chunks/use-const-CyuDI2Jw.js","build/chunks/resolve-to-node-Bl44lgnH.js","build/chunks/content-item-name-CxpMxVCg.js","build/chunks/get-sharing-bucket-expiration-label-CKPg3s26.js","build/chunks/auth-form-B9yFKAsj.js","build/chunks/file-sharing-provider-DWrH9fGx.js","build/chunks/get-api-DWzc_bBF.js","build/chunks/runtime-2_b2CLRu.js","build/chunks/result-BtcenhOc.js","build/chunks/runtime-a9fv597q.js","build/chunks/VerificationStatusEnum-BMWjV5ER.js","build/chunks/AccountSubscriptionTier-Cz37hh3K.js","build/chunks/UsStateCodeAlpha2-sRkxuwjy.js","build/chunks/form-schema-utils-CKHKKg7G.js","build/chunks/types-CeqL-daw.js","build/chunks/modal-content-window-title-header-DByhHMtf.js","build/chunks/noop-BjFrJKj1.js","build/chunks/base-button-BOVQiXV3.js","build/chunks/focus-visible-outline-CA5WDHp1.js","build/chunks/form-validation-BmVkRcjs.js","build/chunks/alert-Bsob527P.js","build/chunks/use-self-cancel-timeout-DCHuMrr-.js","build/chunks/use-self-cancel-interval-BgB7hfvd.js","build/chunks/toggle-group-BSQQLJtK.js","build/chunks/createFormData-6W1bV2BK.js","build/chunks/button-CB2fQLpx.js","build/chunks/link-button-Dgv_yPAf.js","build/chunks/env-context-DebTkedx.js","build/chunks/use-typed-explicit-fetcher-fhEyK6eX.js","build/chunks/authenticity-token-CFgl6Z4h.js","build/chunks/auth-form-validation-C7l7Lp9m.js","build/chunks/auth-context-DVtKf2vI.js","build/chunks/navigation-link-De5ItD8a.js","build/chunks/app-integration-provider-4-SaOz_c.js","build/chunks/app-integration-loading-D3uWt4C6.js","build/chunks/client-only-CnbT09nL.js","build/chunks/auth-window-messenger-DvswJzyt.js","build/chunks/use-external-wallet-DbvtV7U2.js","build/chunks/create-lazy-singleton-cLopSc4o.js","build/chunks/divider-Bx5FVaq5.js","build/chunks/file-name-Oqq8UyWy.js","build/chunks/arrow-right-icon-CJx94PN2.js","build/chunks/feedback-tooltip-DnQoTtgx.js"])))=>i.map(i=>d[i]);
2var vT=Object.defineProperty;var sN=i=>{throw TypeError(i)};var QT=(i,l,t)=>l in i?vT(i,l,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[l]=t;var E=(i,l,t)=>QT(i,typeof l!="symbol"?l+"":l,t),Fu=(i,l,t)=>l.has(i)||sN("Cannot "+t);var a=(i,l,t)=>(Fu(i,l,"read from private field"),t?t.call(i):l.get(i)),L=(i,l,t)=>l.has(i)?sN("Cannot add the same private member more than once"):l instanceof WeakSet?l.add(i):l.set(i,t),p=(i,l,t,e)=>(Fu(i,l,"write to private field"),e?e.call(i,t):l.set(i,t),t),z=(i,l,t)=>(Fu(i,l,"access private method"),t);var rt=(i,l,t,e)=>({set _(s){p(i,l,s,t)},get _(){return a(i,l,e)}});import{j as G}from"../jsx-runtime-D_zvdyIk.js";import{c as PT}from"../index-5zs3RZdd.js";import{v as u,R as xd}from"../chunk-4N6VE7H7-CYH4PXiQ.js";import{_ as HT}from"../preload-helper-ckwbz45p.js";import{b9 as Kr,be as fT}from"../tooltip-Dh-GCyoz.js";import{P as iN,p as BT}from"../content-item-name-CxpMxVCg.js";import{u as AT}from"../get-api-DWzc_bBF.js";var cN={searchButtonTooltip:"Search in Document",searchInputPlaceholder:"Enter to search",searchInputTooltip:"Search",searchPrevTooltip:"Previous match",searchNextTooltip:"Next match",searchCloseButtonTooltip:"Close",searchMatchCaseLabel:"Match Case",searchMatchCaseTooltip:"Search case sensitive text",searchWholeWordsLabel:"Whole Words",searchWholeWordsTooltip:"Search exact and case insensitive word(s)",previousPageTooltip:"Previous page",currentPageTooltip:"Current page",nextPageTooltip:"Next page",zoomOutTooltip:"Zoom out",zoomInTooltip:"Zoom in",zoomSelectTooltip:"Select zoom level",zoomActualSize:"Actual Size",zoomPageFit:"Page Fit",zoomPageWidth:"Page Width",themeEnableDarkTooltip:"Enable dark theme",themeEnableLightTooltip:"Enable light theme",openLocalFileLabel:"Open local file",openLocalFileTooltip:"Open local file",downloadFileLabel:"Download file",downloadFileTooltip:"Download file",printLabel:"Print",printTooltip:"Print",printLoadingMessage:"Preparing Document",printCancelLabel:"Cancel",fullScreenLabel:"Full screen",fullScreenTooltip:"Full screen",moreOptionTooltip:"More options",firstPageLabel:"First page",firstPageTooltip:"Go to first page",lastPageLabel:"Last page",lastPageTooltip:"Go to last page",rotateClockwise
2Label:"Rotate clockwise",rotateClockwiseTooltip:"Rotate clockwise",rotateCounterclockwiseLabel:"Rotate counterclockwise",rotateCounterclockwiseTooltip:"Rotate counterclockwise",textSelectionLabel:"Text selection tool",textSelectionTooltip:"Enable text selection tool",handToolLabel:"Hand tool",handToolTooltip:"Enable hand tool",documentPropertiesLabel:"Document properties",documentPropertiesTooltip:"View document properties",pageScrollingLabel:"Page scrolling",pageScrollingTooltip:"Enable page scrolling",verticalScrollingLabel:"Vertical scrolling",verticalScrollingTooltip:"Enable vertical scrolling",horizontalLabel:"Horizontal scrolling",horizontalTooltip:"Enable horizontal scrolling",wrappedScrollingLabel:"Wrapped scrolling",wrappedScrollingTooltip:"Enable wrapped scrolling",singlePageLabel:"Single page",singlePageTooltip:"Enable single page view",dualPageLabel:"Dual page",dualPageTooltip:"Enable dual page view",dualPageWithCoverLabel:"Dual page with cover",dualPageWithCoverTooltip:"Enable dual page view with cover",propertiesFilenameLabel:"File name",propertiesFileSizeLabel:"File size",propertiesTitleLabel:"Title",propertiesAuthorLabel:"Author",propertiesSubjectLabel:"Subject",propertiesKeywordLabel:"Keywords",propertiesCreatorLabel:"Creator",propertiesCreateOnLabel:"Created on",propertiesModifiedOnLabel:"Modified on",propertiesPDFProducerLabel:"PDF producer",propertiesPDFVersionLabel:"PDF version",propertiesPageCountLabel:"Page count",thumbnailTooltip:"Thumbnail",passwordModalTitle:"Password Required",passwordModalMessage:"This document is password protected. Please enter a password to open the file.",passwordPlaceholder:"Enter password",passwordConfirmLabel:"Submit",passwordError:"Incorrect password",dragDropFileMessage:"Drag and drop the PDF file here"},_T={searchButtonTooltip:"搜索文件",searchInputPlaceholder:"输入搜索词",searchInputTooltip:"搜索",searchPrevTooltip:"上一条",searchNextTooltip:"下一条",searchCloseButtonTooltip:"关闭",searchMatchCaseLabel:"区分大小写",searchMatchCaseTooltip:"搜索区分大小写",searchWholeWordsLabel:"全字匹配",searchWholeWordsTooltip:"搜索完全匹配",previousPageTooltip:"上一页",currentPageTooltip:"当前页",nextPageTooltip:"下一页",zoomOutTooltip:"缩小",zoomInTooltip:"放大",zoomSelectTooltip:"选择缩放级别",zoomActualSize:"实际大小",zoomPageFit:"适合页面",zoomPageWidth:"页面宽度",themeEnableDarkTooltip:"切换到深色模式",themeEnableLightTooltip:"切换到浅色模式",openLocalFileLabel:"打开文件",openLocalFileTooltip:"打开文件",downloadFileLabel:"下载文件",downloadFileTooltip:"下载文件",printLabel:"打印",printTooltip:"打印",printLoadingMessage:"准备文件",printCancelLabel:"取消",fullScreenLabel:"全屏",fullScreenTooltip:"全屏",moreOptionTooltip:"更多选项",f
2irstPageLabel:"第一页",firstPageTooltip:"跳转到第一页",lastPageLabel:"最后一页",lastPageTooltip:"跳转到最后一页",rotateClockwiseLabel:"顺时针旋转",rotateClockwiseTooltip:"顺时针旋转",rotateCounterclockwiseLabel:"逆时针旋转",rotateCounterclockwiseTooltip:"逆时针旋转",textSelectionLabel:"文本选择工具",textSelectionTooltip:"启用文本选择工具",handToolLabel:"手型工具",handToolTooltip:"启用手型工具",documentPropertiesLabel:"文件属性",documentPropertiesTooltip:"查看文件属性",pageScrollingLabel:"页面滚动",pageScrollingTooltip:"启用页面滚动",verticalScrollingLabel:"垂直滚动",verticalScrollingTooltip:"启用垂直滚动",horizontalLabel:"水平滚动",horizontalTooltip:"启用水平滚动",wrappedScrollingLabel:"环绕滚动",wrappedScrollingTooltip:"启用环绕滚动",singlePageLabel:"单页面视图",singlePageTooltip:"启用单页视图",dualPageLabel:"双页面视图",dualPageTooltip:"启用双页视图",dualPageWithCoverLabel:"封面双页面视图",dualPageWithCoverTooltip:"启用封面双页视图",propertiesFilenameLabel:"文件名称",propertiesFileSizeLabel:"文件大小",propertiesTitleLabel:"标题",propertiesAuthorLabel:"作者",propertiesSubjectLabel:"主题",propertiesKeywordLabel:"关键字",propertiesCreatorLabel:"创建者",propertiesCreateOnLabel:"创建于",propertiesModifiedOnLabel:"修改于",propertiesPDFProducerLabel:"PDF 制作程序 ",propertiesPDFVersionLabel:"PDF版本",propertiesPageCountLabel:"页数",thumbnailTooltip:"缩略图",passwordModalTitle:"需要密码",passwordModalMessage:"此文件受密码保护。请输入密码以打开文件。",passwordPlaceholder:"输入密码",passwordConfirmLabel:"提交",passwordError:"密码错误",dragDropFileMessage:"将PDF文件拖放到这里"},qT={searchButtonTooltip:"Cerca nel documento",searchInputPlaceholder:"Premi Invio per cercare",searchInputTooltip:"Cerca",searchPrevTooltip:"Corrispondenza precedente",searchNextTooltip:"Corrispondenza successiva",searchCloseButtonTooltip:"Chiudi",searchMatchCaseLabel:"Maiuscole/minuscole",searchMatchCaseTooltip:"Cerca testo con distinzione maiuscole/minuscole",searchWholeWordsLabel:"Parola intera",searchWholeWordsTooltip:"Cerca esatte parole senza distinzione maiuscole/minuscole",previousPageTooltip:"Pagina precedente",currentPageTooltip:"Pagina corrente",nextPageTooltip:"Pagina successiva",zoomOutTooltip:"Ridurre",zoomInTooltip:"Ingrandire",zoomSelectTooltip:"Seleziona un livello di zoom",zoomActualSize:"Dimensioni effettive",zoomPageFit:"Adatta pagina",zoomPageWidth:"Larghezza pagina",themeEnableDarkTooltip:"Abilita tema scuro",themeEnableLightTooltip:"Abilita tema chiaro",openLocalFileLabel:"Aprire file",openLocalFileTooltip:"Aprire file",downloadFileLabel:"Scaricare file",downloadFileTooltip:"Scaricare file",printLabel:"Stampa",printTooltip:"Stampa",printLoadingMessage:"Preparazione del documento",printCancelLabel:"Annulla",fullScreenLabel:"Schermo intero",fullScreenTooltip:"Schermo intero",moreOptionTooltip:"Altre opzioni",firstPageLabel:"Prima pagina",firstPageTooltip:"Vai alla prima pagina",lastPageLabel:"Ultima pagina",lastPageTooltip:"Vai all’ultima pagina",rotateClockwiseLabel:"Ruota in senso orario",rotateClockwiseTooltip:"Ruota in senso orario",rotateCounterclockwiseLabel:"Ruota in senso antiorario",rotateCounterclockwiseTooltip:"Ruota in senso antiorario",textSelectionLabel:"Strumento di selezione testo",textSelectionTooltip:"Abilita strumento di selezione testo",handToolLabel:"Strumento mano",handToolTooltip:"Abilita strumento mano",documentPropertiesLabel:"Proprietà documento",documentPropertiesTooltip:"Visualizza proprietà documento",pageScrollingLabel:"Scorrimento pagina",pageScrollingTooltip:"Abilita lo scorrimento delle pagine",verticalScrollingLabel:"Scorrimento verticale",verticalScrollingTooltip:"Abilita lo scorrimento verticale",horizontalLabel:"Scorrimento orizzontale",horizontalTooltip:"Abilita lo scorrimento orizzontale",wrappedScrollingLabel:"Scorrimento avvolto",wrappedScrollingTooltip:"Abilita lo scorrimento avvolto",singlePageLabel:"Singolo",singlePageTooltip:"Visualizzazione singola",dualPageLabel:"Doppio",dualPageTooltip:"Visualizzazione doppio",dualPageWithCoverLabel:"Doppio con copertina",dualPageWithCoverTooltip:"Visualizzazione doppio con copertina",propertiesFilenameLabel:"Nome file",propertiesFileSizeLabel:"Dimensione file",propertiesTitleLabel:"Titolo",propertiesAuthorLabel:"Autore",propertiesSubjectLabel:"Oggetto",propertiesKeywordLabel:"Parole chiave",propertiesCreatorLabel:"Creatore",propertiesCreateOnLabel:"Creato il",propertiesModifiedOnLabel:"Modificato il",propertiesPDFProducerLabel:"Produttore PDF",propertiesPDFVersionLabel:"Versione PDF",propertiesPageCountLabel:"Numero di pagine",thumbnailTooltip:"Miniature",passwordModalTitle:"Password richiesta",passwordModalMessage:"Questo documento è protetto da password. Si prega di inserire una password per aprire il file.",passwordPlaceholder:"Inserisci la password",passwordConfirmLabel:"Invia",passwordError:"Password errata",dragDropFileMessage:"Trascina e rilascia il file PDF qui"},$T={searchButtonTooltip:"Pesquisar no documento",searchInputPlaceholder:"Pressione Enter para pesquisar",searchInputTooltip:"Pesquisar",searchPrevTooltip:"
2Correspondência anterior",searchNextTooltip:"Correspondência seguinte",searchCloseButtonTooltip:"Fechar",searchMatchCaseLabel:"Diferenciar maiúsculas/minúsculas",searchMatchCaseTooltip:"Pesquisar texto com distinção de maiúsculas/minúsculas",searchWholeWordsLabel:"Palavra inteira",searchWholeWordsTooltip:"Pesquisar palavras exatas sem distinção de maiúsculas/minúsculas",previousPageTooltip:"Página anterior",currentPageTooltip:"Página atual",nextPageTooltip:"Próxima página",zoomOutTooltip:"Reduzir",zoomInTooltip:"Ampliar",zoomSelectTooltip:"Selecionar nível de zoom",zoomActualSize:"Tamanho real",zoomPageFit:"Ajustar à página",zoomPageWidth:"Largura da página",themeEnableDarkTooltip:"Ativar tema escuro",themeEnableLightTooltip:"Ativar tema claro",openLocalFileLabel:"Abrir arquivo",openLocalFileTooltip:"Abrir arquivo",downloadFileLabel:"Baixar arquivo",downloadFileTooltip:"Baixar arquivo",printLabel:"Imprimir",printTooltip:"Imprimir",printLoadingMessage:"Preparando documento",printCancelLabel:"Cancelar",fullScreenLabel:"Tela inteira",fullScreenTooltip:"Tela inteira",moreOptionTooltip:"Mais opções",firstPageLabel:"Primeira página",firstPageTooltip:"Ir para a primeira página",lastPageLabel:"Última página",lastPageTooltip:"Ir para a última página",rotateClockwiseLabel:"Girar no sentido horário",rotateClockwiseTooltip:"Girar no sentido horário",rotateCounterclockwiseLabel:"Girar no sentido anti-horário",rotateCounterclockwiseTooltip:"Girar no sentido anti-horário",textSelectionLabel:"Ferramenta de seleção de texto",textSelectionTooltip:"Ativar ferramenta de seleção de texto",handToolLabel:"Ferramenta de mão",handToolTooltip:"Ativar ferramenta de mão",documentPropertiesLabel:"Propriedades do documento",documentPropertiesTooltip:"Ver propriedades do documento",pageScrollingLabel:"Rolagem página",pageScrollingTooltip:"Ativar rolagem de página",verticalScrollingLabel:"Rolagem vertical",verticalScrollingTooltip:"Ativar rolagem vertical",horizontalLabel:"Rolagem horizontal",horizontalTooltip:"Ativar rolagem horizontal",wrappedScrollingLabel:"Rolagem envolvida",wrappedScrollingTooltip:"Ativar rolagem envolvente",singlePageLabel:"Página única",singlePageTooltip:"Ativar página única",dualPageLabel:"Página dupla",dualPageTooltip:"Ativar página dupla",dualPageWithCoverLabel:"Página dupla com capa",dualPageWithCoverTooltip:"Ativar página dupla com capa",propertiesFilenameLabel:"Nome do arquivo",propertiesFileSizeLabel:"Tamanho do arquivo",propertiesTitleLabel:"Título",propertiesAuthorLabel:"Autor",propertiesSubjectLabel:"Assunto",propertiesKeywordLabel:"Palavras-chave",propertiesCreatorLabel:"Criador",propertiesCreateOnLabel:"Criado em",propertiesModifiedOnLabel:"Modificado em",propertiesPDFProducerLabel:"Produtor do PDF",propertiesPDFVersionLabel:"Versão do PDF",propertiesPageCountLabel:"Número de páginas",thumbnailTooltip:"Miniatura",passwordModalTitle:"Senha necessária",passwordModalMessage:"Este documento é protegido por senha. Por favor, insira uma senha para abrir o arquivo.",passwordPlaceholder:"Insira a senha",passwordConfirmLabel:"Enviar",passwordError:"Senha incorreta",dragDropFileMessage:"Arraste e solte o arquivo PDF aqui"},l5={searchButtonTooltip:"ค้นหาในเอกสาร",searchInputPlaceholder:"กรอกคำค้นหา",searchInputTooltip:"ค้นหา",searchPrevTooltip:"ผลการค้นหาก่อนหน้า",searchNextTooltip:"ผลการค้นหาถัดไป",searchCloseButtonTooltip:"ปิด",searchMatchCaseLabel:"ข้อความที่มีคำ",searchMatchCaseTooltip:"ค้นหาข้อความที่มีการแยกตัวพิมพ์ใหญ่/พิมพ์เล็ก",searchWholeWordsLabel:"ทั้งคำ",searchWholeWordsTooltip:"ค้นหาคำที่ตรงตัวไม่มีการแยกตัวพิมพ์ใหญ่/พิมพ์เล็ก",previousPageTooltip:"หน้าก่อนหน้า",currentPageTooltip:"หน้าปัจจุบัน",nextPageTooltip:"หน้าถัดไป",zoomOutTooltip:"ย่อ",zoomInTooltip:"ขยาย",zoomSelectTooltip:"เลือกระดับซูม",zoomActualSize:"ขนาดจริง",zoomPageFit:"พอดีหน้า",zoomPageWidth:"พอดีความกว้าง",themeEnableDarkTooltip:"เปิดโหมดมืด",themeEnableLightTooltip:"เปิดโหมดสว่าง",openLocalFileLabel:"เปิดไฟล์",openLocalFileTooltip:"เปิดไฟล์",downloadFileLabel:"ดาวน์โหลดเอกสาร",downloadFileTooltip:"ดาวน์โหลดเอกสาร",printLabel:"พิมพ์",printTooltip:"พิมพ์",printLoadingMessage:"เตรียมเอกสาร",printCancelLabel:"ยกเลิก",fullScreenLabel:"เต็มจอ",fullScreenTooltip:"เต็มจอ",moreOptionTooltip:"ตัวเลือกเพิ่มเติม",firstPageLabel:"หน้าแรก",firstPageTooltip:"ไปที่หน้าแรก",lastPageLabel:"หน้าสุดท้าย",lastPageTooltip:"ไปที่หน้าสุดท้าย",rotateClockwise
2Label:"หมุนตามเข็มนาฬิกา",rotateClockwiseTooltip:"หมุนตามเข็มนาฬิกา",rotateCounterclockwiseLabel:"หมุนทวนเข็มนาฬิกา",rotateCounterclockwiseTooltip:"หมุนทวนเข็มนาฬิกา",textSelectionLabel:"เครื่องมือเลือกข้อความ",textSelectionTooltip:"เปิดใช้การเลือกข้อความ",handToolLabel:"เครื่องมือแฮนด์ทูล",handToolTooltip:"เปิดใช้แฮนด์ทูล",documentPropertiesLabel:"คุณสมบัติของเอกสาร",documentPropertiesTooltip:"ดูคุณสมบัติของเอกสาร",pageScrollingLabel:"การเลื่อนภายในหน้า",pageScrollingTooltip:"เปิดใช้การเลื่อนภายในหน้า",verticalScrollingLabel:"การเลื่อนแนวตั้ง",verticalScrollingTooltip:"เปิดใช้การเลื่อนแนวตั้ง",horizontalLabel:"การเลื่อนแนวนอน",horizontalTooltip:"เปิดใช้การเลื่อนแนวนอน",wrappedScrollingLabel:"การเลื่อนแบบแรพ",wrappedScrollingTooltip:"เปิดใช้การเลื่อนแบบแรพ",singlePageLabel:"หน้าเดี่ยว",singlePageTooltip:"เปิดใช้หน้าเดี่ยว",dualPageLabel:"หน้าคู่",dualPageTooltip:"เปิดใช้หน้าคู่",dualPageWithCoverLabel:"หน้าคู่พร้อมปก",dualPageWithCoverTooltip:"เปิดใช้หน้าคู่พร้อมปก",propertiesFilenameLabel:"ชื่อเอกสาร",propertiesFileSizeLabel:"ขนาดเอกสาร",propertiesTitleLabel:"ชื่อเรื่อง",propertiesAuthorLabel:"ผู้เขียน",propertiesSubjectLabel:"หัวข้อ",propertiesKeywordLabel:"คำสำคัญ",propertiesCreatorLabel:"ผู้สร้าง",propertiesCreateOnLabel:"วันที่สร้าง",propertiesModifiedOnLabel:"วันที่แก้ไข",propertiesPDFProducerLabel:"ผู้ผลิต PDF",propertiesPDFVersionLabel:"เวอร์ชัน PDF",propertiesPageCountLabel:"จำนวนหน้า",thumbnailTooltip:"ภาพย่อ",passwordModalTitle:"กรุณากรอกรหัสผ่าน",passwordModalMessage:"เอกสารนี้ได้รับการป้องกันด้วยรหัสผ่าน กรุณาใส่รหัสผ่านเพื่อเปิดไฟล์",passwordPlaceholder:"กรอกรหัสผ่าน",passwordConfirmLabel:"ส่ง",passwordError:"รหัสผ่านไม่ถูกต้อง",dragDropFileMessage:"ลากและวางไฟล์ PDF ที่นี่"},t5={searchButtonTooltip:"Im Dokument suchen",searchInputPlaceholder:"Zum Suchen eingeben",searchInputTooltip:"Suche",searchPrevTooltip:"Vorheriger Treffer",searchNextTooltip:"Nächster Treffer",searchCloseButtonTooltip:"Schließen",searchMatchCaseLabel:"Groß-/Kleinschreibung",searchMatchCaseTooltip:"Groß-/Kleinschreibung beachten",searchWholeWordsLabel:"Ganze Wörter",searchWholeWordsTooltip:"Exakte Wörter suchen (Groß-/Kleinschreibung ignorieren)",previousPageTooltip:"Vorherige Seite",currentPageTooltip:"Aktuelle Seite",nextPageTooltip:"Nächste Seite",zoomOutTooltip:"Verkleinern",zoomInTooltip:"Vergrößern",zoomSelectTooltip:"Zoomstufe auswählen",zoomActualSize:"Originalgröße",zoomPageFit:"Seite einpassen",zoomPageWidth:"Seitenbreite",themeEnableDarkTooltip:"Dunkles Design aktivieren",themeEnableLightTooltip:"Helles Design aktivieren",openLocalFileLabel:"Lokale Datei öffnen",openLocalFileTooltip:"Lokale Datei öffnen",downloadFileLabel:"Datei herunterladen",downloadFileTooltip:"Datei herunterladen",printLabel:"Drucken",printTooltip:"Drucken",printLoadingMessage:"Dokument wird vorbereitet",printCancelLabel:"Abbrechen",fullScreenLabel:"Vollbild",fullScreenTooltip:"Vollbild",moreOptionTooltip:"Weitere Optionen",firstPageLabel:"Erste Seite",firstPageTooltip:"Zur ersten Seite",lastPageLabel:"Letzte Seite",lastPageTooltip:"Zur letzten Seite",rotateClockwise
2Label:"Im Uhrzeigersinn drehen",rotateClockwiseTooltip:"Im Uhrzeigersinn drehen",rotateCounterclockwiseLabel:"Gegen den Uhrzeigersinn drehen",rotateCounterclockwiseTooltip:"Gegen den Uhrzeigersinn drehen",textSelectionLabel:"Textauswahl-Werkzeug",textSelectionTooltip:"Textauswahl-Werkzeug aktivieren",handToolLabel:"Hand-Werkzeug",handToolTooltip:"Hand-Werkzeug aktivieren",documentPropertiesLabel:"Dokumenteigenschaften",documentPropertiesTooltip:"Dokumenteigenschaften anzeigen",pageScrollingLabel:"Bildlauf",pageScrollingTooltip:"Seitenweises Blättern aktivieren",verticalScrollingLabel:"Vertikaler Bildlauf",verticalScrollingTooltip:"Vertikalen Bildlauf aktivieren",horizontalLabel:"Horizontaler Bildlauf",horizontalTooltip:"Horizontalen Bildlauf aktivieren",wrappedScrollingLabel:"Bildlauf mit Umbruch",wrappedScrollingTooltip:"Bildlauf mit Umbruch aktivieren",singlePageLabel:"Einzelseite",singlePageTooltip:"Einzelseitenansicht aktivieren",dualPageLabel:"Doppelseite",dualPageTooltip:"Doppelseitenansicht aktivieren",dualPageWithCoverLabel:"Doppelseite mit Deckblatt",dualPageWithCoverTooltip:"Doppelseitenansicht mit Deckblatt aktivieren",propertiesFilenameLabel:"Dateiname",propertiesFileSizeLabel:"Dateigröße",propertiesTitleLabel:"Titel",propertiesAuthorLabel:"Autor",propertiesSubjectLabel:"Thema",propertiesKeywordLabel:"Stichwörter",propertiesCreatorLabel:"Ersteller",propertiesCreateOnLabel:"Erstellt am",propertiesModifiedOnLabel:"Geändert am",propertiesPDFProducerLabel:"PDF-Produzent",propertiesPDFVersionLabel:"PDF-Version",propertiesPageCountLabel:"Seitenanzahl",thumbnailTooltip:"Miniaturansicht",passwordModalTitle:"Passwort erforderlich",passwordModalMessage:"Dieses Dokument ist passwortgeschützt. Bitte geben Sie ein Passwort ein, um die Datei zu öffnen.",passwordPlaceholder:"Passwort eingeben",passwordConfirmLabel:"Bestätigen",passwordError:"Falsches Passwort",dragDropFileMessage:"PDF-Datei hierher ziehen"},e5=(function(i){return i[i.Text=1]="Text",i[i.Link=2]="Link",i[i.FreeText=3]="FreeText",i[i.Line=4]="Line",i[i.Square=5]="Square",i[i.Circle=6]="Circle",i[i.Polygon=7]="Polygon",i[i.Polyline=8]="Polyline",i[i.Highlight=9]="Highlight",i[i.Underline=10]="Underline",i[i.Squiggly=11]="Squiggly",i[i.StrikeOut=12]="StrikeOut",i[i.Stamp=13]="Stamp",i[i.Caret=14]="Caret",i[i.Ink=15]="Ink",i[i.Popup=16]="Popup",i[i.FileAttachment=17]="FileAttachment",i[i.Widget=20]="Widget",i})({}),ni=(function(i){return i.INTERNAL_LINK="internal-link",i.LINK="link",i.FILE_ATTACHMENT="file-attachment",i.FORM_TEXT="form-text",i.FORM_SELECT="form-select",i.FORM_CHECKBOX="form-checkbox",i.FORM_RADIO="form-radio",i.FORM_BUTTON="form-button",i.BUTTON="button",i})({}),Ud=(function(i){return i.NOT_SUPPORTED="not-supported",i.INVALID_OR_CORRUPTED_PDF="invalid-or-corrupted-pdf",i})({}),ws=(function(i){return i.ACTUAL="Actual Size",i.PAGE_FIT="Page Fit",i.PAGE_WIDTH="Page Width",i})({}),aG=(function(i){return i.Organization="organization",i.Developer="developer",i.FreeTrial="free-trial",i.Custom="custom",i})({}),Yl=(function(i){return i.SINGLE_PAGE="Single",i.DUAL_PAGE="Dual",i.DUAL_PAGE_WITH_COVER="DualWithCover",i})({}),kl=(function(i){return i.PAGE_SCROLLING="PAGE",i.VERTICAL_SCROLLING="VERTICAL",i.HORIZONTAL_SCROLLING="HORIZONTAL",i})({}),Nd=(function(i){return i.TEXT="TEXT",i.HAND="HAND",i})({}),Is,gt=(Is=class{constructor(){E(this,"isProduction");this.isProduction=!0}static getInstance(){return Is.instance||(Is.instance=new Is),Is.instance}debug(...l){this.isProduction||console.debug("[React PDF Debug]:",...l)}info(...l){console.info("[React PDF Info]:",...l)}warn(...l){console.warn("[React PDF Warning]:",...l)}error(...l){console.error("[React PDF Error]:",...l)}},E(Is,"instance"),Is).getInstance(),s5=100,vr=(i,l=0)=>{let t=s5/i.getViewport({scale:1}).width;return{scale:t,thumbnailViewport:i.getViewport({scale:t,rotation:l})}},Qr=u.createContext({workerUrlAdded:!1,wasmUrl:void 0}),i5=()=>u.useContext(Qr),c5=i=>{let{children:l,...t}=i;return G.jsx(Qr.Provider,{value:t,children:l})},Pr=u.createContext({password:void 0,setPassword:()=>{},passwordError:void 0,setPasswordError:()=>{},passwordRequired:void 0,setPasswordRequired:()=>{},invalidPassword:!1}),d5=({children:i})=>{let[l,t]=u.useState(),[e,s]=u.useState(),[c,d]=u.useState(!1),n=!!e,Z=u.useMemo(()=>({password:l,setPassword:t,passwordError:e,setPasswordError:s,passwordRequired:c,setPasswordRequired:d,invalidPassword:n}),[l,e,c,n]);return G.jsx(Pr.Provider,{value:Z,children:i})},sh=()=>{let i=u.useContext(Pr);return i||gt.error("Please use this hooks inside children component of DocumentPasswordContext"),i},a5={keyword:"",regExp:RegExp(" "),wholeWords:!1},rd="This feature is only available for the Organization license",n5="Invalid or corrupted PDF file.",Z5="React PDF Kit is unable to render on this browser.";const ce=typeof process=="object"&&process+""=="[object process]"&&!process.versions.nw&&!(process.versions.electron&&process.type&&process.type!=="browser"),N2=[.001,0,0,.001,0,0],Ou=1.35,ke={ANY:1,DISPLAY:2,PRINT:4,ANNOTATIONS_FORMS:16,ANNOTATIONS_STORAGE:32,ANNOTATIONS_DISABLE:64,IS_EDITING:128,OPLIST:256},Ls={DISABLE:0,ENABLE:1,ENABLE_FORMS:2,ENABLE_STORAGE:3},to="pdfjs_internal_editor_",cl={DISABLE:-1,NONE:0,FREETEXT:3,HIGHLIGHT:9,STAMP:13,INK:15,POPUP:16,SIGNATURE:101,COMMENT:102}
2,Wl={RESIZE:1,CREATE:2,FREETEXT_SIZE:11,FREETEXT_COLOR:12,FREETEXT_OPACITY:13,INK_COLOR:21,INK_THICKNESS:22,INK_OPACITY:23,HIGHLIGHT_COLOR:31,HIGHLIGHT_THICKNESS:32,HIGHLIGHT_FREE:33,HIGHLIGHT_SHOW_ALL:34,DRAW_STEP:41},b5={PRINT:4,MODIFY_CONTENTS:8,COPY:16,MODIFY_ANNOTATIONS:32,FILL_INTERACTIVE_FORMS:256,COPY_FOR_ACCESSIBILITY:512,ASSEMBLE:1024,PRINT_HIGH_QUALITY:2048},r2={TRIANGLES:1,LATTICE:2},Xt={FILL:0,STROKE:1,FILL_STROKE:2,INVISIBLE:3,FILL_STROKE_MASK:3,ADD_TO_PATH_FLAG:4},Eh={GRAYSCALE_1BPP:1,RGB_24BPP:2,RGBA_32BPP:3},Wt={TEXT:1,LINK:2,FREETEXT:3,LINE:4,SQUARE:5,CIRCLE:6,POLYGON:7,POLYLINE:8,HIGHLIGHT:9,UNDERLINE:10,SQUIGGLY:11,STRIKEOUT:12,STAMP:13,CARET:14,INK:15,POPUP:16,FILEATTACHMENT:17,SOUND:18,MOVIE:19,WIDGET:20,SCREEN:21,PRINTERMARK:22,TRAPNET:23,WATERMARK:24,THREED:25,REDACT:26},Tn={SOLID:1,DASHED:2,BEVELED:3,INSET:4,UNDERLINE:5},ih={ERRORS:0,WARNINGS:1,INFOS:5},eo={dependency:1,setLineWidth:2,setLineCap:3,setLineJoin:4,setMiterLimit:5,setDash:6,setRenderingIntent:7,setFlatness:8,setGState:9,save:10,restore:11,transform:12,moveTo:13,lineTo:14,curveTo:15,curveTo2:16,curveTo3:17,closePath:18,rectangle:19,stroke:20,closeStroke:21,fill:22,eoFill:23,fillStroke:24,eoFillStroke:25,closeFillStroke:26,closeEOFillStroke:27,endPath:28,clip:29,eoClip:30,beginText:31,endText:32,setCharSpacing:33,setWordSpacing:34,setHScale:35,setLeading:36,setFont:37,setTextRenderingMode:38,setTextRise:39,moveText:40,setLeadingMoveText:41,setTextMatrix:42,nextLine:43,showText:44,showSpacedText:45,nextLineShowText:46,nextLineSetSpacingShowText:47,setCharWidth:48,setCharWidthAndBounds:49,setStrokeColorSpace:50,setFillColorSpace:51,setStrokeColor:52,setStrokeColorN:53,setFillColor:54,setFillColorN:55,setStrokeGray:56,setFillGray:57,setStrokeRGBColor:58,setFillRGBColor:59,setStrokeCMYKColor:60,setFillCMYKColor:61,shadingFill:62,beginInlineImage:63,beginImageData:64,endInlineImage:65,paintXObject:66,markPoint:67,markPointProps:68,beginMarkedContent:69,beginMarkedContentProps:70,endMarkedContent:71,beginCompat:72,endCompat:73,paintFormXObjectBegin:74,paintFormXObjectEnd:75,beginGroup:76,endGroup:77,beginAnnotation:80,endAnnotation:81,paintImageMaskXObject:83,paintImageMaskXObjectGroup:84,paintImageXObject:85,paintInlineImageXObject:86,paintInlineImageXObjectGroup:87,paintImageXObjectRepeat:88,paintImageMaskXObjectRepeat:89,paintSolidColorImageMask:90,constructPath:91,setStrokeTransparent:92,setFillTransparent:93,rawFillPath:94},pb={moveTo:0,lineTo:1,curveTo:2,quadraticCurveTo:3,closePath:4},Hr={NEED_PASSWORD:1,INCORRECT_PASSWORD:2};let mu=ih.WARNINGS;function o5(i){Number.isInteger(i)&&(mu=i)}function m5(){return mu}function hu(i){mu>=ih.INFOS&&console.info(`Info: ${i}`)}function tl(i){mu>=ih.WARNINGS&&console.warn(`Warning: ${i}`)}function Jl(i){throw new Error(i)}function Gl(i,l){i||Jl(l)}function h5(i){switch(i==null?void 0:i.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function fr(i,l=null,t=null){if(!i)return null;if(t&&typeof i=="string"){if(t.addDefaultProtocol&&i.startsWith("www.")){const s=i.match(/\./g);(s==null?void 0:s.length)>=2&&(i=`http://${i}`)}if(t.tryConvertEncoding)try{i=r5(i)}catch{}}const e=l?URL.parse(i,l):URL.parse(i);return h5(e)?e:null}function Br(i,l,t=!1){const e=URL.parse(i);return e?(e.hash=l,e.href):t&&fr(i,"http://example.com")?i.split("#",1)[0]+`${l?`#${l}`:""}`:""}function el(i,l,t,e=!1){return Object.defineProperty(i,l,{value:t,enumerable:!e,configurable:!0,writable:!1}),t}const bn=(function(){function l(t,e){this.message=t,this.name=e}return l.prototype=new Error,l.constructor=l,l})();class dN extends bn{constructor(l,t){super(l,"PasswordException"),this.code=t}}class ku extends bn{constructor(l,t){super(l,"UnknownErrorException"),this.details=t}}class X2 extends bn{constructor(l){super(l,"InvalidPDFException")}}class V0 extends bn{constructor(l,t,e){super(l,"ResponseException"),this.status=t,this.missing=e}}class u5 extends bn{constructor(l){super(l,"FormatError")}}class Yd extends bn{constructor(l){super(l,"AbortException")}}function Ar(i){(typeof i!="object"||(i==null?void 0:i.length)===void 0)&&Jl("Invalid argument for bytesToString");const l=i.length,t=8192;if(l<t)return String.fromCharCode.apply(null,i);const e=[];for(let s=0;s<l;s+=t){const c=Math.min(s+t,l),d=i.subarray(s,c);e.push(String.fromCharCode.apply(null,d))}return e.join("")}
2function ch(i){typeof i!="string"&&Jl("Invalid argument for stringToBytes");const l=i.length,t=new Uint8Array(l);for(let e=0;e<l;++e)t[e]=i.charCodeAt(e)&255;return t}function W5(i){return String.fromCharCode(i>>24&255,i>>16&255,i>>8&255,i&255)}function G5(){const i=new Uint8Array(4);return i[0]=1,new Uint32Array(i.buffer,0,1)[0]===1}function N5(){try{return new Function(""),!0}catch{return!1}}class Tt{static get isLittleEndian(){return el(this,"isLittleEndian",G5())}static get isEvalSupported(){return el(this,"isEvalSupported",N5())}static get isOffscreenCanvasSupported(){return el(this,"isOffscreenCanvasSupported",typeof OffscreenCanvas<"u")}static get isImageDecoderSupported(){return el(this,"isImageDecoderSupported",typeof ImageDecoder<"u")}static get isFloat16ArraySupported(){return el(this,"isFloat16ArraySupported",typeof Float16Array<"u")}static get isSanitizerSupported(){return el(this,"isSanitizerSupported",typeof Sanitizer<"u")}static get platform(){const{platform:l,userAgent:t}=navigator;return el(this,"platform",{isAndroid:t.includes("Android"),isLinux:l.includes("Linux"),isMac:l.includes("Mac"),isWindows:l.includes("Win"),isFirefox:t.includes("Firefox")})}static get isCSSRoundSupported(){var l,t;return el(this,"isCSSRoundSupported",(t=(l=globalThis.CSS)==null?void 0:l.supports)==null?void 0:t.call(l,"width: round(1.5px, 1px)"))}}const Uu=Array.from(Array(256).keys(),i=>i.toString(16).padStart(2,"0"));var hc,Kh,M2;class Q{static makeHexColor(l,t,e){return`#${Uu[l]}${Uu[t]}
2${Uu[e]}`}static domMatrixToTransform(l){return[l.a,l.b,l.c,l.d,l.e,l.f]}static scaleMinMax(l,t){let e;l[0]?(l[0]<0&&(e=t[0],t[0]=t[2],t[2]=e),t[0]*=l[0],t[2]*=l[0],l[3]<0&&(e=t[1],t[1]=t[3],t[3]=e),t[1]*=l[3],t[3]*=l[3]):(e=t[0],t[0]=t[1],t[1]=e,e=t[2],t[2]=t[3],t[3]=e,l[1]<0&&(e=t[1],t[1]=t[3],t[3]=e),t[1]*=l[1],t[3]*=l[1],l[2]<0&&(e=t[0],t[0]=t[2],t[2]=e),t[0]*=l[2],t[2]*=l[2]),t[0]+=l[4],t[1]+=l[5],t[2]+=l[4],t[3]+=l[5]}static transform(l,t){return[l[0]*t[0]+l[2]*t[1],l[1]*t[0]+l[3]*t[1],l[0]*t[2]+l[2]*t[3],l[1]*t[2]+l[3]*t[3],l[0]*t[4]+l[2]*t[5]+l[4],l[1]*t[4]+l[3]*t[5]+l[5]]}static multiplyByDOMMatrix(l,t){return[l[0]*t.a+l[2]*t.b,l[1]*t.a+l[3]*t.b,l[0]*t.c+l[2]*t.d,l[1]*t.c+l[3]*t.d,l[0]*t.e+l[2]*t.f+l[4],l[1]*t.e+l[3]*t.f+l[5]]}static applyTransform(l,t,e=0){const s=l[e],c=l[e+1];l[e]=s*t[0]+c*t[2]+t[4],l[e+1]=s*t[1]+c*t[3]+t[5]}static applyTransformToBezier(l,t,e=0){const s=t[0],c=t[1],d=t[2],n=t[3],Z=t[4],b=t[5];for(let o=0;o<6;o+=2){const m=l[e+o],h=l[e+o+1];l[e+o]=m*s+h*d+Z,l[e+o+1]=m*c+h*n+b}}static applyInverseTransform(l,t){const e=l[0],s=l[1],c=t[0]*t[3]-t[1]*t[2];l[0]=(e*t[3]-s*t[2]+t[2]*t[5]-t[4]*t[3])/c,l[1]=(-e*t[1]+s*t[0]+t[4]*t[1]-t[5]*t[0])/c}static axialAlignedBoundingBox(l,t,e){const s=t[0],c=t[1],d=t[2],n=t[3],Z=t[4],b=t[5],o=l[0],m=l[1],h=l[2],W=l[3];let r=s*o+Z,N=r,M=s*h+Z,X=M,y=n*m+b,Y=y,T=n*W+b,V=T;if(c!==0||d!==0){const I=c*o,w=c*h,R=d*m,S=d*W;r+=R,X+=R,M+=S,N+=S,y+=I,V+=I,T+=w,Y+=w}e[0]=Math.min(e[0],r,M,N,X),e[1]=Math.min(e[1],y,T,Y,V),e[2]=Math.max(e[2],r,M,N,X),e[3]=Math.max(e[3],y,T,Y,V)}static inverseTransform(l){const t=l[0]*l[3]-l[1]*l[2];return[l[3]/t,-l[1]/t,-l[2]/t,l[0]/t,(l[2]*l[5]-l[4]*l[3])/t,(l[4]*l[1]-l[5]*l[0])/t]}static singularValueDecompose2dScale(l,t){const e=l[0],s=l[1],c=l[2],d=l[3],n=e**2+s**2,Z=e*c+s*d,b=c**2+d**2,o=(n+b)/2,m=Math.sqrt(o**2-(n*b-Z**2));t[0]=Math.sqrt(o+m||1),t[1]=Math.sqrt(o-m||1)}static normalizeRect(l){const t=l.slice(0);return l[0]>l[2]&&(t[0]=l[2],t[2]=l[0]),l[1]>l[3]&&(t[1]=l[3],t[3]=l[1]),t}static intersect(l,t){const e=Math.max(Math.min(l[0],l[2]),Math.min(t[0],t[2])),s=Math.min(Math.max(l[0],l[2]),Math.max(t[0],t[2]));if(e>s)return null;const c=Math.max(Math.min(l[1],l[3]),Math.min(t[1],t[3])),d=Math.min(Math.max(l[1],l[3]),Math.max(t[1],t[3]));return c>d?null:[e,c,s,d]}static pointBoundingBox(l,t,e){e[0]=Math.min(e[0],l),e[1]=Math.min(e[1],t),e[2]=Math.max(e[2],l),e[3]=Math.max(e[3],t)}static rectBoundingBox(l,t,e,s,c){c[0]=Math.min(c[0],l,e),c[1]=Math.min(c[1],t,s),c[2]=Math.max(c[2],l,e),c[3]=Math.max(c[3],t,s)}static bezierBoundingBox(l,t,e,s,c,d,n,Z,b){b[0]=Math.min(b[0],l,n),b[1]=Math.min(b[1],t,Z),b[2]=Math.max(b[2],l,n),b[3]=Math.max(b[3],t,Z),z(this,hc,M2).call(this,l,e,c,n,t,s,d,Z,3*(-l+3*(e-c)+n),6*(l-2*e+c),3*(e-l),b),z(this,hc,M2).call(this,l,e,c,n,t,s,d,Z,3*(-t+3*(s-d)+Z),6*(t-2*s+d),3*(s-t),b)}}hc=new WeakSet,Kh=function(l,t,e,s,c,d,n,Z,b,o){if(b<=0||b>=1)return;const m=1-b,h=b*b,W=h*b,r=m*(m*(m*l+3*b*t)+3*h*e)+W*s,N=m*(m*(m*c+3*b*d)+3*h*n)+W*Z;o[0]=Math.min(o[0],r),o[1]=Math.min(o[1],N),o[2]=Math.max(o[2],r),o[3]=Math.max(o[3],N)},M2=function(l,t,e,s,c,d,n,Z,b,o,m,h){if(Math.abs(b)<1e-12){Math.abs(o)>=1e-12&&z(this,hc,Kh).call(this,l,t,e,s,c,d,n,Z,-m/o,h);return}const W=o**2-4*m*b;if(W<0)return;const r=Math.sqrt(W),N=2*b;z(this,hc,Kh).call(this,l,t,e,s,c,d,n,Z,(-o+r)/N,h),z(this,hc,Kh).call(this,l,t,e,s,c,d,n,Z,(-o-r)/N,h)},L(Q,hc);function r5(i){return decodeURIComponent(escape(i))}let Eu=null,aN=null;function X5(i){return Eu||(Eu=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,aN=new Map([["ſt","ſt"]])),i.replaceAll(Eu,(l,t,e)=>t?t.normalize("NFKC"):aN.get(e))}function _r(){if(typeof crypto.randomUUID=="function")return crypto.randomUUID();const i=new Uint8Array(32);return crypto.getRandomValues(i),Ar(i)}const xn="pdfjs_internal_id_";function M5(i,l,t){if(!Array.isArray(t)||t.length<2)return!1;const[e,s,...c]=t;if(!i(e)&&!Number.isInteger(e)||!l(s))return!1;const d=c.length;let n=!0;switch(s.name){case"XYZ":if(d<2||d>3)return!1;break;case"Fit":case"FitB":return d===0;case"FitH":case"FitBH":case"FitV":case"FitBV":if(d>1)return!1;break;case"FitR":if(d!==4)return!1;n=!1;break;default:return!1}
2for(const Z of c)if(!(typeof Z=="number"||n&&Z===null))return!1;return!0}function de(i,l,t){return Math.min(Math.max(i,l),t)}function qr(i){return Uint8Array.prototype.toBase64?i.toBase64():btoa(Ar(i))}function p5(i){return Uint8Array.fromBase64?Uint8Array.fromBase64(i):ch(atob(i))}typeof Promise.try!="function"&&(Promise.try=function(i,...l){return new Promise(t=>{t(i(...l))})});typeof Math.sumPrecise!="function"&&(Math.sumPrecise=function(i){return i.reduce((l,t)=>l+t,0)});class so{static textContent(l){const t=[],e={items:t,styles:Object.create(null)};function s(c){var Z;if(!c)return;let d=null;const n=c.name;if(n==="#text")d=c.value;else if(so.shouldBuildText(n))(Z=c==null?void 0:c.attributes)!=null&&Z.textContent?d=c.attributes.textContent:c.value&&(d=c.value);else return;if(d!==null&&t.push({str:d}),!!c.children)for(const b of c.children)s(b)}return s(l),e}static shouldBuildText(l){return!(l==="textarea"||l==="input"||l==="option"||l==="select")}}class $r{static setupStorage(l,t,e,s,c){const d=s.getValue(t,{value:null});switch(e.name){case"textarea":if(d.value!==null&&(l.textContent=d.value),c==="print")break;l.addEventListener("input",n=>{s.setValue(t,{value:n.target.value})});break;case"input":if(e.attributes.type==="radio"||e.attributes.type==="checkbox"){if(d.value===e.attributes.xfaOn?l.setAttribute("checked",!0):d.value===e.attributes.xfaOff&&l.removeAttribute("checked"),c==="print")break;l.addEventListener("change",n=>{s.setValue(t,{value:n.target.checked?n.target.getAttribute("xfaOn"):n.target.getAttribute("xfaOff")})})}else{if(d.value!==null&&l.setAttribute("value",d.value),c==="print")break;l.addEventListener("input",n=>{s.setValue(t,{value:n.target.value})})}break;case"select":if(d.value!==null){l.setAttribute("value",d.value);for(const n of e.children)n.attributes.value===d.value?n.attributes.selected=!0:n.attributes.hasOwnProperty("selected")&&delete n.attributes.selected}l.addEventListener("input",n=>{const Z=n.target.options,b=Z.selectedIndex===-1?"":Z[Z.selectedIndex].value;s.setValue(t,{value:b})});break}}static setAttributes({html:l,element:t,storage:e=null,intent:s,linkService:c}){const{attributes:d}=t,n=l instanceof HTMLAnchorElement;d.type==="radio"&&(d.name=`${d.name}-${s}`);for(const[Z,b]of Object.entries(d))if(b!=null)switch(Z){case"class":b.length&&l.setAttribute(Z,b.join(" "));break;case"dataId":break;case"id":l.setAttribute("data-element-id",b);break;case"style":Object.assign(l.style,b);break;case"textContent":l.textContent=b;break;default:(!n||Z!=="href"&&Z!=="newWindow")&&l.setAttribute(Z,b)}n&&c.addLinkAttributes(l,d.href,d.newWindow),e&&d.dataId&&this.setupStorage(l,d.dataId,t,e)}static render(l){var m,h;const t=l.annotationStorage,e=l.linkService,s=l.xfaHtml,c=l.intent||"display",d=document.createElement(s.name);s.attributes&&this.setAttributes({html:d,element:s,intent:c,linkService:e});const n=c!=="richText",Z=l.div;if(Z.append(d),l.viewport){const W=`matrix(${l.viewport.transform.join(",")})`;Z.style.transform=W}n&&Z.setAttribute("class","xfaLayer xfaFont");const b=[];if(s.children.length===0){if(s.value){const W=document.createTextNode(s.value);d.append(W),n&&so.shouldBuildText(s.name)&&b.push(W)}return{textDivs:b}}const o=[[s,-1,d]];for(;o.length>0;){const[W,r,N]=o.at(-1);if(r+1===W.children.length){o.pop();continue}const M=W.children[++o.at(-1)[1]];if(M===null)continue;const{name:X}=M;if(X==="#text"){const Y=document.createTextNode(M.value);b.push(Y),N.append(Y);continue}const y=(m=M==null?void 0:M.attributes)!=null&&m.xmlns?document.createElementNS(M.attributes.xmlns,X):document.createElement(X);if(N.append(y),M.attributes&&this.setAttributes({html:y,element:M,storage:t,intent:c,linkService:e}),((h=M.children)==null?void 0:h.length)>0)o.push([M,-1,y]);else if(M.value){const Y=document.createTextNode(M.value);n&&so.shouldBuildText(X)&&b.push(Y),y.append(Y)}}for(const W of Z.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea"))W.setAttribute("readOnly",!0);return{textDivs:b}}static update(l){const t=`matrix(${l.viewport.transform.join(",")})`;l.div.style.transform=t,l.div.hidden=!1}}const Yi="http://www.w3.org/2000/svg",Fd=class Fd{};E(Fd,"CSS",96),E(Fd,"PDF",72),E(Fd,"PDF_TO_CSS_UNITS",Fd.CSS/Fd.PDF);let Gc=Fd;async function dh(i,l="text"){if(Sb(i,document.baseURI)){const t=await fetch(i);if(!t.ok)throw new Error(t.statusText);switch(l){case"arraybuffer":return t.arrayBuffer();case"blob":return t.blob();case"json":return t.json()}return t.text()}return new Promise((t,e)=>{const s=new XMLHttpRequest;s.open("GET",i,!0),s.responseType=l,s.onreadystatechange=()=>{if(s.readyState===XMLHttpRequest.DONE){if(s.status===200||s.status===0){switch(l){case"arraybuffer":case"blob":case"json":t(s.response);return}t(s.responseText);return}e(new Error(s.statusText))}},s.send(null)})}class ah{constructor({viewBox:l,userUnit:t,scale:e,rotation:s,offsetX:c=0,offsetY:d=0,dontFlip:n=!1}){this.viewBox=l,this.userUnit=t,this.scale=e,this.rotation=s,this.offsetX=c,this.offsetY=d,e*=t;const Z=(l[2]+l[0])/2,b=(l[3]+l[1])/2;let o,m,h,W;switch(s%=360,s<0&&(s+=360),s){case 180:o=-1,m=0,h=0,W=1;break;case 90:o=0,m=1,h=1,W=0;break;case 270:o=0,m=-1,h=-1,W=0;break;case 0:o=1,m=0,h=0,W=-1;break;default:throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.")}n&&(h=-h,W=-W);let r,N,M,X;o===0?(r=Math.abs(b-l[1])*e+c,N=Math.abs(Z-l[0])*e+d,M=(l[3]-l[1])*e,X=(l[2]-l[0])*e):(r=Math.abs(Z-l[0])*e+c,N=Math.abs(b-l[1])*e+d,M=(l[2]-l[0])*e,X=(l[3]-l[1])*e),this.transform=[o*e,m*e,h*e,W*e,r-o*e*Z-h*e*b,N-m*e*Z-W*e*b],this.width=M,this.height=X}get rawDims(){const l=this.viewBox;return el(this,"rawDims",{pageWidth:l[2]-l[0],pageHeight:l[3]-l[1],pageX:l[0],pageY:l[1]})}clone({scale:l=this.scale,rotation:t=this.rotation,offsetX:e=this.offsetX,offsetY:s=this.offsetY,dontFlip:c=!1}={}){return new ah({viewBox:this.viewBox.slice(),userUnit:this.userUnit,scale:l,rotation:t,offsetX:e,offsetY:s,dontFlip:c})}convertToViewportPoint(l,t){const e=[l,t];return Q.applyTransform(e,this.transform),e}convertToViewportRectangle(l){const t=[l[0],l[1]];Q.applyTransform(t,this.transform);const e=[l[2],l[3]];return Q.applyTransform(e,this.transform),[t[0],t[1],e[0],e[1]]}convertToPdfPoint(l,t){const e=[l,t];return Q.applyInverseTransform(e,this.transform),e}}
2class uu extends bn{constructor(l,t=0){super(l,"RenderingCancelledException"),this.extraDelay=t}}function Wu(i){const l=i.length;let t=0;for(;t<l&&i[t].trim()==="";)t++;return i.substring(t,t+5).toLowerCase()==="data:"}function nG(i){return typeof i=="string"&&/\.pdf$/i.test(i)}function Y5(i){return[i]=i.split(/[#?]/,1),i.substring(i.lastIndexOf("/")+1)}function y5(i,l="document.pdf"){if(typeof i!="string")return l;if(Wu(i))return tl('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.'),l;const e=(n=>{try{return new URL(n)}catch{try{return new URL(decodeURIComponent(n))}catch{try{return new URL(n,"https://foo.bar")}catch{try{return new URL(decodeURIComponent(n),"https://foo.bar")}catch{return null}}}}})(i);if(!e)return l;const s=n=>{try{let Z=decodeURIComponent(n);return Z.includes("/")?(Z=Z.split("/").at(-1),Z.test(/^\.pdf$/i)?Z:n):Z}catch{return n}},c=/\.pdf$/i,d=e.pathname.split("/").at(-1);if(c.test(d))return s(d);if(e.searchParams.size>0){const n=Array.from(e.searchParams.values()).reverse();for(const b of n)if(c.test(b))return s(b);const Z=Array.from(e.searchParams.keys()).reverse();for(const b of Z)if(c.test(b))return s(b)}if(e.hash){const Z=/[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i.exec(e.hash);if(Z)return s(Z[0])}return l}class nN{constructor(){E(this,"started",Object.create(null));E(this,"times",[])}time(l){l in this.started&&tl(`Timer is already running for ${l}`),this.started[l]=Date.now()}timeEnd(l){l in this.started||tl(`Timer has not been started for ${l}`),this.times.push({name:l,start:this.started[l],end:Date.now()}),delete this.started[l]}toString(){const l=[];let t=0;for(const{name:e}of this.times)t=Math.max(e.length,t);for(const{name:e,start:s,end:c}of this.times)l.push(`${e.padEnd(t)} ${c-s}ms
3`);return l.join("")}}function Sb(i,l){const t=l?URL.parse(i,l):URL.parse(i);return(t==null?void 0:t.protocol)==="http:"||(t==null?void 0:t.protocol)==="https:"}function os(i){i.preventDefault()}function dt(i){i.preventDefault(),i.stopPropagation()}function T5(i){console.log("Deprecated API usage: "+i)}var ho;class L0{static toDateObject(l){if(l instanceof Date)return l;if(!l||typeof l!="string")return null;a(this,ho)||p(this,ho,new RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"));const t=a(this,ho).exec(l);if(!t)return null;const e=parseInt(t[1],10);let s=parseInt(t[2],10);s=s>=1&&s<=12?s-1:0;let c=parseInt(t[3],10);c=c>=1&&c<=31?c:1;let d=parseInt(t[4],10);d=d>=0&&d<=23?d:0;let n=parseInt(t[5],10);n=n>=0&&n<=59?n:0;let Z=parseInt(t[6],10);Z=Z>=0&&Z<=59?Z:0;const b=t[7]||"Z";let o=parseInt(t[8],10);o=o>=0&&o<=23?o:0;let m=parseInt(t[9],10)||0;return m=m>=0&&m<=59?m:0,b==="-"?(d+=o,n+=m):b==="+"&&(d-=o,n-=m),new Date(Date.UTC(e,s,c,d,n,Z))}}ho=new WeakMap,L(L0,ho);function V5(i,{scale:l=1,rotation:t=0}){const{width:e,height:s}=i.attributes.style,c=[0,0,parseInt(e),parseInt(s)];return new ah({viewBox:c,userUnit:1,scale:l,rotation:t})}function nh(i){if(i.startsWith("#")){const l=parseInt(i.slice(1),16);return[(l&16711680)>>16,(l&65280)>>8,l&255]}return i.startsWith("rgb(")?i.slice(4,-1).split(",").map(l=>parseInt(l)):i.startsWith("rgba(")?i.slice(5,-1).split(",").map(l=>parseInt(l)).slice(0,3):(tl(`Not a valid color format: "${i}"`),[0,0,0])}function L5(i){const l=document.createElement("span");l.style.visibility="hidden",l.style.colorScheme="only light",document.body.append(l);for(const t of i.keys()){l.style.color=t;const e=window.getComputedStyle(l).color;i.set(t,nh(e))}l.remove()}function $l(i){const{a:l,b:t,c:e,d:s,e:c,f:d}=i.getTransform();return[l,t,e,s,c,d]}function Cs(i){const{a:l,b:t,c:e,d:s,e:c,f:d}=i.getTransform().invertSelf();return[l,t,e,s,c,d]}function cn(i,l,t=!1,e=!0){if(l instanceof ah){const{pageWidth:s,pageHeight:c}=l.rawDims,{style:d}=i,n=Tt.isCSSRoundSupported,Z=`var(--total-scale-factor) * ${s}px`,b=`var(--total-scale-factor) * ${c}px`,o=n?`round(down, ${Z}, var(--scale-round-x))`:`calc(${Z})`,m=n?`round(down, ${b}, var(--scale-round-y))`:`calc(${b})`;!t||l.rotation%180===0?(d.width=o,d.height=m):(d.width=m,d.height=o)}e&&i.setAttribute("data-main-rotation",l.rotation)}class Rs{constructor(){const{pixelRatio:l}=Rs;this.sx=l,this.sy=l}get scaled(){return this.sx!==1||this.sy!==1}get symmetric(){return this.sx===this.sy}limitCanvas(l,t,e,s,c=-1){let d=1/0,n=1/0,Z=1/0;e=Rs.capPixels(e,c),e>
30&&(d=Math.sqrt(e/(l*t))),s!==-1&&(n=s/l,Z=s/t);const b=Math.min(d,n,Z);return this.sx>b||this.sy>b?(this.sx=b,this.sy=b,!0):!1}static get pixelRatio(){return globalThis.devicePixelRatio||1}static capPixels(l,t){if(t>=0){const e=Math.ceil(window.screen.availWidth*window.screen.availHeight*this.pixelRatio**2*(1+t/100));return l>0?Math.min(l,e):e}return l}}const p2=["image/apng","image/avif","image/bmp","image/gif","image/jpeg","image/png","image/svg+xml","image/webp","image/x-icon"];class I5{static get isDarkMode(){var l;return el(this,"isDarkMode",!!((l=window==null?void 0:window.matchMedia)!=null&&l.call(window,"(prefers-color-scheme: dark)").matches))}}class z5{static get commentForegroundColor(){const l=document.createElement("span");l.classList.add("comment","sidebar");const{style:t}=l;t.width=t.height="0",t.display="none",t.color="var(--comment-fg-color)",document.body.append(l);const{color:e}=window.getComputedStyle(l);return l.remove(),el(this,"commentForegroundColor",nh(e))}}function w5(i,l,t,e){e=Math.min(Math.max(e??1,0),1);const s=255*(1-e);return i=Math.round(i*e+s),l=Math.round(l*e+s),t=Math.round(t*e+s),[i,l,t]}function ZN(i,l){const t=i[0]/255,e=i[1]/255,s=i[2]/255,c=Math.max(t,e,s),d=Math.min(t,e,s),n=(c+d)/2;if(c===d)l[0]=l[1]=0;else{const Z=c-d;switch(l[1]=n<.5?Z/(c+d):Z/(2-c-d),c){case t:l[0]=((e-s)/Z+(e<s?6:0))*60;break;case e:l[0]=((s-t)/Z+2)*60;break;case s:l[0]=((t-e)/Z+4)*60;break}}l[2]=n}function Y2(i,l){const t=i[0],e=i[1],s=i[2],c=(1-Math.abs(2*s-1))*e,d=c*(1-Math.abs(t/60%2-1)),n=s-c/2;switch(Math.floor(t/60)){case 0:l[0]=c+n,l[1]=d+n,l[2]=n;break;case 1:l[0]=d+n,l[1]=c+n,l[2]=n;break;case 2:l[0]=n,l[1]=c+n,l[2]=d+n;break;case 3:l[0]=n,l[1]=d+n,l[2]=c+n;break;case 4:l[0]=d+n,l[1]=n,l[2]=c+n;break;case 5:case 6:l[0]=c+n,l[1]=n,l[2]=d+n;break}}function bN(i){return i<=.03928?i/12.92:((i+.055)/1.055)**2.4}function oN(i,l,t){Y2(i,t),t.map(bN);const e=.2126*t[0]+.7152*t[1]+.0722*t[2];Y2(l,t),t.map(bN);const s=.2126*t[0]+.7152*t[1]+.0722*t[2];return e>s?(e+.05)/(s+.05):(s+.05)/(e+.05)}const mN=new Map;function R5(i,l){const t=i[0]+i[1]*256+i[2]*65536+l[0]*16777216+l[1]*4294967296+l[2]*1099511627776;let e=mN.get(t);if(e)return e;const s=new Float32Array(9),c=s.subarray(0,3),d=s.subarray(3,6);ZN(i,d);const n=s.subarray(6,9);ZN(l,n);const Z=n[2]<.5,b=Z?12:4.5;if(d[2]=Z?Math.sqrt(d[2]):1-Math.sqrt(1-d[2]),oN(d,n,c)<b){let o,m;Z?(o=d[2],m=1):(o=0,m=d[2]);const h=.005;for(;m-o>h;){const W=d[2]=(o+m)/2;Z===oN(d,n,c)<b?o=W:m=W}d[2]=Z?m:o}return Y2(d,c),e=Q.makeHexColor(Math.round(c[0]*255),Math.round(c[1]*255),Math.round(c[2]*255)),mN.set(t,e),e}function lX({html:i,dir:l,className:t},e){const s=document.createDocumentFragment();if(typeof i=="string"){const c=document.createElement("p");c.dir=l||"auto";const d=i.split(/(?:\r\n?|\n)/);for(let n=0,Z=d.length;n<Z;++n){const b=d[n];c.append(document.createTextNode(b)),n<Z-1&&c.append(document.createElement("br"))}s.append(c)}else $r.render({xfaHtml:i,div:s,intent:"richText"});s.firstElementChild.classList.add("richText",t),e.append(s)}function tX(i){const l=new Path2D;if(!i)return l;for(let t=0,e=i.length;t<e;)switch(i[t++]){case pb.moveTo:l.moveTo(i[t++],i[t++]);break;case pb.lineTo:l.lineTo(i[t++],i[t++]);break;case pb.curveTo:l.bezierCurveTo(i[t++],i[t++],i[t++],i[t++],i[t++],i[t++]);break;case pb.quadraticCurveTo:l.quadraticCurveTo(i[t++],i[t++],i[t++],i[t++]);break;case pb.closePath:l.closePath();break;default:tl(`Unrecognized drawing path operator: ${i[t-1]}`);break}return l}var Ic,zc,Ae,_e,uo,wc,En,Kn,Wo,H0,eX,vt,sX,iX,Vn,xb;const Vi=class Vi{constructor(l){L(this,vt);L(this,Ic,null);L(this,zc,null);L(this,Ae);L(this,_e,null);L(this,uo,null);L(this,wc,null);L(this,En,null);L(this,Kn,null);p(this,Ae,l),a(Vi,Wo)||p(Vi,Wo,Object.freeze({freetext:"pdfjs-editor-remove-freetext-button",highlight:"pdfjs-editor-remove-highlight-button",ink:"pdfjs-editor-remove-ink-button",stamp:"pdfjs-editor-remove-stamp-button",signature:"pdfjs-editor-remove-signature-button"}))}render(){const l=p(this,Ic,document.createElement("div"));l.classList.add("editToolbar","hidden"),l.setAttribute("role","toolbar");const t=a(this,Ae)._uiManager._signal;t instanceof AbortSignal&&!t.aborted&&(l.addEventListener("contextmenu",os,{signal:t}),l.addEventListener("pointerdown",z(Vi,H0,eX),{signal:t}));const e=p(this,_e,document.createElement("div"));e.className="buttons",l.append(e);const s=a(this,Ae).toolbarPosition;if(s){const{style:c}=l,d=a(this,Ae)._uiManager.direction==="ltr"?1-s[0]:s[0];c.insetInlineEnd=`${100*d}%`,c.top=`calc(${100*s[1]}% + var(--editor-toolbar-vert-offset))`}return l}get div(){return a(this,Ic)}hide(){var l;a(this,Ic).classList.add("hidden"),(l=a(this,zc))==null||l.hideDropdown()}show(){var l,t;a(this,Ic).classList.remove("hidden"),(l=a(this,uo))==null||l.shown(),(t=a(this,wc))==null||t.shown()}
3addDeleteButton(){const{editorType:l,_uiManager:t}=a(this,Ae),e=document.createElement("button");e.classList.add("basic","deleteButton"),e.tabIndex=0,e.setAttribute("data-l10n-id",a(Vi,Wo)[l]),z(this,vt,Vn).call(this,e)&&e.addEventListener("click",s=>{t.delete()},{signal:t._signal}),a(this,_e).append(e)}async addAltText(l){const t=await l.render();z(this,vt,Vn).call(this,t),a(this,_e).append(t,a(this,vt,xb)),p(this,uo,l)}addComment(l,t=null){if(a(this,wc))return;const e=l.renderForToolbar();if(!e)return;z(this,vt,Vn).call(this,e);const s=p(this,En,a(this,vt,xb));t?(a(this,_e).insertBefore(e,t),a(this,_e).insertBefore(s,t)):a(this,_e).append(e,s),p(this,wc,l),l.toolbar=this}addColorPicker(l){if(a(this,zc))return;p(this,zc,l);const t=l.renderButton();z(this,vt,Vn).call(this,t),a(this,_e).append(t,a(this,vt,xb))}async addEditSignatureButton(l){const t=p(this,Kn,await l.renderEditButton(a(this,Ae)));z(this,vt,Vn).call(this,t),a(this,_e).append(t,a(this,vt,xb))}removeButton(l){var t,e;switch(l){case"comment":(t=a(this,wc))==null||t.removeToolbarCommentButton(),p(this,wc,null),(e=a(this,En))==null||e.remove(),p(this,En,null);break}}async addButton(l,t){switch(l){case"colorPicker":t&&this.addColorPicker(t);break;case"altText":t&&await this.addAltText(t);break;case"editSignature":t&&await this.addEditSignatureButton(t);break;case"delete":this.addDeleteButton();break;case"comment":t&&this.addComment(t);break}}async addButtonBefore(l,t,e){if(!t&&l==="comment")return;const s=a(this,_e).querySelector(e);s&&l==="comment"&&this.addComment(t,s)}updateEditSignatureButton(l){a(this,Kn)&&(a(this,Kn).title=l)}remove(){var l;a(this,Ic).remove(),(l=a(this,zc))==null||l.destroy(),p(this,zc,null)}};Ic=new WeakMap,zc=new WeakMap,Ae=new WeakMap,_e=new WeakMap,uo=new WeakMap,wc=new WeakMap,En=new WeakMap,Kn=new WeakMap,Wo=new WeakMap,H0=new WeakSet,eX=function(l){l.stopPropagation()},vt=new WeakSet,sX=function(l){a(this,Ae)._focusEventsAllowed=!1,dt(l)},iX=function(l){a(this,Ae)._focusEventsAllowed=!0,dt(l)},Vn=function(l){const t=a(this,Ae)._uiManager._signal;return!(t instanceof AbortSignal)||t.aborted?!1:(l.addEventListener("focusin",z(this,vt,sX).bind(this),{capture:!0,signal:t}),l.addEventListener("focusout",z(this,vt,iX).bind(this),{capture:!0,signal:t}),l.addEventListener("contextmenu",os,{signal:t}),!0)},xb=function(){const l=document.createElement("div");return l.className="divider",l},L(Vi,H0),L(Vi,Wo,null);let y2=Vi;var Go,Ed,zi,Mc,cX,dX,T2;class S5{constructor(l){L(this,Mc);L(this,Go,null);L(this,Ed,null);L(this,zi);p(this,zi,l)}show(l,t,e){const[s,c]=z(this,Mc,dX).call(this,t,e),{style:d}=a(this,Ed)||p(this,Ed,z(this,Mc,cX).call(this));l.append(a(this,Ed)),d.insetInlineEnd=`${100*s}%`,d.top=`calc(${100*c}% + var(--editor-toolbar-vert-offset))`}hide(){a(this,Ed).remove()}}Go=new WeakMap,Ed=new WeakMap,zi=new WeakMap,Mc=new WeakSet,cX=function(){const l=p(this,Ed,document.createElement("div"));l.className="editToolbar",l.setAttribute("role","toolbar");const t=a(this,zi)._signal;t instanceof AbortSignal&&!t.aborted&&l.addEventListener("contextmenu",os,{signal:t});const e=p(this,Go,document.createElement("div"));return e.className="buttons",l.append(e),a(this,zi).hasCommentManager()&&z(this,Mc,T2).call(this,"commentButton","pdfjs-comment-floating-button","pdfjs-comment-floating-button-label",()=>{a(this,zi).commentSelection("floating_button")}),z(this,Mc,T2).call(this,"highlightButton","pdfjs-highlight-floating-button1","pdfjs-highlight-floating-button-label",()=>{a(this,zi).highlightSelection("floating_button")}),l},dX=function(l,t){let e=0,s=0;for(const c of l){const d=c.y+c.height;if(d<e)continue;const n=c.x+(t?c.width:0);if(d>e){s=n,e=d;continue}t?n>s&&(s=n):n<s&&(s=n)}return[t?1-s:s,e]},T2=function(l,t,e,s){const c=document.createElement("button");c.classList.add("basic",l),c.tabIndex=0,c.setAttribute("data-l10n-id",t);const d=document.createElement("span");c.append(d),d.className="visuallyHidden",d.setAttribute("data-l10n-id",e);const n=a(this,zi)._signal;n instanceof AbortSignal&&!n.aborted&&(c.addEventListener("contextmenu",os,{signal:n}
3),c.addEventListener("click",s,{signal:n})),a(this,Go).append(c)};function aX(i,l,t){for(const e of t)l.addEventListener(e,i[e].bind(i))}var Kd,vd,vn,Qd;const Il=class Il{static initializeAndAddPointerId(l){(a(Il,vd)||p(Il,vd,new Set)).add(l)}static setPointer(l,t){a(Il,Kd)||p(Il,Kd,t),a(Il,Qd)??p(Il,Qd,l)}static setTimeStamp(l){p(Il,vn,l)}static isSamePointerId(l){return a(Il,Kd)===l}static isSamePointerIdOrRemove(l){var t;return a(Il,Kd)===l?!0:((t=a(Il,vd))==null||t.delete(l),!1)}static isSamePointerType(l){return a(Il,Qd)===l}static isInitializedAndDifferentPointerType(l){return a(Il,Qd)!==null&&!Il.isSamePointerType(l)}static isSameTimeStamp(l){return a(Il,vn)===l}static isUsingMultiplePointers(){var l;return((l=a(Il,vd))==null?void 0:l.size)>=1}static clearPointerType(){p(Il,Qd,null)}static clearPointerIds(){p(Il,Kd,NaN),p(Il,vd,null)}static clearTimeStamp(){p(Il,vn,NaN)}};Kd=new WeakMap,vd=new WeakMap,vn=new WeakMap,Qd=new WeakMap,L(Il,Kd,NaN),L(Il,vd,null),L(Il,vn,NaN),L(Il,Qd,null);let Pt=Il;var f0;class x5{constructor(){L(this,f0,0)}get id(){return`${to}${rt(this,f0)._++}`}}f0=new WeakMap;var Qn,No,Ht,Pn,vh;const AG=class AG{constructor(){L(this,Pn);L(this,Qn,_r());L(this,No,0);L(this,Ht,null)}static get _isSVGFittingCanvas(){const l='data:image/svg+xml;charset=UTF-8,<svg viewBox="0 0 1 1" width="1" height="1" xmlns="http://www.w3.org/2000/svg"><rect width="1" height="1" style="fill:red;"/></svg>',e=new OffscreenCanvas(1,3).getContext("2d",{willReadFrequently:!0}),s=new Image;s.src=l;const c=s.decode().then(()=>(e.drawImage(s,0,0,1,1,0,0,1,3),new Uint32Array(e.getImageData(0,0,1,1).data.buffer)[0]===0));return el(this,"_isSVGFittingCanvas",c)}async getFromFile(l){const{lastModified:t,name:e,size:s,type:c}=l;return z(this,Pn,vh).call(this,`${t}_${e}_${s}_${c}`,l)}async getFromUrl(l){return z(this,Pn,vh).call(this,l,l)}async getFromBlob(l,t){const e=await t;return z(this,Pn,vh).call(this,l,e)}async getFromId(l){a(this,Ht)||p(this,Ht,new Map);const t=a(this,Ht).get(l);if(!t)return null;if(t.bitmap)return t.refCounter+=1,t;if(t.file)return this.getFromFile(t.file);if(t.blobPromise){const{blobPromise:e}=t;return delete t.blobPromise,this.getFromBlob(t.id,e)}return this.getFromUrl(t.url)}getFromCanvas(l,t){a(this,Ht)||p(this,Ht,new Map);let e=a(this,Ht).get(l);if(e!=null&&e.bitmap)return e.refCounter+=1,e;const s=new OffscreenCanvas(t.width,t.height);return s.getContext("2d").drawImage(t,0,0),e={bitmap:s.transferToImageBitmap(),id:`image_${a(this,Qn)}_${rt(this,No)._++}`,refCounter:1,isSvg:!1},a(this,Ht).set(l,e),a(this,Ht).set(e.id,e),e}getSvgUrl(l){const t=a(this,Ht).get(l);return t!=null&&t.isSvg?t.svgUrl:null}deleteId(l){var s;a(this,Ht)||p(this,Ht,new Map);const t=a(this,Ht).get(l);if(!t||(t.refCounter-=1,t.refCounter!==0))return;const{bitmap:e}=t;if(!t.url&&!t.file){const c=new OffscreenCanvas(e.width,e.height);c.getContext("bitmaprenderer").transferFromImageBitmap(e),t.blobPromise=c.convertToBlob()}(s=e.close)==null||s.call(e),t.bitmap=null}isValidId(l){return l.startsWith(`image_${a(this,Qn)}_`)}};Qn=new WeakMap,No=new WeakMap,Ht=new WeakMap,Pn=new WeakSet,vh=async function(l,t){a(this,Ht)||p(this,Ht,new Map);let e=a(this,Ht).get(l);if(e===null)return null;if(e!=null&&e.bitmap)return e.refCounter+=1,e;try{e||(e={bitmap:null,id:`image_${a(this,Qn)}_${rt(this,No)._++}`,refCounter:0,isSvg:!1});let s;if(typeof t=="string"?(e.url=t,s=await dh(t,"blob")):t instanceof File?s=e.file=t:t instanceof Blob&&(s=t),s.type==="image/svg+xml"){const c=AG._isSVGFittingCanvas,d=new FileReader,n=new Image,Z=new Promise((b,o)=>{n.onload=()=>{e.bitmap=n,e.isSvg=!0,b()},d.onload=async()=>{const m=e.svgUrl=d.result;n.src=await c?`${m}#svgView(preserveAspectRatio(none))`:m},n.onerror=d.onerror=o});d.readAsDataURL(s),await Z}else e.bitmap=await createImageBitmap(s);e.refCounter=1}catch(s){tl(s),e=null}return a(this,Ht).set(l,e),e&&a(this,Ht).set(e.id,e),e};let V2=AG;var Zt,Rc,ro,ql;class g5{constructor(l=128){L(this,Zt,[]);L(this,Rc,!1);L(this,ro);L(this,ql,-1);p(this,ro,l)}add({cmd:l,undo:t,post:e,mustExec:s,type:c=NaN,overwriteIfSameType:d=!1,keepUndo:n=!1}
3){if(s&&l(),a(this,Rc))return;const Z={cmd:l,undo:t,post:e,type:c};if(a(this,ql)===-1){a(this,Zt).length>0&&(a(this,Zt).length=0),p(this,ql,0),a(this,Zt).push(Z);return}if(d&&a(this,Zt)[a(this,ql)].type===c){n&&(Z.undo=a(this,Zt)[a(this,ql)].undo),a(this,Zt)[a(this,ql)]=Z;return}const b=a(this,ql)+1;b===a(this,ro)?a(this,Zt).splice(0,1):(p(this,ql,b),b<a(this,Zt).length&&a(this,Zt).splice(b)),a(this,Zt).push(Z)}undo(){if(a(this,ql)===-1)return;p(this,Rc,!0);const{undo:l,post:t}=a(this,Zt)[a(this,ql)];l(),t==null||t(),p(this,Rc,!1),p(this,ql,a(this,ql)-1)}redo(){if(a(this,ql)<a(this,Zt).length-1){p(this,ql,a(this,ql)+1),p(this,Rc,!0);const{cmd:l,post:t}=a(this,Zt)[a(this,ql)];l(),t==null||t(),p(this,Rc,!1)}}hasSomethingToUndo(){return a(this,ql)!==-1}hasSomethingToRedo(){return a(this,ql)<a(this,Zt).length-1}cleanType(l){if(a(this,ql)!==-1){for(let t=a(this,ql);t>=0;t--)if(a(this,Zt)[t].type!==l){a(this,Zt).splice(t+1,a(this,ql)-t),p(this,ql,t);return}a(this,Zt).length=0,p(this,ql,-1)}}destroy(){p(this,Zt,null)}}Zt=new WeakMap,Rc=new WeakMap,ro=new WeakMap,ql=new WeakMap;var B0,nX;class Zh{constructor(l){L(this,B0);this.buffer=[],this.callbacks=new Map,this.allKeys=new Set;const{isMac:t}=Tt.platform;for(const[e,s,c={}]of l)for(const d of e){const n=d.startsWith("mac+");t&&n?(this.callbacks.set(d.slice(4),{callback:s,options:c}),this.allKeys.add(d.split("+").at(-1))):!t&&!n&&(this.callbacks.set(d,{callback:s,options:c}),this.allKeys.add(d.split("+").at(-1)))}}exec(l,t){if(!this.allKeys.has(t.key))return;const e=this.callbacks.get(z(this,B0,nX).call(this,t));if(!e)return;const{callback:s,options:{bubbles:c=!1,args:d=[],checker:n=null}}=e;n&&!n(l,t)||(s.bind(l,...d,t)(),c||dt(t))}}B0=new WeakSet,nX=function(l){l.altKey&&this.buffer.push("alt"),l.ctrlKey&&this.buffer.push("ctrl"),l.metaKey&&this.buffer.push("meta"),l.shiftKey&&this.buffer.push("shift"),this.buffer.push(l.key);const t=this.buffer.join("+");return this.buffer.length=0,t};const A0=class A0{get _colors(){const l=new Map([["CanvasText",null],["Canvas",null]]);return L5(l),el(this,"_colors",l)}convert(l){const t=nh(l);if(!window.matchMedia("(forced-colors: active)").matches)return t;for(const[e,s]of this._colors)if(s.every((c,d)=>c===t[d]))return A0._colorsMapping.get(e);return t}getHexCode(l){const t=this._colors.get(l);return t?Q.makeHexColor(...t):l}};E(A0,"_colorsMapping",new Map([["CanvasText",[0,0,0]],["Canvas",[255,255,255]]]));let L2=A0;var Hn,pe,fn,tt,pt,Bn,qe,An,$e,ft,Sc,xc,_n,gc,ks,ls,Pd,Xo,Mo,qn,po,Us,jc,$n,Dc,Es,_0,Cc,lZ,Yo,Jc,Hd,tZ,Fc,yo,Gt,Vl,wi,Oc,kc,To,eZ,Vo,Uc,Ks,Ri,Lo,Io,ts,K,Qh,I2,ZX,bX,gb,oX,mX,hX,z2,uX,WX,GX,NX,le,yi,rX,XX,w2,MX,jb,R2;const Dn=class Dn{constructor(l,t,e,s,c,d,n,Z,b,o,m,h,W,r,N,M){L(this,K);L(this,Hn,new AbortController);L(this,pe,null);L(this,fn,null);L(this,tt,new Map);L(this,pt,new Map);L(this,Bn,null);L(this,qe,null);L(this,An,null);L(this,$e,new g5);L(this,ft,null);L(this,Sc,null);L(this,xc,null);L(this,_n,0);L(this,gc,new Set);L(this,ks,null);L(this,ls,null);L(this,Pd,new Set);E(this,"_editorUndoBar",null);L(this,Xo,!1);L(this,Mo,!1);L(this,qn,!1);L(this,po,null);L(this,Us,null);L(this,jc,null);L(this,$n,null);L(this,Dc,!1);L(this,Es,null);L(this,_0,new x5);L(this,Cc,!1);L(this,lZ,!1);L(this,Yo,!1);L(this,Jc,null);L(this,Hd,null);L(this,tZ,null);L(this,Fc,null);L(this,yo,null);L(this,Gt,cl.NONE);L(this,Vl,new Set);L(this,wi,null);L(this,Oc,null);L(this,kc,null);L(this,To,null);L(this,eZ,null);L(this,Vo,{isEditing:!1,isEmpty:!0,hasSomethingToUndo:!1,hasSomethingToRedo:!1,hasSelectedEditor:!1,hasSelectedText:!1});L(this,Uc,[0,0]);L(this,Ks,null);L(this,Ri,null);L(this,Lo,null);L(this,Io,null);L(this,ts,null);const X=this._signal=a(this,Hn).signal;p(this,Ri,l),p(this,Lo,t),p(this,Io,e),p(this,Bn,s),p(this,ft,c),p(this,Oc,d),p(this,eZ,Z),this._eventBus=n,n._on("editingaction",this.onEditingAction.bind(this),{signal:X}),n._on("pagechanging",this.onPageChanging.bind(this),{signal:X}),n._on("scalechanging",this.onScaleChanging.bind(this),{signal:X}),n._on("rotationchanging",this.onRotationChanging.bind(this),{signal:X}),n._on("setpreference",this.onSetPreference.bind(this),{signal:X}),n._on("switchannotationeditorparams",y=>this.updateParams(y.type,y.value),{signal:X}),window.addEventListener("pointerdown",()=>{p(this,lZ,!0)},{capture:!0,signal:X}),window.addEventListener("pointerup",()=>{p(this,lZ,!1)},{capture:!0,signal:X}),z(this,K,oX).call(this),z(this,K,NX).call(this),z(this,K,z2).call(this),p(this,qe,Z.annotationStorage),p(this,po,Z.filterFactory),p(this,kc,b),p(this,$n,o||null),p(this,Xo,m),p(this,Mo,h),p(this,qn,W),p(this,yo,r||null),this.viewParameters={realScale:Gc.PDF_TO_CSS_UNITS,rotation:0},this.isShiftKeyDown=!1,this._editorUndoBar=N||null,this._supportsPinchToZoom=M!==!1,c==null||c.setSidebarUiManager(this)}static get _keyboardManager(){const l=Dn.prototype,t=d=>a(d,Ri).contains(document.activeElement)&&document.activeElement.tagName!=="BUTTON"&&d.hasSomethingToControl(),e=(d,{target:n})=>{if(n instanceof HTMLInputElement){const{type:Z}=n;return Z!=="text"&&Z!=="number"}return!0},s=this.TRANSLATE_SMALL,c=this.TRANSLATE_BIG;return el(this,"_keyboardManager",new Zh([[["ctrl+a","mac+meta+a"],l.selectAll,{checker:e}],[["ctrl+z","mac+meta+z"],l.undo,{checker:e}],[["ctrl+y","ctrl+shift+z","mac+meta+shift+z","ctrl+shift+Z","mac+meta+shift+Z"],l.redo,{checker:e}],[["Backspace","alt+Backspace","ctrl+Backspace","shift+Backspace","mac+Backspace","mac+alt+Backspace","mac+ctrl+Backspace","Delete","ctrl+Delete","shift+Delete","mac+Delete"],l.delete,{checker:e}
3],[["Enter","mac+Enter"],l.addNewEditorFromKeyboard,{checker:(d,{target:n})=>!(n instanceof HTMLButtonElement)&&a(d,Ri).contains(n)&&!d.isEnterHandled}],[[" ","mac+ "],l.addNewEditorFromKeyboard,{checker:(d,{target:n})=>!(n instanceof HTMLButtonElement)&&a(d,Ri).contains(document.activeElement)}],[["Escape","mac+Escape"],l.unselectAll],[["ArrowLeft","mac+ArrowLeft"],l.translateSelectedEditors,{args:[-s,0],checker:t}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],l.translateSelectedEditors,{args:[-c,0],checker:t}],[["ArrowRight","mac+ArrowRight"],l.translateSelectedEditors,{args:[s,0],checker:t}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],l.translateSelectedEditors,{args:[c,0],checker:t}],[["ArrowUp","mac+ArrowUp"],l.translateSelectedEditors,{args:[0,-s],checker:t}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],l.translateSelectedEditors,{args:[0,-c],checker:t}],[["ArrowDown","mac+ArrowDown"],l.translateSelectedEditors,{args:[0,s],checker:t}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],l.translateSelectedEditors,{args:[0,c],checker:t}]]))}destroy(){var l,t,e,s,c,d,n,Z,b;(l=a(this,ts))==null||l.resolve(),p(this,ts,null),(t=a(this,Hn))==null||t.abort(),p(this,Hn,null),this._signal=null;for(const o of a(this,pt).values())o.destroy();a(this,pt).clear(),a(this,tt).clear(),a(this,Pd).clear(),(e=a(this,Fc))==null||e.clear(),p(this,pe,null),a(this,Vl).clear(),a(this,$e).destroy(),(s=a(this,Bn))==null||s.destroy(),(c=a(this,ft))==null||c.destroy(),(d=a(this,Oc))==null||d.destroy(),(n=a(this,Es))==null||n.hide(),p(this,Es,null),(Z=a(this,tZ))==null||Z.destroy(),p(this,tZ,null),p(this,fn,null),a(this,Us)&&(clearTimeout(a(this,Us)),p(this,Us,null)),a(this,Ks)&&(clearTimeout(a(this,Ks)),p(this,Ks,null)),(b=this._editorUndoBar)==null||b.destroy(),p(this,eZ,null)}combinedSignal(l){return AbortSignal.any([this._signal,l.signal])}get mlManager(){return a(this,yo)}get useNewAltTextFlow(){return a(this,Mo)}get useNewAltTextWhenAddingImage(){return a(this,qn)}get hcmFilter(){return el(this,"hcmFilter",a(this,kc)?a(this,po).addHCMFilter(a(this,kc).foreground,a(this,kc).background):"none")}get direction(){return el(this,"direction",getComputedStyle(a(this,Ri)).direction)}get _highlightColors(){return el(this,"_highlightColors",a(this,$n)?new Map(a(this,$n).split(",").map(l=>(l=l.split("=").map(t=>t.trim()),l[1]=l[1].toUpperCase(),l))):null)}get highlightColors(){const{_highlightColors:l}=this;if(!l)return el(this,"highlightColors",null);const t=new Map,e=!!a(this,kc);for(const[s,c]of l){const d=s.endsWith("_HCM");if(e&&d){t.set(s.replace("_HCM",""),c);continue}!e&&!d&&t.set(s,c)}return el(this,"highlightColors",t)}get highlightColorNames(){return el(this,"highlightColorNames",this.highlightColors?new Map(Array.from(this.highlightColors,l=>l.reverse())):null)}getNonHCMColor(l){if(!this._highlightColors)return l;const t=this.highlightColorNames.get(l);return this._highlightColors.get(t)||l}getNonHCMColorName(l){return this.highlightColorNames.get(l)||l}setCurrentDrawingSession(l){l?(this.unselectAll(),this.disableUserSelect(!0)):this.disableUserSelect(!1),p(this,xc,l)}setMainHighlightColorPicker(l){p(this,tZ,l)}editAltText(l,t=!1){var e;(e=a(this,Bn))==null||e.editAltText(this,l,t)}hasCommentManager(){return!!a(this,ft)}editComment(l,t,e,s){var c;(c=a(this,ft))==null||c.showDialog(this,l,t,e,s)}selectComment(l,t){const e=a(this,pt).get(l),s=e==null?void 0:e.getEditorByUID(t);s==null||s.toggleComment(!0,!0)}updateComment(l){var t;(t=a(this,ft))==null||t.updateComment(l.getData())}updatePopupColor(l){var t;(t=a(this,ft))==null||t.updatePopupColor(l)}removeComment(l){var t;(t=a(this,ft))==null||t.removeComments([l.uid])}toggleComment(l,t,e=void 0){var s;(s=a(this,ft))==null||s.toggleCommentPopup(l,t,e)}makeCommentColor(l,t){var e;return l&&((e=a(this,ft))==null?void 0:e.makeCommentColor(l,t))||null}getCommentDialogElement(){var l;return((l=a(this,ft))==null?void 0:l.dialogElement)||null}async waitForEditorsRendered(l){if(a(this,pt).has(l-1))return;const{resolve:t,promise:e}=Promise.withResolvers(),s=c=>{c.pageNumber===l&&(this._eventBus._off("editorsrendered",s),t())};this._eventBus.on("editorsrendered",s),await e}getSignature(l){var t;(t=a(this,Oc))==null||t.getSignature({uiManager:this,editor:l})}get signatureManager(){return a(this,Oc)}switchToMode(l,t){this._eventBus.on("annotationeditormodechanged",t,{once:!0,signal:this._signal}),this._eventBus.dispatch("showannotationeditorui",{source:this,mode:l})}setPreference(l,t){this._eventBus.dispatch("setpreference",{source:this,name:l,value:t})}onSetPreference({name:l,value:t}){switch(l){case"enableNewAltTextWhenAddingImage":p(this,qn,t);break}}onPageChanging({pageNumber:l}){p(this,_n,l-1)}focusMainContainer(){a(this,Ri).focus()}findParent(l,t){for(const e of a(this,pt).values()){const{x:s,y:c,width:d,height:n}=e.div.getBoundingClientRect();if(l>=s&&l<=s+d&&t>=c&&t<=c+n)return e}return null}disableUserSelect(l=!1){a(this,Lo).classList.toggle("noUserSelect",l)}addShouldRescale(l){a(this,Pd).add(l)}removeShouldRescale(l){a(this,Pd).delete(l)}onScaleChanging({scale:l}){var t;this.commitOrRemove(),this.viewParameters.realScale=l*Gc.PDF_TO_CSS_UNITS;for(const e of a(this,Pd))e.onScaleChanging();(t=a(this,xc))==null||t.onScaleChanging()}
3onRotationChanging({pagesRotation:l}){this.commitOrRemove(),this.viewParameters.rotation=l}highlightSelection(l="",t=!1){const e=document.getSelection();if(!e||e.isCollapsed)return;const{anchorNode:s,anchorOffset:c,focusNode:d,focusOffset:n}=e,Z=e.toString(),o=z(this,K,Qh).call(this,e).closest(".textLayer"),m=this.getSelectionBoxes(o);if(!m)return;e.empty();const h=z(this,K,I2).call(this,o),W=a(this,Gt)===cl.NONE,r=()=>{const N=h==null?void 0:h.createAndAddNewEditor({x:0,y:0},!1,{methodOfCreation:l,boxes:m,anchorNode:s,anchorOffset:c,focusNode:d,focusOffset:n,text:Z});W&&this.showAllEditors("highlight",!0,!0),t&&(N==null||N.editComment())};if(W){this.switchToMode(cl.HIGHLIGHT,r);return}r()}commentSelection(l=""){this.highlightSelection(l,!0)}getAndRemoveDataFromAnnotationStorage(l){if(!a(this,qe))return null;const t=`${to}${l}`,e=a(this,qe).getRawValue(t);return e&&a(this,qe).remove(t),e}addToAnnotationStorage(l){!l.isEmpty()&&a(this,qe)&&!a(this,qe).has(l.id)&&a(this,qe).setValue(l.id,l)}a11yAlert(l,t=null){const e=a(this,Io);e&&(e.setAttribute("data-l10n-id",l),t?e.setAttribute("data-l10n-args",JSON.stringify(t)):e.removeAttribute("data-l10n-args"))}blur(){if(this.isShiftKeyDown=!1,a(this,Dc)&&(p(this,Dc,!1),z(this,K,gb).call(this,"main_toolbar")),!this.hasSelection)return;const{activeElement:l}=document;for(const t of a(this,Vl))if(t.div.contains(l)){p(this,Hd,[t,l]),t._focusEventsAllowed=!1;break}}focus(){if(!a(this,Hd))return;const[l,t]=a(this,Hd);p(this,Hd,null),t.addEventListener("focusin",()=>{l._focusEventsAllowed=!0},{once:!0,signal:this._signal}),t.focus()}addEditListeners(){z(this,K,z2).call(this),this.setEditingState(!0)}removeEditListeners(){z(this,K,uX).call(this),this.setEditingState(!1)}dragOver(l){for(const{type:t}of l.dataTransfer.items)for(const e of a(this,ls))if(e.isHandlingMimeForPasting(t)){l.dataTransfer.dropEffect="copy",l.preventDefault();return}}drop(l){for(const t of l.dataTransfer.items)for(const e of a(this,ls))if(e.isHandlingMimeForPasting(t.type)){e.paste(t,this.currentLayer),l.preventDefault();return}}copy(l){var e;if(l.preventDefault(),(e=a(this,pe))==null||e.commitOrRemove(),!this.hasSelection)return;const t=[];for(const s of a(this,Vl)){const c=s.serialize(!0);c&&t.push(c)}t.length!==0&&l.clipboardData.setData("application/pdfjs",JSON.stringify(t))}cut(l){this.copy(l),this.delete()}async paste(l){l.preventDefault();const{clipboardData:t}=l;for(const c of t.items)for(const d of a(this,ls))if(d.isHandlingMimeForPasting(c.type)){d.paste(c,this.currentLayer);return}let e=t.getData("application/pdfjs");if(!e)return;try{e=JSON.parse(e)}catch(c){tl(`paste: "${c.message}".`);return}if(!Array.isArray(e))return;this.unselectAll();const s=this.currentLayer;try{const c=[];for(const Z of e){const b=await s.deserialize(Z);if(!b)return;c.push(b)}const d=()=>{for(const Z of c)z(this,K,w2).call(this,Z);z(this,K,R2).call(this,c)},n=()=>{for(const Z of c)Z.remove()};this.addCommands({cmd:d,undo:n,mustExec:!0})}catch(c){tl(`paste: "${c.message}".`)}}keydown(l){!this.isShiftKeyDown&&l.key==="Shift"&&(this.isShiftKeyDown=!0),a(this,Gt)!==cl.NONE&&!this.isEditorHandlingKeyboard&&Dn._keyboardManager.exec(this,l)}keyup(l){this.isShiftKeyDown&&l.key==="Shift"&&(this.isShiftKeyDown=!1,a(this,Dc)&&(p(this,Dc,!1),z(this,K,gb).call(this,"main_toolbar")))}onEditingAction({name:l}){switch(l){case"undo":case"redo":case"delete":case"selectAll":this[l]();break;case"highlightSelection":this.highlightSelection("context_menu");break;case"commentSelection":this.commentSelection("context_menu");break}}setEditingState(l){l?(z(this,K,mX).call(this),z(this,K,WX).call(this),z(this,K,le).call(this,{isEditing:a(this,Gt)!==cl.NONE,isEmpty:z(this,K,jb).call(this),hasSomethingToUndo:a(this,$e).hasSomethingToUndo(),hasSomethingToRedo:a(this,$e).hasSomethingToRedo(),hasSelectedEditor:!1})):(z(this,K,hX).call(this),z(this,K,GX).call(this),z(this,K,le).call(this,{isEditing:!1}),this.disableUserSelect(!1))}registerEditorTypes(l){if(!a(this,ls)){p(this,ls,l);for(const t of a(this,ls))z(this,K,yi).call(this,t.defaultPropertiesToUpdate)}}getId(){return a(this,_0).id}get currentLayer(){return a(this,pt).get(a(this,_n))}getLayer(l){return a(this,pt).get(l)}get currentPageIndex(){return a(this,_n)}addLayer(l){a(this,pt).set(l.pageIndex,l),a(this,Cc)?l.enable():l.disable()}removeLayer(l){a(this,pt).delete(l.pageIndex)}async updateMode(l,t=null,e=!1,s=!1,c=!1,d=!1){var n,Z,b,o,m,h;if(a(this,Gt)!==l&&!(a(this,ts)&&(await a(this,ts).promise,!a(this,ts)))){if(p(this,ts,Promise.withResolvers()),(n=a(this,xc))==null||n.commitOrRemove(),a(this,Gt)===cl.POPUP&&((Z=a(this,ft))==null||Z.hideSidebar()),(b=a(this,ft))==null||b.destroyPopup(),p(this,Gt,l),l===cl.NONE){this.setEditingState(!1),z(this,K,XX).call(this);for(const W of a(this,tt).values())W.hideStandaloneCommentButton();(o=this._editorUndoBar)==null||o.hide(),this.toggleComment(null),a(this,ts).resolve();return}for(const W of a(this,tt).values())W.addStandaloneCommentButton();l===cl.SIGNATURE&&await((m=a(this,Oc))==null?void 0:m.loadSignatures()),e&&Pt.clearPointerType(),this.setEditingState(!0),await z(this,K,rX).call(this),this.unselectAll();for(const W of a(this,pt).values())W.updateMode(l);if(l===cl.POPUP){a(this,fn)||p(this,fn,await a(this,eZ).getAnnotationsByType(new Set(a(this,ls).map(N=>N._editorType))));const W=new Set,r=[];for(const N of a(this,tt).values()){const{annotationElementId:M,hasComment:X,deleted:y}=N;M&&W.add(M),X&&!y&&r.push(N.getData())}for(const N of a(this,fn)){const{id:M,popupRef:X,contentsObj:y}=N;X&&(y!=null&&y.str)&&!W.has(M)&&!a(this,gc).has(M)&&r.push(N)}(h=a(this,ft))==null||h.showSidebar(r)}if(!t){s&&this.addNewEditorFromKeyboard(),a(this,ts).resolve();return}for(const W of a(this,tt).values())W.uid===t?(this.setSelected(W),d?W.editComment():c?W.enterInEditMode():W.focus()):W.unselect();a(this,ts).resolve()}}addNewEditorFromKeyboard(){this.currentLayer.canCreateNewEmptyEditor()&&this.currentLayer.addNewEditor()}updateToolbar(l){l.mode!==a(this,Gt)&&this._eventBus.dispatch("switchannotationeditormode",{source:this,...l})}updateParams(l,t){if(a(this,ls)){switch(l){case Wl.CREATE:this.currentLayer.addNewEditor(t);return;case Wl.HIGHLIGHT_SHOW_ALL:this._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:{type:"highlight",action:"toggle_visibility"}}}),(a(this,To)||p(this,To,new Map)).set(l,t),this.showAllEditors("highlight",t);break}if(this.hasSelection)for(const e of a(this,Vl))e.updateParams(l,t);else for(const e of a(this,ls))e.updateDefaultParams(l,t)}}showAllEditors(l,t,e=!1){var c;for(const d of a(this,tt).values())d.editorType===l&&d.show(t);(((c=a(this,To))==null?void 0:c.get(Wl.HIGHLIGHT_SHOW_ALL))??!0)!==t&&z(this,K,yi).call(this,[[Wl.HIGHLIGHT_SHOW_ALL,t]])}enableWaiting(l=!1){if(a(this,Yo)!==l){p(this,Yo,l);for(const t of a(this,pt).values())l?t.disableClick():t.enableClick(),t.div.classList.toggle("waiting",l)}}*getEditors(l){for(const t of a(this,tt).values())t.pageIndex===l&&(yield t)}getEditor(l){return a(this,tt).get(l)}addEditor(l){a(this,tt).set(l.id,l)}removeEditor(l){var t,e;l.div.contains(document.activeElement)&&(a(this,Us)&&clearTimeout(a(this,Us)),p(this,Us,setTimeout(()=>{this.focusMainContainer(),p(this,Us,null)},0))),a(this,tt).delete(l.id),l.annotationElementId&&((t=a(this,Fc))==null||t.delete(l.annotationElementId)),this.unselect(l),(!l.annotationElementId||!a(this,gc).has(l.annotationElementId))&&((e
3=a(this,qe))==null||e.remove(l.id))}addDeletedAnnotationElement(l){a(this,gc).add(l.annotationElementId),this.addChangedExistingAnnotation(l),l.deleted=!0}isDeletedAnnotationElement(l){return a(this,gc).has(l)}removeDeletedAnnotationElement(l){a(this,gc).delete(l.annotationElementId),this.removeChangedExistingAnnotation(l),l.deleted=!1}setActiveEditor(l){a(this,pe)!==l&&(p(this,pe,l),l&&z(this,K,yi).call(this,l.propertiesToUpdate))}updateUI(l){a(this,K,MX)===l&&z(this,K,yi).call(this,l.propertiesToUpdate)}updateUIForDefaultProperties(l){z(this,K,yi).call(this,l.defaultPropertiesToUpdate)}toggleSelected(l){if(a(this,Vl).has(l)){a(this,Vl).delete(l),l.unselect(),z(this,K,le).call(this,{hasSelectedEditor:this.hasSelection});return}a(this,Vl).add(l),l.select(),z(this,K,yi).call(this,l.propertiesToUpdate),z(this,K,le).call(this,{hasSelectedEditor:!0})}setSelected(l){var t;this.updateToolbar({mode:l.mode,editId:l.uid}),(t=a(this,xc))==null||t.commitOrRemove();for(const e of a(this,Vl))e!==l&&e.unselect();a(this,Vl).clear(),a(this,Vl).add(l),l.select(),z(this,K,yi).call(this,l.propertiesToUpdate),z(this,K,le).call(this,{hasSelectedEditor:!0})}isSelected(l){return a(this,Vl).has(l)}get firstSelectedEditor(){return a(this,Vl).values().next().value}unselect(l){l.unselect(),a(this,Vl).delete(l),z(this,K,le).call(this,{hasSelectedEditor:this.hasSelection})}get hasSelection(){return a(this,Vl).size!==0}get isEnterHandled(){return a(this,Vl).size===1&&this.firstSelectedEditor.isEnterHandled}undo(){var l;a(this,$e).undo(),z(this,K,le).call(this,{hasSomethingToUndo:a(this,$e).hasSomethingToUndo(),hasSomethingToRedo:!0,isEmpty:z(this,K,jb).call(this)}),(l=this._editorUndoBar)==null||l.hide()}redo(){a(this,$e).redo(),z(this,K,le).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:a(this,$e).hasSomethingToRedo(),isEmpty:z(this,K,jb).call(this)})}addCommands(l){a(this,$e).add(l),z(this,K,le).call(this,{hasSomethingToUndo:!0,hasSomethingToRedo:!1,isEmpty:z(this,K,jb).call(this)})}cleanUndoStack(l){a(this,$e).cleanType(l)}delete(){var c;this.commitOrRemove();const l=(c=this.currentLayer)==null?void 0:c.endDrawingSession(!0);if(!this.hasSelection&&!l)return;const t=l?[l]:[...a(this,Vl)],e=()=>{var d;(d=this._editorUndoBar)==null||d.show(s,t.length===1?t[0].editorType:t.length);for(const n of t)n.remove()},s=()=>{for(const d of t)z(this,K,w2).call(this,d)};this.addCommands({cmd:e,undo:s,mustExec:!0})}commitOrRemove(){var l;(l=a(this,pe))==null||l.commitOrRemove()}hasSomethingToControl(){return a(this,pe)||this.hasSelection}selectAll(){for(const l of a(this,Vl))l.commit();z(this,K,R2).call(this,a(this,tt).values())}unselectAll(){var l;if(!(a(this,pe)&&(a(this,pe).commitOrRemove(),a(this,Gt)!==cl.NONE))&&!((l=a(this,xc))!=null&&l.commitOrRemove())&&this.hasSelection){for(const t of a(this,Vl))t.unselect();a(this,Vl).clear(),z(this,K,le).call(this,{hasSelectedEditor:!1})}}translateSelectedEditors(l,t,e=!1){if(e||this.commitOrRemove(),!this.hasSelection)return;a(this,Uc)[0]+=l,a(this,Uc)[1]+=t;const[s,c]=a(this,Uc),d=[...a(this,Vl)],n=1e3;a(this,Ks)&&clearTimeout(a(this,Ks)),p(this,Ks,setTimeout(()=>{p(this,Ks,null),a(this,Uc)[0]=a(this,Uc)[1]=0,this.addCommands({cmd:()=>{for(const Z of d)a(this,tt).has(Z.id)&&(Z.translateInPage(s,c),Z.translationDone())},undo:()=>{for(const Z of d)a(this,tt).has(Z.id)&&(Z.translateInPage(-s,-c),Z.translationDone())},mustExec:!1})},n));for(const Z of d)Z.translateInPage(l,t),Z.translationDone()}setUpDragSession(){if(this.hasSelection){this.disableUserSelect(!0),p(this,ks,new Map);for(const l of a(this,Vl))a(this,ks).set(l,{savedX:l.x,savedY:l.y,savedPageIndex:l.pageIndex,newX:0,newY:0,newPageIndex:-1})}}endDragSession(){if(!a(this,ks))return!1;this.disableUserSelect(!1);const l=a(this,ks);p(this,ks,null);let t=!1;for(const[{x:s,y:c,pageIndex:d},n]of l)n.newX=s,n.newY=c,n.newPageIndex=d,t||(t=s!==n.savedX||c!==n.savedY||d!==n.savedPageIndex);if(!t)return!1;const e=(s,c,d,n)=>{if(a(this,tt).has(s.id)){const Z=a(this,pt).get(n);Z?s._setParentAndPosition(Z,c,d):(s.pageIndex=n,s.x=c,s.y=d)}};return this.addCommands({cmd:()=>{for(const[s,{newX:c,newY:d,newPageIndex:n}]of l)e(s,c,d,n)},undo:()=>{for(const[s,{savedX:c,savedY:d,savedPageIndex:n}]of l)e(s,c,d,n)},mustExec:!0}),!0}dragSelectedEditors(l,t){if(a(this,ks))for(const e of a(this,ks).keys())e.drag(l,t)}rebuild(l){if(l.parent===null){const t=this.getLayer(l.pageIndex);t?(t.changeParent(l),t.addOrRebuild(l)):(this.addEditor(l),this.addToAnnotationStorage(l),l.rebuild())}else l.parent.addOrRebuild(l)}get isEditorHandlingKeyboard(){var l;return((l=this.getActive())==null?void 0:l.shouldGetKeyboardEvents())||a(this,Vl).size===1&&this.firstSelectedEditor.shouldGetKeyboardEvents()}isActive(l){return a(this,pe)===l}getActive(){return a(this,pe)}getMode(){return a(this,Gt)}isEditingMode(){return a(this,Gt)!==cl.NONE}get imageManager(){return el(this,"imageManager",new V2)}getSelectionBoxes(l){if(!l)return null;const t=document.getSelection();for(let b=0,o=t.rangeCount;b<o;b++)if(!l.contains(t.getRangeAt(b).commonAncestorContainer))return null;const{x:e,y:s,width:c,height:d}=l.getBoundingClientRect();let n;switch(l.getAttribute("data-main-rotation")){case"90":n=(b,o,m,h)=>({x:(o-s)/d,y:1-(b+m-e)/c,width:h/d,height:m/c});break;case"180":n=(b,o,m,h)=>({x:1-(b+m-e)/c,y:1-(o+h-s)/d,width:m/c,height:h/d});break;case"270":n=(b,o,m,h)=>({x:1-(o+h-s)/d,y:(b-e)/c,width:h/d,height:m/c});break;default:n=(b,o,m,h)=>({x:(b-e)/c,y:(o-s)/d,width:m/c,height:h/d});break}const Z=[];for(let b=0,o=t.rangeCount;b<o;b++){const m=t.getRangeAt(b);if(!m.collapsed)for(const{x:h,y:W,width:r,height:N}of m.getClientRects())r===0||N===0||Z.push(n(h,W,r,N))}return Z.length===0?null:Z}addChangedExistingAnnotation({annotationElementId:l,id:t}){(a(this,An)||p(this,An,new Map)).set(l,t)}removeChangedExistingAnnotation({annotationElementId:l}){var t;(t=a(this,An))==null||t.delete(l)}renderAnnotationElement(l){var s;const t=(s=a(this,An))==null?void 0:s.get(l.data.id);if(!t)return;const e=a(this,qe).getRawValue(t);e&&(a(this,Gt)===cl.NONE&&!e.hasBeenModified||e.renderAnnotationElement(l))}setMissingCanvas(l,t,e){var c;const s=(c=a(this,Fc))==null?void 0:c.get(l);s&&(s.setCanvas(t,e),a(this,Fc).delete(l))}addMissingCanvas(l,t){(a(this,Fc)||p(this,Fc,new Map)).set(l,t)}};Hn=new WeakMap,pe=new WeakMap,fn=new WeakMap,tt=new WeakMap,pt=new WeakMap,Bn=new WeakMap,qe=new WeakMap,An=new WeakMap,$e=new WeakMap,ft=new WeakMap,Sc=new WeakMap,xc=new WeakMap,_n=new WeakMap,gc=new WeakMap,ks=new WeakMap,ls=new WeakMap,Pd=new WeakMap,Xo=new WeakMap,Mo=new WeakMap,qn=new WeakMap,po=new WeakMap,Us=new WeakMap,jc=new WeakMap,$n=new WeakMap,Dc=new WeakMap,Es=new WeakMap,_0=new WeakMap,Cc=new WeakMap,lZ=new WeakMap,Yo=new WeakMap,Jc=new WeakMap,Hd=new WeakMap,tZ=new WeakMap,Fc=new WeakMap,yo=new WeakMap,Gt=new WeakMap,Vl=new WeakMap,wi=new WeakMap,Oc=new WeakMap,kc=new WeakMap,To=new WeakMap,eZ=new WeakMap,Vo=new WeakMap,Uc=new WeakMap,Ks=new WeakMap,Ri=new WeakMap,Lo=new WeakMap,Io=new WeakMap,ts=new WeakMap,K=new WeakSet,Qh=function({anchorNode:l}){return l.nodeType===Node.TEXT_NODE?l.parentElement:l},I2=function(l){const{currentLayer:t}=this;if(t.hasTextLayer(l))return t;for(const e of a(this,pt).values())if(e.hasTextLayer(l))return e;return null},ZX=function(){const l=document.getSelection();if(!l||l.isCollapsed)return;
3const e=z(this,K,Qh).call(this,l).closest(".textLayer"),s=this.getSelectionBoxes(e);s&&(a(this,Es)||p(this,Es,new S5(this)),a(this,Es).show(e,s,this.direction==="ltr"))},bX=function(){var c,d,n;const l=document.getSelection();if(!l||l.isCollapsed){a(this,wi)&&((c=a(this,Es))==null||c.hide(),p(this,wi,null),z(this,K,le).call(this,{hasSelectedText:!1}));return}const{anchorNode:t}=l;if(t===a(this,wi))return;const s=z(this,K,Qh).call(this,l).closest(".textLayer");if(!s){a(this,wi)&&((d=a(this,Es))==null||d.hide(),p(this,wi,null),z(this,K,le).call(this,{hasSelectedText:!1}));return}if((n=a(this,Es))==null||n.hide(),p(this,wi,t),z(this,K,le).call(this,{hasSelectedText:!0}),!(a(this,Gt)!==cl.HIGHLIGHT&&a(this,Gt)!==cl.NONE)&&(a(this,Gt)===cl.HIGHLIGHT&&this.showAllEditors("highlight",!0,!0),p(this,Dc,this.isShiftKeyDown),!this.isShiftKeyDown)){const Z=a(this,Gt)===cl.HIGHLIGHT?z(this,K,I2).call(this,s):null;if(Z==null||Z.toggleDrawing(),a(this,lZ)){const b=new AbortController,o=this.combinedSignal(b),m=h=>{h.type==="pointerup"&&h.button!==0||(b.abort(),Z==null||Z.toggleDrawing(!0),h.type==="pointerup"&&z(this,K,gb).call(this,"main_toolbar"))};window.addEventListener("pointerup",m,{signal:o}),window.addEventListener("blur",m,{signal:o})}else Z==null||Z.toggleDrawing(!0),z(this,K,gb).call(this,"main_toolbar")}},gb=function(l=""){a(this,Gt)===cl.HIGHLIGHT?this.highlightSelection(l):a(this,Xo)&&z(this,K,ZX).call(this)},oX=function(){document.addEventListener("selectionchange",z(this,K,bX).bind(this),{signal:this._signal})},mX=function(){if(a(this,jc))return;p(this,jc,new AbortController);const l=this.combinedSignal(a(this,jc));window.addEventListener("focus",this.focus.bind(this),{signal:l}),window.addEventListener("blur",this.blur.bind(this),{signal:l})},hX=function(){var l;(l=a(this,jc))==null||l.abort(),p(this,jc,null)},z2=function(){if(a(this,Jc))return;p(this,Jc,new AbortController);const l=this.combinedSignal(a(this,Jc));window.addEventListener("keydown",this.keydown.bind(this),{signal:l}),window.addEventListener("keyup",this.keyup.bind(this),{signal:l})},uX=function(){var l;(l=a(this,Jc))==null||l.abort(),p(this,Jc,null)},WX=function(){if(a(this,Sc))return;p(this,Sc,new AbortController);const l=this.combinedSignal(a(this,Sc));document.addEventListener("copy",this.copy.bind(this),{signal:l}),document.addEventListener("cut",this.cut.bind(this),{signal:l}),document.addEventListener("paste",this.paste.bind(this),{signal:l})},GX=function(){var l;(l=a(this,Sc))==null||l.abort(),p(this,Sc,null)},NX=function(){const l=this._signal;document.addEventListener("dragover",this.dragOver.bind(this),{signal:l}),document.addEventListener("drop",this.drop.bind(this),{signal:l})},le=function(l){Object.entries(l).some(([e,s])=>a(this,Vo)[e]!==s)&&(this._eventBus.dispatch("annotationeditorstateschanged",{source:this,details:Object.assign(a(this,Vo),l)}),a(this,Gt)===cl.HIGHLIGHT&&l.hasSelectedEditor===!1&&z(this,K,yi).call(this,[[Wl.HIGHLIGHT_FREE,!0]]))},yi=function(l){this._eventBus.dispatch("annotationeditorparamschanged",{source:this,details:l})},rX=async function(){if(!a(this,Cc)){p(this,Cc,!0);const l=[];for(const t of a(this,pt).values())l.push(t.enable());await Promise.all(l);for(const t of a(this,tt).values())t.enable()}},XX=function(){if(this.unselectAll(),a(this,Cc)){p(this,Cc,!1);for(const l of a(this,pt).values())l.disable();for(const l of a(this,tt).values())l.disable()}},w2=function(l){const t=a(this,pt).get(l.pageIndex);t?t.addOrRebuild(l):(this.addEditor(l),this.addToAnnotationStorage(l))},MX=function(){let l=null;for(l of a(this,Vl));return l},jb=function(){if(a(this,tt).size===0)return!0;if(a(this,tt).size===1)for(const l of a(this,tt).values())return l.isEmpty();return!1},R2=function(l){for(const t of a(this,Vl))t.unselect();a(this,Vl).clear();for(const t of l)t.isEmpty()||(a(this,Vl).add(t),t.select());z(this,K,le).call(this,{hasSelectedEditor:this.hasSelection})},E(Dn,"TRANSLATE_SMALL",1),E(Dn,"TRANSLATE_BIG",10);let dn=Dn;var Lt,vs,us,sZ,Qs,Ye,iZ,Ps,me,Si,fd,Hs,Ec,zs,Db,Ph;const te=class te{constructor(l){L(this,zs);L(this,Lt,null);L(this,vs,!1);L(this,us,null);L(this,sZ,null);L(this,Qs,null);L(this,Ye,null);L(this,iZ,!1);L(this,Ps,null);L(this,me,null);L(this,Si,null);L(this,fd,null);L(this,Hs,!1);p(this,me,l),p(this,Hs,l._uiManager.useNewAltTextFlow),a(te,Ec)||p(te,Ec,Object.freeze({added:"pdfjs-editor-new-alt-text-added-button","added-label":"pdfjs-editor-new-alt-text-added-button-label",missing:"pdfjs-editor-new-alt-text-missing-button","missing-label":"pdfjs-editor-new-alt-text-missing-button-label",review:"pdfjs-editor-new-alt-text-to-review-button","review-label":"pdfjs-editor-new-alt-text-to-review-button-label"}))}static initialize(l){te._l10n??(te._l10n=l)}async render(){const l=p(this,us,document.createElement("button"));l.className="altText",l.tabIndex="0";
3const t=p(this,sZ,document.createElement("span"));l.append(t),a(this,Hs)?(l.classList.add("new"),l.setAttribute("data-l10n-id",a(te,Ec).missing),t.setAttribute("data-l10n-id",a(te,Ec)["missing-label"])):(l.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button"),t.setAttribute("data-l10n-id","pdfjs-editor-alt-text-button-label"));const e=a(this,me)._uiManager._signal;l.addEventListener("contextmenu",os,{signal:e}),l.addEventListener("pointerdown",c=>c.stopPropagation(),{signal:e});const s=c=>{c.preventDefault(),a(this,me)._uiManager.editAltText(a(this,me)),a(this,Hs)&&a(this,me)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_clicked",data:{label:a(this,zs,Db)}})};return l.addEventListener("click",s,{capture:!0,signal:e}),l.addEventListener("keydown",c=>{c.target===l&&c.key==="Enter"&&(p(this,iZ,!0),s(c))},{signal:e}),await z(this,zs,Ph).call(this),l}finish(){a(this,us)&&(a(this,us).focus({focusVisible:a(this,iZ)}),p(this,iZ,!1))}isEmpty(){return a(this,Hs)?a(this,Lt)===null:!a(this,Lt)&&!a(this,vs)}hasData(){return a(this,Hs)?a(this,Lt)!==null||!!a(this,Si):this.isEmpty()}get guessedText(){return a(this,Si)}async setGuessedText(l){a(this,Lt)===null&&(p(this,Si,l),p(this,fd,await te._l10n.get("pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer",{generatedAltText:l})),z(this,zs,Ph).call(this))}toggleAltTextBadge(l=!1){var t;if(!a(this,Hs)||a(this,Lt)){(t=a(this,Ps))==null||t.remove(),p(this,Ps,null);return}if(!a(this,Ps)){const e=p(this,Ps,document.createElement("div"));e.className="noAltTextBadge",a(this,me).div.append(e)}a(this,Ps).classList.toggle("hidden",!l)}serialize(l){let t=a(this,Lt);return!l&&a(this,Si)===t&&(t=a(this,fd)),{altText:t,decorative:a(this,vs),guessedText:a(this,Si),textWithDisclaimer:a(this,fd)}}get data(){return{altText:a(this,Lt),decorative:a(this,vs)}}set data({altText:l,decorative:t,guessedText:e,textWithDisclaimer:s,cancel:c=!1}){e&&(p(this,Si,e),p(this,fd,s)),!(a(this,Lt)===l&&a(this,vs)===t)&&(c||(p(this,Lt,l),p(this,vs,t)),z(this,zs,Ph).call(this))}toggle(l=!1){a(this,us)&&(!l&&a(this,Ye)&&(clearTimeout(a(this,Ye)),p(this,Ye,null)),a(this,us).disabled=!l)}shown(){a(this,me)._reportTelemetry({action:"pdfjs.image.alt_text.image_status_label_displayed",data:{label:a(this,zs,Db)}})}destroy(){var l,t;(l=a(this,us))==null||l.remove(),p(this,us,null),p(this,sZ,null),p(this,Qs,null),(t=a(this,Ps))==null||t.remove(),p(this,Ps,null)}};Lt=new WeakMap,vs=new WeakMap,us=new WeakMap,sZ=new WeakMap,Qs=new WeakMap,Ye=new WeakMap,iZ=new WeakMap,Ps=new WeakMap,me=new WeakMap,Si=new WeakMap,fd=new WeakMap,Hs=new WeakMap,Ec=new WeakMap,zs=new WeakSet,Db=function(){return a(this,Lt)&&"added"||a(this,Lt)===null&&this.guessedText&&"review"||"missing"},Ph=async function(){var s,c,d;const l=a(this,us);if(!l)return;if(a(this,Hs)){if(l.classList.toggle("done",!!a(this,Lt)),l.setAttribute("data-l10n-id",a(te,Ec)[a(this,zs,Db)]),(s=a(this,sZ))==null||s.setAttribute("data-l10n-id",a(te,Ec)[`${a(this,zs,Db)}-label`]),!a(this,Lt)){(c=a(this,Qs))==null||c.remove();return}}else{if(!a(this,Lt)&&!a(this,vs)){l.classList.remove("done"),(d=a(this,Qs))==null||d.remove();return}l.classList.add("done"),l.setAttribute("data-l10n-id","pdfjs-editor-alt-text-edit-button")}let t=a(this,Qs);if(!t){p(this,Qs,t=document.createElement("span")),t.className="tooltip",t.setAttribute("role","tooltip"),t.id=`alt-text-tooltip-${a(this,me).id}`;const n=100,Z=a(this,me)._uiManager._signal;Z.addEventListener("abort",()=>{clearTimeout(a(this,Ye)),p(this,Ye,null)},{once:!0}),l.addEventListener("mouseenter",()=>{p(this,Ye,setTimeout(()=>{p(this,Ye,null),a(this,Qs).classList.add("show"),a(this,me)._reportTelemetry({action:"alt_text_tooltip"})},n))},{signal:Z}),l.addEventListener("mouseleave",()=>{var b;a(this,Ye)&&(clearTimeout(a(this,Ye)),p(this,Ye,null)),(b=a(this,Qs))==null||b.classList.remove("show")},{signal:Z})}a(this,vs)?t.setAttribute("data-l10n-id","pdfjs-editor-alt-text-decorative-tooltip"):(t.removeAttribute("data-l10n-id"),t.textContent=a(this,Lt)),t.parentNode||l.append(t);const e=a(this,me).getElementForAltText();e==null||e.setAttribute("aria-describedby",t.id)},L(te,Ec,null),E(te,"_l10n",null);let I0=te;var Jt,es,Bd,Ol,zo,Ad,Ws,_d,qd,$d,wo,S2;class ph{constructor(l){L(this,wo);L(this,Jt,null);L(this,es,null);L(this,Bd,!1);L(this,Ol,null);L(this,zo,null);L(this,Ad,null);L(this,Ws,null);L(this,_d,null);L(this,qd,!1);L(this,$d,null);p(this,Ol,l)}renderForToolbar(){const l=p(this,es,document.createElement("button"));
3return l.className="comment",z(this,wo,S2).call(this,l,!1)}renderForStandalone(){const l=p(this,Jt,document.createElement("button"));l.className="annotationCommentButton";const t=a(this,Ol).commentButtonPosition;if(t){const{style:e}=l;e.insetInlineEnd=`calc(${100*(a(this,Ol)._uiManager.direction==="ltr"?1-t[0]:t[0])}% - var(--comment-button-dim))`,e.top=`calc(${100*t[1]}% - var(--comment-button-dim))`;const s=a(this,Ol).commentButtonColor;s&&(e.backgroundColor=s)}return z(this,wo,S2).call(this,l,!0)}focusButton(){setTimeout(()=>{var l;(l=a(this,Jt)??a(this,es))==null||l.focus()},0)}onUpdatedColor(){if(!a(this,Jt))return;const l=a(this,Ol).commentButtonColor;l&&(a(this,Jt).style.backgroundColor=l),a(this,Ol)._uiManager.updatePopupColor(a(this,Ol))}get commentButtonWidth(){var l;return(((l=a(this,Jt))==null?void 0:l.getBoundingClientRect().width)??0)/a(this,Ol).parent.boundingClientRect.width}get commentPopupPositionInLayer(){if(a(this,$d))return a(this,$d);if(!a(this,Jt))return null;const{x:l,y:t,height:e}=a(this,Jt).getBoundingClientRect(),{x:s,y:c,width:d,height:n}=a(this,Ol).parent.boundingClientRect;return[(l-s)/d,(t+e-c)/n]}set commentPopupPositionInLayer(l){p(this,$d,l)}hasDefaultPopupPosition(){return a(this,$d)===null}removeStandaloneCommentButton(){var l;(l=a(this,Jt))==null||l.remove(),p(this,Jt,null)}removeToolbarCommentButton(){var l;(l=a(this,es))==null||l.remove(),p(this,es,null)}setCommentButtonStates({selected:l,hasPopup:t}){a(this,Jt)&&(a(this,Jt).classList.toggle("selected",l),a(this,Jt).ariaExpanded=t)}edit(l){const t=this.commentPopupPositionInLayer;let e,s;if(t)[e,s]=t;else{[e,s]=a(this,Ol).commentButtonPosition;const{width:o,height:m,x:h,y:W}=a(this,Ol);e=h+e*o,s=W+s*m}const c=a(this,Ol).parent.boundingClientRect,{x:d,y:n,width:Z,height:b}=c;a(this,Ol)._uiManager.editComment(a(this,Ol),d+e*Z,n+s*b,{...l,parentDimensions:c})}finish(){a(this,es)&&(a(this,es).focus({focusVisible:a(this,Bd)}),p(this,Bd,!1))}isDeleted(){return a(this,qd)||a(this,Ws)===""}isEmpty(){return a(this,Ws)===null}hasBeenEdited(){return this.isDeleted()||a(this,Ws)!==a(this,zo)}serialize(){return this.data}get data(){return{text:a(this,Ws),richText:a(this,Ad),date:a(this,_d),deleted:this.isDeleted()}}set data(l){if(l!==a(this,Ws)&&p(this,Ad,null),l===null){p(this,Ws,""),p(this,qd,!0);return}p(this,Ws,l),p(this,_d,new Date),p(this,qd,!1)}setInitialText(l,t=null){p(this,zo,l),this.data=l,p(this,_d,null),p(this,Ad,t)}shown(){}destroy(){var l,t;(l=a(this,es))==null||l.remove(),p(this,es,null),(t=a(this,Jt))==null||t.remove(),p(this,Jt,null),p(this,Ws,""),p(this,Ad,null),p(this,_d,null),p(this,Ol,null),p(this,Bd,!1),p(this,qd,!1)}}Jt=new WeakMap,es=new WeakMap,Bd=new WeakMap,Ol=new WeakMap,zo=new WeakMap,Ad=new WeakMap,Ws=new WeakMap,_d=new WeakMap,qd=new WeakMap,$d=new WeakMap,wo=new WeakSet,S2=function(l,t){if(!a(this,Ol)._uiManager.hasCommentManager())return null;l.tabIndex="0",l.ariaHasPopup="dialog",t?(l.ariaControls="commentPopup",l.setAttribute("data-l10n-id","pdfjs-show-comment-button")):(l.ariaControlsElements=[a(this,Ol)._uiManager.getCommentDialogElement()],l.setAttribute("data-l10n-id","pdfjs-editor-add-comment-button"));const e=a(this,Ol)._uiManager._signal;if(!(e instanceof AbortSignal)||e.aborted)return l;l.addEventListener("contextmenu",os,{signal:e}),t&&(l.addEventListener("focusin",c=>{a(this,Ol)._focusEventsAllowed=!1,dt(c)},{capture:!0,signal:e}),l.addEventListener("focusout",c=>{a(this,Ol)._focusEventsAllowed=!0,dt(c)},{capture:!0,signal:e})),l.addEventListener("pointerdown",c=>c.stopPropagation(),{signal:e});const s=c=>{c.preventDefault(),l===a(this,es)?this.edit():a(this,Ol).toggleComment(!0)};return l.addEventListener("click",s,{capture:!0,signal:e}),l.addEventListener("keydown",c=>{c.target===l&&c.key==="Enter"&&(p(this,Bd,!0),s(c))},{signal:e}),l.addEventListener("pointerenter",()=>{a(this,Ol).toggleComment(!1,!0)},{signal:e}),l.addEventListener("pointerleave",()=>{a(this,Ol).toggleComment(!1,!1)},{signal:e}),l};var cZ,la,Ro,So,xo,go,jo,xi,ta,gi,ea,ji,Id,pX,YX,yX;const _G=class _G{constructor({container:l,isPinchingDisabled:t=null,isPinchingStopped:e=null,onPinchStart:s=null,onPinching:c=null,onPinchEnd:d=null,signal:n}){L(this,Id);L(this,cZ);L(this,la,!1);L(this,Ro,null);L(this,So);L(this,xo);L(this,go);L(this,jo);L(this,xi,null);L(this,ta);L(this,gi,null);L(this,ea);L(this,ji,null);p(this,cZ,l),p(this,Ro,e),p(this,So,t),p(this,xo,s),p(this,go,c),p(this,jo,d),p(this,ea,new AbortController),p(this,ta,AbortSignal.any([n,a(this,ea).signal])),l.addEventListener("touchstart",z(this,Id,pX).bind(this),{passive:!1,signal:a(this,ta)})}get MIN_TOUCH_DISTANCE_TO_PINCH(){return 35/Rs.pixelRatio}destroy(){var l,t;(l=a(this,ea))==null||l.abort(),p(this,ea,null),(t=a(this,xi))==null||t.abort(),p(this,xi,null)}};cZ=new WeakMap,la=new WeakMap,Ro=new WeakMap,So=new WeakMap,xo=new WeakMap,go=new WeakMap,jo=new WeakMap,xi=new WeakMap,ta=new WeakMap,gi=new WeakMap,ea=new WeakMap,ji=new WeakMap,Id=new WeakSet,pX=function(l){var s,c,d;if((s=a(this,So))!=null&&s.call(this))return;if(l.touches.length===1){if(a(this,xi))return;const n=p(this,xi,new AbortController),Z=AbortSignal.any([a(this,ta),n.signal]),b=a(this,cZ),o={capture:!0,signal:Z,passive:!1},m=h=>{var W;h.pointerType==="touch"&&((W=a(this,xi))==null||W.abort(),p(this,xi,null))};b.addEventListener("pointerdown",h=>{h.pointerType==="touch"&&(dt(h),m(h))},o),b.addEventListener("pointerup",m,o),b.addEventListener("pointercancel",m,o);return}if(!a(this,ji)){p(this,ji,new AbortController);const n=AbortSignal.any([a(this,ta),a(this,ji).signal]),Z=a(this,cZ),b={signal:n,capture:!1,passive:!1};Z.addEventListener("touchmove",z(this,Id,YX).bind(this),b);const o=z(this,Id,yX).bind(this);Z.addEventListener("touchend",o,b),Z.addEventListener("touchcancel",o,b),b.capture=!0,Z.addEventListener("pointerdown",dt,b),Z.addEventListener("pointermove",dt,b),Z.addEventListener("pointercancel",dt,b),Z.addEventListener("pointerup",dt,b),(c=a(this,xo))==null||c.call(this)}if(dt(l),l.touches.length!==2||(d=a(this,Ro))!=null&&d.call(this)){p(this,gi,null);return}let[t,e]=l.touches;t.identifier>e.identifier&&([t,e]=[e,t]),p(this,gi,{touch0X:t.screenX,touch0Y:t.screenY,touch1X:e.screenX,touch1Y:e.screenY})},YX=function(l){var T;if(!a(this,gi)||l.touches.length!==2)return;dt(l);let[t,e]=l.touches;t.identifier>e.identifier&&([t,e]=[e,t]);const{screenX:s,screenY:c}=t,{screenX:d,screenY:n}=e,Z=a(this,gi),{touch0X:b,touch0Y:o,touch1X:m,touch1Y:h}=Z,W=m-b,r=h-o,N=d-s,M=n-c,X=Math.hypot(N,M)||1,y=Math.hypot(W,r)||1;if(!a(this,la)&&Math.abs(y-X)<=_G.MIN_TOUCH_DISTANCE_TO_PINCH)return;if(Z.touch0X=s,Z.touch0Y=c,Z.touch1X=d,Z.touch1Y=n,!a(this,la)){p(this,la,!0);return}const Y=[(s+d)/2,(c+n)/2];(T=a(this,go))==null||T.call(this,Y,y,X)},yX=function(l){var t;l.touches.length>=2||(a(this,ji)&&(a(this,ji).abort(),p(this,ji,null),(t=a(this,jo))==null||t.call(this)),a(this,gi)&&(dt(l),p(this,gi,null),p(this,la,!1)))};let z0=_G;var sa,Gs,Bl,jl,Di,dZ,Kc,Do,Ft,ia,Ci,ss,vc,Co,ca,ye,Jo,da,Ji,fs,aZ,nZ,is,aa,Fo,q
30,$,x2,Oo,g2,Hh,TX,VX,j2,fh,D2,LX,IX,zX,C2,wX,J2,RX,SX,xX,F2,Cb;const il=class il{constructor(l){L(this,$);L(this,sa,null);L(this,Gs,null);L(this,Bl,null);L(this,jl,null);L(this,Di,null);L(this,dZ,!1);L(this,Kc,null);L(this,Do,"");L(this,Ft,null);L(this,ia,null);L(this,Ci,null);L(this,ss,null);L(this,vc,null);L(this,Co,"");L(this,ca,!1);L(this,ye,null);L(this,Jo,!1);L(this,da,!1);L(this,Ji,!1);L(this,fs,null);L(this,aZ,0);L(this,nZ,0);L(this,is,null);L(this,aa,null);E(this,"isSelected",!1);E(this,"_isCopy",!1);E(this,"_editToolbar",null);E(this,"_initialOptions",Object.create(null));E(this,"_initialData",null);E(this,"_isVisible",!0);E(this,"_uiManager",null);E(this,"_focusEventsAllowed",!0);L(this,Fo,!1);L(this,q0,il._zIndex++);this.parent=l.parent,this.id=l.id,this.width=this.height=null,this.pageIndex=l.parent.pageIndex,this.name=l.name,this.div=null,this._uiManager=l.uiManager,this.annotationElementId=null,this._willKeepAspectRatio=!1,this._initialOptions.isCentered=l.isCentered,this._structTreeParentId=null,this.annotationElementId=l.annotationElementId||null,this.creationDate=l.creationDate||new Date,this.modificationDate=l.modificationDate||null,this.canAddComment=!0;const{rotation:t,rawDims:{pageWidth:e,pageHeight:s,pageX:c,pageY:d}}=this.parent.viewport;this.rotation=t,this.pageRotation=(360+t-this._uiManager.viewParameters.rotation)%360,this.pageDimensions=[e,s],this.pageTranslation=[c,d];const[n,Z]=this.parentDimensions;this.x=l.x/n,this.y=l.y/Z,this.isAttachedToDOM=!1,this.deleted=!1}static get _resizerKeyboardManager(){const l=il.prototype._resizeWithKeyboard,t=dn.TRANSLATE_SMALL,e=dn.TRANSLATE_BIG;return el(this,"_resizerKeyboardManager",new Zh([[["ArrowLeft","mac+ArrowLeft"],l,{args:[-t,0]}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],l,{args:[-e,0]}],[["ArrowRight","mac+ArrowRight"],l,{args:[t,0]}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],l,{args:[e,0]}],[["ArrowUp","mac+ArrowUp"],l,{args:[0,-t]}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],l,{args:[0,-e]}],[["ArrowDown","mac+ArrowDown"],l,{args:[0,t]}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],l,{args:[0,e]}],[["Escape","mac+Escape"],il.prototype._stopResizingWithKeyboard]]))}get editorType(){return Object.getPrototypeOf(this).constructor._type}get mode(){return Object.getPrototypeOf(this).constructor._editorType}static get isDrawer(){return!1}static get _defaultLineColor(){return el(this,"_defaultLineColor",this._colorManager.getHexCode("CanvasText"))}static deleteAnnotationElement(l){const t=new j5({id:l.parent.getNextId(),parent:l.parent,uiManager:l._uiManager});t.annotationElementId=l.annotationElementId,t.deleted=!0,t._uiManager.addToAnnotationStorage(t)}static initialize(l,t){if(il._l10n??(il._l10n=l),il._l10nResizer||(il._l10nResizer=Object.freeze({topLeft:"pdfjs-editor-resizer-top-left",topMiddle:"pdfjs-editor-resizer-top-middle",topRight:"pdfjs-editor-resizer-top-right",middleRight:"pdfjs-editor-resizer-middle-right",bottomRight:"pdfjs-editor-resizer-bottom-right",bottomMiddle:"pdfjs-editor-resizer-bottom-middle",bottomLeft:"pdfjs-editor-resizer-bottom-left",middleLeft:"pdfjs-editor-resizer-middle-left"})),il._borderLineWidth!==-1)return;const e=getComputedStyle(document.documentElement);il._borderLineWidth=parseFloat(e.getPropertyValue("--outline-width"))||0}static updateDefaultParams(l,t){}static get defaultPropertiesToUpdate(){return[]}static isHandlingMimeForPasting(l){return!1}static paste(l,t){Jl("Not implemented")}get propertiesToUpdate(){return[]}get _isDraggable(){return a(this,Fo)}set _isDraggable(l){var t;p(this,Fo,l),(t=this.div)==null||t.classList.toggle("draggable",l)}get uid(){return this.annotationElementId||this.id}get isEnterHandled(){return!0}center(){const[l,t]=this.pageDimensions;switch(this.parentRotation){case 90:this.x-=this.height*t/(l*2),this.y+=this.width*l/(t*2);break;case 180:this.x+=this.width/2,this.y+=this.height/2;break;case 270:this.x+=this.height*t/(l*2),this.y-=this.width*l/(t*2);break;default:this.x-=this.width/2,this.y-=this.height/2;break}this.fixAndSetPosition()}addCommands(l){this._uiManager.addCommands(l)}get currentLayer(){return this._uiManager.currentLayer}
3setInBackground(){this.div.style.zIndex=0}setInForeground(){this.div.style.zIndex=a(this,q0)}setParent(l){var t;l!==null?(this.pageIndex=l.pageIndex,this.pageDimensions=l.pageDimensions):(z(this,$,Cb).call(this),(t=a(this,ss))==null||t.remove(),p(this,ss,null)),this.parent=l}focusin(l){this._focusEventsAllowed&&(a(this,ca)?p(this,ca,!1):this.parent.setSelected(this))}focusout(l){var e;if(!this._focusEventsAllowed||!this.isAttachedToDOM)return;const t=l.relatedTarget;t!=null&&t.closest(`#${this.id}`)||(l.preventDefault(),(e=this.parent)!=null&&e.isMultipleSelection||this.commitOrRemove())}commitOrRemove(){this.isEmpty()?this.remove():this.commit()}commit(){this.isInEditMode()&&this.addToAnnotationStorage()}addToAnnotationStorage(){this._uiManager.addToAnnotationStorage(this)}setAt(l,t,e,s){const[c,d]=this.parentDimensions;[e,s]=this.screenToPageTranslation(e,s),this.x=(l+e)/c,this.y=(t+s)/d,this.fixAndSetPosition()}_moveAfterPaste(l,t){const[e,s]=this.parentDimensions;this.setAt(l*e,t*s,this.width*e,this.height*s),this._onTranslated()}translate(l,t){z(this,$,x2).call(this,this.parentDimensions,l,t)}translateInPage(l,t){a(this,ye)||p(this,ye,[this.x,this.y,this.width,this.height]),z(this,$,x2).call(this,this.pageDimensions,l,t),this.div.scrollIntoView({block:"nearest"})}translationDone(){this._onTranslated(this.x,this.y)}drag(l,t){a(this,ye)||p(this,ye,[this.x,this.y,this.width,this.height]);const{div:e,parentDimensions:[s,c]}=this;if(this.x+=l/s,this.y+=t/c,this.parent&&(this.x<0||this.x>1||this.y<0||this.y>1)){const{x:m,y:h}=this.div.getBoundingClientRect();this.parent.findNewParent(this,m,h)&&(this.x-=Math.floor(this.x),this.y-=Math.floor(this.y))}let{x:d,y:n}=this;const[Z,b]=this.getBaseTranslation();d+=Z,n+=b;const{style:o}=e;o.left=`${(100*d).toFixed(2)}%`,o.top=`${(100*n).toFixed(2)}%`,this._onTranslating(d,n),e.scrollIntoView({block:"nearest"})}_onTranslating(l,t){}_onTranslated(l,t){}get _hasBeenMoved(){return!!a(this,ye)&&(a(this,ye)[0]!==this.x||a(this,ye)[1]!==this.y)}get _hasBeenResized(){return!!a(this,ye)&&(a(this,ye)[2]!==this.width||a(this,ye)[3]!==this.height)}getBaseTranslation(){const[l,t]=this.parentDimensions,{_borderLineWidth:e}=il,s=e/l,c=e/t;switch(this.rotation){case 90:return[-s,c];case 180:return[s,c];case 270:return[s,-c];default:return[-s,-c]}}get _mustFixPosition(){return!0}fixAndSetPosition(l=this.rotation){const{div:{style:t},pageDimensions:[e,s]}=this;let{x:c,y:d,width:n,height:Z}=this;if(n*=e,Z*=s,c*=e,d*=s,this._mustFixPosition)switch(l){case 0:c=de(c,0,e-n),d=de(d,0,s-Z);break;case 90:c=de(c,0,e-Z),d=de(d,n,s);break;case 180:c=de(c,n,e),d=de(d,Z,s);break;case 270:c=de(c,Z,e),d=de(d,0,s-n);break}this.x=c/=e,this.y=d/=s;const[b,o]=this.getBaseTranslation();c+=b,d+=o,t.left=`${(100*c).toFixed(2)}%`,t.top=`${(100*d).toFixed(2)}%`,this.moveInDOM()}screenToPageTranslation(l,t){var e;return z(e=il,Oo,g2).call(e,l,t,this.parentRotation)}pageTranslationToScreen(l,t){var e;return z(e=il,Oo,g2).call(e,l,t,360-this.parentRotation)}get parentScale(){return this._uiManager.viewParameters.realScale}get parentRotation(){return(this._uiManager.viewParameters.rotation+this.pageRotation)%360}get parentDimensions(){const{parentScale:l,pageDimensions:[t,e]}=this;return[t*l,e*l]}setDims(){const{div:{style:l},width:t,height:e}=this;l.width=`${(100*t).toFixed(2)}%`,l.height=`${(100*e).toFixed(2)}%`}getInitialTranslation(){return[0,0]}_onResized(){}static _round(l){return Math.round(l*1e4)/1e4}_onResizing(){}altTextFinish(){var l;(l=a(this,Bl))==null||l.finish()}get toolbarButtons(){return null}async addEditToolbar(){if(this._editToolbar||a(this,da))return this._editToolbar;this._editToolbar=new y2(this),this.div.append(this._editToolbar.render());const{toolbarButtons:l}=this;if(l)for(const[t,e]of l)await this._editToolbar.addButton(t,e);return this.hasComment||this._editToolbar.addButton("comment",this.addCommentButton()),this._editToolbar.addButton("delete"),this._editToolbar}addCommentButtonInToolbar(){var l;(l=this._editToolbar)==null||l.addButtonBefore("comment",this.addCommentButton(),".deleteButton")}
3removeCommentButtonFromToolbar(){var l;(l=this._editToolbar)==null||l.removeButton("comment")}removeEditToolbar(){var l,t;(l=this._editToolbar)==null||l.remove(),this._editToolbar=null,(t=a(this,Bl))==null||t.destroy()}addContainer(l){var e;const t=(e=this._editToolbar)==null?void 0:e.div;t?t.before(l):this.div.append(l)}getClientDimensions(){return this.div.getBoundingClientRect()}createAltText(){return a(this,Bl)||(I0.initialize(il._l10n),p(this,Bl,new I0(this)),a(this,sa)&&(a(this,Bl).data=a(this,sa),p(this,sa,null))),a(this,Bl)}get altTextData(){var l;return(l=a(this,Bl))==null?void 0:l.data}set altTextData(l){a(this,Bl)&&(a(this,Bl).data=l)}get guessedAltText(){var l;return(l=a(this,Bl))==null?void 0:l.guessedText}async setGuessedAltText(l){var t;await((t=a(this,Bl))==null?void 0:t.setGuessedText(l))}serializeAltText(l){var t;return(t=a(this,Bl))==null?void 0:t.serialize(l)}hasAltText(){return!!a(this,Bl)&&!a(this,Bl).isEmpty()}hasAltTextData(){var l;return((l=a(this,Bl))==null?void 0:l.hasData())??!1}focusCommentButton(){var l;(l=a(this,jl))==null||l.focusButton()}addCommentButton(){return this.canAddComment?a(this,jl)||p(this,jl,new ph(this)):null}addStandaloneCommentButton(){if(this._uiManager.hasCommentManager()){if(a(this,Di)){this._uiManager.isEditingMode()&&a(this,Di).classList.remove("hidden");return}this.hasComment&&(p(this,Di,a(this,jl).renderForStandalone()),this.div.append(a(this,Di)))}}removeStandaloneCommentButton(){a(this,jl).removeStandaloneCommentButton(),p(this,Di,null)}hideStandaloneCommentButton(){var l;(l=a(this,Di))==null||l.classList.add("hidden")}get comment(){const{data:{richText:l,text:t,date:e,deleted:s}}=a(this,jl);return{text:t,richText:l,date:e,deleted:s,color:this.getNonHCMColor(),opacity:this.opacity??1}}set comment(l){a(this,jl)||p(this,jl,new ph(this)),a(this,jl).data=l,this.hasComment?(this.removeCommentButtonFromToolbar(),this.addStandaloneCommentButton(),this._uiManager.updateComment(this)):(this.addCommentButtonInToolbar(),this.removeStandaloneCommentButton(),this._uiManager.removeComment(this))}setCommentData({comment:l,popupRef:t,richText:e}){if(!t||(a(this,jl)||p(this,jl,new ph(this)),a(this,jl).setInitialText(l,e),!this.annotationElementId))return;const s=this._uiManager.getAndRemoveDataFromAnnotationStorage(this.annotationElementId);s&&this.updateFromAnnotationLayer(s)}get hasEditedComment(){var l;return(l=a(this,jl))==null?void 0:l.hasBeenEdited()}get hasDeletedComment(){var l;return(l=a(this,jl))==null?void 0:l.isDeleted()}get hasComment(){return!!a(this,jl)&&!a(this,jl).isEmpty()&&!a(this,jl).isDeleted()}async editComment(l){a(this,jl)||p(this,jl,new ph(this)),a(this,jl).edit(l)}toggleComment(l,t=void 0){this.hasComment&&this._uiManager.toggleComment(this,l,t)}setSelectedCommentButton(l){a(this,jl).setSelectedButton(l)}addComment(l){if(this.hasEditedComment){const[,,,s]=l.rect,[c]=this.pageDimensions,[d]=this.pageTranslation,n=d+c+1,Z=s-100,b=n+180;l.popup={contents:this.comment.text,deleted:this.comment.deleted,rect:[n,Z,b,s]}}}updateFromAnnotationLayer({popup:{contents:l,deleted:t}}){a(this,jl).data=t?null:l}get parentBoundingClientRect(){return this.parent.boundingClientRect}render(){var d;const l=this.div=document.createElement("div");l.setAttribute("data-editor-rotation",(360-this.rotation)%360),l.className=this.name,l.setAttribute("id",this.id),l.tabIndex=a(this,dZ)?-1:0,l.setAttribute("role","application"),this.defaultL10nId&&l.setAttribute("data-l10n-id",this.defaultL10nId),this._isVisible||l.classList.add("hidden"),this.setInForeground(),z(this,$,J2).call(this);const[t,e]=this.parentDimensions;this.parentRotation%180!==0&&(l.style.maxWidth=`${(100*e/t).toFixed(2)}%`,l.style.maxHeight=`${(100*t/e).toFixed(2)}%`);const[s,c]=this.getInitialTranslation();return this.translate(s,c),aX(this,l,["keydown","pointerdown","dblclick"]),this.isResizable&&this._uiManager._supportsPinchToZoom&&(a(this,aa)||p(this,aa,new z0({container:l,isPinchingDisabled:()=>!this.isSelected,onPinchStart:z(this,$,LX).bind(this),onPinching:z(this,$,IX).bind(this),onPinchEnd:z(this,$,zX).bind(this),signal:this._uiManager._signal}))),this.addStandaloneCommentButton(),(d=this._uiManager._editorUndoBar)==null||d.hide(),l}pointerdown(l){const{isMac:t}=Tt.platform;if(l.button!==0||l.ctrlKey&&t){l.preventDefault();return}if(p(this,ca,!0),this._isDraggable){z(this,$,wX).call(this,l);return}z(this,$,C2).call(this,l)}_onStartDragging(){}_onStopDragging(){}moveInDOM(){a(this,fs)&&clearTimeout(a(this,fs)),p(this,fs,setTimeout(()=>{var l;p(this,fs,null),(l=this.parent)==null||l.moveEditorInDOM(this)},0))}_setParentAndPosition(l,t,e){l.changeParent(this),this.x=t,this.y=e,this.fixAndSetPosition(),this._onTranslated()}getRect(l,t,e=this.rotation){const s=this.parentScale,[c,d]=this.pageDimensions,[n,Z]=this.pageTranslation,b=l/s,o=t/s,m=this.x*c,h=this.y*d,W=this.width*c,r=this.height*d;switch(e){case 0:return[m+b+n,d-h-o-r+Z,m+b+W+n,d-h-o+Z];case 90:return[m+o+n,d-h+b+Z,m+o+r+n,d-h+b+W+Z];case 180:return[m-b-W+n,d-h+o+Z,m-b+n,d-h+o+r+Z];
3case 270:return[m-o-r+n,d-h-b-W+Z,m-o+n,d-h-b+Z];default:throw new Error("Invalid rotation")}}getRectInCurrentCoords(l,t){const[e,s,c,d]=l,n=c-e,Z=d-s;switch(this.rotation){case 0:return[e,t-d,n,Z];case 90:return[e,t-s,Z,n];case 180:return[c,t-s,n,Z];case 270:return[c,t-d,Z,n];default:throw new Error("Invalid rotation")}}getPDFRect(){return this.getRect(0,0)}getNonHCMColor(){return this.color&&il._colorManager.convert(this._uiManager.getNonHCMColor(this.color))}onUpdatedColor(){var l;(l=a(this,jl))==null||l.onUpdatedColor()}getData(){const{comment:{text:l,color:t,date:e,opacity:s,deleted:c,richText:d},uid:n,pageIndex:Z,creationDate:b,modificationDate:o}=this;return{id:n,pageIndex:Z,rect:this.getPDFRect(),richText:d,contentsObj:{str:l},creationDate:b,modificationDate:e||o,popupRef:!c,color:t,opacity:s}}onceAdded(l){}isEmpty(){return!1}enableEditMode(){return this.isInEditMode()?!1:(this.parent.setEditingState(!1),p(this,da,!0),!0)}disableEditMode(){return this.isInEditMode()?(this.parent.setEditingState(!0),p(this,da,!1),!0):!1}isInEditMode(){return a(this,da)}shouldGetKeyboardEvents(){return a(this,Ji)}needsToBeRebuilt(){return this.div&&!this.isAttachedToDOM}get isOnScreen(){const{top:l,left:t,bottom:e,right:s}=this.getClientDimensions(),{innerHeight:c,innerWidth:d}=window;return t<d&&s>0&&l<c&&e>0}rebuild(){z(this,$,J2).call(this)}rotate(l){}resize(){}serializeDeleted(){var l;return{id:this.annotationElementId,deleted:!0,pageIndex:this.pageIndex,popupRef:((l=this._initialData)==null?void 0:l.popupRef)||""}}serialize(l=!1,t=null){var e;return{annotationType:this.mode,pageIndex:this.pageIndex,rect:this.getPDFRect(),rotation:this.rotation,structTreeParentId:this._structTreeParentId,popupRef:((e=this._initialData)==null?void 0:e.popupRef)||""}}static async deserialize(l,t,e){const s=new this.prototype.constructor({parent:t,id:t.getNextId(),uiManager:e,annotationElementId:l.annotationElementId,creationDate:l.creationDate,modificationDate:l.modificationDate});s.rotation=l.rotation,p(s,sa,l.accessibilityData),s._isCopy=l.isCopy||!1;const[c,d]=s.pageDimensions,[n,Z,b,o]=s.getRectInCurrentCoords(l.rect,d);return s.x=n/c,s.y=Z/d,s.width=b/c,s.height=o/d,s}get hasBeenModified(){return!!this.annotationElementId&&(this.deleted||this.serialize()!==null)}remove(){var l,t,e;if((l=a(this,vc))==null||l.abort(),p(this,vc,null),this.isEmpty()||this.commit(),this.parent?this.parent.remove(this):this._uiManager.removeEditor(this),this.hideCommentPopup(),a(this,fs)&&(clearTimeout(a(this,fs)),p(this,fs,null)),z(this,$,Cb).call(this),this.removeEditToolbar(),a(this,is)){for(const s of a(this,is).values())clearTimeout(s);p(this,is,null)}this.parent=null,(t=a(this,aa))==null||t.destroy(),p(this,aa,null),(e=a(this,ss))==null||e.remove(),p(this,ss,null)}get isResizable(){return!1}makeResizable(){this.isResizable&&(z(this,$,TX).call(this),a(this,Ft).classList.remove("hidden"))}get toolbarPosition(){return null}get commentButtonPosition(){return this._uiManager.direction==="ltr"?[1,0]:[0,0]}get commentButtonPositionInPage(){const{commentButtonPosition:[l,t]}=this,[e,s,c,d]=this.getPDFRect();return[il._round(e+(c-e)*l),il._round(s+(d-s)*(1-t))]}get commentButtonColor(){return this._uiManager.makeCommentColor(this.getNonHCMColor(),this.opacity)}get commentPopupPosition(){return a(this,jl).commentPopupPositionInLayer}set commentPopupPosition(l){a(this,jl).commentPopupPositionInLayer=l}hasDefaultPopupPosition(){return a(this,jl).hasDefaultPopupPosition()}get commentButtonWidth(){return a(this,jl).commentButtonWidth}get elementBeforePopup(){return this.div}setCommentButtonStates(l){var t;(t=a(this,jl))==null||t.setCommentButtonStates(l)}keydown(l){if(!this.isResizable||l.target!==this.div||l.key!=="Enter")return;this._uiManager.setSelected(this),p(this,Ci,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const t=a(this,Ft).children;if(!a(this,Gs)){p(this,Gs,Array.from(t));const d=z(this,$,RX).bind(this),n=z(this,$,SX).bind(this),Z=this._uiManager._signal;for(const b of a(this,Gs)){const o=b.getAttribute("data-resizer-name");b.setAttribute("role","spinbutton"),b.addEventListener("keydown",d,{signal:Z}),b.addEventListener("blur",n,{signal:Z}),b.addEventListener("focus",z(this,$,xX).bind(this,o),{signal:Z}),b.setAttribute("data-l10n-id",il._l10nResizer[o])}}const e=a(this,Gs)[0];let s=0;for(const d of t){if(d===e)break;s++}const c=(360-this.rotation+this.parentRotation)%360/90*(a(this,Gs).length/4);if(c!==s){if(c<s)for(let n=0;n<s-c;n++)a(this,Ft).append(a(this,Ft).firstElementChild);else if(c>s)for(let n=0;n<c-s;n++)a(this,Ft).firstElementChild.before(a(this,Ft).lastElementChild);let d=0;for(const n of t){const b=a(this,Gs)[d++].getAttribute("data-resizer-name");n.setAttribute("data-l10n-id",il._l10nResizer[b])}}z(this,$,F2).call(this,0),p(this,Ji,!0),a(this,Ft).firstElementChild.focus({focusVisible:!0}),l.preventDefault(),l.stopImmediatePropagation()}_resizeWithKeyboard(l,t){a(this,Ji)&&z(this,$,D2).call(this,a(this,Co),{deltaX:l,deltaY:t,fromKeyboard:!0})}_stopResizingWithKeyboard(){z(this,$,Cb).call(this),this.div.focus()}select(){var l,t,e;if(this.isSelected&&this._editToolbar){this._editToolbar.show();return}if(this.isSelected=!0,this.makeResizable(),(l=this.div)==null||l.classList.add("selectedEditor"),!this._editToolbar){this.addEditToolbar().then(()=>{var s,c;(s=this.div)!=null&&s.classList.contains("selectedEditor")&&((c=this._editToolbar)==null||c.show())});return}(t=this._editToolbar)==null||t.show(),(e=a(this,Bl))==null||e.toggleAltTextBadge(!1)}focus(){this.div&&!this.div.contains(document.activeElement)&&setTimeout(()=>{var l;return(l=this.div)==null?void 0:l.focus({preventScroll:!0})},0)}unselect(){var l,t,e,s,c;this.isSelected&&(this.isSelected=!1,(l=a(this,Ft))==null||l.classList.add("hidden"),(t=this.div)==null||t.classList.remove("selectedEditor"),(e=this.div)!=null&&e.contains(document.activeElement)&&this._uiManager.currentLayer.div.focus({preventScroll:!0}),(s=this._editToolbar)==null||s.hide(),(c=a(this,Bl))==null||c.toggleAltTextBadge(!0),this.hideCommentPopup())}hideCommentPopup(){this.hasComment&&this._uiManager.toggleComment(null)}updateParams(l,t){}disableEditing(){}enableEditing(){}get canChangeContent(){return!1}enterInEditMode(){this.canChangeContent&&(this.enableEditMode(),this.div.focus())}dblclick(l){l.target.nodeName!=="BUTTON"&&(this.enterInEditMode(),this.parent.updateToolbar({mode:this.constructor._editorType,editId:this.uid}))}getElementForAltText(){return this.div}get contentDiv(){return this.div}get isEditing(){return a(this,Jo)}set isEditing(l){p(this,Jo,l),this.parent&&(l?(this.parent.setSelected(this),this.parent.setActiveEditor(this)):this.parent.setActiveEditor(null))}static get MIN_SIZE(){return 16}static canCreateNewEmptyEditor(){return!0}get telemetryInitialData(){return{action:"added"}}get telemetryFinalData(){return null}_reportTelemetry(l,t=!1){if(t){a(this,is)||p(this,is,new Map);const{action:e}=l;let s=a(this,is).get(e);s&&clearTimeout(s),s=setTimeout(()=>{this._reportTelemetry(l),a(this,is).delete(e),a(this,is).size===0&&p(this,is,null)},il._telemetryTimeout),a(this,is).set(e,s);return}l.type||(l.type=this.editorType),this._uiManager._eventBus.dispatch("reporttelemetry",{source:this,details:{type:"editing",data:l}})}show(l=this._isVisible){this.div.classList.toggle("hidden",!l),this._isVisible=l}enable(){this.div&&(this.div.tabIndex=0),p(this,dZ,!1)}disable(){this.div&&(this.div.tabIndex=-1),p(this,dZ,!0)}updateFakeAnnotationElement(l){if(!a(this,ss)&&!this.deleted){p(this,ss,l.addFakeAnnotation(this));return}if(this.deleted){a(this,ss).remove(),p(this,ss,null);return}(this.hasEditedComment||this._hasBeenMoved||this._hasBeenResized)&&a(this,ss).updateEdited({rect:this.getPDFRect(),popup:this.comment})}renderAnnotationElement(l){if(this.deleted)return l.hide(),null;let t=l.container.querySelector(".annotationContent");
3if(!t)t=document.createElement("div"),t.classList.add("annotationContent",this.editorType),l.container.prepend(t);else if(t.nodeName==="CANVAS"){const e=t;t=document.createElement("div"),t.classList.add("annotationContent",this.editorType),e.before(t)}return t}resetAnnotationElement(l){const{firstElementChild:t}=l.container;(t==null?void 0:t.nodeName)==="DIV"&&t.classList.contains("annotationContent")&&t.remove()}};sa=new WeakMap,Gs=new WeakMap,Bl=new WeakMap,jl=new WeakMap,Di=new WeakMap,dZ=new WeakMap,Kc=new WeakMap,Do=new WeakMap,Ft=new WeakMap,ia=new WeakMap,Ci=new WeakMap,ss=new WeakMap,vc=new WeakMap,Co=new WeakMap,ca=new WeakMap,ye=new WeakMap,Jo=new WeakMap,da=new WeakMap,Ji=new WeakMap,fs=new WeakMap,aZ=new WeakMap,nZ=new WeakMap,is=new WeakMap,aa=new WeakMap,Fo=new WeakMap,q0=new WeakMap,$=new WeakSet,x2=function([l,t],e,s){[e,s]=this.screenToPageTranslation(e,s),this.x+=e/l,this.y+=s/t,this._onTranslating(this.x,this.y),this.fixAndSetPosition()},Oo=new WeakSet,g2=function(l,t,e){switch(e){case 90:return[t,-l];case 180:return[-l,-t];case 270:return[-t,l];default:return[l,t]}},Hh=function(l){switch(l){case 90:{const[t,e]=this.pageDimensions;return[0,-t/e,e/t,0]}case 180:return[-1,0,0,-1];case 270:{const[t,e]=this.pageDimensions;return[0,t/e,-e/t,0]}default:return[1,0,0,1]}},TX=function(){if(a(this,Ft))return;p(this,Ft,document.createElement("div")),a(this,Ft).classList.add("resizers");const l=this._willKeepAspectRatio?["topLeft","topRight","bottomRight","bottomLeft"]:["topLeft","topMiddle","topRight","middleRight","bottomRight","bottomMiddle","bottomLeft","middleLeft"],t=this._uiManager._signal;for(const e of l){const s=document.createElement("div");a(this,Ft).append(s),s.classList.add("resizer",e),s.setAttribute("data-resizer-name",e),s.addEventListener("pointerdown",z(this,$,VX).bind(this,e),{signal:t}),s.addEventListener("contextmenu",os,{signal:t}),s.tabIndex=-1}this.div.prepend(a(this,Ft))},VX=function(l,t){var o;t.preventDefault();const{isMac:e}=Tt.platform;if(t.button!==0||t.ctrlKey&&e)return;(o=a(this,Bl))==null||o.toggle(!1);const s=this._isDraggable;this._isDraggable=!1,p(this,ia,[t.screenX,t.screenY]);const c=new AbortController,d=this._uiManager.combinedSignal(c);this.parent.togglePointerEvents(!1),window.addEventListener("pointermove",z(this,$,D2).bind(this,l),{passive:!0,capture:!0,signal:d}),window.addEventListener("touchmove",dt,{passive:!1,signal:d}),window.addEventListener("contextmenu",os,{signal:d}),p(this,Ci,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height});const n=this.parent.div.style.cursor,Z=this.div.style.cursor;this.div.style.cursor=this.parent.div.style.cursor=window.getComputedStyle(t.target).cursor;const b=()=>{var m;c.abort(),this.parent.togglePointerEvents(!0),(m=a(this,Bl))==null||m.toggle(!0),this._isDraggable=s,this.parent.div.style.cursor=n,this.div.style.cursor=Z,z(this,$,fh).call(this)};window.addEventListener("pointerup",b,{signal:d}),window.addEventListener("blur",b,{signal:d})},j2=function(l,t,e,s){this.width=e,this.height=s,this.x=l,this.y=t,this.setDims(),this.fixAndSetPosition(),this._onResized()},fh=function(){if(!a(this,Ci))return;const{savedX:l,savedY:t,savedWidth:e,savedHeight:s}=a(this,Ci);p(this,Ci,null);const c=this.x,d=this.y,n=this.width,Z=this.height;c===l&&d===t&&n===e&&Z===s||this.addCommands({cmd:z(this,$,j2).bind(this,c,d,n,Z),undo:z(this,$,j2).bind(this,l,t,e,s),mustExec:!0})},D2=function(l,t){const[e,s]=this.parentDimensions,c=this.x,d=this.y,n=this.width,Z=this.height,b=il.MIN_SIZE/e,o=il.MIN_SIZE/s,m=z(this,$,Hh).call(this,this.rotation),h=(O,j)=>[m[0]*O+m[2]*j,m[1]*O+m[3]*j],W=z(this,$,Hh).call(this,360-this.rotation),r=(O,j)=>[W[0]*O+W[2]*j,W[1]*O+W[3]*j];let N,M,X=!1,y=!1;switch(l){case"topLeft":X=!0,N=(O,j)=>[0,0],M=(O,j)=>[O,j];break;case"topMiddle":N=(O,j)=>[O/2,0],M=(O,j)=>[O/2,j];break;case"topRight":X=!0,N=(O,j)=>[O,0],M=(O,j)=>[0,j];break;case"middleRight":y=!0,N=(O,j)=>[O,j/2],M=(O,j)=>[0,j/2];break;case"bottomRight":X=!0,N=(O,j)=>[O,j],M=(O,j)=>[0,0];break;case"bottomMiddle":N=(O,j)=>[O/2,j],M=(O,j)=>[O/2,0];break;case"bottomLeft":X=!0,N=(O,j)=>[0,j],M=(O,j)=>[O,0];break;case"middleLeft":y=!0,N=(O,j)=>[0,j/2],M=(O,j)=>[O,j/2];break}const Y=N(n,Z),T=M(n,Z);let V=h(...T);const I=il._round(c+V[0]),w=il._round(d+V[1]);let R=1,S=1,x,g;if(t.fromKeyboard)({deltaX:x,deltaY:g}=t);else{const{screenX:O,screenY:j}=t,[F,U]=a(this,ia);[x,g]=this.screenToPageTranslation(O-F,j-U),a(this,ia)[0]=O,a(this,ia)[1]=j}if([x,g]=r(x/e,g/s),X){const O=Math.hypot(n,Z);R=S=Math.max(Math.min(Math.hypot(T[0]-Y[0]-x,T[1]-Y[1]-g)/O,1/n,1/Z),b/n,o/Z)}else y?R=de(Math.abs(T[0]-Y[0]-x),b,1)/n:S=de(Math.abs(T[1]-Y[1]-g),o,1)/Z;const C=il._round(n*R),D=il._round(Z*S);V=h(...M(C,D));const J=I-V[0],k=w-V[1];a(this,ye)||p(this,ye,[this.x,this.y,this.width,this.height]),this.width=C,this.height=D,this.x=J,this.y=k,this.setDims(),this.fixAndSetPosition(),this._onResizing()},LX=function(){var l;p(this,Ci,{savedX:this.x,savedY:this.y,savedWidth:this.width,savedHeight:this.height}),(l=a(this,Bl))==null||l.toggle(!1),this.parent.togglePointerEvents(!1)},IX=function(l,t,e){let c=.7*(e/t)+1-.7;
3if(c===1)return;const d=z(this,$,Hh).call(this,this.rotation),n=(I,w)=>[d[0]*I+d[2]*w,d[1]*I+d[3]*w],[Z,b]=this.parentDimensions,o=this.x,m=this.y,h=this.width,W=this.height,r=il.MIN_SIZE/Z,N=il.MIN_SIZE/b;c=Math.max(Math.min(c,1/h,1/W),r/h,N/W);const M=il._round(h*c),X=il._round(W*c);if(M===h&&X===W)return;a(this,ye)||p(this,ye,[o,m,h,W]);const y=n(h/2,W/2),Y=il._round(o+y[0]),T=il._round(m+y[1]),V=n(M/2,X/2);this.x=Y-V[0],this.y=T-V[1],this.width=M,this.height=X,this.setDims(),this.fixAndSetPosition(),this._onResizing()},zX=function(){var l;(l=a(this,Bl))==null||l.toggle(!0),this.parent.togglePointerEvents(!0),z(this,$,fh).call(this)},C2=function(l){const{isMac:t}=Tt.platform;l.ctrlKey&&!t||l.shiftKey||l.metaKey&&t?this.parent.toggleSelected(this):this.parent.setSelected(this)},wX=function(l){const{isSelected:t}=this;this._uiManager.setUpDragSession();let e=!1;const s=new AbortController,c=this._uiManager.combinedSignal(s),d={capture:!0,passive:!1,signal:c},n=b=>{s.abort(),p(this,Kc,null),p(this,ca,!1),this._uiManager.endDragSession()||z(this,$,C2).call(this,b),e&&this._onStopDragging()};t&&(p(this,aZ,l.clientX),p(this,nZ,l.clientY),p(this,Kc,l.pointerId),p(this,Do,l.pointerType),window.addEventListener("pointermove",b=>{e||(e=!0,this._uiManager.toggleComment(this,!0,!1),this._onStartDragging());const{clientX:o,clientY:m,pointerId:h}=b;if(h!==a(this,Kc)){dt(b);return}const[W,r]=this.screenToPageTranslation(o-a(this,aZ),m-a(this,nZ));p(this,aZ,o),p(this,nZ,m),this._uiManager.dragSelectedEditors(W,r)},d),window.addEventListener("touchmove",dt,d),window.addEventListener("pointerdown",b=>{b.pointerType===a(this,Do)&&(a(this,aa)||b.isPrimary)&&n(b),dt(b)},d));const Z=b=>{if(!a(this,Kc)||a(this,Kc)===b.pointerId){n(b);return}dt(b)};window.addEventListener("pointerup",Z,{signal:c}),window.addEventListener("blur",Z,{signal:c})},J2=function(){if(a(this,vc)||!this.div)return;p(this,vc,new AbortController);const l=this._uiManager.combinedSignal(a(this,vc));this.div.addEventListener("focusin",this.focusin.bind(this),{signal:l}),this.div.addEventListener("focusout",this.focusout.bind(this),{signal:l})},RX=function(l){il._resizerKeyboardManager.exec(this,l)},SX=function(l){var t;a(this,Ji)&&((t=l.relatedTarget)==null?void 0:t.parentNode)!==a(this,Ft)&&z(this,$,Cb).call(this)},xX=function(l){p(this,Co,a(this,Ji)?l:"")},F2=function(l){if(a(this,Gs))for(const t of a(this,Gs))t.tabIndex=l},Cb=function(){p(this,Ji,!1),z(this,$,F2).call(this,-1),z(this,$,fh).call(this)},L(il,Oo),E(il,"_l10n",null),E(il,"_l10nResizer",null),E(il,"_borderLineWidth",-1),E(il,"_colorManager",new L2),E(il,"_zIndex",1),E(il,"_telemetryTimeout",1e3);let Ul=il;class j5 extends Ul{constructor(l){super(l),this.annotationElementId=l.annotationElementId,this.deleted=!0}serialize(){return this.serializeDeleted()}}const hN=3285377520,He=4294901760,Js=65535;class gX{constructor(l){this.h1=l?l&4294967295:hN,this.h2=l?l&4294967295:hN}update(l){let t,e;if(typeof l=="string"){t=new Uint8Array(l.length*2),e=0;for(let N=0,M=l.length;N<M;N++){const X=l.charCodeAt(N);X<=255?t[e++]=X:(t[e++]=X>>>8,t[e++]=X&255)}}else if(ArrayBuffer.isView(l))t=l.slice(),e=t.byteLength;else throw new Error("Invalid data format, must be a string or TypedArray.");const s=e>>2,c=e-s*4,d=new Uint32Array(t.buffer,0,s);let n=0,Z=0,b=this.h1,o=this.h2;const m=3432918353,h=461845907,W=m&Js,r=h&Js;for(let N=0;N<s;N++)N&1?(n=d[N],n=n*m&He|n*W&Js,n=n<<15|n>>>17,n=n*h&He|n*r&Js,b^=n,b=b<<13|b>>>19,b=b*5+3864292196):(Z=d[N],Z=Z*m&He|Z*W&Js,Z=Z<<15|Z>>>17,Z=Z*h&He|Z*r&Js,o^=Z,o=o<<13|o>>>19,o=o*5+3864292196);switch(n=0,c){case 3:n^=t[s*4+2]<<16;case 2:n^=t[s*4+1]<<8;case 1:n^=t[s*4],n=n*m&He|n*W&Js,n=n<<15|n>>>17,n=n*h&He|n*r&Js,s&1?b^=n:o^=n}this.h1=b,this.h2=o}hexdigest(){let l=this.h1,t=this.h2;return l^=t>>>1,l=l*3981806797&He|l*36045&Js,t=t*4283543511&He|((t<<16|l>>>16)*2950163797&He)>>>16,l^=t>>>1,l=l*444984403&He|l*60499&Js,t=t*3301882366&He|((t<<16|l>>>16)*3120437893&He)>>>16,l^=t>>>1,(l>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")}}const O2=Object.freeze({map:null,hash:"",transfer:void 0});var na,Za,Fi,Ot,$0,jX;class ZG{constructor(){L(this,$0);L(this,na,!1);L(this,Za,null);L(this,Fi,null);L(this,Ot,new Map);this.onSetModified=null,this.onResetModified=null,this.onAnnotationEditor=null}getValue(l,t){const e=a(this,Ot).get(l);return e===void 0?t:Object.assign(t,e)}getRawValue(l){return a(this,Ot).get(l)}remove(l){const t=a(this,Ot).get(l);if(t!==void 0&&(t instanceof Ul&&a(this,Fi).delete(t.annotationElementId),a(this,Ot).delete(l),a(this,Ot).size===0&&this.resetModified(),typeof this.onAnnotationEditor=="function")){for(const e of a(this,Ot).values())if(e instanceof Ul)return;this.onAnnotationEditor(null)}}setValue(l,t){const e=a(this,Ot).get(l);let s=!1;if(e!==void 0)for(const[c,d]of Object.entries(t))e[c]!==d&&(s=!0,e[c]=d);else s=!0,a(this,Ot).set(l,t);
3s&&z(this,$0,jX).call(this),t instanceof Ul&&((a(this,Fi)||p(this,Fi,new Map)).set(t.annotationElementId,t),typeof this.onAnnotationEditor=="function"&&this.onAnnotationEditor(t.constructor._type))}has(l){return a(this,Ot).has(l)}get size(){return a(this,Ot).size}resetModified(){a(this,na)&&(p(this,na,!1),typeof this.onResetModified=="function"&&this.onResetModified())}get print(){return new DX(this)}get serializable(){if(a(this,Ot).size===0)return O2;const l=new Map,t=new gX,e=[],s=Object.create(null);let c=!1;for(const[d,n]of a(this,Ot)){const Z=n instanceof Ul?n.serialize(!1,s):n;Z&&(l.set(d,Z),t.update(`${d}:${JSON.stringify(Z)}`),c||(c=!!Z.bitmap))}if(c)for(const d of l.values())d.bitmap&&e.push(d.bitmap);return l.size>0?{map:l,hash:t.hexdigest(),transfer:e}:O2}get editorStats(){let l=null;const t=new Map;let e=0,s=0;for(const c of a(this,Ot).values()){if(!(c instanceof Ul)){c.popup&&(c.popup.deleted?s+=1:e+=1);continue}c.isCommentDeleted?s+=1:c.hasEditedComment&&(e+=1);const d=c.telemetryFinalData;if(!d)continue;const{type:n}=d;t.has(n)||t.set(n,Object.getPrototypeOf(c).constructor),l||(l=Object.create(null));const Z=l[n]||(l[n]=new Map);for(const[b,o]of Object.entries(d)){if(b==="type")continue;let m=Z.get(b);m||(m=new Map,Z.set(b,m));const h=m.get(o)??0;m.set(o,h+1)}}if((s>0||e>0)&&(l||(l=Object.create(null)),l.comments={deleted:s,edited:e}),!l)return null;for(const[c,d]of t)l[c]=d.computeTelemetryFinalData(l[c]);return l}resetModifiedIds(){p(this,Za,null)}updateEditor(l,t){var s;const e=(s=a(this,Fi))==null?void 0:s.get(l);return e?(e.updateFromAnnotationLayer(t),!0):!1}getEditor(l){var t;return((t=a(this,Fi))==null?void 0:t.get(l))||null}get modifiedIds(){if(a(this,Za))return a(this,Za);const l=[];if(a(this,Fi))for(const t of a(this,Fi).values())t.serialize()&&l.push(t.annotationElementId);return p(this,Za,{ids:new Set(l),hash:l.join(",")})}[Symbol.iterator](){return a(this,Ot).entries()}}na=new WeakMap,Za=new WeakMap,Fi=new WeakMap,Ot=new WeakMap,$0=new WeakSet,jX=function(){a(this,na)||(p(this,na,!0),typeof this.onSetModified=="function"&&this.onSetModified())};var ko;class DX extends ZG{constructor(t){super();L(this,ko);const{map:e,hash:s,transfer:c}=t.serializable,d=structuredClone(e,c?{transfer:c}:null);p(this,ko,{map:d,hash:s,transfer:c})}get print(){Jl("Should not call PrintAnnotationStorage.print")}get serializable(){return a(this,ko)}get modifiedIds(){return el(this,"modifiedIds",{ids:new Set,hash:""})}}ko=new WeakMap;var ZZ;class D5{constructor({ownerDocument:l=globalThis.document,styleElement:t=null}){L(this,ZZ,new Set);this._document=l,this.nativeFontFaces=new Set,this.styleElement=null,this.loadingRequests=[],this.loadTestFontId=0}addNativeFontFace(l){this.nativeFontFaces.add(l),this._document.fonts.add(l)}removeNativeFontFace(l){this.nativeFontFaces.delete(l),this._document.fonts.delete(l)}insertRule(l){this.styleElement||(this.styleElement=this._document.createElement("style"),this._document.documentElement.getElementsByTagName("head")[0].append(this.styleElement));const t=this.styleElement.sheet;t.insertRule(l,t.cssRules.length)}clear(){for(const l of this.nativeFontFaces)this._document.fonts.delete(l);this.nativeFontFaces.clear(),a(this,ZZ).clear(),this.styleElement&&(this.styleElement.remove(),this.styleElement=null)}async loadSystemFont({systemFontInfo:l,disableFontFace:t,_inspectFont:e}){if(!(!l||a(this,ZZ).has(l.loadedName))){if(Gl(!t,"loadSystemFont shouldn't be called when `disableFontFace` is set."),this.isFontLoadingAPISupported){const{loadedName:s,src:c,style:d}=l,n=new FontFace(s,c,d);this.addNativeFontFace(n);try{await n.load(),a(this,ZZ).add(s),e==null||e(l)}catch{tl(`Cannot load system font: ${l.baseFontName}, installing it could help to improve PDF rendering.`),this.removeNativeFontFace(n)}return}Jl("Not implemented: loadSystemFont without the Font Loading API.")}}async bind(l){if(l.attached||l.missingFile&&!l.systemFontInfo)return;if(l.attached=!0,l.systemFontInfo){await this.loadSystemFont(l);return}if(this.isFontLoadingAPISupported){const e=l.createNativeFontFace();if(e){this.addNativeFontFace(e);try{await e.loaded}catch(s){throw tl(`Failed to load font '${e.family}': '${s}'.`),l.disableFontFace=!0,s}}return}const t=l.createFontFaceRule();if(t){if(this.insertRule(t),this.isSyncFontLoadingSupported)return;await new Promise(e=>{const s=this._queueLoadingCallback(e);this._prepareFontLoadEvent(l,s)})}}get isFontLoadingAPISupported(){var t;const l=!!((t=this._document)!=null&&t.fonts);return el(this,"isFontLoadingAPISupported",l)}get isSyncFontLoadingSupported(){return el(this,"isSyncFontLoadingSupported",ce||Tt.platform.isFirefox)}_queueLoadingCallback(l){function t(){for(Gl(!s.done,"completeRequest() cannot be called twice."),s.done=!0;e.length>0&&e[0].done;){const c=e.shift();setTimeout(c.callback,0)}}const{loadingRequests:e}=this,s={done:!1,complete:t,callback:l};return e.push(s),s}get _loadTestFont(){const l=atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");return el(this,"_loadTestFont",l)}_prepareFontLoadEvent(l,t){function e(T,V){return T.charCodeAt(V)<<24|T.charCodeAt(V+1)<<16|T.charCodeAt(V+2)<<8|T.charCodeAt(V+3)&255}function s(T,V,I,w){const R=T.substring(0,V),S=T.substring(V+I);return R+w+S}let c,d;const n=this._document.createElement("canvas");n.width=1,n.height=1;const Z=n.getContext("2d");let b=0;function o(T,V){if(++b>30){tl("Load test font never loaded."),V();return}if(Z.font="30px "+T,Z.fillText(".",0,20),Z.getImageData(0,0,1,1).data[3]>0){V();return}setTimeout(o.bind(null,T,V))}const m=`lt${Date.now()}${this.loadTestFontId++}`;let h=this._loadTestFont;h=s(h,976,m.length,m);const r=16,N=1482184792;let M=e(h,r);for(c=0,d=m.length-3;c<d;c+=4)M=M-N+e(m,c)|0;c<m.length&&(M=M-N+e(m+"XXX",c)|0),h=s(h,r,4,W5(M));const X=`url(data:font/opentype;base64,${btoa(h)});`,y=`@font-face {font-family:"${m}";src:${X}}`;this.insertRule(y);const Y=this._document.createElement("div");Y.style.visibility="hidden",Y.style.width=Y.style.height="10px",Y.style.position="absolute",Y.style.top=Y.style.left="0px";for(const T of[l.loadedName,m]){const V=this._document.createElement("span");V.textContent="Hi",V.style.fontFamily=T,Y.append(V)}this._document.body.append(Y),o(m,()=>{Y.remove(),t.complete()})}}ZZ=new WeakMap;var zl;
3class C5{constructor(l,t=null,e,s){L(this,zl);this.compiledGlyphs=Object.create(null),p(this,zl,l),this._inspectFont=t,e&&Object.assign(this,e),s&&(this.charProcOperatorList=s)}createNativeFontFace(){var t;if(!this.data||this.disableFontFace)return null;let l;if(!this.cssFontInfo)l=new FontFace(this.loadedName,this.data,{});else{const e={weight:this.cssFontInfo.fontWeight};this.cssFontInfo.italicAngle&&(e.style=`oblique ${this.cssFontInfo.italicAngle}deg`),l=new FontFace(this.cssFontInfo.fontFamily,this.data,e)}return(t=this._inspectFont)==null||t.call(this,this),l}createFontFaceRule(){var e;if(!this.data||this.disableFontFace)return null;const l=`url(data:${this.mimetype};base64,${qr(this.data)});`;let t;if(!this.cssFontInfo)t=`@font-face {font-family:"${this.loadedName}";src:${l}}`;else{let s=`font-weight: ${this.cssFontInfo.fontWeight};`;this.cssFontInfo.italicAngle&&(s+=`font-style: oblique ${this.cssFontInfo.italicAngle}deg;`),t=`@font-face {font-family:"${this.cssFontInfo.fontFamily}";${s}src:${l}}`}return(e=this._inspectFont)==null||e.call(this,this,l),t}getPathGenerator(l,t){if(this.compiledGlyphs[t]!==void 0)return this.compiledGlyphs[t];const e=this.loadedName+"_path_"+t;let s;try{s=l.get(e)}catch(d){tl(`getPathGenerator - ignoring character: "${d}".`)}const c=tX(s==null?void 0:s.path);return this.fontExtraProperties||l.delete(e),this.compiledGlyphs[t]=c}get black(){return a(this,zl).black}get bold(){return a(this,zl).bold}get disableFontFace(){return a(this,zl).disableFontFace??!1}set disableFontFace(l){el(this,"disableFontFace",!!l)}get fontExtraProperties(){return a(this,zl).fontExtraProperties??!1}get isInvalidPDFjsFont(){return a(this,zl).isInvalidPDFjsFont}get isType3Font(){return a(this,zl).isType3Font}get italic(){return a(this,zl).italic}get missingFile(){return a(this,zl).missingFile}get remeasure(){return a(this,zl).remeasure}get vertical(){return a(this,zl).vertical}get ascent(){return a(this,zl).ascent}get defaultWidth(){return a(this,zl).defaultWidth}get descent(){return a(this,zl).descent}get bbox(){return a(this,zl).bbox}set bbox(l){el(this,"bbox",l)}get fontMatrix(){return a(this,zl).fontMatrix}get fallbackName(){return a(this,zl).fallbackName}get loadedName(){return a(this,zl).loadedName}get mimetype(){return a(this,zl).mimetype}get name(){return a(this,zl).name}get data(){return a(this,zl).data}clearData(){a(this,zl).clearData()}get cssFontInfo(){return a(this,zl).cssFontInfo}get systemFontInfo(){return a(this,zl).systemFontInfo}get defaultVMetrics(){return a(this,zl).defaultVMetrics}}zl=new WeakMap;var bZ,oZ,Uo,mZ,Bh;const Cn=class Cn{constructor(l){L(this,mZ);L(this,bZ);L(this,oZ);L(this,Uo);p(this,bZ,l),p(this,oZ,new DataView(a(this,bZ))),p(this,Uo,new TextDecoder)}static write(l){const t=new TextEncoder,e={};let s=0;for(const b of Cn.strings){const o=t.encode(l[b]);e[b]=o,s+=4+o.length}const c=new ArrayBuffer(s),d=new Uint8Array(c),n=new DataView(c);let Z=0;for(const b of Cn.strings){const o=e[b],m=o.length;n.setUint32(Z,m),d.set(o,Z+4),Z+=4+m}return Gl(Z===c.byteLength,"CssFontInfo.write: Buffer overflow"),c}get fontFamily(){return z(this,mZ,Bh).call(this,0)}get fontWeight(){return z(this,mZ,Bh).call(this,1)}get italicAngle(){return z(this,mZ,Bh).call(this,2)}};bZ=new WeakMap,oZ=new WeakMap,Uo=new WeakMap,mZ=new WeakSet,Bh=function(l){Gl(l<Cn.strings.length,"Invalid string index");let t=0;for(let s=0;s<l;s++)t+=a(this,oZ).getUint32(t)+4;const e=a(this,oZ).getUint32(t);return a(this,Uo).decode(new Uint8Array(a(this,bZ),t+4,e))},E(Cn,"strings",["fontFamily","fontWeight","italicAngle"]);let w0=Cn;var Qc,Bs,ba,oa,Jb;const Jn=class Jn{constructor(l){L(this,oa);L(this,Qc);L(this,Bs);L(this,ba);p(this,Qc,l),p(this,Bs,new DataView(a(this,Qc))),p(this,ba,new TextDecoder)}static write(l){const t=new TextEncoder,e={};let s=0;for(const h of Jn.strings){const W=t.encode(l[h]);e[h]=W,s+=4+W.length}s+=4;let c,d,n=1+s;l.style&&(c=t.encode(l.style.style),d=t.encode(l.style.weight),n+=4+c.length+4+d.length);const Z=new ArrayBuffer(n),b=new Uint8Array(Z),o=new DataView(Z);let m=0;o.setUint8(m++,l.guessFallback?1:0),o.setUint32(m,0),m+=4,s=0;for(const h of Jn.strings){const W=e[h],r=W.length;s+=4+r,o.setUint32(m,r),b.set(W,m+4),m+=4+r}return o.setUint32(m-s-4,s),l.style&&(o.setUint32(m,c.length),b.set(c,m+4),m+=4+c.length,o.setUint32(m,d.length),b.set(d,m+4),m+=4+d.length),Gl(m<=Z.byteLength,"SubstitionInfo.write: Buffer overflow"),Z.transferTo
3FixedLength(m)}get guessFallback(){return a(this,Bs).getUint8(0)!==0}get css(){return z(this,oa,Jb).call(this,0)}get loadedName(){return z(this,oa,Jb).call(this,1)}get baseFontName(){return z(this,oa,Jb).call(this,2)}get src(){return z(this,oa,Jb).call(this,3)}get style(){let l=1;l+=4+a(this,Bs).getUint32(l);const t=a(this,Bs).getUint32(l),e=a(this,ba).decode(new Uint8Array(a(this,Qc),l+4,t));l+=4+t;const s=a(this,Bs).getUint32(l),c=a(this,ba).decode(new Uint8Array(a(this,Qc),l+4,s));return{style:e,weight:c}}};Qc=new WeakMap,Bs=new WeakMap,ba=new WeakMap,oa=new WeakSet,Jb=function(l){Gl(l<Jn.strings.length,"Invalid string index");let t=5;for(let s=0;s<l;s++)t+=a(this,Bs).getUint32(t)+4;const e=a(this,Bs).getUint32(t);return a(this,ba).decode(new Uint8Array(a(this,Qc),t+4,e))},E(Jn,"strings",["css","loadedName","baseFontName","src"]);let R0=Jn;var hZ,uZ,WZ,GZ,Te,As,Eo,wl,ct,ms,Ah,Fb;const Zl=class Zl{constructor({data:l,extra:t}){L(this,ct);L(this,As);L(this,Eo);L(this,wl);p(this,As,l),p(this,Eo,new TextDecoder),p(this,wl,new DataView(a(this,As))),t&&Object.assign(this,t)}get black(){return z(this,ct,ms).call(this,0)}get bold(){return z(this,ct,ms).call(this,1)}get disableFontFace(){return z(this,ct,ms).call(this,2)}get fontExtraProperties(){return z(this,ct,ms).call(this,3)}get isInvalidPDFjsFont(){return z(this,ct,ms).call(this,4)}get isType3Font(){return z(this,ct,ms).call(this,5)}get italic(){return z(this,ct,ms).call(this,6)}get missingFile(){return z(this,ct,ms).call(this,7)}get remeasure(){return z(this,ct,ms).call(this,8)}get vertical(){return z(this,ct,ms).call(this,9)}get ascent(){return z(this,ct,Ah).call(this,0)}get defaultWidth(){return z(this,ct,Ah).call(this,1)}get descent(){return z(this,ct,Ah).call(this,2)}get bbox(){let l=a(Zl,uZ);if(a(this,wl).getUint8(l)===0)return;l+=1;const e=[];for(let s=0;s<4;s++)e.push(a(this,wl).getInt16(l,!0)),l+=2;return e}get fontMatrix(){let l=a(Zl,WZ);if(a(this,wl).getUint8(l)===0)return;l+=1;const e=[];for(let s=0;s<6;s++)e.push(a(this,wl).getFloat64(l,!0)),l+=8;return e}get defaultVMetrics(){let l=a(Zl,GZ);if(a(this,wl).getUint8(l)===0)return;l+=1;const e=[];for(let s=0;s<3;s++)e.push(a(this,wl).getInt16(l,!0)),l+=2;return e}get fallbackName(){return z(this,ct,Fb).call(this,0)}get loadedName(){return z(this,ct,Fb).call(this,1)}get mimetype(){return z(this,ct,Fb).call(this,2)}get name(){return z(this,ct,Fb).call(this,3)}get data(){let l=a(Zl,Te);const t=a(this,wl).getUint32(l);l+=4+t;const e=a(this,wl).getUint32(l);l+=4+e;const s=a(this,wl).getUint32(l);l+=4+s;const c=a(this,wl).getUint32(l);if(c!==0)return new Uint8Array(a(this,As),l+4,c)}clearData(){let l=a(Zl,Te);const t=a(this,wl).getUint32(l);l+=4+t;const e=a(this,wl).getUint32(l);l+=4+e;const s=a(this,wl).getUint32(l);l+=4+s;const c=a(this,wl).getUint32(l);new Uint8Array(a(this,As),l+4,c).fill(0),a(this,wl).setUint32(l,0)}get cssFontInfo(){let l=a(Zl,Te);const t=a(this,wl).getUint32(l);l+=4+t;const e=a(this,wl).getUint32(l);l+=4+e;const s=a(this,wl).getUint32(l);if(s===0)return null;const c=new Uint8Array(s);return c.set(new Uint8Array(a(this,As),l+4,s)),new w0(c.buffer)}get systemFontInfo(){let l=a(Zl,Te);const t=a(this,wl).getUint32(l);l+=4+t;const e=a(this,wl).getUint32(l);if(e===0)return null;const s=new Uint8Array(e);return s.set(new Uint8Array(a(this,As),l+4,e)),new R0(s.buffer)}static write(l){const t=l.systemFontInfo?R0.write(l.systemFontInfo):null,e=l.cssFontInfo?w0.write(l.cssFontInfo):null,s=new TextEncoder,c={};let d=0;for(const N of Zl.strings)c[N]=s.encode(l[N]),d+=4+c[N].length;const n=a(Zl,Te)+4+d+4+(t?t.byteLength:0)+4+(e?e.byteLength:0)+4+(l.data?l.data.length:0),Z=new ArrayBuffer(n),b=new Uint8Array(Z),o=new DataView(Z);let m=0;const h=Zl.bools.length;let W=0,r=0;for(let N=0;N<h;N++){const M=l[Zl.bools[N]];W|=(M===void 0?0:M?2:1)<<r,r+=2,(r===8||N===h-1)&&(o.setUint8(m++,W),W=0,r=0)}Gl(m===a(Zl,hZ),"FontInfo.write: Boolean properties offset mismatch");for(const N of Zl.numbers)o.setFloat64(m,l[N]),m+=8;if(Gl(m===a(Zl,uZ),"FontInfo.write: Number properties offset mismatch"),l.bbox){o.setUint8(m++,4);for(const N of l.bbox)o.setInt16(m,N,!0),m+=2}else o.setUint8(m++,0),m+=8;if(Gl(m===a(Zl,WZ),"FontInfo.write: BBox properties offset mismatch"),l.fontMatrix){o.setUint8(m++,6);for(const N of l.fontMatrix)o.setFloat64(m,N,!0),m+=8}else o.setUint8(m++,0),m+=48;if(Gl(m===a(Zl,GZ),"FontInfo.write: FontMatrix properties offset mismatch"),l.defaultVMetrics){o.setUint8(m++,1);for(const N of l.defaultVMetrics)o.setInt16(m,N,!0),m+=2}else o.setUint8(m++,0),m+=6;Gl(m===a(Zl,Te),"FontInfo.write: DefaultVMetrics properties offset mismatch"),o.setUint32(a(Zl,Te),0),m+=4;for(const N of Zl.strings){const M=c[N],X=M.length;o.setUint32(m,X),b.set(M,m+4),m+=4+X}if(o.setUint32(a(Zl,Te),m-a(Zl,Te)-4),!t)o.setUint32(m,0),m+=4;else{const N=t.byteLength;o.setUint32(m,N),Gl(m+4+N<=Z.byteLength,"FontInfo.write: Buffer overflow at systemFontInfo"),b.set(new Uint8Array(t),m+4),m+=4+N}if(!e)o.setUint32(m,0),m+=4;else{const N=e.byteLength;o.setUint32(m,N),Gl(m+4+N<=Z.byteLength,"FontInfo.write: Buffer overflow at cssFontInfo"),b.set(new Uint8Array(e),m+4),m+=4+N}return l.data===void 0?(o.setUint32(m,0),m+=4):(o.setUint32(m,l.data.length),b.set(l.data,m+4),m+=4+l.data.length),Gl(m<=Z.byteLength,"FontInfo.write: Buffer overflow"),Z.transferTo
3FixedLength(m)}};hZ=new WeakMap,uZ=new WeakMap,WZ=new WeakMap,GZ=new WeakMap,Te=new WeakMap,As=new WeakMap,Eo=new WeakMap,wl=new WeakMap,ct=new WeakSet,ms=function(l){Gl(l<Zl.bools.length,"Invalid boolean index");const t=Math.floor(l/4),e=l*2%8,s=a(this,wl).getUint8(t)>>e&3;return s===0?void 0:s===2},Ah=function(l){return Gl(l<Zl.numbers.length,"Invalid number index"),a(this,wl).getFloat64(a(Zl,hZ)+l*8)},Fb=function(l){Gl(l<Zl.strings.length,"Invalid string index");let t=a(Zl,Te)+4;for(let c=0;c<l;c++)t+=a(this,wl).getUint32(t)+4;const e=a(this,wl).getUint32(t),s=new Uint8Array(e);return s.set(new Uint8Array(a(this,As),t+4,e)),a(this,Eo).decode(s)},E(Zl,"bools",["black","bold","disableFontFace","fontExtraProperties","isInvalidPDFjsFont","isType3Font","italic","missingFile","remeasure","vertical"]),E(Zl,"numbers",["ascent","defaultWidth","descent"]),E(Zl,"strings",["fallbackName","loadedName","mimetype","name"]),L(Zl,hZ,Math.ceil(Zl.bools.length*2/8)),L(Zl,uZ,a(Zl,hZ)+Zl.numbers.length*8),L(Zl,WZ,a(Zl,uZ)+1+8),L(Zl,GZ,a(Zl,WZ)+1+48),L(Zl,Te,a(Zl,GZ)+1+6);let k2=Zl;var Ko,vo,Qo,Po,Ho,fo,Bo,Ao;const Fl=class Fl{constructor(l){this.buffer=l,this.view=new DataView(l),this.data=new Uint8Array(l)}static write(l){let t,e=null,s=[],c=[],d=[],n=[],Z=null,b=null;switch(l[0]){case"RadialAxial":t=l[1]==="axial"?1:2,e=l[2],d=l[3],t===1?s.push(...l[4],...l[5]):s.push(l[4][0],l[4][1],l[6],l[5][0],l[5][1],l[7]);break;case"Mesh":t=3,Z=l[1],s=l[2],c=l[3],n=l[4]||[],e=l[6],b=l[7];break;default:throw new Error(`Unsupported pattern type: ${l[0]}`)}const o=Math.floor(s.length/2),m=Math.floor(c.length/3),h=d.length,W=n.length;let r=0;for(const V of n)r+=1,r=Math.ceil(r/4)*4,r+=4+V.coords.length*4,r+=4+V.colors.length*4,V.verticesPerRow!==void 0&&(r+=4);const N=20+o*8+m*3+h*8+(e?16:0)+(b?3:0)+r,M=new ArrayBuffer(N),X=new DataView(M),y=new Uint8Array(M);X.setUint8(a(Fl,Ko),t),X.setUint8(a(Fl,vo),e?1:0),X.setUint8(a(Fl,Qo),b?1:0),X.setUint8(a(Fl,Po),Z),X.setUint32(a(Fl,Ho),o,!0),X.setUint32(a(Fl,fo),m,!0),X.setUint32(a(Fl,Bo),h,!0),X.setUint32(a(Fl,Ao),W,!0);let Y=20;new Float32Array(M,Y,o*2).set(s),Y+=o*8,y.set(c,Y),Y+=m*3;for(const[V,I]of d)X.setFloat32(Y,V,!0),Y+=4,X.setUint32(Y,parseInt(I.slice(1),16),!0),Y+=4;if(e)for(const V of e)X.setFloat32(Y,V,!0),Y+=4;b&&(y.set(b,Y),Y+=3);for(let V=0;V<n.length;V++){const I=n[V];X.setUint8(Y,I.type),Y+=1,Y=Math.ceil(Y/4)*4,X.setUint32(Y,I.coords.length,!0),Y+=4,new Int32Array(M,Y,I.coords.length).set(I.coords),Y+=I.coords.length*4,X.setUint32(Y,I.colors.length,!0),Y+=4,new Int32Array(M,Y,I.colors.length).set(I.colors),Y+=I.colors.length*4,I.verticesPerRow!==void 0&&(X.setUint32(Y,I.verticesPerRow,!0),Y+=4)}return M}getIR(){const l=this.view,t=this.data[a(Fl,Ko)],e=!!this.data[a(Fl,vo)],s=!!this.data[a(Fl,Qo)],c=l.getUint32(a(Fl,Ho),!0),d=l.getUint32(a(Fl,fo),!0),n=l.getUint32(a(Fl,Bo),!0),Z=l.getUint32(a(Fl,Ao),!0);let b=20;const o=new Float32Array(this.buffer,b,c*2);b+=c*8;const m=new Uint8Array(this.buffer,b,d*3);b+=d*3;const h=[];for(let M=0;M<n;++M){const X=l.getFloat32(b,!0);b+=4;const y=l.getUint32(b,!0);b+=4,h.push([X,`#${y.toString(16).padStart(6,"0")}`])}let W=null;if(e){W=[];for(let M=0;M<4;++M)W.push(l.getFloat32(b,!0)),b+=4}let r=null;s&&(r=new Uint8Array(this.buffer,b,3),b+=3);const N=[];for(let M=0;M<Z;++M){const X=l.getUint8(b);b+=1,b=Math.ceil(b/4)*4;const y=l.getUint32(b,!0);b+=4;const Y=new Int32Array(this.buffer,b,y);b+=y*4;const T=l.getUint32(b,!0);b+=4;const V=new Int32Array(this.buffer,b,T);b+=T*4;const I={type:X,coords:Y,colors:V};X===r2.LATTICE&&(I.verticesPerRow=l.getUint32(b,!0),b+=4),N.push(I)}if(t===1)return["RadialAxial","axial",W,h,Array.from(o.slice(0,2)),Array.from(o.slice(2,4)),null,null];if(t===2)return["RadialAxial","radial",W,h,[o[0],o[1]],[o[3],o[4]],o[2],o[5]];if(t===3){const M=this.data[a(Fl,Po)];let X=null;if(o.length>0){let y=o[0],Y=o[0],T=o[1],V=o[1];for(let I=0;I<o.length;I+=2){const w=o[I],R=o[I+1];y=y>w?w:y,T=T>R?R:T,Y=Y<w?w:Y,V=V<R?R:V}X=[y,T,Y,V]}return["Mesh",M,o,m,N,X,W,r]}throw new Error(`Unsupported pattern kind: ${t}`)}};Ko=new WeakMap,vo=new WeakMap,Qo=new WeakMap,Po=new WeakMap,Ho=new WeakMap,fo=new WeakMap,Bo=new WeakMap,Ao=new WeakMap,L(Fl,Ko,0),L(Fl,vo,1),L(Fl,Qo,2),L(Fl,Po,3),L(Fl,Ho,4),L(Fl,fo,8),L(Fl,Bo,12),L(Fl,Ao,16);let U2=Fl;var NZ;class J5{constructor(l){L(this,NZ);p(this,NZ,l)}static write(l){let t,e;return Tt.isFloat16ArraySupported?(e=new ArrayBuffer(l.length*2),t=new Float16Array(e)):(e=new ArrayBuffer(l.length*4),t=new Float32Array(e)),t.set(l),e}get path(){return Tt.isFloat16ArraySupported?new Float16Array(a(this,NZ)):new Float32Array(a(this,NZ))}}NZ=new WeakMap;function F5(i){if(i instanceof URL)return i.href;if(typeof i=="string"){if(ce)return i;const l=URL.parse(i,window.location);if(l)return l.href}throw new Error("Invalid PDF url data: either string or URL-object is expected in the url property.")}function O5(i){if(ce&&typeof Buffer<"u"&&i instanceof Buffer)throw new Error("Please provide binary data as `Uint8Array`, rather than `Buffer`.");if(i instanceof Uint8Array&&i.byteLength===i.buffer.byteLength)return i;if(typeof i=="string")return ch(i);if(i instanceof ArrayBuffer||ArrayBuffer.isView(i)||typeof i=="object"&&!isNaN(i==null?void 0:i.length))return new Uint8Array(i);throw new Error("Invalid PDF binary data: either TypedArray, string, or array-like object is expected in the data property.")}
3function Yh(i){if(typeof i!="string")return null;if(i.endsWith("/"))return i;throw new Error(`Invalid factory url: "${i}" must include trailing slash.`)}const E2=i=>typeof i=="object"&&Number.isInteger(i==null?void 0:i.num)&&i.num>=0&&Number.isInteger(i==null?void 0:i.gen)&&i.gen>=0,k5=i=>typeof i=="object"&&typeof(i==null?void 0:i.name)=="string",U5=M5.bind(null,E2,k5);var Oi,lu;class E5{constructor(){L(this,Oi,new Map);L(this,lu,Promise.resolve())}postMessage(l,t){const e={data:structuredClone(l,t?{transfer:t}:null)};a(this,lu).then(()=>{for(const[s]of a(this,Oi))s.call(this,e)})}addEventListener(l,t,e=null){let s=null;if((e==null?void 0:e.signal)instanceof AbortSignal){const{signal:c}=e;if(c.aborted){tl("LoopbackPort - cannot use an `aborted` signal.");return}const d=()=>this.removeEventListener(l,t);s=()=>c.removeEventListener("abort",d),c.addEventListener("abort",d)}a(this,Oi).set(t,s)}removeEventListener(l,t){const e=a(this,Oi).get(t);e==null||e(),a(this,Oi).delete(t)}terminate(){for(const[,l]of a(this,Oi))l==null||l();a(this,Oi).clear()}}Oi=new WeakMap,lu=new WeakMap;const yh={DATA:1,ERROR:2}
3,ut={CANCEL:1,CANCEL_COMPLETE:2,CLOSE:3,ENQUEUE:4,ERROR:5,PULL:6,PULL_COMPLETE:7,START_COMPLETE:8};function uN(){}function be(i){if(i instanceof Yd||i instanceof X2||i instanceof dN||i instanceof V0||i instanceof ku)return i;switch(i instanceof Error||typeof i=="object"&&i!==null||Jl('wrapReason: Expected "reason" to be a (possibly cloned) Error.'),i.name){case"AbortException":return new Yd(i.message);case"InvalidPDFException":return new X2(i.message);case"PasswordException":return new dN(i.message,i.code);case"ResponseException":return new V0(i.message,i.status,i.missing);case"UnknownErrorException":return new ku(i.message,i.details)}return new ku(i.message,i.toString())}var rZ,bs,CX,JX,FX,_h;class Ob{constructor(l,t,e){L(this,bs);L(this,rZ,new AbortController);this.sourceName=l,this.targetName=t,this.comObj=e,this.callbackId=1,this.streamId=1,this.streamSinks=Object.create(null),this.streamControllers=Object.create(null),this.callbackCapabilities=Object.create(null),this.actionHandler=Object.create(null),e.addEventListener("message",z(this,bs,CX).bind(this),{signal:a(this,rZ).signal})}on(l,t){const e=this.actionHandler;if(e[l])throw new Error(`There is already an actionName called "${l}"`);e[l]=t}send(l,t,e){this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:l,data:t},e)}sendWithPromise(l,t,e){const s=this.callbackId++,c=Promise.withResolvers();this.callbackCapabilities[s]=c;try{this.comObj.postMessage({sourceName:this.sourceName,targetName:this.targetName,action:l,callbackId:s,data:t},e)}catch(d){c.reject(d)}return c.promise}sendWithStream(l,t,e,s){const c=this.streamId++,d=this.sourceName,n=this.targetName,Z=this.comObj;return new ReadableStream({start:b=>{const o=Promise.withResolvers();return this.streamControllers[c]={controller:b,startCall:o,pullCall:null,cancelCall:null,isClosed:!1},Z.postMessage({sourceName:d,targetName:n,action:l,streamId:c,data:t,desiredSize:b.desiredSize},s),o.promise},pull:b=>{const o=Promise.withResolvers();return this.streamControllers[c].pullCall=o,Z.postMessage({sourceName:d,targetName:n,stream:ut.PULL,streamId:c,desiredSize:b.desiredSize}),o.promise},cancel:b=>{Gl(b instanceof Error,"cancel must have a valid reason");const o=Promise.withResolvers();return this.streamControllers[c].cancelCall=o,this.streamControllers[c].isClosed=!0,Z.postMessage({sourceName:d,targetName:n,stream:ut.CANCEL,streamId:c,reason:be(b)}),o.promise}},e)}destroy(){var l;(l=a(this,rZ))==null||l.abort(),p(this,rZ,null)}}rZ=new WeakMap,bs=new WeakSet,CX=function({data:l}){if(l.targetName!==this.sourceName)return;if(l.stream){z(this,bs,FX).call(this,l);return}if(l.callback){const e=l.callbackId,s=this.callbackCapabilities[e];if(!s)throw new Error(`Cannot resolve callback ${e}`);if(delete this.callbackCapabilities[e],l.callback===yh.DATA)s.resolve(l.data);else if(l.callback===yh.ERROR)s.reject(be(l.reason));else throw new Error("Unexpected callback case");return}const t=this.actionHandler[l.action];if(!t)throw new Error(`Unknown action from worker: ${l.action}`);if(l.callbackId){const e=this.sourceName,s=l.sourceName,c=this.comObj;Promise.try(t,l.data).then(function(d){c.postMessage({sourceName:e,targetName:s,callback:yh.DATA,callbackId:l.callbackId,data:d})},function(d){c.postMessage({sourceName:e,targetName:s,callback:yh.ERROR,callbackId:l.callbackId,reason:be(d)})});return}if(l.streamId){z(this,bs,JX).call(this,l);return}t(l.data)},JX=function(l){const t=l.streamId,e=this.sourceName,s=l.sourceName,c=this.comObj,d=this,n=this.actionHandler[l.action],Z={enqueue(b,o=1,m){if(this.isCancelled)return;const h=this.desiredSize;this.desiredSize-=o,h>0&&this.desiredSize<=0&&(this.sinkCapability=Promise.withResolvers(),this.ready=this.sinkCapability.promise),c.postMessage({sourceName:e,targetName:s,stream:ut.ENQUEUE,streamId:t,chunk:b},m)},close(){this.isCancelled||(this.isCancelled=!0,c.postMessage({sourceName:e,targetName:s,stream:ut.CLOSE,streamId:t}),delete d.streamSinks[t])},error(b){Gl(b instanceof Error,"error must have a valid reason"),!this.isCancelled&&(this.isCancelled=!0,c.postMessage({sourceName:e,targetName:s,stream:ut.ERROR,streamId:t,reason:be(b)}))},sinkCapability:Promise.withResolvers(),onPull:null,onCancel:null,isCancelled:!1,desiredSize:l.desiredSize,ready:null};Z.sinkCapability.resolve(),Z.ready=Z.sinkCapability.promise,this.streamSinks[t]=Z,Promise.try(n,l.data,Z).then(function(){c.postMessage({sourceName:e,targetName:s,stream:ut.START_COMPLETE,streamId:t,success:!0})},function(b){c.postMessage({sourceName:e,targetName:s,stream:ut.START_COMPLETE,streamId:t,reason:be(b)})})},FX=function(l){const t=l.streamId,e=this.sourceName,s=l.sourceName,c=this.comObj,d=this.streamControllers[t],n=this.streamSinks[t];switch(l.stream){case ut.START_COMPLETE:l.success?d.startCall.resolve():d.startCall.reject(be(l.reason));break;case ut.PULL_COMPLETE:l.success?d.pullCall.resolve():d.pullCall.reject(be(l.reason));break;case ut.PULL:if(!n){c.postMessage({sourceName:e,targetName:s,stream:ut.PULL_COMPLETE,streamId:t,success:!0});break}n.desiredSize<=0&&l.desiredSize>0&&n.sinkCapability.resolve(),n.desiredSize=l.desiredSize,Promise.try(n.onPull||uN).then(function(){c.postMessage({sourceName:e,targetName:s,stream:ut.PULL_COMPLETE,streamId:t,success:!0})},function(b){c.postMessage({sourceName:e,targetName:s,stream:ut.PULL_COMPLETE,streamId:t,reason:be(b)})});break;case ut.ENQUEUE:if(Gl(d,"enqueue should have stream controller"),d.isClosed)break;d.controller.enqueue(l.chunk);break;case ut.CLOSE:if(Gl(d,"close should have stream controller"),d.isClosed)break;d.isClosed=!0,d.controller.close(),z(this,bs,_h).call(this,d,t);break;case ut.ERROR:Gl(d,"error should have stream controller"),d.controller.error(be(l.reason)),z(this,bs,_h).call(this,d,t);break;case ut.CANCEL_COMPLETE:l.success?d.cancelCall.resolve():d.cancelCall.reject(be(l.reason)),z(this,bs,_h).call(this,d,t);break;case ut.CANCEL:if(!n)break;const Z=be(l.reason);Promise.try(n.onCancel||uN,Z).then(function(){c.postMessage({sourceName:e,targetName:s,stream:ut.CANCEL_COMPLETE,streamId:t,success:!0})},function(b){c.postMessage({sourceName:e,targetName:s,stream:ut.CANCEL_COMPLETE,streamId:t,reason:be(b)})}),n.sinkCapability.reject(Z),n.isCancelled=!0,delete this.streamSinks[t];break;default:throw new Error("Unexpected stream case")}},_h=async function(l,t){var e,s,c;await Promise.allSettled([(e=l.startCall)==null?void 0:e.promise,(s=l.pullCall)==null?void 0:s.promise,(c=l.cancelCall)==null?void 0:c.promise]),delete this.streamControllers[t]};var _o;class OX{constructor({enableHWA:l=!1}){L(this,_o,!1);p(this,_o,l)}create(l,t){if(l<=0||t<=0)throw new Error("Invalid canvas size");const e=this._createCanvas(l,t);return{canvas:e,context:e.getContext("2d",{willReadFrequently:!a(this,_o)})}}reset(l,t,e){if(!l.canvas)throw new Error("Canvas is not specified");if(t<=0||e<=0)throw new Error("Invalid canvas size");l.canvas.width=t,l.canvas.height=e}destroy(l){if(!l.canvas)throw new Error("Canvas is not specified");l.canvas.width=0,l.canvas.height=0,l.canvas=null,l.context=null}_createCanvas(l,t){Jl("Abstract method `_createCanvas` called.")}}_o=new WeakMap;class K5 extends OX{constructor({ownerDocument:l=globalThis.document,enableHWA:t=!1}){super({enableHWA:t}),this._document=l}_createCanvas(l,t){const e=this._document.createElement("canvas");return e.width=l,e.height=t,e}}class kX{constructor({baseUrl:l=null,isCompressed:t=!0}){this.baseUrl=l,this.isCompressed=t}async fetch({name:l}){if(!this.baseUrl)throw new Error("Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.");if(!l)throw new Error("CMap name must be specified.");const t=this.baseUrl+l+(this.isCompressed?".bcmap":"");return this._fetch(t).then(e=>({cMapData:e,isCompressed:this.isCompressed})).catch(e=>{throw new Error(`Unable to load ${this.isCompressed?"binary ":""}CMap at: ${t}`)})}async _fetch(l){Jl("Abstract method `_fetch` called.")}}class WN extends kX{async _fetch(l){const t=await dh(l,this.isCompressed?"arraybuffer":"text");return t instanceof ArrayBuffer?new Uint8Array(t):ch(t)}}class UX{addFilter(l){return"none"}addHCMFilter(l,t){return"none"}addAlphaFilter(l){return"none"}addLuminosityFilter(l){return"none"}addHighlightHCMFilter(l,t,e,s,c){return"none"}destroy(l=!1){}}var ma,XZ,ki,Ui,Bt,ha,ua,P,Qt,kb,Ln,qh,In,EX,K2,zn,Ub,Eb,v2,Kb;class v5 extends UX{constructor({docId:t,ownerDocument:e=globalThis.document}){super();L(this,P);L(this,ma);L(this,XZ);L(this,ki);L(this,Ui);L(this,Bt);L(this,ha);L(this,ua,0);p(this,Ui,t),p(this,Bt,e)}addFilter(t){if(!t)return"none";let e=a(this,P,Qt).get(t);if(e)return e;const[s,c,d]=z(this,P,qh).call(this,t),n=t.length===1?s:`${s}${c}${d}`;if(e=a(this,P,Qt).get(n),e)return a(this,P,Qt).set(t,e),e;const Z=`g_${a(this,Ui)}_transfer_map_${rt(this,ua)._++}`,b=z(this,P,In).call(this,Z);a(this,P,Qt).set(t,b),a(this,P,Qt).set(n,b);
3const o=z(this,P,zn).call(this,Z);return z(this,P,Eb).call(this,s,c,d,o),b}addHCMFilter(t,e){var r;const s=`${t}-${e}`,c="base";let d=a(this,P,kb).get(c);if((d==null?void 0:d.key)===s||(d?((r=d.filter)==null||r.remove(),d.key=s,d.url="none",d.filter=null):(d={key:s,url:"none",filter:null},a(this,P,kb).set(c,d)),!t||!e))return d.url;const n=z(this,P,Kb).call(this,t);t=Q.makeHexColor(...n);const Z=z(this,P,Kb).call(this,e);if(e=Q.makeHexColor(...Z),a(this,P,Ln).style.color="",t==="#000000"&&e==="#ffffff"||t===e)return d.url;const b=new Array(256);for(let N=0;N<=255;N++){const M=N/255;b[N]=M<=.03928?M/12.92:((M+.055)/1.055)**2.4}const o=b.join(","),m=`g_${a(this,Ui)}_hcm_filter`,h=d.filter=z(this,P,zn).call(this,m);z(this,P,Eb).call(this,o,o,o,h),z(this,P,K2).call(this,h);const W=(N,M)=>{const X=n[N]/255,y=Z[N]/255,Y=new Array(M+1);for(let T=0;T<=M;T++)Y[T]=X+T/M*(y-X);return Y.join(",")};return z(this,P,Eb).call(this,W(0,5),W(1,5),W(2,5),h),d.url=z(this,P,In).call(this,m),d.url}addAlphaFilter(t){let e=a(this,P,Qt).get(t);if(e)return e;const[s]=z(this,P,qh).call(this,[t]),c=`alpha_${s}`;if(e=a(this,P,Qt).get(c),e)return a(this,P,Qt).set(t,e),e;const d=`g_${a(this,Ui)}_alpha_map_${rt(this,ua)._++}`,n=z(this,P,In).call(this,d);a(this,P,Qt).set(t,n),a(this,P,Qt).set(c,n);const Z=z(this,P,zn).call(this,d);return z(this,P,v2).call(this,s,Z),n}addLuminosityFilter(t){let e=a(this,P,Qt).get(t||"luminosity");if(e)return e;let s,c;if(t?([s]=z(this,P,qh).call(this,[t]),c=`luminosity_${s}`):c="luminosity",e=a(this,P,Qt).get(c),e)return a(this,P,Qt).set(t,e),e;const d=`g_${a(this,Ui)}_luminosity_map_${rt(this,ua)._++}`,n=z(this,P,In).call(this,d);a(this,P,Qt).set(t,n),a(this,P,Qt).set(c,n);const Z=z(this,P,zn).call(this,d);return z(this,P,EX).call(this,Z),t&&z(this,P,v2).call(this,s,Z),n}addHighlightHCMFilter(t,e,s,c,d){var y;const n=`${e}-${s}-${c}-${d}`;let Z=a(this,P,kb).get(t);if((Z==null?void 0:Z.key)===n||(Z?((y=Z.filter)==null||y.remove(),Z.key=n,Z.url="none",Z.filter=null):(Z={key:n,url:"none",filter:null},a(this,P,kb).set(t,Z)),!e||!s))return Z.url;const[b,o]=[e,s].map(z(this,P,Kb).bind(this));let m=Math.round(.2126*b[0]+.7152*b[1]+.0722*b[2]),h=Math.round(.2126*o[0]+.7152*o[1]+.0722*o[2]),[W,r]=[c,d].map(z(this,P,Kb).bind(this));h<m&&([m,h,W,r]=[h,m,r,W]),a(this,P,Ln).style.color="";const N=(Y,T,V)=>{const I=new Array(256),w=(h-m)/V,R=Y/255,S=(T-Y)/(255*V);let x=0;for(let g=0;g<=V;g++){const C=Math.round(m+g*w),D=R+g*S;for(let J=x;J<=C;J++)I[J]=D;x=C+1}for(let g=x;g<256;g++)I[g]=I[x-1];return I.join(",")},M=`g_${a(this,Ui)}_hcm_${t}_filter`,X=Z.filter=z(this,P,zn).call(this,M);return z(this,P,K2).call(this,X),z(this,P,Eb).call(this,N(W[0],r[0],5),N(W[1],r[1],5),N(W[2],r[2],5),X),Z.url=z(this,P,In).call(this,M),Z.url}destroy(t=!1){var e,s,c,d;t&&((e=a(this,ha))!=null&&e.size)||((s=a(this,ki))==null||s.parentNode.parentNode.remove(),p(this,ki,null),(c=a(this,XZ))==null||c.clear(),p(this,XZ,null),(d=a(this,ha))==null||d.clear(),p(this,ha,null),p(this,ua,0))}}ma=new WeakMap,XZ=new WeakMap,ki=new WeakMap,Ui=new WeakMap,Bt=new WeakMap,ha=new WeakMap,ua=new WeakMap,P=new WeakSet,Qt=function(){return a(this,XZ)||p(this,XZ,new Map)},kb=function(){return a(this,ha)||p(this,ha,new Map)},Ln=function(){if(!a(this,ki)){const t=a(this,Bt).createElement("div"),{style:e}=t;e.visibility="hidden",e.contain="strict",e.width=e.height=0,e.position="absolute",e.top=e.left=0,e.zIndex=-1;const s=a(this,Bt).createElementNS(Yi,"svg");s.setAttribute("width",0),s.setAttribute("height",0),p(this,ki,a(this,Bt).createElementNS(Yi,"defs")),t.append(s),s.append(a(this,ki)),a(this,Bt).body.append(t)}return a(this,ki)},qh=function(t){if(t.length===1){const b=t[0],o=new Array(256);for(let h=0;h<256;h++)o[h]=b[h]/255;const m=o.join(",");return[m,m,m]}const[e,s,c]=t,d=new Array(256),n=new Array(256),Z=new Array(256);for(let b=0;b<256;b++)d[b]=e[b]/255,n[b]=s[b]/255,Z[b]=c[b]/255;return[d.join(","),n.join(","),Z.join(",")]},In=function(t){if(a(this,ma)===void 0){p(this,ma,"");const e=a(this,Bt).URL;e!==a(this,Bt).baseURI&&(Wu(e)?tl('#createUrl: ignore "data:"-URL for performance reasons.'):p(this,ma,Br(e,"")))}return`url(${a(this,ma)}#${t})`},EX=function(t){const e=a(this,Bt).createElementNS(Yi,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0"),t.append(e)},K2=function(t){const e=a(this,Bt).createElementNS(Yi,"feColorMatrix");e.setAttribute("type","matrix"),e.setAttribute("values","0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"),t.append(e)},zn=function(t){const e=a(this,Bt).createElementNS(Yi,"filter");return e.setAttribute("color-interpolation-filters","sRGB"),e.setAttribute("id",t),a(this,P,Ln).append(e),e},Ub=function(t,e,s){const c=a(this,Bt).createElementNS(Yi,e);c.setAttribute("type","discrete"),c.setAttribute("tableValues",s),t.append(c)},Eb=function(t,e,s,c){const d=a(this,Bt).createElementNS(Yi,"feComponentTransfer");c.append(d),z(this,P,Ub).call(this,d,"feFuncR",t),z(this,P,Ub).call(this,d,"feFuncG",e),z(this,P,Ub).call(this,d,"feFuncB",s)},v2=function(t,e){const s=a(this,Bt).createElementNS(Yi,"feComponentTransfer");e.append(s),z(this,P,Ub).call(this,s,"feFuncA",t)},Kb=function(t){return a(this,P,Ln).style.color=t,nh(getComputedStyle(a(this,P,Ln)).getPropertyValue("color"))};class KX{constructor({baseUrl:l=null}){this.baseUrl=l}async fetch({filename:l}){if(!this.baseUrl)throw new Error("Ensure that the `standardFontDataUrl` API parameter is provided.");if(!l)throw new Error("Font filename must be specified.");const t=`${this.baseUrl}${l}`;
3return this._fetch(t).catch(e=>{throw new Error(`Unable to load font data at: ${t}`)})}async _fetch(l){Jl("Abstract method `_fetch` called.")}}class GN extends KX{async _fetch(l){const t=await dh(l,"arraybuffer");return new Uint8Array(t)}}class vX{constructor({baseUrl:l=null}){this.baseUrl=l}async fetch({filename:l}){if(!this.baseUrl)throw new Error("Ensure that the `wasmUrl` API parameter is provided.");if(!l)throw new Error("Wasm filename must be specified.");const t=`${this.baseUrl}${l}`;return this._fetch(t).catch(e=>{throw new Error(`Unable to load wasm data at: ${t}`)})}async _fetch(l){Jl("Abstract method `_fetch` called.")}}class NN extends vX{async _fetch(l){const t=await dh(l,"arraybuffer");return new Uint8Array(t)}}ce&&tl("Please use the `legacy` build in Node.js environments.");async function bG(i){const t=await process.getBuiltinModule("fs").promises.readFile(i);return new Uint8Array(t)}class Q5 extends UX{}class P5 extends OX{_createCanvas(l,t){return process.getBuiltinModule("module").createRequire(import.meta.url)("@napi-rs/canvas").createCanvas(l,t)}}class H5 extends kX{async _fetch(l){return bG(l)}}class f5 extends KX{async _fetch(l){return bG(l)}}class B5 extends vX{async _fetch(l){return bG(l)}}const Nn="__forcedDependency",{floor:rN,ceil:XN}=Math;function Th(i,l,t,e,s,c){i[l*4+0]=Math.min(i[l*4+0],t),i[l*4+1]=Math.min(i[l*4+1],e),i[l*4+2]=Math.max(i[l*4+2],s),i[l*4+3]=Math.max(i[l*4+3],c)}const Q2=new Uint32Array(new Uint8Array([255,255,0,0]).buffer)[0];var MZ,Pc;class A5{constructor(l,t){L(this,MZ);L(this,Pc);p(this,MZ,l),p(this,Pc,t)}get length(){return a(this,MZ).length}isEmpty(l){return a(this,MZ)[l]===Q2}minX(l){return a(this,Pc)[l*4+0]/256}minY(l){return a(this,Pc)[l*4+1]/256}maxX(l){return(a(this,Pc)[l*4+2]+1)/256}maxY(l){return(a(this,Pc)[l*4+3]+1)/256}}MZ=new WeakMap,Pc=new WeakMap;const Vh=(i,l)=>{if(!i)return;let t=i.get(l);return t||(t={dependencies:new Set,isRenderingOperation:!1},i.set(l,t)),t};var he,ue,Wa,Ns,Ga,Ei,Ll,Rl,Ki,We,qo,pZ,Na,ra,vi,At,_s,$o,P2;class _5{constructor(l,t,e=!1){L(this,$o);L(this,he,{__proto__:null});L(this,ue,{__proto__:null,transform:[],moveText:[],sameLineText:[],[Nn]:[]});L(this,Wa,new Map);L(this,Ns,[]);L(this,Ga,[]);L(this,Ei,[[1,0,0,1,0,0]]);L(this,Ll,[-1/0,-1/0,1/0,1/0]);L(this,Rl,new Float64Array([1/0,1/0,-1/0,-1/0]));L(this,Ki,-1);L(this,We,new Set);L(this,qo,new Map);L(this,pZ,new Map);L(this,Na);L(this,ra);L(this,vi);L(this,At);L(this,_s);p(this,Na,l.width),p(this,ra,l.height),z(this,$o,P2).call(this,t),e&&p(this,_s,new Map)}growOperationsCount(l){l>=a(this,At).length&&z(this,$o,P2).call(this,l,a(this,At))}save(l){return p(this,he,{__proto__:a(this,he)}),p(this,ue,{__proto__:a(this,ue),transform:{__proto__:a(this,ue).transform},moveText:{__proto__:a(this,ue).moveText},sameLineText:{__proto__:a(this,ue).sameLineText},[Nn]:{__proto__:a(this,ue)[Nn]}}),p(this,Ll,{__proto__:a(this,Ll)}),a(this,Ns).push(l),this}restore(l){var s;const t=Object.getPrototypeOf(a(this,he));if(t===null)return this;p(this,he,t),p(this,ue,Object.getPrototypeOf(a(this,ue))),p(this,Ll,Object.getPrototypeOf(a(this,Ll)));const e=a(this,Ns).pop();return e!==void 0&&((s=Vh(a(this,_s),l))==null||s.dependencies.add(e),a(this,At)[l]=a(this,At)[e]),this}recordOpenMarker(l){return a(this,Ns).push(l),this}getOpenMarker(){return a(this,Ns).length===0?null:a(this,Ns).at(-1)}recordCloseMarker(l){var e;const t=a(this,Ns).pop();return t!==void 0&&((e=Vh(a(this,_s),l))==null||e.dependencies.add(t),a(this,At)[l]=a(this,At)[t]),this}beginMarkedContent(l){return a(this,Ga).push(l),this}endMarkedContent(l){var e;const t=a(this,Ga).pop();return t!==void 0&&((e=Vh(a(this,_s),l))==null||e.dependencies.add(t),a(this,At)[l]=a(this,At)[t]),this}pushBaseTransform(l){return a(this,Ei).push(Q.multiplyByDOMMatrix(a(this,Ei).at(-1),l.getTransform())),this}popBaseTransform(){return a(this,Ei).length>1&&a(this,Ei).pop(),this}recordSimpleData(l,t){return a(this,he)[l]=t,this}recordIncrementalData(l,t){return a(this,ue)[l].push(t),this}resetIncrementalData(l,t){return a(this,ue)[l].length=0,this}recordNamedData(l,t){return a(this,Wa).set(l,t),this}recordSimpleDataFromNamed(l,t,e){a(this,he)[l]=a(this,Wa).get(t)??e}recordFutureForcedDependency(l,t){return this.recordIncrementalData(Nn,t),this}inheritSimpleDataAsFutureForcedDependencies(l){for(const t of l)t in a(this,he)&&this.recordFutureForcedDependency(t,a(this,he)[t]);return this}inheritPendingDependenciesAsFutureForcedDependencies(){for(const l of a(this,We))this.recordFutureForcedDependency(Nn,l);return this}resetBBox(l){return a(this,Ki)!==l&&(p(this,Ki,l),a(this,Rl)[0]=1/0,a(this,Rl)[1]=1/0,a(this,Rl)[2]=-1/0,a(this,Rl)[3]=-1/0),this}recordClipBox(l,t,e,s,c,d){const n=Q.multiplyByDOMMatrix(a(this,Ei).at(-1),t.getTransform()),Z=[1/0,1/0,-1/0,-1/0];Q.axialAlignedBoundingBox([e,c,s,d],n,Z);const b=Q.intersect(a(this,Ll),Z);return b?(a(this,Ll)[0]=b[0],a(this,Ll)[1]=b[1],a(this,Ll)[2]=b[2],a(this,Ll)[3]=b[3]):(a(this,Ll)[0]=a(this,Ll)[1]=1/0,a(this,Ll)[2]=a(this,Ll)[3]=-1/0),this}recordBBox(l,t,e,s,c,d){const n=a(this,Ll);if(n[0]===1/0)return this;const Z=Q.multiplyByDOMMatrix(a(this,Ei).at(-1),t.getTransform());if(n[0]===-1/0)return Q.axialAlignedBoundingBox([e,c,s,d],Z,a(this,Rl)),this;const b=[1/0,1/0,-1/0,-1/0];return Q.axialAlignedBoundingBox([e,c,s,d],Z,b),a(this,Rl)[0]=Math.min(a(this,Rl)[0],Math.max(b[0],n[0])),a(this,Rl)[1]=Math.min(a(this,Rl)[1],Math.max(b[1],n[1])),a(this,Rl)[2]=Math.max(a(this,Rl)[2],Math.min(b[2],n[2])),a(this,Rl)[3]=Math.max(a(this,Rl)[3],Math.min(b[3],n[3])),this}recordCharacterBBox(l,t,e,s=1,c=0,d=0,n){const Z=e.bbox;let b,o;if(Z&&(b=Z[2]!==Z[0]&&Z[3]!==Z[1]&&a(this,pZ).get(e),b!==!1&&(o=[0,0,0,0],Q.axialAlignedBoundingBox(Z,e.fontMatrix,o),(s!==1||c!==0||d!==0)&&Q.scaleMinMax([s,0,0,-s,c,d],o),b)))return this.recordBBox(l,t,o[0],o[2],o[1],o[3]);if(!n)return this.recordFullPageBBox(l);const m=n();return Z&&o&&b===void 0&&(b=o[0]<=c-m.actualBoundingBoxLeft&&o[2]>=c+m.actualBoundingBoxRight&&o[1]<=d-m.actualBoundingBoxAscent&&o[3]>=d+m.actualBoundingBoxDescent,a(this,pZ).set(e,b),b)?this.recordBBox(l,t,o[0],o[2],o[1],o[3]):this.recordBBox(l,t,c-m.actualBoundingBoxLeft,c+m.actualBoundingBoxRight,d-m.actualBoundingBoxAscent,d+m.actualBoundingBoxDescent)}recordFullPageBBox(l){return a(this,Rl)[0]=Math.max(0,a(this,Ll)[0]),a(this,Rl)[1]=Math.max(0,a(this,Ll)[1]),a(this,Rl)[2]=Math.min(a(this,Na),a(this,Ll)[2]),a(this,Rl)[3]=Math.min(a(this,ra),a(this,Ll)[3]),this}getSimpleIndex(l){return a(this,he)[l]}recordDependencies(l,t){const e=a(this,We),s=a(this,he),c=a(this,ue);for(const d of t)d in a(this,he)?e.add(s[d]):d in c&&c[d].forEac
3h(e.add,e);return this}recordNamedDependency(l,t){return a(this,Wa).has(t)&&a(this,We).add(a(this,Wa).get(t)),this}recordOperation(l,t=!1){if(this.recordDependencies(l,[Nn]),a(this,_s)){const e=Vh(a(this,_s),l),{dependencies:s}=e;a(this,We).forEach(s.add,s),a(this,Ns).forEach(s.add,s),a(this,Ga).forEach(s.add,s),s.delete(l),e.isRenderingOperation=!0}if(a(this,Ki)===l){const e=rN(a(this,Rl)[0]*256/a(this,Na)),s=rN(a(this,Rl)[1]*256/a(this,ra)),c=XN(a(this,Rl)[2]*256/a(this,Na)),d=XN(a(this,Rl)[3]*256/a(this,ra));Th(a(this,vi),l,e,s,c,d);for(const n of a(this,We))n!==l&&Th(a(this,vi),n,e,s,c,d);for(const n of a(this,Ns))n!==l&&Th(a(this,vi),n,e,s,c,d);for(const n of a(this,Ga))n!==l&&Th(a(this,vi),n,e,s,c,d);t||(a(this,We).clear(),p(this,Ki,-1))}return this}recordShowTextOperation(l,t=!1){const e=Array.from(a(this,We));this.recordOperation(l,t),this.recordIncrementalData("sameLineText",l);for(const s of e)this.recordIncrementalData("sameLineText",s);return this}bboxToClipBoxDropOperation(l,t=!1){return a(this,Ki)===l&&(p(this,Ki,-1),a(this,Ll)[0]=Math.max(a(this,Ll)[0],a(this,Rl)[0]),a(this,Ll)[1]=Math.max(a(this,Ll)[1],a(this,Rl)[1]),a(this,Ll)[2]=Math.min(a(this,Ll)[2],a(this,Rl)[2]),a(this,Ll)[3]=Math.min(a(this,Ll)[3],a(this,Rl)[3]),t||a(this,We).clear()),this}_takePendingDependencies(){const l=a(this,We);return p(this,We,new Set),l}_extractOperation(l){const t=a(this,qo).get(l);return a(this,qo).delete(l),t}_pushPendingDependencies(l){for(const t of l)a(this,We).add(t)}take(){return a(this,pZ).clear(),new A5(a(this,At),a(this,vi))}takeDebugMetadata(){return a(this,_s)}}he=new WeakMap,ue=new WeakMap,Wa=new WeakMap,Ns=new WeakMap,Ga=new WeakMap,Ei=new WeakMap,Ll=new WeakMap,Rl=new WeakMap,Ki=new WeakMap,We=new WeakMap,qo=new WeakMap,pZ=new WeakMap,Na=new WeakMap,ra=new WeakMap,vi=new WeakMap,At=new WeakMap,_s=new WeakMap,$o=new WeakSet,P2=function(l,t){const e=new ArrayBuffer(l*4);p(this,vi,new Uint8ClampedArray(e)),p(this,At,new Uint32Array(e)),t&&t.length>0?(a(this,At).set(t),a(this,At).fill(Q2,t.length)):a(this,At).fill(Q2)};var Dl,et,rs,YZ,yZ;const qG=class qG{constructor(l,t,e){L(this,Dl);L(this,et);L(this,rs);L(this,YZ,0);L(this,yZ,0);if(l instanceof qG&&a(l,rs)===!!e)return l;p(this,Dl,l),p(this,et,t),p(this,rs,!!e)}growOperationsCount(){throw new Error("Unreachable")}save(l){return rt(this,yZ)._++,a(this,Dl).save(a(this,et)),this}restore(l){return a(this,yZ)>0&&(a(this,Dl).restore(a(this,et)),rt(this,yZ)._--),this}recordOpenMarker(l){return rt(this,YZ)._++,this}getOpenMarker(){return a(this,YZ)>0?a(this,et):a(this,Dl).getOpenMarker()}recordCloseMarker(l){return rt(this,YZ)._--,this}beginMarkedContent(l){return this}endMarkedContent(l){return this}pushBaseTransform(l){return a(this,Dl).pushBaseTransform(l),this}popBaseTransform(){return a(this,Dl).popBaseTransform(),this}recordSimpleData(l,t){return a(this,Dl).recordSimpleData(l,a(this,et)),this}recordIncrementalData(l,t){return a(this,Dl).recordIncrementalData(l,a(this,et)),this}resetIncrementalData(l,t){return a(this,Dl).resetIncrementalData(l,a(this,et)),this}recordNamedData(l,t){return this}recordSimpleDataFromNamed(l,t,e){return a(this,Dl).recordSimpleDataFromNamed(l,t,a(this,et)),this}recordFutureForcedDependency(l,t){return a(this,Dl).recordFutureForcedDependency(l,a(this,et)),this}inheritSimpleDataAsFutureForcedDependencies(l){return a(this,Dl).inheritSimpleDataAsFutureForcedDependencies(l),this}inheritPendingDependenciesAsFutureForcedDependencies(){return a(this,Dl).inheritPendingDependenciesAsFutureForcedDependencies(),this}resetBBox(l){return a(this,rs)||a(this,Dl).resetBBox(a(this,et)),this}recordClipBox(l,t,e,s,c,d){return a(this,rs)||a(this,Dl).recordClipBox(a(this,et),t,e,s,c,d),this}recordBBox(l,t,e,s,c,d){return a(this,rs)||a(this,Dl).recordBBox(a(this,et),t,e,s,c,d),this}recordCharacterBBox(l,t,e,s,c,d,n){return a(this,rs)||a(this,Dl).recordCharacterBBox(a(this,et),t,e,s,c,d,n),this}recordFullPageBBox(l){return a(this,rs)||a(this,Dl).recordFullPageBBox(a(this,et)),this}getSimpleIndex(l){return a(this,Dl).getSimpleIndex(l)}recordDependencies(l,t){return a(this,Dl).recordDependencies(a(this,et),t),this}recordNamedDependency(l,t){return a(this,Dl).recordNamedDependency(a(this,et),t),this}recordOperation(l){return a(this,Dl).recordOperation(a(this,et),!0),this}recordShowTextOperation(l){return a(this,Dl).recordShowTextOperation(a(this,et),!0),this}bboxToClipBoxDropOperation(l){return a(this,rs)||a(this,Dl).bboxToClipBoxDropOperation(a(this,et),!0),this}take(){throw new Error("Unreachable")}takeDebugMetadata(){throw new Error("Unreachable")}};Dl=new WeakMap,et=new WeakMap,rs=new WeakMap,YZ=new WeakMap,yZ=new WeakMap;let S0=qG;const fe={stroke:["path","transform","filter","strokeColor","strokeAlpha","lineWidth","lineCap","lineJoin","miterLimit","dash"],fill:["path","transform","filter","fillColor","fillAlpha","globalCompositeOperation","SMask"],imageXObject:["transform","SMask","filter","fillAlpha","strokeAlpha","globalCompositeOperation"],rawFillPath:["f
3ilter","fillColor","fillAlpha"],showText:["transform","leading","charSpacing","wordSpacing","hScale","textRise","moveText","textMatrix","font","fontObj","filter","fillColor","textRenderingMode","SMask","fillAlpha","strokeAlpha","globalCompositeOperation","sameLineText"],transform:["transform"],transformAndFill:["transform","fillColor"]},Et={FILL:"Fill",STROKE:"Stroke",SHADING:"Shading"};function H2(i,l){if(!l)return;const t=l[2]-l[0],e=l[3]-l[1],s=new Path2D;s.rect(l[0],l[1],t,e),i.clip(s)}class oG{isModifyingCurrentTransform(){return!1}getPattern(){Jl("Abstract method `getPattern` called.")}}class q5 extends oG{constructor(l){super(),this._type=l[1],this._bbox=l[2],this._colorStops=l[3],this._p0=l[4],this._p1=l[5],this._r0=l[6],this._r1=l[7],this.matrix=null}isOriginBased(){return this._p0[0]===0&&this._p0[1]===0&&(!this.isRadial()||this._p1[0]===0&&this._p1[1]===0)}isRadial(){return this._type==="radial"}_createGradient(l,t=null){let e,s=this._p0,c=this._p1;if(t&&(s=s.slice(),c=c.slice(),Q.applyTransform(s,t),Q.applyTransform(c,t)),this._type==="axial")e=l.createLinearGradient(s[0],s[1],c[0],c[1]);else if(this._type==="radial"){let d=this._r0,n=this._r1;if(t){const Z=new Float32Array(2);Q.singularValueDecompose2dScale(t,Z),d*=Z[0],n*=Z[0]}e=l.createRadialGradient(s[0],s[1],d,c[0],c[1],n)}for(const d of this._colorStops)e.addColorStop(d[0],d[1]);return e}getPattern(l,t,e,s){let c;if(s===Et.STROKE||s===Et.FILL){if(this.isOriginBased()){let h=Q.transform(e,t.baseTransform);this.matrix&&(h=Q.transform(h,this.matrix));const W=.001,r=Math.hypot(h[0],h[1]),N=Math.hypot(h[2],h[3]),M=(h[0]*h[2]+h[1]*h[3])/(r*N);if(Math.abs(M)<W)if(this.isRadial()){if(Math.abs(r-N)<W)return this._createGradient(l,h)}else return this._createGradient(l,h)}const d=t.current.getClippedPathBoundingBox(s,$l(l))||[0,0,0,0],n=Math.ceil(d[2]-d[0])||1,Z=Math.ceil(d[3]-d[1])||1,b=t.cachedCanvases.getCanvas("pattern",n,Z),o=b.context;o.clearRect(0,0,o.canvas.width,o.canvas.height),o.beginPath(),o.rect(0,0,o.canvas.width,o.canvas.height),o.translate(-d[0],-d[1]),e=Q.transform(e,[1,0,0,1,d[0],d[1]]),o.transform(...t.baseTransform),this.matrix&&o.transform(...this.matrix),H2(o,this._bbox),o.fillStyle=this._createGradient(o),o.fill(),c=l.createPattern(b.canvas,"no-repeat");const m=new DOMMatrix(e);c.setTransform(m)}else H2(l,this._bbox),c=this._createGradient(l);return c}}function Ku(i,l,t,e,s,c,d,n){const Z=l.coords,b=l.colors,o=i.data,m=i.width*4;let h;Z[t+1]>
3Z[e+1]&&(h=t,t=e,e=h,h=c,c=d,d=h),Z[e+1]>Z[s+1]&&(h=e,e=s,s=h,h=d,d=n,n=h),Z[t+1]>Z[e+1]&&(h=t,t=e,e=h,h=c,c=d,d=h);const W=(Z[t]+l.offsetX)*l.scaleX,r=(Z[t+1]+l.offsetY)*l.scaleY,N=(Z[e]+l.offsetX)*l.scaleX,M=(Z[e+1]+l.offsetY)*l.scaleY,X=(Z[s]+l.offsetX)*l.scaleX,y=(Z[s+1]+l.offsetY)*l.scaleY;if(r>=y)return;const Y=b[c],T=b[c+1],V=b[c+2],I=b[d],w=b[d+1],R=b[d+2],S=b[n],x=b[n+1],g=b[n+2],C=Math.round(r),D=Math.round(y);let J,k,O,j,F,U,v,A;for(let q=C;q<=D;q++){if(q<M){const sl=q<r?0:(r-q)/(r-M);J=W-(W-N)*sl,k=Y-(Y-I)*sl,O=T-(T-w)*sl,j=V-(V-R)*sl}else{let sl;q>y?sl=1:M===y?sl=0:sl=(M-q)/(M-y),J=N-(N-X)*sl,k=I-(I-S)*sl,O=w-(w-x)*sl,j=R-(R-g)*sl}let _;q<r?_=0:q>y?_=1:_=(r-q)/(r-y),F=W-(W-X)*_,U=Y-(Y-S)*_,v=T-(T-x)*_,A=V-(V-g)*_;const al=Math.round(Math.min(J,F)),nl=Math.round(Math.max(J,F));let B=m*q+al*4;for(let sl=al;sl<=nl;sl++)_=(J-sl)/(J-F),_<0?_=0:_>1&&(_=1),o[B++]=k-(k-U)*_|0,o[B++]=O-(O-v)*_|0,o[B++]=j-(j-A)*_|0,o[B++]=255}}function $5(i,l,t){const e=l.coords,s=l.colors;let c,d;switch(l.type){case r2.LATTICE:const n=l.verticesPerRow,Z=Math.floor(e.length/n)-1,b=n-1;for(c=0;c<Z;c++){let o=c*n;for(let m=0;m<b;m++,o++)Ku(i,t,e[o],e[o+1],e[o+n],s[o],s[o+1],s[o+n]),Ku(i,t,e[o+n+1],e[o+1],e[o+n],s[o+n+1],s[o+1],s[o+n])}break;case r2.TRIANGLES:for(c=0,d=e.length;c<d;c+=3)Ku(i,t,e[c],e[c+1],e[c+2],s[c],s[c+1],s[c+2]);break;default:throw new Error("illegal figure")}}class l1 extends oG{constructor(l){super(),this._coords=l[2],this._colors=l[3],this._figures=l[4],this._bounds=l[5],this._bbox=l[6],this._background=l[7],this.matrix=null}_createMeshCanvas(l,t,e){const n=Math.floor(this._bounds[0]),Z=Math.floor(this._bounds[1]),b=Math.ceil(this._bounds[2])-n,o=Math.ceil(this._bounds[3])-Z,m=Math.min(Math.ceil(Math.abs(b*l[0]*1.1)),3e3),h=Math.min(Math.ceil(Math.abs(o*l[1]*1.1)),3e3),W=b/m,r=o/h,N={coords:this._coords,colors:this._colors,offsetX:-n,offsetY:-Z,scaleX:1/W,scaleY:1/r},M=m+4,X=h+4,y=e.getCanvas("mesh",M,X),Y=y.context,T=Y.createImageData(m,h);if(t){const I=T.data;for(let w=0,R=I.length;w<R;w+=4)I[w]=t[0],I[w+1]=t[1],I[w+2]=t[2],I[w+3]=255}for(const I of this._figures)$5(T,I,N);return Y.putImageData(T,2,2),{canvas:y.canvas,offsetX:n-2*W,offsetY:Z-2*r,scaleX:W,scaleY:r}}isModifyingCurrentTransform(){return!0}getPattern(l,t,e,s){H2(l,this._bbox);const c=new Float32Array(2);if(s===Et.SHADING)Q.singularValueDecompose2dScale($l(l),c);else if(this.matrix){Q.singularValueDecompose2dScale(this.matrix,c);const[n,Z]=c;Q.singularValueDecompose2dScale(t.baseTransform,c),c[0]*=n,c[1]*=Z}else Q.singularValueDecompose2dScale(t.baseTransform,c);const d=this._createMeshCanvas(c,s===Et.SHADING?null:this._background,t.cachedCanvases);return s!==Et.SHADING&&(l.setTransform(...t.baseTransform),this.matrix&&l.transform(...this.matrix)),l.translate(d.offsetX,d.offsetY),l.scale(d.scaleX,d.scaleY),l.createPattern(d.canvas,"no-repeat")}}class t1 extends oG{getPattern(){return"hotpink"}}function e1(i){switch(i[0]){case"RadialAxial":return new q5(i);case"Mesh":return new l1(i);case"Dummy":return new t1}throw new Error(`Unknown IR type: ${i[0]}`)}const MN={COLORED:1,UNCOLORED:2},tu=class tu{constructor(l,t,e,s){this.color=l[1],this.operatorList=l[2],this.matrix=l[3],this.bbox=l[4],this.xstep=l[5],this.ystep=l[6],this.paintType=l[7],this.tilingType=l[8],this.ctx=t,this.canvasGraphicsFactory=e,this.baseTransform=s}createPatternCanvas(l,t){var U,v;const{bbox:e,operatorList:s,paintType:c,tilingType:d,color:n,canvasGraphicsFactory:Z}=this;let{xstep:b,ystep:o}=this;b=Math.abs(b),o=Math.abs(o),hu("TilingType: "+d);const m=e[0],h=e[1],W=e[2],r=e[3],N=W-m,M=r-h,X=new Float32Array(2);Q.singularValueDecompose2dScale(this.matrix,X);const[y,Y]=X;Q.singularValueDecompose2dScale(this.baseTransform,X);const T=y*X[0],V=Y*X[1];let I=N,w=M,R=!1,S=!1;const x=Math.ceil(b*T),g=Math.ceil(o*V),C=Math.ceil(N*T),D=Math.ceil(M*V);x>=C?I=b:R=!0,g>=D?w=o:S=!0;const J=this.getSizeAndScale(I,this.ctx.canvas.width,T),k=this.getSizeAndScale(w,this.ctx.canvas.height,V),O=l.cachedCanvases.getCanvas("pattern",J.size,k.size),j=O.context,F=Z.createCanvasGraphics(j,t);if(F.groupLevel=l.groupLevel,this.setFillAndStrokeStyleToContext(F,c,n),j.translate(-J.scale*m,-k.scale*h),F.transform(0,J.scale,0,0,k.scale,0,0),j.save(),(U=F.dependencyTracker)==null||U.save(),this.clipBbox(F,m,h,W,r),F.baseTransform=$l(F.ctx),F.executeOperatorList(s),F.endDrawing(),(v=F.dependencyTracker)==null||v.restore(
3),j.restore(),R||S){const A=O.canvas;R&&(I=b),S&&(w=o);const q=this.getSizeAndScale(I,this.ctx.canvas.width,T),_=this.getSizeAndScale(w,this.ctx.canvas.height,V),al=q.size,nl=_.size,B=l.cachedCanvases.getCanvas("pattern-workaround",al,nl),sl=B.context,Tl=R?Math.floor(N/b):0,vl=S?Math.floor(M/o):0;for(let Hl=0;Hl<=Tl;Hl++)for(let ul=0;ul<=vl;ul++)sl.drawImage(A,al*Hl,nl*ul,al,nl,0,0,al,nl);return{canvas:B.canvas,scaleX:q.scale,scaleY:_.scale,offsetX:m,offsetY:h}}return{canvas:O.canvas,scaleX:J.scale,scaleY:k.scale,offsetX:m,offsetY:h}}getSizeAndScale(l,t,e){const s=Math.max(tu.MAX_PATTERN_SIZE,t);let c=Math.ceil(l*e);return c>=s?c=s:e=c/l,{scale:e,size:c}}clipBbox(l,t,e,s,c){const d=s-t,n=c-e;l.ctx.rect(t,e,d,n),Q.axialAlignedBoundingBox([t,e,s,c],$l(l.ctx),l.current.minMax),l.clip(),l.endPath()}setFillAndStrokeStyleToContext(l,t,e){const s=l.ctx,c=l.current;switch(t){case MN.COLORED:const{fillStyle:d,strokeStyle:n}=this.ctx;s.fillStyle=c.fillColor=d,s.strokeStyle=c.strokeColor=n;break;case MN.UNCOLORED:s.fillStyle=s.strokeStyle=e,c.fillColor=c.strokeColor=e;break;default:throw new u5(`Unsupported paint type: ${t}`)}}isModifyingCurrentTransform(){return!1}getPattern(l,t,e,s,c){let d=e;s!==Et.SHADING&&(d=Q.transform(d,t.baseTransform),this.matrix&&(d=Q.transform(d,this.matrix)));const n=this.createPatternCanvas(t,c);let Z=new DOMMatrix(d);Z=Z.translate(n.offsetX,n.offsetY),Z=Z.scale(1/n.scaleX,1/n.scaleY);const b=l.createPattern(n.canvas,"repeat");return b.setTransform(Z),b}};E(tu,"MAX_PATTERN_SIZE",3e3);let f2=tu;function s1({src:i,srcPos:l=0,dest:t,width:e,height:s,nonBlackColor:c=4294967295,inverseDecode:d=!1}){const n=Tt.isLittleEndian?4278190080:255,[Z,b]=d?[c,n]:[n,c],o=e>>3,m=e&7,h=i.length;t=new Uint32Array(t.buffer);let W=0;for(let r=0;r<s;r++){for(const M=l+o;l<M;l++){const X=l<h?i[l]:255;t[W++]=X&128?b:Z,t[W++]=X&64?b:Z,t[W++]=X&32?b:Z,t[W++]=X&16?b:Z,t[W++]=X&8?b:Z,t[W++]=X&4?b:Z,t[W++]=X&2?b:Z,t[W++]=X&1?b:Z}if(m===0)continue;const N=l<h?i[l++]:255;for(let M=0;M<m;M++)t[W++]=N&1<<7-M?b:Z}return{srcPos:l,destPos:W}}const pN=16,YN=100,i1=15,yN=10,re=16,vu=new DOMMatrix,Ue=new Float32Array(2),gn=new Float32Array([1/0,1/0,-1/0,-1/0]);function c1(i,l){if(i._removeMirroring)throw new Error("Context is already forwarding operations.");i.__originalSave=i.save,i.__originalRestore=i.restore,i.__originalRotate=i.rotate,i.__originalScale=i.scale,i.__originalTranslate=i.translate,i.__originalTransform=i.transform,i.__originalSetTransform=i.setTransform,i.__originalResetTransform=i.resetTransform,i.__originalClip=i.clip,i.__originalMoveTo=i.moveTo,i.__originalLineTo=i.lineTo,i.__originalBezierCurveTo=i.bezierCurveTo,i.__originalRect=i.rect,i.__originalClosePath=i.closePath,i.__originalBeginPath=i.beginPath,i._removeMirroring=()=>{i.save=i.__originalSave,i.restore=i.__originalRestore,i.rotate=i.__originalRotate,i.scale=i.__originalScale,i.translate=i.__originalTranslate,i.transform=i.__originalTransform,i.setTransform=i.__originalSetTransform,i.resetTransform=i.__originalResetTransform,i.clip=i.__originalClip,i.moveTo=i.__originalMoveTo,i.lineTo=i.__originalLineTo,i.bezierCurveTo=i.__originalBezierCurveTo,i.rect=i.__originalRect,i.closePath=i.__originalClosePath,i.beginPath=i.__originalBeginPath,delete i._removeMirroring},i.save=function(){l.save(),this.__originalSave()},i.restore=function(){l.restore(),this.__originalRestore()},i.translate=function(t,e){l.translate(t,e),this.__originalTranslate(t,e)},i.scale=function(t,e){l.scale(t,e),this.__originalScale(t,e)},i.transform=function(t,e,s,c,d,n){l.transform(t,e,s,c,d,n),this.__originalTransform(t,e,s,c,d,n)},i.setTransform=function(t,e,s,c,d,n){l.setTransform(t,e,s,c,d,n),this.__originalSetTransform(t,e,s,c,d,n)},i.resetTransform=function(){l.resetTransform(),this.__originalResetTransform()},i.rotate=function(t){l.rotate(t),this.__originalRotate(t)},i.clip=function(t){l.clip(t),this.__originalClip(t)},i.moveTo=function(t,e){l.moveTo(t,e),this.__originalMoveTo(t,e)},i.lineTo=function(t,e){l.lineTo(t,e),this.__originalLineTo(t,e)},i.bezierCurveTo=function(t,e,s,c,d,n){l.bezierCurveTo(t,e,s,c,d,n),this.__originalBezierCurveTo(t,e,s,c,d,n)},i.rect=function(t,e,s,c){l.rect(t,e,s,c),this.__originalRect(t,e,s,c)},i.closePath=function(){l.closePath(),this.__originalClosePath()},i.beginPath=function(){l.beginPath(),this.__originalBeginPath()}}class d1{constructor(l){this.canvasFactory=l,this.cache=Object.create(null)}getCanvas(l,t,e){let s;return this.cache[l]!==void 0?(s=this.cache[l],this.canvasFactory.reset(s,t,e)):(s=this.canvasFactory.create(t,e),this.cache[l]=s),s}delete(l){delete this.cache[l]}clear(){for(const l in this.cache){const t=this.cache[l];this.canvasFactory.destroy(t),delete this.cache[l]}}}function Lh(i,l,t,e,s,c,d,n,Z,b){const[o,m,h,W,r,N]=$l(i);
3if(m===0&&h===0){const y=d*o+r,Y=Math.round(y),T=n*W+N,V=Math.round(T),I=(d+Z)*o+r,w=Math.abs(Math.round(I)-Y)||1,R=(n+b)*W+N,S=Math.abs(Math.round(R)-V)||1;return i.setTransform(Math.sign(o),0,0,Math.sign(W),Y,V),i.drawImage(l,t,e,s,c,0,0,w,S),i.setTransform(o,m,h,W,r,N),[w,S]}if(o===0&&W===0){const y=n*h+r,Y=Math.round(y),T=d*m+N,V=Math.round(T),I=(n+b)*h+r,w=Math.abs(Math.round(I)-Y)||1,R=(d+Z)*m+N,S=Math.abs(Math.round(R)-V)||1;return i.setTransform(0,Math.sign(m),Math.sign(h),0,Y,V),i.drawImage(l,t,e,s,c,0,0,S,w),i.setTransform(o,m,h,W,r,N),[S,w]}i.drawImage(l,t,e,s,c,d,n,Z,b);const M=Math.hypot(o,m),X=Math.hypot(h,W);return[M*Z,X*b]}class TN{constructor(l,t,e){E(this,"alphaIsShape",!1);E(this,"fontSize",0);E(this,"fontSizeScale",1);E(this,"textMatrix",null);E(this,"textMatrixScale",1);E(this,"fontMatrix",N2);E(this,"leading",0);E(this,"x",0);E(this,"y",0);E(this,"lineX",0);E(this,"lineY",0);E(this,"charSpacing",0);E(this,"wordSpacing",0);E(this,"textHScale",1);E(this,"textRenderingMode",Xt.FILL);E(this,"textRise",0);E(this,"fillColor","#000000");E(this,"strokeColor","#000000");E(this,"patternFill",!1);E(this,"patternStroke",!1);E(this,"fillAlpha",1);E(this,"strokeAlpha",1);E(this,"lineWidth",1);E(this,"activeSMask",null);E(this,"transferMaps","none");e==null||e(this),this.clipBox=new Float32Array([0,0,l,t]),this.minMax=gn.slice()}clone(){const l=Object.create(this);return l.clipBox=this.clipBox.slice(),l.minMax=this.minMax.slice(),l}getPathBoundingBox(l=Et.FILL,t=null){const e=this.minMax.slice();if(l===Et.STROKE){t||Jl("Stroke bounding box must include transform."),Q.singularValueDecompose2dScale(t,Ue);const s=Ue[0]*this.lineWidth/2,c=Ue[1]*this.lineWidth/2;e[0]-=s,e[1]-=c,e[2]+=s,e[3]+=c}return e}updateClipFromPath(){const l=Q.intersect(this.clipBox,this.getPathBoundingBox());this.startNewPathAndClipBox(l||[0,0,0,0])}isEmptyClip(){return this.minMax[0]===1/0}startNewPathAndClipBox(l){this.clipBox.set(l,0),this.minMax.set(gn,0)}getClippedPathBoundingBox(l=Et.FILL,t=null){return Q.intersect(this.clipBox,this.getPathBoundingBox(l,t))}}function VN(i,l){if(l instanceof ImageData){i.putImageData(l,0,0);return}const t=l.height,e=l.width,s=t%re,c=(t-s)/re,d=s===0?c:c+1,n=i.createImageData(e,re);let Z=0,b;const o=l.data,m=n.data;let h,W,r,N;if(l.kind===Eh.GRAYSCALE_1BPP){const M=o.byteLength,X=new Uint32Array(m.buffer,0,m.byteLength>>2),y=X.length,Y=e+7>>3,T=4294967295,V=Tt.isLittleEndian?4278190080:255;for(h=0;h<d;h++){for(r=h<c?re:s,b=0,W=0;W<r;W++){const I=M-Z;let w=0;const R=I>Y?e:I*8-7,S=R&-8;let x=0,g=0;for(;w<S;w+=8)g=o[Z++],X[b++]=g&128?T:V,X[b++]=g&64?T:V,X[b++]=g&32?T:V,X[b++]=g&16?T:V,X[b++]=g&8?T:V,X[b++]=g&4?T:V,X[b++]=g&2?T:V,X[b++]=g&1?T:V;for(;w<R;w++)x===0&&(g=o[Z++],x=128),X[b++]=g&x?T:V,x>>=1}for(;b<y;)X[b++]=0;i.putImageData(n,0,h*re)}}else if(l.kind===Eh.RGBA_32BPP){for(W=0,N=e*re*4,h=0;h<c;h++)m.set(o.subarray(Z,Z+N)),Z+=N,i.putImageData(n,0,W),W+=re;h<d&&(N=e*s*4,m.set(o.subarray(Z,Z+N)),i.putImageData(n,0,W))}else if(l.kind===Eh.RGB_24BPP)for(r=re,N=e*r,h=0;h<d;h++){for(h>=c&&(r=s,N=e*r),b=0,W=N;W--;)m[b++]=o[Z++],m[b++]=o[Z++],m[b++]=o[Z++],m[b++]=255;i.putImageData(n,0,h*re)}else throw new Error(`bad image kind: ${l.kind}`)}function LN(i,l){if(l.bitmap){i.drawImage(l.bitmap,0,0);return}const t=l.height,e=l.width,s=t%re,c=(t-s)/re,d=s===0?c:c+1,n=i.createImageData(e,re);let Z=0;const b=l.data,o=n.data;for(let m=0;m<d;m++){const h=m<c?re:s;({srcPos:Z}=s1({src:b,srcPos:Z,dest:o,width:e,height:h,nonBlackColor:0})),i.putImageData(n,0,m*re)}}function Yb(i,l){const t=["strokeStyle","fillStyle","fillRule","globalAlpha","lineWidth","lineCap","lineJoin","miterLimit","globalCompositeOperation","font","filter"];for(const e of t)i[e]!==void 0&&(l[e]=i[e]);i.setLineDash!==void 0&&(l.setLineDash(i.getLineDash()),l.lineDashOffset=i.lineDashOffset)}function Ih(i){i.strokeStyle=i.fillStyle="#000000",i.fillRule="nonzero",i.globalAlpha=1,i.lineWidth=1,i.lineCap="butt",i.lineJoin="miter",i.miterLimit=10,i.globalCompositeOperation="source-over",i.font="10px sans-serif",i.setLineDash!==void 0&&(i.setLineDash([]),i.lineDashOffset=0);const{filter:l}=i;l!=="none"&&l!==""&&(i.filter="none")}function IN(i,l){if(l)return!0;Q.singularValueDecompose2dScale(i,Ue);const t=Math.fround(Rs.pixelRatio*Gc.PDF_TO_CSS_UNITS);return Ue[0]<=t&&Ue[1]<=t}const a1=["butt","round","square"],n1=["miter","round","bevel"],Z1={}
3,zN={};var gs,B2,A2,_2;const $G=class $G{constructor(l,t,e,s,c,{optionalContentConfig:d,markedContentStack:n=null},Z,b,o){L(this,gs);this.ctx=l,this.current=new TN(this.ctx.canvas.width,this.ctx.canvas.height),this.stateStack=[],this.pendingClip=null,this.pendingEOFill=!1,this.res=null,this.xobjs=null,this.commonObjs=t,this.objs=e,this.canvasFactory=s,this.filterFactory=c,this.groupStack=[],this.baseTransform=null,this.baseTransformStack=[],this.groupLevel=0,this.smaskStack=[],this.smaskCounter=0,this.tempSMask=null,this.suspendedCtx=null,this.contentVisible=!0,this.markedContentStack=n||[],this.optionalContentConfig=d,this.cachedCanvases=new d1(this.canvasFactory),this.cachedPatterns=new Map,this.annotationCanvasMap=Z,this.viewportScale=1,this.outputScaleX=1,this.outputScaleY=1,this.pageColors=b,this._cachedScaleForStroking=[-1,0],this._cachedGetSinglePixelWidth=null,this._cachedBitmapsMap=new Map,this.dependencyTracker=o??null}getObject(l,t,e=null){var s;return typeof t=="string"?((s=this.dependencyTracker)==null||s.recordNamedDependency(l,t),t.startsWith("g_")?this.commonObjs.get(t):this.objs.get(t)):e}beginDrawing({transform:l,viewport:t,transparency:e=!1,background:s=null}){const c=this.ctx.canvas.width,d=this.ctx.canvas.height,n=this.ctx.fillStyle;if(this.ctx.fillStyle=s||"#ffffff",this.ctx.fillRect(0,0,c,d),this.ctx.fillStyle=n,e){const Z=this.cachedCanvases.getCanvas("transparent",c,d);this.compositeCtx=this.ctx,this.transparentCanvas=Z.canvas,this.ctx=Z.context,this.ctx.save(),this.ctx.transform(...$l(this.compositeCtx))}this.ctx.save(),Ih(this.ctx),l&&(this.ctx.transform(...l),this.outputScaleX=l[0],this.outputScaleY=l[0]),this.ctx.transform(...t.transform),this.viewportScale=t.scale,this.baseTransform=$l(this.ctx)}executeOperatorList(l,t,e,s,c){var X;const d=l.argsArray,n=l.fnArray;let Z=t||0;const b=d.length;if(b===Z)return Z;const o=b-Z>yN&&typeof e=="function",m=o?Date.now()+i1:0;let h=0;const W=this.commonObjs,r=this.objs;let N,M;for(;;){if(s!==void 0&&Z===s.nextBreakPoint)return s.breakIt(Z,e),Z;if(!c||c(Z))if(N=n[Z],M=d[Z]??null,N!==eo.dependency)M===null?this[N](Z):this[N](Z,...M);else for(const y of M){(X=this.dependencyTracker)==null||X.recordNamedData(y,Z);const Y=y.startsWith("g_")?W:r;if(!Y.has(y))return Y.get(y,e),Z}if(Z++,Z===b)return Z;if(o&&++h>yN){if(Date.now()>m)return e(),Z;h=0}}}endDrawing(){z(this,gs,B2).call(this),this.cachedCanvases.clear(),this.cachedPatterns.clear();for(const l of this._cachedBitmapsMap.values()){for(const t of l.values())typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement&&(t.width=t.height=0);l.clear()}this._cachedBitmapsMap.clear(),z(this,gs,A2).call(this)}_scaleImage(l,t){const e=l.width??l.displayWidth,s=l.height??l.displayHeight;let c=Math.max(Math.hypot(t[0],t[1]),1),d=Math.max(Math.hypot(t[2],t[3]),1),n=e,Z=s,b="prescale1",o,m;for(;c>2&&n>1||d>2&&Z>1;){let h=n,W=Z;c>2&&n>1&&(h=n>=16384?Math.floor(n/2)-1||1:Math.ceil(n/2),c/=n/h),d>2&&Z>1&&(W=Z>=16384?Math.floor(Z/2)-1||1:Math.ceil(Z)/2,d/=Z/W),o=this.cachedCanvases.getCanvas(b,h,W),m=o.context,m.clearRect(0,0,h,W),m.drawImage(l,0,0,n,Z,0,0,h,W),l=o.canvas,n=h,Z=W,b=b==="prescale1"?"prescale2":"prescale1"}return{img:l,paintWidth:n,paintHeight:Z}}_createMaskCanvas(l,t){var x,g;const e=this.ctx,{width:s,height:c}=t,d=this.current.fillColor,n=this.current.patternFill,Z=$l(e);let b,o,m,h;if((t.bitmap||t.data)&&t.count>1){const C=t.bitmap||t.data.buffer;o=JSON.stringify(n?Z:[Z.slice(0,4),d]),b=this._cachedBitmapsMap.get(C),b||(b=new Map,this._cachedBitmapsMap.set(C,b));const D=b.get(o);if(D&&!n){const J=Math.round(Math.min(Z[0],Z[2])+Z[4]),k=Math.round(Math.min(Z[1],Z[3])+Z[5]);return(x=this.dependencyTracker)==null||x.recordDependencies(l,fe.transformAndFill),{canvas:D,offsetX:J,offsetY:k}}m=D}m||(h=this.cachedCanvases.getCanvas("maskCanvas",s,c),LN(h.context,t));let W=Q.transform(Z,[1/s,0,0,-1/c,0,0]);W=Q.transform(W,[1,0,0,1,0,-c]);const r=gn.slice();Q.axialAlignedBoundingBox([0,0,s,c],W,r);const[N,M,X,y]=r,Y=Math.round(X-N)||1,T=Math.round(y-M)||1,V=this.cachedCanvases.getCanvas("fillCanvas",Y,T),I=V.context,w=N,R=M;I.translate(-w,-R),I.transform(...W),m||(m=this._scaleImage(h.canvas,Cs(I)),m=m.img,b&&n&&b.set(o,m)),I.imageSmoothingEnabled=IN($l(I),t.interpolate),Lh(I,m,0,0,m.width,m.height,0,0,s,c),I.globalCompositeOperation="source-in";const S=Q.transform(Cs(I),[1,0,0,1,-w,-R]);return I.fillStyle=n?d.getPattern(e,this,S,Et.FILL,l):d,I.fillRect(0,0,s,c),b&&!n&&(this.cachedCanvases.delete("fillCanvas"),b.set(o,V.canvas)),(g=this.dependencyTracker)==null||g.recordDependencies(l,fe.transformAndFill),{canvas:V.canvas,offsetX:Math.round(w),offsetY:Math.round(R)}}setLineWidth(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("lineWidth",l),t!==this.current.lineWidth&&(this._cachedScaleForStroking[0]=-1),this.current.lineWidth=t,this.ctx.lineWidth=t}setLineCap(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("lineCap",l),this.ctx.lineCap=a1[t]}setLineJoin(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("lineJoin",l),this.ctx.lineJoin=n1[t]}setMiterLimit(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("miterLimit",l),this.ctx.miterLimit=t}setDash(l,t,e){var c;(c=this.dependencyTracker)==null||c.recordSimpleData("dash",l);const s=this.ctx;s.setLineDash!==void 0&&(s.setLineDash(t),s.lineDashOffset=e)}
3setRenderingIntent(l,t){}setFlatness(l,t){}setGState(l,t){var e,s,c,d,n;for(const[Z,b]of t)switch(Z){case"LW":this.setLineWidth(l,b);break;case"LC":this.setLineCap(l,b);break;case"LJ":this.setLineJoin(l,b);break;case"ML":this.setMiterLimit(l,b);break;case"D":this.setDash(l,b[0],b[1]);break;case"RI":this.setRenderingIntent(l,b);break;case"FL":this.setFlatness(l,b);break;case"Font":this.setFont(l,b[0],b[1]);break;case"CA":(e=this.dependencyTracker)==null||e.recordSimpleData("strokeAlpha",l),this.current.strokeAlpha=b;break;case"ca":(s=this.dependencyTracker)==null||s.recordSimpleData("fillAlpha",l),this.ctx.globalAlpha=this.current.fillAlpha=b;break;case"BM":(c=this.dependencyTracker)==null||c.recordSimpleData("globalCompositeOperation",l),this.ctx.globalCompositeOperation=b;break;case"SMask":(d=this.dependencyTracker)==null||d.recordSimpleData("SMask",l),this.current.activeSMask=b?this.tempSMask:null,this.tempSMask=null,this.checkSMaskState();break;case"TR":(n=this.dependencyTracker)==null||n.recordSimpleData("filter",l),this.ctx.filter=this.current.transferMaps=this.filterFactory.addFilter(b);break}}get inSMaskMode(){return!!this.suspendedCtx}checkSMaskState(){const l=this.inSMaskMode;this.current.activeSMask&&!l?this.beginSMaskMode():!this.current.activeSMask&&l&&this.endSMaskMode()}beginSMaskMode(l){if(this.inSMaskMode)throw new Error("beginSMaskMode called while already in smask mode");const t=this.ctx.canvas.width,e=this.ctx.canvas.height,s="smaskGroupAt"+this.groupLevel,c=this.cachedCanvases.getCanvas(s,t,e);this.suspendedCtx=this.ctx;const d=this.ctx=c.context;d.setTransform(this.suspendedCtx.getTransform()),Yb(this.suspendedCtx,d),c1(d,this.suspendedCtx),this.setGState(l,[["BM","source-over"]])}endSMaskMode(){if(!this.inSMaskMode)throw new Error("endSMaskMode called while not in smask mode");this.ctx._removeMirroring(),Yb(this.ctx,this.suspendedCtx),this.ctx=this.suspendedCtx,this.suspendedCtx=null}compose(l){if(!this.current.activeSMask)return;l?(l[0]=Math.floor(l[0]),l[1]=Math.floor(l[1]),l[2]=Math.ceil(l[2]),l[3]=Math.ceil(l[3])):l=[0,0,this.ctx.canvas.width,this.ctx.canvas.height];const t=this.current.activeSMask,e=this.suspendedCtx;this.composeSMask(e,t,this.ctx,l),this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore()}composeSMask(l,t,e,s){const c=s[0],d=s[1],n=s[2]-c,Z=s[3]-d;n===0||Z===0||(this.genericComposeSMask(t.context,e,n,Z,t.subtype,t.backdrop,t.transferMap,c,d,t.offsetX,t.offsetY),l.save(),l.globalAlpha=1,l.globalCompositeOperation="source-over",l.setTransform(1,0,0,1,0,0),l.drawImage(e.canvas,0,0),l.restore())}genericComposeSMask(l,t,e,s,c,d,n,Z,b,o,m){let h=l.canvas,W=Z-o,r=b-m;if(d)if(W<0||r<0||W+e>h.width||r+s>h.height){const M=this.cachedCanvases.getCanvas("maskExtension",e,s),X=M.context;X.drawImage(h,-W,-r),X.globalCompositeOperation="destination-atop",X.fillStyle=d,X.fillRect(0,0,e,s),X.globalCompositeOperation="source-over",h=M.canvas,W=r=0}else{l.save(),l.globalAlpha=1,l.setTransform(1,0,0,1,0,0);const M=new Path2D;M.rect(W,r,e,s),l.clip(M),l.globalCompositeOperation="destination-atop",l.fillStyle=d,l.fillRect(W,r,e,s),l.restore()}t.save(),t.globalAlpha=1,t.setTransform(1,0,0,1,0,0),c==="Alpha"&&n?t.filter=this.filterFactory.addAlphaFilter(n):c==="Luminosity"&&(t.filter=this.filterFactory.addLuminosityFilter(n));const N=new Path2D;N.rect(Z,b,e,s),t.clip(N),t.globalCompositeOperation="destination-in",t.drawImage(h,W,r,e,s,Z,b,e,s),t.restore()}save(l){var e;this.inSMaskMode&&Yb(this.ctx,this.suspendedCtx),this.ctx.save();const t=this.current;this.stateStack.push(t),this.current=t.clone(),(e=this.dependencyTracker)==null||e.save(l)}restore(l){var t;if((t=this.dependencyTracker)==null||t.restore(l),this.stateStack.length===0){this.inSMaskMode&&this.endSMaskMode();return}this.current=this.stateStack.pop(),this.ctx.restore(),this.inSMaskMode&&Yb(this.suspendedCtx,this.ctx),this.checkSMaskState(),this.pendingClip=null,this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}transform(l,t,e,s,c,d,n){var Z;(Z=this.dependencyTracker)==null||Z.recordIncrementalData("transform",l),this.ctx.transform(t,e,s,c,d,n),this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null}constructPath(l,t,e,s){let[c]=e;if(!s){c||(c=e[0]=new Path2D),this[t](l,c);return}if(this.dependencyTracker!==null){const d=t===eo.stroke?this.current.lineWidth/2:0;this.dependencyTracker.resetBBox(l).recordBBox(l,this.ctx,s[0]-d,s[2]+d,s[1]-d,s[3]+d).recordDependencies(l,["transform"])}c instanceof Path2D||(c=e[0]=tX(c)),Q.axialAlignedBoundingBox(s,$l(this.ctx),this.current.minMax),this[t](l,c),this._pathStartIdx=l}closePath(l){this.ctx.closePath()}stroke(l,t,e=!0){var d;
3const s=this.ctx,c=this.current.strokeColor;if(s.globalAlpha=this.current.strokeAlpha,this.contentVisible)if(typeof c=="object"&&(c!=null&&c.getPattern)){const n=c.isModifyingCurrentTransform()?s.getTransform():null;if(s.save(),s.strokeStyle=c.getPattern(s,this,Cs(s),Et.STROKE,l),n){const Z=new Path2D;Z.addPath(t,s.getTransform().invertSelf().multiplySelf(n)),t=Z}this.rescaleAndStroke(t,!1),s.restore()}else this.rescaleAndStroke(t,!0);(d=this.dependencyTracker)==null||d.recordDependencies(l,fe.stroke),e&&this.consumePath(l,t,this.current.getClippedPathBoundingBox(Et.STROKE,$l(this.ctx))),s.globalAlpha=this.current.fillAlpha}closeStroke(l,t){this.stroke(l,t)}fill(l,t,e=!0){var b,o,m;const s=this.ctx,c=this.current.fillColor,d=this.current.patternFill;let n=!1;if(d){const h=c.isModifyingCurrentTransform()?s.getTransform():null;if((b=this.dependencyTracker)==null||b.save(l),s.save(),s.fillStyle=c.getPattern(s,this,Cs(s),Et.FILL,l),h){const W=new Path2D;W.addPath(t,s.getTransform().invertSelf().multiplySelf(h)),t=W}n=!0}const Z=this.current.getClippedPathBoundingBox();this.contentVisible&&Z!==null&&(this.pendingEOFill?(s.fill(t,"evenodd"),this.pendingEOFill=!1):s.fill(t)),(o=this.dependencyTracker)==null||o.recordDependencies(l,fe.fill),n&&(s.restore(),(m=this.dependencyTracker)==null||m.restore(l)),e&&this.consumePath(l,t,Z)}eoFill(l,t){this.pendingEOFill=!0,this.fill(l,t)}fillStroke(l,t){this.fill(l,t,!1),this.stroke(l,t,!1),this.consumePath(l,t)}eoFillStroke(l,t){this.pendingEOFill=!0,this.fillStroke(l,t)}closeFillStroke(l,t){this.fillStroke(l,t)}closeEOFillStroke(l,t){this.pendingEOFill=!0,this.fillStroke(l,t)}endPath(l,t){this.consumePath(l,t)}rawFillPath(l,t){var e;this.ctx.fill(t),(e=this.dependencyTracker)==null||e.recordDependencies(l,fe.rawFillPath).recordOperation(l)}clip(l){var t;(t=this.dependencyTracker)==null||t.recordFutureForcedDependency("clipMode",l),this.pendingClip=Z1}eoClip(l){var t;(t=this.dependencyTracker)==null||t.recordFutureForcedDependency("clipMode",l),this.pendingClip=zN}beginText(l){var t;this.current.textMatrix=null,this.current.textMatrixScale=1,this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0,(t=this.dependencyTracker)==null||t.recordOpenMarker(l).resetIncrementalData("sameLineText").resetIncrementalData("moveText",l)}endText(l){const t=this.pendingTextPaths,e=this.ctx;if(this.dependencyTracker){const{dependencyTracker:s}=this;t!==void 0&&s.recordFutureForcedDependency("textClip",s.getOpenMarker()).recordFutureForcedDependency("textClip",l),s.recordCloseMarker(l)}if(t!==void 0){const s=new Path2D,c=e.getTransform().invertSelf();for(const{transform:d,x:n,y:Z,fontSize:b,path:o}of t)o&&s.addPath(o,new DOMMatrix(d).preMultiplySelf(c).translate(n,Z).scale(b,-b));e.clip(s)}delete this.pendingTextPaths}setCharSpacing(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("charSpacing",l),this.current.charSpacing=t}setWordSpacing(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("wordSpacing",l),this.current.wordSpacing=t}setHScale(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("hScale",l),this.current.textHScale=t/100}setLeading(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("leading",l),this.current.leading=-t}setFont(l,t,e){var m,h;(m=this.dependencyTracker)==null||m.recordSimpleData("font",l).recordSimpleDataFromNamed("fontObj",t,l);const s=this.commonObjs.get(t),c=this.current;if(!s)throw new Error(`Can't find font for ${t}`);if(c.fontMatrix=s.fontMatrix||N2,(c.fontMatrix[0]===0||c.fontMatrix[3]===0)&&tl("Invalid font matrix for font "+t),e<0?(e=-e,c.fontDirection=-1):c.fontDirection=1,this.current.font=s,this.current.fontSize=e,s.isType3Font)return;const d=s.loadedName||"sans-serif",n=((h=s.systemFontInfo)==null?void 0:h.css)||`"${d}", ${s.fallbackName}`;let Z="normal";s.black?Z="900":s.bold&&(Z="bold");const b=s.italic?"italic":"normal";let o=e;e<pN?o=pN:e>YN&&(o=YN),this.current.fontSizeScale=e/o,this.ctx.font=`${b} ${Z} ${o}px ${n}`}setTextRenderingMode(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("textRenderingMode",l),this.current.textRenderingMode=t}setTextRise(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("textRise",l),this.current.textRise=t}moveText(l,t,e){var s;(s=this.dependencyTracker)==null||s.resetIncrementalData("sameLineText").recordIncrementalData("moveText",l),this.current.x=this.current.lineX+=t,this.current.y=this.current.lineY+=e}setLeadingMoveText(l,t,e){this.setLeading(l,-e),this.moveText(l,t,e)}setTextMatrix(l,t){var s;(s=this.dependencyTracker)==null||s.resetIncrementalData("sameLineText").recordSimpleData("textMatrix",l);const{current:e}=this;e.textMatrix=t,e.textMatrixScale=Math.hypot(t[0],t[1]),e.x=e.lineX=0,e.y=e.lineY=0}nextLine(l){var t;this.moveText(l,0,this.current.leading),(t=this.dependencyTracker)==null||t.recordIncrementalData("moveText",this.dependencyTracker.getSimpleIndex("leading")??l)}paintChar(l,t,e,s,c,d){var X,y,Y,T;const n=this.ctx,Z=this.current,b=Z.font,o=Z.textRenderingMode,m=Z.fontSize/Z.fontSizeScale,h=o&Xt.FILL_STROKE_MASK,W=!!(o&Xt.ADD_TO_PATH_FLAG),r=Z.patternFill&&!b.missingFile,N=Z.patternStroke&&!b.missingFile;let M;if((b.disableFontFace||W||r||N)&&!b.missingFile&&(M=b.getPathGenerator(this.commonObjs,t)),M&&(b.disableFontFace||r||N)){n.save(),n.translate(e,s),n.scale(m,-m),(X=this.dependencyTracker)==null||X.recordCharacterBBox(l,n,b);let V;if(h===Xt.FILL||h===Xt.FILL_STROKE)if(c){V=n.getTransform(),n.setTransform(...c);const I=z(this,gs,_2).call(this,M,V,c);n.fill(I)}else n.fill(M);if(h===Xt.STROKE||h===Xt.FILL_STROKE)if(d){V||(V=n.getTransform()),n.setTransform(...d);const{a:I,b:w,c:R,d:S}=V,x=Q.inverseTransform(d),g=Q.transform([I,w,R,S,0,0],x);Q.singularValueDecompose2dScale(g,Ue),n.lineWidth*=Math.max(Ue[0],Ue[1])/m,n.stroke(z(this,gs,_2).call(this,M,V,d))}else n.lineWidth/=m,n.stroke(M);
3n.restore()}else(h===Xt.FILL||h===Xt.FILL_STROKE)&&(n.fillText(t,e,s),(y=this.dependencyTracker)==null||y.recordCharacterBBox(l,n,b,m,e,s,()=>n.measureText(t))),(h===Xt.STROKE||h===Xt.FILL_STROKE)&&(this.dependencyTracker&&((Y=this.dependencyTracker)==null||Y.recordCharacterBBox(l,n,b,m,e,s,()=>n.measureText(t)).recordDependencies(l,fe.stroke)),n.strokeText(t,e,s));W&&((this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:$l(n),x:e,y:s,fontSize:m,path:M}),(T=this.dependencyTracker)==null||T.recordCharacterBBox(l,n,b,m,e,s))}get isFontSubpixelAAEnabled(){const{context:l}=this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled",10,10);l.scale(1.5,1),l.fillText("I",0,10);const t=l.getImageData(0,0,10,10).data;let e=!1;for(let s=3;s<t.length;s+=4)if(t[s]>0&&t[s]<255){e=!0;break}return el(this,"isFontSubpixelAAEnabled",e)}showText(l,t){var g,C,D,J;this.dependencyTracker&&(this.dependencyTracker.recordDependencies(l,fe.showText).resetBBox(l),this.current.textRenderingMode&Xt.ADD_TO_PATH_FLAG&&this.dependencyTracker.recordFutureForcedDependency("textClip",l).inheritPendingDependenciesAsFutureForcedDependencies());const e=this.current,s=e.font;if(s.isType3Font){this.showType3Text(l,t),(g=this.dependencyTracker)==null||g.recordShowTextOperation(l);return}const c=e.fontSize;if(c===0){(C=this.dependencyTracker)==null||C.recordOperation(l);return}const d=this.ctx,n=e.fontSizeScale,Z=e.charSpacing,b=e.wordSpacing,o=e.fontDirection,m=e.textHScale*o,h=t.length,W=s.vertical,r=W?1:-1,N=s.defaultVMetrics,M=c*e.fontMatrix[0],X=e.textRenderingMode===Xt.FILL&&!s.disableFontFace&&!e.patternFill;d.save(),e.textMatrix&&d.transform(...e.textMatrix),d.translate(e.x,e.y+e.textRise),o>0?d.scale(m,-1):d.scale(m,1);let y,Y;const T=e.textRenderingMode&Xt.FILL_STROKE_MASK,V=T===Xt.FILL||T===Xt.FILL_STROKE,I=T===Xt.STROKE||T===Xt.FILL_STROKE;if(V&&e.patternFill){d.save();const k=e.fillColor.getPattern(d,this,Cs(d),Et.FILL,l);y=$l(d),d.restore(),d.fillStyle=k}if(I&&e.patternStroke){d.save();const k=e.strokeColor.getPattern(d,this,Cs(d),Et.STROKE,l);Y=$l(d),d.restore(),d.strokeStyle=k}let w=e.lineWidth;const R=e.textMatrixScale;if(R===0||w===0?I&&(w=this.getSinglePixelWidth()):w/=R,n!==1&&(d.scale(n,n),w/=n),d.lineWidth=w,s.isInvalidPDFjsFont){const k=[];let O=0;for(const F of t)k.push(F.unicode),O+=F.width;const j=k.join("");if(d.fillText(j,0,0),this.dependencyTracker!==null){const F=d.measureText(j);this.dependencyTracker.recordBBox(l,this.ctx,-F.actualBoundingBoxLeft,F.actualBoundingBoxRight,-F.actualBoundingBoxAscent,F.actualBoundingBoxDescent).recordShowTextOperation(l)}
3e.x+=O*M*m,d.restore(),this.compose();return}let S=0,x;for(x=0;x<h;++x){const k=t[x];if(typeof k=="number"){S+=r*k*c/1e3;continue}let O=!1;const j=(k.isSpace?b:0)+Z,F=k.fontChar,U=k.accent;let v,A,q=k.width;if(W){const nl=k.vmetric||N,B=-(k.vmetric?nl[1]:q*.5)*M,sl=nl[2]*M;q=nl?-nl[0]:q,v=B/n,A=(S+sl)/n}else v=S/n,A=0;let _;if(s.remeasure&&q>0){_=d.measureText(F);const nl=_.width*1e3/c*n;if(q<nl&&this.isFontSubpixelAAEnabled){const B=q/nl;O=!0,d.save(),d.scale(B,1),v/=B}else q!==nl&&(v+=(q-nl)/2e3*c/n)}if(this.contentVisible&&(k.isInFont||s.missingFile)){if(X&&!U)d.fillText(F,v,A),(D=this.dependencyTracker)==null||D.recordCharacterBBox(l,d,_?{bbox:null}:s,c/n,v,A,()=>_??d.measureText(F));else if(this.paintChar(l,F,v,A,y,Y),U){const nl=v+c*U.offset.x/n,B=A-c*U.offset.y/n;this.paintChar(l,U.fontChar,nl,B,y,Y)}}const al=W?q*M-j*o:q*M+j*o;S+=al,O&&d.restore()}W?e.y-=S:e.x+=S*m,d.restore(),this.compose(),(J=this.dependencyTracker)==null||J.recordShowTextOperation(l)}showType3Text(l,t){const e=this.ctx,s=this.current,c=s.font,d=s.fontSize,n=s.fontDirection,Z=c.vertical?1:-1,b=s.charSpacing,o=s.wordSpacing,m=s.textHScale*n,h=s.fontMatrix||N2,W=t.length,r=s.textRenderingMode===Xt.INVISIBLE;let N,M,X,y;if(r||d===0)return;this._cachedScaleForStroking[0]=-1,this._cachedGetSinglePixelWidth=null,e.save(),s.textMatrix&&e.transform(...s.textMatrix),e.translate(s.x,s.y+s.textRise),e.scale(m,n);const Y=this.dependencyTracker;for(this.dependencyTracker=Y?new S0(Y,l):null,N=0;N<W;++N){if(M=t[N],typeof M=="number"){y=Z*M*d/1e3,this.ctx.translate(y,0),s.x+=y*m;continue}const T=(M.isSpace?o:0)+b,V=c.charProcOperatorList[M.operatorListId];V?this.contentVisible&&(this.save(),e.scale(d,d),e.transform(...h),this.executeOperatorList(V),this.restore()):tl(`Type3 character "${M.operatorListId}" is not available.`);const I=[M.width,0];Q.applyTransform(I,h),X=I[0]*d+T,e.translate(X,0),s.x+=X*m}e.restore(),Y&&(this.dependencyTracker=Y)}setCharWidth(l,t,e){}setCharWidthAndBounds(l,t,e,s,c,d,n){var b;const Z=new Path2D;Z.rect(s,c,d-s,n-c),this.ctx.clip(Z),(b=this.dependencyTracker)==null||b.recordBBox(l,this.ctx,s,d,c,n).recordClipBox(l,this.ctx,s,d,c,n),this.endPath(l)}getColorN_Pattern(l,t){let e;if(t[0]==="TilingPattern"){const s=this.baseTransform||$l(this.ctx),c={createCanvasGraphics:(d,n)=>new $G(d,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:this.optionalContentConfig,markedContentStack:this.markedContentStack},void 0,void 0,this.dependencyTracker?new S0(this.dependencyTracker,n,!0):null)};e=new f2(t,this.ctx,c,s)}else e=this._getPattern(l,t[1],t[2]);return e}setStrokeColorN(l,...t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("strokeColor",l),this.current.strokeColor=this.getColorN_Pattern(l,t),this.current.patternStroke=!0}setFillColorN(l,...t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("fillColor",l),this.current.fillColor=this.getColorN_Pattern(l,t),this.current.patternFill=!0}setStrokeRGBColor(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("strokeColor",l),this.ctx.strokeStyle=this.current.strokeColor=t,this.current.patternStroke=!1}
3setStrokeTransparent(l){var t;(t=this.dependencyTracker)==null||t.recordSimpleData("strokeColor",l),this.ctx.strokeStyle=this.current.strokeColor="transparent",this.current.patternStroke=!1}setFillRGBColor(l,t){var e;(e=this.dependencyTracker)==null||e.recordSimpleData("fillColor",l),this.ctx.fillStyle=this.current.fillColor=t,this.current.patternFill=!1}setFillTransparent(l){var t;(t=this.dependencyTracker)==null||t.recordSimpleData("fillColor",l),this.ctx.fillStyle=this.current.fillColor="transparent",this.current.patternFill=!1}_getPattern(l,t,e=null){let s;return this.cachedPatterns.has(t)?s=this.cachedPatterns.get(t):(s=e1(this.getObject(l,t)),this.cachedPatterns.set(t,s)),e&&(s.matrix=e),s}shadingFill(l,t){var d;if(!this.contentVisible)return;const e=this.ctx;this.save(l);const s=this._getPattern(l,t);e.fillStyle=s.getPattern(e,this,Cs(e),Et.SHADING,l);const c=Cs(e);if(c){const{width:n,height:Z}=e.canvas,b=gn.slice();Q.axialAlignedBoundingBox([0,0,n,Z],c,b);const[o,m,h,W]=b;this.ctx.fillRect(o,m,h-o,W-m)}else this.ctx.fillRect(-1e10,-1e10,2e10,2e10);(d=this.dependencyTracker)==null||d.resetBBox(l).recordFullPageBBox(l).recordDependencies(l,fe.transform).recordDependencies(l,fe.fill).recordOperation(l),this.compose(this.current.getClippedPathBoundingBox()),this.restore(l)}beginInlineImage(){Jl("Should not call beginInlineImage")}beginImageData(){Jl("Should not call beginImageData")}paintFormXObjectBegin(l,t,e){var s;if(this.contentVisible&&(this.save(l),this.baseTransformStack.push(this.baseTransform),t&&this.transform(l,...t),this.baseTransform=$l(this.ctx),e)){Q.axialAlignedBoundingBox(e,this.baseTransform,this.current.minMax);const[c,d,n,Z]=e,b=new Path2D;b.rect(c,d,n-c,Z-d),this.ctx.clip(b),(s=this.dependencyTracker)==null||s.recordClipBox(l,this.ctx,c,n,d,Z),this.endPath(l)}}paintFormXObjectEnd(l){this.contentVisible&&(this.restore(l),this.baseTransform=this.baseTransformStack.pop())}beginGroup(l,t){var Y;if(!this.contentVisible)return;this.save(l),this.inSMaskMode&&(this.endSMaskMode(),this.current.activeSMask=null);const e=this.ctx;
3t.isolated||hu("TODO: Support non-isolated groups."),t.knockout&&tl("Knockout groups not supported.");const s=$l(e);if(t.matrix&&e.transform(...t.matrix),!t.bbox)throw new Error("Bounding box is required.");let c=gn.slice();Q.axialAlignedBoundingBox(t.bbox,$l(e),c);const d=[0,0,e.canvas.width,e.canvas.height];c=Q.intersect(c,d)||[0,0,0,0];const n=Math.floor(c[0]),Z=Math.floor(c[1]),b=Math.max(Math.ceil(c[2])-n,1),o=Math.max(Math.ceil(c[3])-Z,1);this.current.startNewPathAndClipBox([0,0,b,o]);let m="groupAt"+this.groupLevel;t.smask&&(m+="_smask_"+this.smaskCounter++%2);const h=this.cachedCanvases.getCanvas(m,b,o),W=h.context;W.translate(-n,-Z),W.transform(...s);let r=new Path2D;const[N,M,X,y]=t.bbox;if(r.rect(N,M,X-N,y-M),t.matrix){const T=new Path2D;T.addPath(r,new DOMMatrix(t.matrix)),r=T}W.clip(r),t.smask&&this.smaskStack.push({canvas:h.canvas,context:W,offsetX:n,offsetY:Z,subtype:t.smask.subtype,backdrop:t.smask.backdrop,transferMap:t.smask.transferMap||null,startTransformInverse:null}),(!t.smask||this.dependencyTracker)&&(e.setTransform(1,0,0,1,0,0),e.translate(n,Z),e.save()),Yb(e,W),this.ctx=W,(Y=this.dependencyTracker)==null||Y.inheritSimpleDataAsFutureForcedDependencies(["fillAlpha","strokeAlpha","globalCompositeOperation"]).pushBaseTransform(e),this.setGState(l,[["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(e),this.groupLevel++}endGroup(l,t){var c;if(!this.contentVisible)return;this.groupLevel--;const e=this.ctx,s=this.groupStack.pop();if(this.ctx=s,this.ctx.imageSmoothingEnabled=!1,(c=this.dependencyTracker)==null||c.popBaseTransform(),t.smask)this.tempSMask=this.smaskStack.pop(),this.restore(l),this.dependencyTracker&&this.ctx.restore();else{this.ctx.restore();const d=$l(this.ctx);this.restore(l),this.ctx.save(),this.ctx.setTransform(...d);const n=gn.slice();Q.axialAlignedBoundingBox([0,0,e.canvas.width,e.canvas.height],d,n),this.ctx.drawImage(e.canvas,0,0),this.ctx.restore(),this.compose(n)}}beginAnnotation(l,t,e,s,c,d){if(z(this,gs,B2).call(this),Ih(this.ctx),this.ctx.save(),this.save(l),this.baseTransform&&this.ctx.setTransform(...this.baseTransform),e){const n=e[2]-e[0],Z=e[3]-e[1];if(d&&this.annotationCanvasMap){s=s.slice(),s[4]-=e[0],s[5]-=e[1],e=e.slice(),e[0]=e[1]=0,e[2]=n,e[3]=Z,Q.singularValueDecompose2dScale($l(this.ctx),Ue);const{viewportScale:b}=this,o=Math.ceil(n*this.outputScaleX*b),m=Math.ceil(Z*this.outputScaleY*b);this.annotationCanvas=this.canvasFactory.create(o,m);const{canvas:h,context:W}=this.annotationCanvas;this.annotationCanvasMap.set(t,h),this.annotationCanvas.savedCtx=this.ctx,this.ctx=W,this.ctx.save(),this.ctx.setTransform(Ue[0],0,0,-Ue[1],0,Z*Ue[1]),Ih(this.ctx)}else{Ih(this.ctx),this.endPath(l);const b=new Path2D;b.rect(e[0],e[1],n,Z),this.ctx.clip(b)}}this.current=new TN(this.ctx.canvas.width,this.ctx.canvas.height),this.transform(l,...s),this.transform(l,...c)}endAnnotation(l){this.annotationCanvas&&(this.ctx.restore(),z(this,gs,A2).call(this),this.ctx=this.annotationCanvas.savedCtx,delete this.annotationCanvas.savedCtx,delete this.annotationCanvas)}paintImageMaskXObject(l,t){var n;if(!this.contentVisible)return;const e=t.count;t=this.getObject(l,t.data,t),t.count=e;
3const s=this.ctx,c=this._createMaskCanvas(l,t),d=c.canvas;s.save(),s.setTransform(1,0,0,1,0,0),s.drawImage(d,c.offsetX,c.offsetY),(n=this.dependencyTracker)==null||n.resetBBox(l).recordBBox(l,this.ctx,c.offsetX,c.offsetX+d.width,c.offsetY,c.offsetY+d.height).recordOperation(l),s.restore(),this.compose()}paintImageMaskXObjectRepeat(l,t,e,s=0,c=0,d,n){var m,h,W;if(!this.contentVisible)return;t=this.getObject(l,t.data,t);const Z=this.ctx;Z.save();const b=$l(Z);Z.transform(e,s,c,d,0,0);const o=this._createMaskCanvas(l,t);Z.setTransform(1,0,0,1,o.offsetX-b[4],o.offsetY-b[5]),(m=this.dependencyTracker)==null||m.resetBBox(l);for(let r=0,N=n.length;r<N;r+=2){const M=Q.transform(b,[e,s,c,d,n[r],n[r+1]]);Z.drawImage(o.canvas,M[4],M[5]),(h=this.dependencyTracker)==null||h.recordBBox(l,this.ctx,M[4],M[4]+o.canvas.width,M[5],M[5]+o.canvas.height)}Z.restore(),this.compose(),(W=this.dependencyTracker)==null||W.recordOperation(l)}paintImageMaskXObjectGroup(l,t){var d,n,Z;if(!this.contentVisible)return;const e=this.ctx,s=this.current.fillColor,c=this.current.patternFill;(d=this.dependencyTracker)==null||d.resetBBox(l).recordDependencies(l,fe.transformAndFill);for(const b of t){const{data:o,width:m,height:h,transform:W}=b,r=this.cachedCanvases.getCanvas("maskCanvas",m,h),N=r.context;N.save();const M=this.getObject(l,o,b);LN(N,M),N.globalCompositeOperation="source-in",N.fillStyle=c?s.getPattern(N,this,Cs(e),Et.FILL,l):s,N.fillRect(0,0,m,h),N.restore(),e.save(),e.transform(...W),e.scale(1,-1),Lh(e,r.canvas,0,0,m,h,0,-1,1,1),(n=this.dependencyTracker)==null||n.recordBBox(l,e,0,m,0,h),e.restore()}this.compose(),(Z=this.dependencyTracker)==null||Z.recordOperation(l)}paintImageXObject(l,t){if(!this.contentVisible)return;const e=this.getObject(l,t);if(!e){tl("Dependent image isn't ready yet");return}this.paintInlineImageXObject(l,e)}paintImageXObjectRepeat(l,t,e,s,c){if(!this.contentVisible)return;const d=this.getObject(l,t);if(!d){tl("Dependent image isn't ready yet");return}const n=d.width,Z=d.height,b=[];for(let o=0,m=c.length;o<m;o+=2)b.push({transform:[e,0,0,s,c[o],c[o+1]],x:0,y:0,w:n,h:Z});this.paintInlineImageXObjectGroup(l,d,b)}applyTransferMapsToCanvas(l){return this.current.transferMaps!=="none"&&(l.filter=this.current.transferMaps,l.drawImage(l.canvas,0,0),l.filter="none"),l.canvas}applyTransferMapsToBitmap(l){if(this.current.transferMaps==="none")return l.bitmap;const{bitmap:t,width:e,height:s}=l,c=this.cachedCanvases.getCanvas("inlineImage",e,s),d=c.context;return d.filter=this.current.transferMaps,d.drawImage(t,0,0),d.filter="none",c.canvas}paintInlineImageXObject(l,t){var b;if(!this.contentVisible)return;const e=t.width,s=t.height,c=this.ctx;this.save(l);const{filter:d}=c;d!=="none"&&d!==""&&(c.filter="none"),c.scale(1/e,-1/s);let n;if(t.bitmap)n=this.applyTransferMapsToBitmap(t);else if(typeof HTMLElement=="function"&&t instanceof HTMLElement||!t.data)n=t;else{const m=this.cachedCanvases.getCanvas("inlineImage",e,s).context;VN(m,t),n=this.applyTransferMapsToCanvas(m)}const Z=this._scaleImage(n,Cs(c));c.imageSmoothingEnabled=IN($l(c),t.interpolate),(b=this.dependencyTracker)==null||b.resetBBox(l).recordBBox(l,c,0,e,-s,0).recordDependencies(l,fe.imageXObject).recordOperation(l),Lh(c,Z.img,0,0,Z.paintWidth,Z.paintHeight,0,-s,e,s),this.compose(),this.restore(l)}paintInlineImageXObjectGroup(l,t,e){var d,n,Z;if(!this.contentVisible)return;const s=this.ctx;let c;if(t.bitmap)c=t.bitmap;else{const b=t.width,o=t.height,h=this.cachedCanvases.getCanvas("inlineImage",b,o).context;VN(h,t),c=this.applyTransferMapsToCanvas(h)}(d=this.dependencyTracker)==null||d.resetBBox(l);for(const b of e)s.save(),s.transform(...b.transform),s.scale(1,-1),Lh(s,c,b.x,b.y,b.w,b.h,0,-1,1,1),(n=this.dependencyTracker)==null||n.recordBBox(l,s,0,1,-1,0),s.restore();(Z=this.dependencyTracker)==null||Z.recordOperation(l),this.compose()}paintSolidColorImageMask(l){var t;this.contentVisible&&((t=this.dependencyTracker)==null||t.resetBBox(l).recordBBox(l,this.ctx,0,1,0,1).recordDependencies(l,fe.fill).recordOperation(l),this.ctx.fillRect(0,0,1,1),this.compose())}markPoint(l,t){}markPointProps(l,t,e){}beginMarkedContent(l,t){var e;(e=this.dependencyTracker)==null||e.beginMarkedContent(l),this.markedContentStack.push({visible:!0})}beginMarkedContentProps(l,t,e){var s;(s=this.dependencyTracker)==null||s.beginMarkedContent(l),t==="OC"?this.markedContentStack.push({visible:this.optionalContentConfig.isVisible(e)}):this.markedContentStack.push({visible:!0}),this.contentVisible=this.isContentVisible()}endMarkedContent(l){var t;(t=this.dependencyTracker)==null||t.endMarkedContent(l),this.markedContentStack.pop(),this.contentVisible=this.isContentVisible()}beginCompat(l){}endCompat(l){}consumePath(l,t,e){var d,n;const s=this.current.isEmptyClip();this.pendingClip&&this.current.updateClipFromPath(),this.pendingClip||this.compose(e);const c=this.ctx;this.pendingClip?(s||(this.pendingClip===zN?c.clip(t,"evenodd"):c.clip(t)),this.pendingClip=null,(d=this.dependencyTracker)==null||d.bboxToClipBoxDropOperation(l).recordFutureForcedDependency("clipPath",l)):(n=this.dependencyTracker)==null||n.recordOperation(l),this.current.startNewPathAndClipBox(this.current.clipBox)}getSinglePixelWidth(){if(!this._cachedGetSinglePixelWidth){const l=$l(this.ctx);if(l[1]===0&&l[2]===0)this._cachedGetSinglePixelWidth=1/Math.min(Math.abs(l[0]),Math.abs(l[3]));else{const t=Math.abs(l[0]*l[3]-l[2]*l[1]),e=Math.hypot(l[0],l[2]),s=Math.hypot(l[1],l[3]);this._cachedGetSinglePixelWidth=Math.max(e,s)/t}}return this._cachedGetSinglePixelWidth}getScaleForStroking(){if(this._cachedScaleForStroking[0]===-1){const{lineWidth:l}=this.current,{a:t,b:e,c:s,d:c}=this.ctx.getTransform();let d,n;if(e===0&&s===0){const Z=Math.abs(t),b=Math.abs(c);if(Z===b)if(l===0)d=n=1/Z;else{const o=Z*l;
3d=n=o<1?1/o:1}else if(l===0)d=1/Z,n=1/b;else{const o=Z*l,m=b*l;d=o<1?1/o:1,n=m<1?1/m:1}}else{const Z=Math.abs(t*c-e*s),b=Math.hypot(t,e),o=Math.hypot(s,c);if(l===0)d=o/Z,n=b/Z;else{const m=l*Z;d=o>m?o/m:1,n=b>m?b/m:1}}this._cachedScaleForStroking[0]=d,this._cachedScaleForStroking[1]=n}return this._cachedScaleForStroking}rescaleAndStroke(l,t){const{ctx:e,current:{lineWidth:s}}=this,[c,d]=this.getScaleForStroking();if(c===d){e.lineWidth=(s||1)*c,e.stroke(l);return}const n=e.getLineDash();t&&e.save(),e.scale(c,d),vu.a=1/c,vu.d=1/d;const Z=new Path2D;if(Z.addPath(l,vu),n.length>0){const b=Math.max(c,d);e.setLineDash(n.map(o=>o/b)),e.lineDashOffset/=b}e.lineWidth=s||1,e.stroke(Z),t&&e.restore()}isContentVisible(){for(let l=this.markedContentStack.length-1;l>=0;l--)if(!this.markedContentStack[l].visible)return!1;return!0}};gs=new WeakSet,B2=function(){for(;this.stateStack.length||this.inSMaskMode;)this.restore();this.current.activeSMask=null,this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null)},A2=function(){if(this.pageColors){const l=this.filterFactory.addHCMFilter(this.pageColors.foreground,this.pageColors.background);if(l!=="none"){const t=this.ctx.filter;this.ctx.filter=l,this.ctx.drawImage(this.ctx.canvas,0,0),this.ctx.filter=t}}},_2=function(l,t,e){const s=new Path2D;return s.addPath(l,new DOMMatrix(e).invertSelf().multiplySelf(t)),s};let On=$G;for(const i in eo)On.prototype[i]!==void 0&&(On.prototype[eo[i]]=On.prototype[i]);var lm,tm;class Zi{static get workerPort(){return a(this,lm)}static set workerPort(l){if(!(typeof Worker<"u"&&l instanceof Worker)&&l!==null)throw new Error("Invalid `workerPort` type.");p(this,lm,l)}static get workerSrc(){return a(this,tm)}static set workerSrc(l){if(typeof l!="string")throw new Error("Invalid `workerSrc` type.");p(this,tm,l)}}lm=new WeakMap,tm=new WeakMap,L(Zi,lm,null),L(Zi,tm,"");var TZ,em;class b1{constructor({parsedData:l,rawData:t}){L(this,TZ);L(this,em);p(this,TZ,l),p(this,em,t)}getRaw(){return a(this,em)}get(l){return a(this,TZ).get(l)??null}[Symbol.iterator](){return a(this,TZ).entries()}}TZ=new WeakMap,em=new WeakMap;const wn=Symbol("INTERNAL");var sm,im,cm,VZ;class o1{constructor(l,{name:t,intent:e,usage:s,rbGroups:c}){L(this,sm,!1);L(this,im,!1);L(this,cm,!1);L(this,VZ,!0);p(this,sm,!!(l&ke.DISPLAY)),p(this,im,!!(l&ke.PRINT)),this.name=t,this.intent=e,this.usage=s,this.rbGroups=c}get visible(){if(a(this,cm))return a(this,VZ);if(!a(this,VZ))return!1;const{print:l,view:t}=this.usage;return a(this,sm)?(t==null?void 0:t.viewState)!=="OFF":a(this,im)?(l==null?void 0:l.printState)!=="OFF":!0}_setVisible(l,t,e=!1){l!==wn&&Jl("Internal method `_setVisible` called."),p(this,cm,e),p(this,VZ,t)}}sm=new WeakMap,im=new WeakMap,cm=new WeakMap,VZ=new WeakMap;var Hc,Sl,LZ,IZ,dm,q2;class m1{constructor(l,t=ke.DISPLAY){L(this,dm);L(this,Hc,null);L(this,Sl,new Map);L(this,LZ,null);L(this,IZ,null);if(this.renderingIntent=t,this.name=null,this.creator=null,l!==null){this.name=l.name,this.creator=l.creator,p(this,IZ,l.order);for(const e of l.groups)a(this,Sl).set(e.id,new o1(t,e));if(l.baseState==="OFF")for(const e of a(this,Sl).values())e._setVisible(wn,!1);for(const e of l.on)a(this,Sl).get(e)._setVisible(wn,!0);for(const e of l.off)a(this,Sl).get(e)._setVisible(wn,!1);p(this,LZ,this.getHash())}}isVisible(l){if(a(this,Sl).size===0)return!0;if(!l)return hu("Optional content group not defined."),!0;if(l.type==="OCG")return a(this,Sl).has(l.id)?a(this,Sl).get(l.id).visible:(tl(`Optional content group not found: ${l.id}`),!0);if(l.type==="OCMD"){if(l.expression)return z(this,dm,q2).call(this,l.expression);if(!l.policy||l.policy==="AnyOn"){for(const t of l.ids){if(!a(this,Sl).has(t))return tl(`Optional content group not found: ${t}`),!0;if(a(this,Sl).get(t).visible)return!0}return!1}else if(l.policy==="AllOn"){for(const t of l.ids){if(!a(this,Sl).has(t))return tl(`Optional content group not found: ${t}`),!0;if(!a(this,Sl).get(t).visible)return!1}return!0}else if(l.policy==="AnyOff"){for(const t of l.ids){if(!a(this,Sl).has(t))return tl(`Optional content group not found: ${t}`),!0;if(!a(this,Sl).get(t).visible)return!0}return!1}else if(l.policy==="AllOff"){for(const t of l.ids){if(!a(this,Sl).has(t))return tl(`Optional content group not found: ${t}`),!0;if(a(this,Sl).get(t).visible)return!1}return!0}return tl(`Unknown optional content policy ${l.policy}.`),!0}return tl(`Unknown group type ${l.type}.`),!0}setVisibility(l,t=!0,e=!0){var c;const s=a(this,Sl).get(l);if(!s){tl(`Optional content group not found: ${l}`);return}if(e&&t&&s.rbGroups.length)for(const d of s.rbGroups)for(const n of d)n!==l&&((c=a(this,Sl).get(n))==null||c._setVisible(wn,!1,!0));s._setVisible(wn,!!t,!0),p(this,Hc,null)}setOCGState({state:l,preserveRB:t}){let e;for(const s of l){switch(s){case"ON":case"OFF":case"Toggle":e=s;continue}const c=a(this,Sl).get(s);if(c)switch(e){case"ON":this.setVisibility(s,!0,t);break;case"OFF":this.setVisibility(s,!1,t);break;case"Toggle":this.setVisibility(s,!c.visible,t);break}}p(this,Hc,null)}get hasInitialVisibility(){return a(this,LZ)===null||this.getHash()===a(this,LZ)}getOrder(){return a(this,Sl).size?a(this,IZ)?a(this,IZ).slice():[...a(this,Sl).keys()]:null}getGroup(l){return a(this,Sl).get(l)||null}getHash(){if(a(this,Hc)!==null)return a(this,Hc);const l=new gX;for(const[t,e]of a(this,Sl))l.update(`${t}:${e.visible}`);return p(this,Hc,l.hexdigest())}[Symbol.iterator](){return a(this,Sl).entries()}}Hc=new WeakMap,Sl=new WeakMap,LZ=new WeakMap,IZ=new WeakMap,dm=new WeakSet,q2=function(l){const t=l.length;if(t<2)return!0;const e=l[0];for(let s=1;s<t;s++){const c=l[s];let d;if(Array.isArray(c))d=z(this,dm,q2).call(this,c);else if(a(this,Sl).has(c))d=a(this,Sl).get(c).visible;else return tl(`Optional content group not found: ${c}`),!0;switch(e){case"And":if(!d)return!1;break;case"Or":if(d)return!0;break;case"Not":return!d;default:return!0}}return e==="And"};class h1{constructor(l,{disableRange:t=!1,disableStream:e=!1}){Gl(l,'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');const{length:s,initialData:c,progressiveDone:d,contentDispositionFilename:n}=l;if(this._queuedChunks=[],this._progressiveDone=d,this._contentDispositionFilename=n,(c==null?void 0:c.length)>0){const Z=c instanceof Uint8Array&&c.byteLength===c.buffer.byteLength?c.buffer:new Uint8Array(c).buffer;this._queuedChunks.push(Z)}this._pdfDataRangeTransport=l,this._isStreamingSupported=!e,this._isRangeSupported=!t,this._contentLength=s,this._fullRequestReader=null,this._rangeReaders=[],l.addRangeListener((Z,b)=>{this._onReceiveData({begin:Z,chunk:b})}),l.addProgressListener((Z,b)=>{this._onProgress({loaded:Z,total:b})}),l.addProgressiveReadListener(Z=>{this._onReceiveData({chunk:Z})}),l.addProgressiveDoneListener(()=>{this._onProgressiveDone()}),l.transportReady()}_onReceiveData({begin:l,chunk:t}){const e=t instanceof Uint8Array&&t.byteLength===t.buffer.byteLength?t.buffer:new Uint8Array(t).buffer;if(l===void 0)this._fullRequestReader?this._fullRequestReader._enqueue(e):this._queuedChunks.push(e);else{const s=this._rangeReaders.some(function(c){return c._begin!==l?!1:(c._enqueue(e),!0)});Gl(s,"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.")}}get _progressiveDataLength(){var l;return((l=this._fullRequestReader)==null?void 0:l._loaded)??0}_onProgress(l){var t,e,s,c;l.total===void 0?(e=(t=this._rangeReaders[0])==null?void 0:t.onProgress)==null||e.call(t,{loaded:l.loaded}):(c=(s=this._fullRequestReader)==null?void 0:s.onProgress)==null||c.call(s,{loaded:l.loaded,total:l.total})}_onProgressiveDone(){var l;(l=this._fullRequestReader)==null||l.progressiveDone(),this._progressiveDone=!0}_removeRangeReader(l){const t=this._rangeReaders.indexOf(l);t>=0&&this._rangeReaders.splice(t,1)}getFullReader(){Gl(!this._fullRequestReader,"PDFDataTransportStream.getFullReader can only be called once.");const l=this._queuedChunks;return this._queuedChunks=null,new u1(this,l,this._progressiveDone,this._contentDispositionFilename)}getRangeReader(l,t){if(t<=this._progressiveDataLength)return null;const e=new W1(this,l,t);return this._pdfDataRangeTransport.requestDataRange(l,t),this._rangeReaders.push(e),e}cancelAllRequests(l){var t;(t=this._fullRequestReader)==null||t.cancel(l);for(const e of this._rangeReaders.slice(0))e.cancel(l);this._pdfDataRangeTransport.abort()}}class u1{constructor(l,t,e=!1,s=null){this._stream=l,this._done=e||!1,this._filename=nG(s)?s:null,this._queuedChunks=t||[],this._loaded=0;for(const c of this._queuedChunks)this._loaded+=c.byteLength;
3this._requests=[],this._headersReady=Promise.resolve(),l._fullRequestReader=this,this.onProgress=null}_enqueue(l){this._done||(this._requests.length>0?this._requests.shift().resolve({value:l,done:!1}):this._queuedChunks.push(l),this._loaded+=l.byteLength)}get headersReady(){return this._headersReady}get filename(){return this._filename}get isRangeSupported(){return this._stream._isRangeSupported}get isStreamingSupported(){return this._stream._isStreamingSupported}get contentLength(){return this._stream._contentLength}async read(){if(this._queuedChunks.length>0)return{value:this._queuedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise}cancel(l){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}progressiveDone(){this._done||(this._done=!0)}}class W1{constructor(l,t,e){this._stream=l,this._begin=t,this._end=e,this._queuedChunk=null,this._requests=[],this._done=!1,this.onProgress=null}_enqueue(l){if(!this._done){if(this._requests.length===0)this._queuedChunk=l;else{this._requests.shift().resolve({value:l,done:!1});for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0}this._done=!0,this._stream._removeRangeReader(this)}}get isStreamingSupported(){return!1}async read(){if(this._queuedChunk){const t=this._queuedChunk;return this._queuedChunk=null,{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise}cancel(l){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0,this._stream._removeRangeReader(this)}}function G1(i){let l=!0,t=e("filename\\*","i").exec(i);if(t){t=t[1];let o=n(t);return o=unescape(o),o=Z(o),o=b(o),c(o)}if(t=d(i),t){const o=b(t);return c(o)}if(t=e("filename","i").exec(i),t){t=t[1];let o=n(t);return o=b(o),c(o)}function e(o,m){return new RegExp("(?:^|;)\\s*"+o+'\\s*=\\s*([^";\\s][^;\\s]*|"(?:[^"\\\\]|\\\\"?)+"?)',m)}function s(o,m){if(o){if(!/^[\x00-\xFF]+$/.test(m))return m;try{const h=new TextDecoder(o,{fatal:!0}),W=ch(m);m=h.decode(W),l=!1}catch{}}return m}function c(o){return l&&/[\x80-\xff]/.test(o)&&(o=s("utf-8",o),l&&(o=s("iso-8859-1",o))),o}function d(o){const m=[];let h;const W=e("filename\\*((?!0\\d)\\d+)(\\*?)","ig");for(;(h=W.exec(o))!==null;){let[,N,M,X]=h;if(N=parseInt(N,10),N in m){if(N===0)break;continue}m[N]=[M,X]}const r=[];for(let N=0;N<m.length&&N in m;++N){let[M,X]=m[N];X=n(X),M&&(X=unescape(X),N===0&&(X=Z(X))),r.push(X)}return r.join("")}function n(o){if(o.startsWith('"')){const m=o.slice(1).split('\\"');for(let h=0;h<m.length;++h){const W=m[h].indexOf('"');W!==-1&&(m[h]=m[h].slice(0,W),m.length=h+1),m[h]=m[h].replaceAll(/\\(.)/g,"$1")}o=m.join('"')}return o}function Z(o){const m=o.indexOf("'");if(m===-1)return o;const h=o.slice(0,m),r=o.slice(m+1).replace(/^[^']*'/,"");return s(h,r)}function b(o){return!o.startsWith("=?")||/[\x00-\x19\x80-\xff]/.test(o)?o:o.replaceAll(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g,function(m,h,W,r){if(W==="q"||W==="Q")return r=r.replaceAll("_"," "),r=r.replaceAll(/=([0-9a-fA-F]{2})/g,function(N,M){return String.fromCharCode(parseInt(M,16))}),s(h,r);try{r=atob(r)}catch{}return s(h,r)})}return""}function QX(i,l){const t=new Headers;if(!i||!l||typeof l!="object")return t;for(const e in l){const s=l[e];s!==void 0&&t.append(e,s)}return t}function Gu(i){var l;return((l=URL.parse(i))==null?void 0:l.origin)??null}function PX({responseHeaders:i,isHttp:l,rangeChunkSize:t,disableRange:e}){const s={allowRangeRequests:!1,suggestedLength:void 0},c=parseInt(i.get("Content-Length"),10);return!Number.isInteger(c)||(s.suggestedLength=c,c<=2*t)||e||!l||i.get("Accept-Ranges")!=="bytes"||(i.get("Content-Encoding")||"identity")!=="identity"||(s.allowRangeRequests=!0),s}function HX(i){const l=i.get("Content-Disposition");if(l){let t=G1(l);if(t.includes("%"))try{t=decodeURIComponent(t)}catch{}if(nG(t))return t}return null}function bh(i,l){return new V0(`Unexpected server response (${i}) while retrieving PDF "${l}".`,i,i===404||i===0&&l.startsWith("file:"))}function fX(i){return i===200||i===206}function BX(i,l,t){return{method:"GET",headers:i,signal:t.signal,mode:"cors",credentials:l?"include":"same-origin",redirect:"follow"}}function AX(i){return i instanceof Uint8Array?i.buffer:i instanceof ArrayBuffer?i:(tl(`getArrayBuffer - unexpected data format: ${i}`),new Uint8Array(i).buffer)}class N1{constructor(l){E(this,"_responseOrigin",null);this.source=l,this.isHttp=/^https?:/i.test(l.url),this.headers=QX(this.isHttp,l.httpHeaders),this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var l;return((l=this._fullRequestReader)==null?void 0:l._loaded)??0}
3getFullReader(){return Gl(!this._fullRequestReader,"PDFFetchStream.getFullReader can only be called once."),this._fullRequestReader=new r1(this),this._fullRequestReader}getRangeReader(l,t){if(t<=this._progressiveDataLength)return null;const e=new X1(this,l,t);return this._rangeRequestReaders.push(e),e}cancelAllRequests(l){var t;(t=this._fullRequestReader)==null||t.cancel(l);for(const e of this._rangeRequestReaders.slice(0))e.cancel(l)}}class r1{constructor(l){this._stream=l,this._reader=null,this._loaded=0,this._filename=null;const t=l.source;this._withCredentials=t.withCredentials||!1,this._contentLength=t.length,this._headersCapability=Promise.withResolvers(),this._disableRange=t.disableRange||!1,this._rangeChunkSize=t.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._abortController=new AbortController,this._isStreamingSupported=!t.disableStream,this._isRangeSupported=!t.disableRange;const e=new Headers(l.headers),s=t.url;fetch(s,BX(e,this._withCredentials,this._abortController)).then(c=>{if(l._responseOrigin=Gu(c.url),!fX(c.status))throw bh(c.status,s);this._reader=c.body.getReader(),this._headersCapability.resolve();const d=c.headers,{allowRangeRequests:n,suggestedLength:Z}=PX({responseHeaders:d,isHttp:l.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});this._isRangeSupported=n,this._contentLength=Z||this._contentLength,this._filename=HX(d),!this._isStreamingSupported&&this._isRangeSupported&&this.cancel(new Yd("Streaming is disabled."))}).catch(this._headersCapability.reject),this.onProgress=null}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;await this._headersCapability.promise;const{value:l,done:t}=await this._reader.read();return t?{value:l,done:t}:(this._loaded+=l.byteLength,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded,total:this._contentLength}),{value:AX(l),done:!1})}cancel(l){var t;(t=this._reader)==null||t.cancel(l),this._abortController.abort()}}class X1{constructor(l,t,e){this._stream=l,this._reader=null,this._loaded=0;const s=l.source;this._withCredentials=s.withCredentials||!1,this._readCapability=Promise.withResolvers(),this._isStreamingSupported=!s.disableStream,this._abortController=new AbortController;const c=new Headers(l.headers);c.append("Range",`bytes=${t}-${e-1}`);const d=s.url;fetch(d,BX(c,this._withCredentials,this._abortController)).then(n=>{const Z=Gu(n.url);if(Z!==l._responseOrigin)throw new Error(`Expected range response-origin "${Z}" to match "${l._responseOrigin}".`);if(!fX(n.status))throw bh(n.status,d);this._readCapability.resolve(),this._reader=n.body.getReader()}).catch(this._readCapability.reject),this.onProgress=null}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;await this._readCapability.promise;const{value:l,done:t}=await this._reader.read();return t?{value:l,done:t}:(this._loaded+=l.byteLength,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded}),{value:AX(l),done:!1})}cancel(l){var t;(t=this._reader)==null||t.cancel(l),this._abortController.abort()}}const Qu=200,Pu=206;function M1(i){const l=i.response;return typeof l!="string"?l:ch(l).buffer}class p1{constructor({url:l,httpHeaders:t,withCredentials:e}){E(this,"_responseOrigin",null);this.url=l,this.isHttp=/^https?:/i.test(l),this.headers=QX(this.isHttp,t),this.withCredentials=e||!1,this.currXhrId=0,this.pendingRequests=Object.create(null)}request(l){const t=new XMLHttpRequest,e=this.currXhrId++,s=this.pendingRequests[e]={xhr:t};t.open("GET",this.url),t.withCredentials=this.withCredentials;for(const[c,d]of this.headers)t.setRequestHeader(c,d);return this.isHttp&&"begin"in l&&"end"in l?(t.setRequestHeader("Range",`bytes=${l.begin}-${l.end-1}`),s.expectedStatus=Pu):s.expectedStatus=Qu,t.responseType="arraybuffer",Gl(l.onError,"Expected `onError` callback to be provided."),t.onerror=()=>{l.onError(t.status)},t.onreadystatechange=this.onStateChange.bind(this,e),t.onprogress=this.onProgress.bind(this,e),s.onHeadersReceived=l.onHeadersReceived,s.onDone=l.onDone,s.onError=l.onError,s.onProgress=l.onProgress,t.send(null),e}onProgress(l,t){var s;const e=this.pendingRequests[l];e&&((s=e.onProgress)==null||s.call(e,t))}onStateChange(l,t){const e=this.pendingRequests[l];if(!e)return;const s=e.xhr;if(s.readyState>=2&&e.onHeadersReceived&&(e.onHeadersReceived(),delete e.onHeadersReceived),s.readyState!==4||!(l in this.pendingRequests))return;if(delete this.pendingRequests[l],s.status===0&&this.isHttp){e.onError(s.status);return}const c=s.status||Qu;if(!(c===Qu&&e.expectedStatus===Pu)&&c!==e.expectedStatus){e.onError(s.status);return}const n=M1(s);if(c===Pu){const Z=s.getResponseHeader("Content-Range"),b=/bytes (\d+)-(\d+)\/(\d+)/.exec(Z);b?e.onDone({begin:parseInt(b[1],10),chunk:n}):(tl('Missing or invalid "Content-Range" header.'),e.onError(0))}else n?e.onDone({begin:0,chunk:n}):e.onError(s.status)}getRequestXhr(l){return this.pendingRequests[l].xhr}isPendingRequest(l){return l in this.pendingRequests}
3abortRequest(l){const t=this.pendingRequests[l].xhr;delete this.pendingRequests[l],t.abort()}}class Y1{constructor(l){this._source=l,this._manager=new p1(l),this._rangeChunkSize=l.rangeChunkSize,this._fullRequestReader=null,this._rangeRequestReaders=[]}_onRangeRequestReaderClosed(l){const t=this._rangeRequestReaders.indexOf(l);t>=0&&this._rangeRequestReaders.splice(t,1)}getFullReader(){return Gl(!this._fullRequestReader,"PDFNetworkStream.getFullReader can only be called once."),this._fullRequestReader=new y1(this._manager,this._source),this._fullRequestReader}getRangeReader(l,t){const e=new T1(this._manager,l,t);return e.onClosed=this._onRangeRequestReaderClosed.bind(this),this._rangeRequestReaders.push(e),e}cancelAllRequests(l){var t;(t=this._fullRequestReader)==null||t.cancel(l);for(const e of this._rangeRequestReaders.slice(0))e.cancel(l)}}class y1{constructor(l,t){this._manager=l,this._url=t.url,this._fullRequestId=l.request({onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._headersCapability=Promise.withResolvers(),this._disableRange=t.disableRange||!1,this._contentLength=t.length,this._rangeChunkSize=t.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!1,this._isRangeSupported=!1,this._cachedChunks=[],this._requests=[],this._done=!1,this._storedError=void 0,this._filename=null,this.onProgress=null}_onHeadersReceived(){const l=this._fullRequestId,t=this._manager.getRequestXhr(l);this._manager._responseOrigin=Gu(t.responseURL);const e=t.getAllResponseHeaders(),s=new Headers(e?e.trimStart().replace(/[^\S ]+$/,"").split(/[\r\n]+/).map(n=>{const[Z,...b]=n.split(": ");return[Z,b.join(": ")]}):[]),{allowRangeRequests:c,suggestedLength:d}=PX({responseHeaders:s,isHttp:this._manager.isHttp,rangeChunkSize:this._rangeChunkSize,disableRange:this._disableRange});c&&(this._isRangeSupported=!0),this._contentLength=d||this._contentLength,this._filename=HX(s),this._isRangeSupported&&this._manager.abortRequest(l),this._headersCapability.resolve()}_onDone(l){if(l&&(this._requests.length>0?this._requests.shift().resolve({value:l.chunk,done:!1}):this._cachedChunks.push(l.chunk)),this._done=!0,!(this._cachedChunks.length>0)){for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0}}_onError(l){this._storedError=bh(l,this._url),this._headersCapability.reject(this._storedError);for(const t of this._requests)t.reject(this._storedError);this._requests.length=0,this._cachedChunks.length=0}_onProgress(l){var t;(t=this.onProgress)==null||t.call(this,{loaded:l.loaded,total:l.lengthComputable?l.total:this._contentLength})}get filename(){return this._filename}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}get contentLength(){return this._contentLength}get headersReady(){return this._headersCapability.promise}async read(){if(await this._headersCapability.promise,this._storedError)throw this._storedError;if(this._cachedChunks.length>0)return{value:this._cachedChunks.shift(),done:!1};if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise}cancel(l){this._done=!0,this._headersCapability.reject(l);for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._fullRequestId)&&this._manager.abortRequest(this._fullRequestId),this._fullRequestReader=null}}class T1{constructor(l,t,e){this._manager=l,this._url=l.url,this._requestId=l.request({begin:t,end:e,onHeadersReceived:this._onHeadersReceived.bind(this),onDone:this._onDone.bind(this),onError:this._onError.bind(this),onProgress:this._onProgress.bind(this)}),this._requests=[],this._queuedChunk=null,this._done=!1,this._storedError=void 0,this.onProgress=null,this.onClosed=null}_onHeadersReceived(){var t;const l=Gu((t=this._manager.getRequestXhr(this._requestId))==null?void 0:t.responseURL);
3l!==this._manager._responseOrigin&&(this._storedError=new Error(`Expected range response-origin "${l}" to match "${this._manager._responseOrigin}".`),this._onError(0))}_close(){var l;(l=this.onClosed)==null||l.call(this,this)}_onDone(l){const t=l.chunk;this._requests.length>0?this._requests.shift().resolve({value:t,done:!1}):this._queuedChunk=t,this._done=!0;for(const e of this._requests)e.resolve({value:void 0,done:!0});this._requests.length=0,this._close()}_onError(l){this._storedError??(this._storedError=bh(l,this._url));for(const t of this._requests)t.reject(this._storedError);this._requests.length=0,this._queuedChunk=null}_onProgress(l){var t;this.isStreamingSupported||(t=this.onProgress)==null||t.call(this,{loaded:l.loaded})}get isStreamingSupported(){return!1}async read(){if(this._storedError)throw this._storedError;if(this._queuedChunk!==null){const t=this._queuedChunk;return this._queuedChunk=null,{value:t,done:!1}}if(this._done)return{value:void 0,done:!0};const l=Promise.withResolvers();return this._requests.push(l),l.promise}cancel(l){this._done=!0;for(const t of this._requests)t.resolve({value:void 0,done:!0});this._requests.length=0,this._manager.isPendingRequest(this._requestId)&&this._manager.abortRequest(this._requestId),this._close()}}const V1=/^[a-z][a-z0-9\-+.]+:/i;function L1(i){if(V1.test(i))return new URL(i);const l=process.getBuiltinModule("url");return new URL(l.pathToFileURL(i))}class I1{constructor(l){this.source=l,this.url=L1(l.url),Gl(this.url.protocol==="file:","PDFNodeStream only supports file:// URLs."),this._fullRequestReader=null,this._rangeRequestReaders=[]}get _progressiveDataLength(){var l;return((l=this._fullRequestReader)==null?void 0:l._loaded)??0}
3getFullReader(){return Gl(!this._fullRequestReader,"PDFNodeStream.getFullReader can only be called once."),this._fullRequestReader=new z1(this),this._fullRequestReader}getRangeReader(l,t){if(t<=this._progressiveDataLength)return null;const e=new w1(this,l,t);return this._rangeRequestReaders.push(e),e}cancelAllRequests(l){var t;(t=this._fullRequestReader)==null||t.cancel(l);for(const e of this._rangeRequestReaders.slice(0))e.cancel(l)}}class z1{constructor(l){this._url=l.url,this._done=!1,this._storedError=null,this.onProgress=null;const t=l.source;this._contentLength=t.length,this._loaded=0,this._filename=null,this._disableRange=t.disableRange||!1,this._rangeChunkSize=t.rangeChunkSize,!this._rangeChunkSize&&!this._disableRange&&(this._disableRange=!0),this._isStreamingSupported=!t.disableStream,this._isRangeSupported=!t.disableRange,this._readableStream=null,this._readCapability=Promise.withResolvers(),this._headersCapability=Promise.withResolvers();const e=process.getBuiltinModule("fs");e.promises.lstat(this._url).then(s=>{this._contentLength=s.size,this._setReadableStream(e.createReadStream(this._url)),this._headersCapability.resolve()},s=>{s.code==="ENOENT"&&(s=bh(0,this._url.href)),this._storedError=s,this._headersCapability.reject(s)})}get headersReady(){return this._headersCapability.promise}get filename(){return this._filename}get contentLength(){return this._contentLength}get isRangeSupported(){return this._isRangeSupported}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const l=this._readableStream.read();return l===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=l.length,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded,total:this._contentLength}),{value:new Uint8Array(l).buffer,done:!1})}cancel(l){if(!this._readableStream){this._error(l);return}this._readableStream.destroy(l)}_error(l){this._storedError=l,this._readCapability.resolve()}_setReadableStream(l){this._readableStream=l,l.on("readable",()=>{this._readCapability.resolve()}),l.on("end",()=>{l.destroy(),this._done=!0,this._readCapability.resolve()}),l.on("error",t=>{this._error(t)}),!this._isStreamingSupported&&this._isRangeSupported&&this._error(new Yd("streaming is disabled")),this._storedError&&this._readableStream.destroy(this._storedError)}}class w1{constructor(l,t,e){this._url=l.url,this._done=!1,this._storedError=null,this.onProgress=null,this._loaded=0,this._readableStream=null,this._readCapability=Promise.withResolvers();const s=l.source;this._isStreamingSupported=!s.disableStream;const c=process.getBuiltinModule("fs");this._setReadableStream(c.createReadStream(this._url,{start:t,end:e-1}))}get isStreamingSupported(){return this._isStreamingSupported}async read(){var e;if(await this._readCapability.promise,this._done)return{value:void 0,done:!0};if(this._storedError)throw this._storedError;const l=this._readableStream.read();return l===null?(this._readCapability=Promise.withResolvers(),this.read()):(this._loaded+=l.length,(e=this.onProgress)==null||e.call(this,{loaded:this._loaded}),{value:new Uint8Array(l).buffer,done:!1})}cancel(l){if(!this._readableStream){this._error(l);return}this._readableStream.destroy(l)}_error(l){this._storedError=l,this._readCapability.resolve()}_setReadableStream(l){this._readableStream=l,l.on("readable",()=>{this._readCapability.resolve()}),l.on("end",()=>{l.destroy(),this._done=!0,this._readCapability.resolve()}),l.on("error",t=>{this._error(t)}),this._storedError&&this._readableStream.destroy(this._storedError)}}const yb=Symbol("INITIAL_DATA");var Ve,am,$2;class _X{constructor(){L(this,am);L(this,Ve,Object.create(null))}get(l,t=null){if(t){const s=z(this,am,$2).call(this,l);return s.promise.then(()=>t(s.data)),null}const e=a(this,Ve)[l];if(!e||e.data===yb)throw new Error(`Requesting object that isn't resolved yet ${l}.`);return e.data}has(l){const t=a(this,Ve)[l];return!!t&&t.data!==yb}delete(l){const t=a(this,Ve)[l];
3return!t||t.data===yb?!1:(delete a(this,Ve)[l],!0)}resolve(l,t=null){const e=z(this,am,$2).call(this,l);e.data=t,e.resolve()}clear(){var l;for(const t in a(this,Ve)){const{data:e}=a(this,Ve)[t];(l=e==null?void 0:e.bitmap)==null||l.close()}p(this,Ve,Object.create(null))}*[Symbol.iterator](){for(const l in a(this,Ve)){const{data:t}=a(this,Ve)[l];t!==yb&&(yield[l,t])}}}Ve=new WeakMap,am=new WeakSet,$2=function(l){var t;return(t=a(this,Ve))[l]||(t[l]={...Promise.withResolvers(),data:yb})};const R1=1e5,wN=30;var Er,fc,Le,nm,Zm,Xa,Qi,bm,om,Ma,mm,zZ,Bc,wZ,hm,RZ,pa,um,Wm,SZ,Ya,Gm,xZ,gZ,pc,qX,$X,lW,Qe,$h,tW,lM,tM;const Ct=class Ct{constructor({textContentSource:l,container:t,viewport:e}){L(this,pc);L(this,fc,Promise.withResolvers());L(this,Le,null);L(this,nm,!1);L(this,Zm,!!((Er=globalThis.FontInspector)!=null&&Er.enabled));L(this,Xa,null);L(this,Qi,null);L(this,bm,0);L(this,om,0);L(this,Ma,null);L(this,mm,null);L(this,zZ,0);L(this,Bc,0);L(this,wZ,Object.create(null));L(this,hm,[]);L(this,RZ,null);L(this,pa,[]);L(this,um,new WeakMap);L(this,Wm,null);var Z;if(l instanceof ReadableStream)p(this,RZ,l);else if(typeof l=="object")p(this,RZ,new ReadableStream({start(b){b.enqueue(l),b.close()}}));else throw new Error('No "textContentSource" parameter specified.');p(this,Le,p(this,mm,t)),p(this,Bc,e.scale*Rs.pixelRatio),p(this,zZ,e.rotation),p(this,Qi,{div:null,properties:null,ctx:null});const{pageWidth:s,pageHeight:c,pageX:d,pageY:n}=e.rawDims;p(this,Wm,[1,0,0,-1,-d,n+c]),p(this,om,s),p(this,bm,c),z(Z=Ct,Qe,lM).call(Z),t.style.setProperty("--min-font-size",a(Ct,xZ)),cn(t,e),a(this,fc).promise.finally(()=>{a(Ct,gZ).delete(this),p(this,Qi,null),p(this,wZ,null)}).catch(()=>{})}static get fontFamilyMap(){const{isWindows:l,isFirefox:t}=Tt.platform;return el(this,"fontFamilyMap",new Map([["sans-serif",`${l&&t?"Calibri, ":""}sans-serif`],["monospace",`${l&&t?"Lucida Console, ":""}monospace`]]))}render(){const l=()=>{a(this,Ma).read().then(({value:t,done:e})=>{if(e){a(this,fc).resolve();return}a(this,Xa)??p(this,Xa,t.lang),Object.assign(a(this,wZ),t.styles),z(this,pc,qX).call(this,t.items),l()},a(this,fc).reject)};return p(this,Ma,a(this,RZ).getReader()),a(Ct,gZ).add(this),l(),a(this,fc).promise}update({viewport:l,onBefore:t=null}){var c;const e=l.scale*Rs.pixelRatio,s=l.rotation;if(s!==a(this,zZ)&&(t==null||t(),p(this,zZ,s),cn(a(this,mm),{rotation:s})),e!==a(this,Bc)){t==null||t(),p(this,Bc,e);const d={div:null,properties:null,ctx:z(c=Ct,Qe,$h).call(c,a(this,Xa))};for(const n of a(this,pa))d.properties=a(this,um).get(n),d.div=n,z(this,pc,lW).call(this,d)}}cancel(){var t;const l=new Yd("TextLayer task cancelled.");(t=a(this,Ma))==null||t.cancel(l).catch(()=>{}),p(this,Ma,null),a(this,fc).reject(l)}get textDivs(){return a(this,pa)}get textContentItemsStr(){return a(this,hm)}static cleanup(){if(!(a(this,gZ).size>0)){a(this,SZ).clear();for(const{canvas:l}of a(this,Ya).values())l.remove();a(this,Ya).clear()}}};fc=new WeakMap,Le=new WeakMap,nm=new WeakMap,Zm=new WeakMap,Xa=new WeakMap,Qi=new WeakMap,bm=new WeakMap,om=new WeakMap,Ma=new WeakMap,mm=new WeakMap,zZ=new WeakMap,Bc=new WeakMap,wZ=new WeakMap,hm=new WeakMap,RZ=new WeakMap,pa=new WeakMap,um=new WeakMap,Wm=new WeakMap,SZ=new WeakMap,Ya=new WeakMap,Gm=new WeakMap,xZ=new WeakMap,gZ=new WeakMap,pc=new WeakSet,qX=function(l){var s,c;if(a(this,nm))return;(c=a(this,Qi)).ctx??(c.ctx=z(s=Ct,Qe,$h).call(s,a(this,Xa)));const t=a(this,pa),e=a(this,hm);for(const d of l){if(t.length>R1){tl("Ignoring additional textDivs for performance reasons."),p(this,nm,!0);return}if(d.str===void 0){if(d.type==="beginMarkedContentProps"||d.type==="beginMarkedContent"){const n=a(this,Le);p(this,Le,document.createElement("span")),a(this,Le).classList.add("markedContent"),d.id&&a(this,Le).setAttribute("id",`${d.id}`),n.append(a(this,Le))}else d.type==="endMarkedContent"&&p(this,Le,a(this,Le).parentNode);continue}e.push(d.str),z(this,pc,$X).call(this,d)}},$X=function(l){var r;const t=document.createElement("span"),e={angle:0,canvasWidth:0,hasText:l.str!=="",hasEOL:l.hasEOL,fontSize:0};a(this,pa).push(t);const s=Q.transform(a(this,Wm),l.transform);let c=Math.atan2(s[1],s[0]);const d=a(this,wZ)[l.fontName];d.vertical&&(c+=Math.PI/2);let n=a(this,Zm)&&d.fontSubstitution||d.fontFamily;n=Ct.fontFamilyMap.get(n)||n;const Z=Math.hypot(s[2],s[3]),b=Z*z(r=Ct,Qe,tM).call(r,n,d,a(this,Xa));let o,m;c===0?(o=s[4],m=s[5]-b):(o=s[4]+b*Math.sin(c),m=s[5]-b*Math.cos(c));const h=t.style;h.left=`${(100*o/a(this,om)).toFixed(2)}%`,h.top=`${(100*m/a(this,bm)).toFixed(2)}%`,h.setProperty("--font-height",`${Z.toFixed(2)}px`),h.fontFamily=n,e.fontSize=Z,t.setAttribute("role","presentation"),t.textContent=l.str,t.dir=l.dir,a(this,Zm)&&(t.dataset.fontName=d.fontSubstitutionLoadedName||l.fontName),c!==0&&(e.angle=c*(180/Math.PI));let W=!1;if(l.str.length>1)W=!0;else if(l.str!==" "&&l.transform[0]!==l.transform[3]){const N=Math.abs(l.transform[0]),M=Math.abs(l.transform[3]);N!==M&&Math.max(N,M)/Math.min(N,M)>1.5&&(W=!0)}if(W&&(e.canvasWidth=d.vertical?l.height:l.width),a(this,um).set(t,e),a(this,Qi).div=t,a(this,Qi).properties=e,z(this,pc,lW).call(this,a(this,Qi)),e.hasText&&a(this,Le).append(t),e.hasEOL){const N=document.createElement("br");N.setAttribute("role","presentation"),a(this,Le).append(N)}},lW=function(l){var d;const{div:t,properties:e,ctx:s}=l,{style:c}=t;if(e.canvasWidth!==0&&e.hasText){const{fontFamily:n}=c,{canvasWidth:Z,fontSize:b}=e;z(d=Ct,Qe,tW).call(d,s,b*a(this,Bc),n);const{width:o}=s.measureText(t.textContent);o>0&&c.setProperty("--scale-x",Z*a(this,Bc)/o)}e.angle!==0&&c.setProperty("--rotate",`${e.angle}deg`)},Qe=new WeakSet,$h=function(l=null){let t=a(this,Ya).get(l||(l=""));if(!t){const e=document.createElement("canvas");e.className="hiddenCanvasElement",e.lang=l,document.body.append(e),t=e.getContext("2d",{alpha:!1,willReadFrequently:!0}),a(this,Ya).set(l,t),a(this,Gm).set(t,{size:0,family:""})}return t},tW=function(l,t,e){const s=a(this,Gm).get(l);t===s.size&&e===s.family||(l.font=`${t}px ${e}`,s.size=t,s.family=e)},lM=function(){if(a(this,xZ)!==null)return;const l=document.createElement("div");l.style.opacity=0,l.style.lineHeight=1,l.style.fontSize="1px",l.style.position="absolute",l.textContent="X",document.body.append(l),p(this,xZ,l.getBoundingClientRect().height),l.remove()},tM=function(l,t,e){const s=a(this,SZ).get(l);if(s)return s;const c=z(this,Qe,$h).call(this,e);c.canvas.width=c.canvas.height=wN,z(this,Qe,tW).call(this,c,wN,l);const d=c.measureText(""),n=d.fontBoundingBoxAscent,Z=Math.abs(d.fontBoundingBoxDescent);c.canvas.width=c.canvas.height=0;let b=.8;return n?b=n/(n+Z):(Tt.platform.isFirefox&&tl("Enable the `dom.textMetrics.fontBoundingBox.enabled` preference in `about:config` to improve TextLayer rendering."),t.ascent?b=t.ascent:t.descent&&(b=1+t.descent)),a(this,SZ).set(l,b),b},L(Ct,Qe),L(Ct,SZ,new Map),L(Ct,Ya,new Map),L(Ct,Gm,new WeakMap),L(Ct,xZ,null),L(Ct,gZ,new Set);let ub=Ct;const S1=100;function eM(i={}){typeof i=="string"||i instanceof URL?i={url:i}:(i instanceof ArrayBuffer||ArrayBuffer.isView(i))&&(i={data:i});const l=new eW,{docId:t}=l,e=i.url?F5(i.url):null,s=i.data?O5(i.data):null,c=i.httpHeaders||null,d=i.withCredentials===!0,n=i.password??null,Z=i.range instanceof sM?i.range:null,b=Number.isInteger(i.rangeChunkSize)&&i.rangeChunkSize>0?i.rangeChunkSize:2**16;let o=i.worker instanceof io?i.worker:null;const m=i.verbosity,h=typeof i.docBaseUrl=="string"&&!Wu(i.docBaseUrl)?i.docBaseUrl:null,W=Yh(i.cMapUrl),r=i.cMapPacked!==!1,N=i.CMapReaderFactory||(ce?H5:WN),M=Yh(i.iccUrl),X=Yh(i.standardFontDataUrl),y=i.StandardFontDataFactory||(ce?f5:GN),Y=Yh(i.wasmUrl),T=i.WasmFactory||(ce?B5:NN),V=i.stopAtErrors!==!0,I=Number.isInteger(i.maxImageSize)&&i.maxImageSize>-1?i.maxImageSize:-1,w=i.isEvalSupported!==!1,R=typeof i.isOffscreenCanvasSupported=="boolean"?i.isOffscreenCanvasSupported:!ce,S=typeof i.isImageDecoderSupported=="boolean"?i.isImageDecoderSupported:!ce&&(Tt.platform.isFirefox||!globalThis.chrome),x=Number.isInteger(i.canvasMaxAreaInBytes)?i.canvasMaxAreaInBytes:-1,g=typeof i.disableFontFace=="boolean"?i.disableFontFace:ce,C=i.fontExtraProperties===!0,D=i.enableXfa===!0,J=i.ownerDocument||globalThis.document,k=i.disableRange===!0,O=i.disableStream===!0,j=i.disableAutoFetch===!0,F=i.pdfBug===!0,U=i.CanvasFactory||(ce?P5:K5),v=i.FilterFactory||(ce?Q5:v5),A=i.enableHWA===!0,q=i.useWasm!==!1,_=Z?Z.length:i.length??NaN,al=typeof i.useSystemFonts=="boolean"?i.useSystemFonts:!ce&&!g,nl=typeof i.useWorkerFetch=="boolean"?i.useWorkerFetch:!!(N===WN&&y===GN&&T===NN&&W&&X&&Y&&Sb(W,document.baseURI)&&Sb(X,document.baseURI)&&Sb(Y,document.baseURI)),B=null;o5(m);const sl={canvasFactory:new U({ownerDocument:J,enableHWA:A}),filterFactory:new v({docId:t,ownerDocument:J}),cMapReaderFactory:nl?null:new N({baseUrl:W,isCompressed:r}),standardFontDataFactory:nl?null:new y({baseUrl:X}),wasmFactory:nl?null:new T({baseUrl:Y})};o||(o=io.create({verbosity:m,port:Zi.workerPort}),l._worker=o);const Tl={docId:t,apiVersion:"5.4.530",data:s,password:n,disableAutoFetch:j,rangeChunkSize:b,length:_,docBaseUrl:h,enableXfa:D,evaluatorOptions:{maxImageSize:I,disableFontFace:g,ignoreErrors:V,isEvalSupported:w,isOffscreenCanvasSupported:R,isImageDecoderSupported:S,canvasMaxAreaInBytes:x,fontExtraProperties:C,useSystemFonts:al,useWasm:q,useWorkerFetch:nl,cMapUrl:W,iccUrl:M,standardFontDataUrl:X,wasmUrl:Y}},vl={ownerDocument:J,pdfBug:F,styleElement:B,loadingParams:{disableAutoFetch:j,enableXfa:D}};return o.promise.then(function(){if(l.destroyed)throw new Error("Loading aborted");if(o.destroyed)throw new Error("Worker was destroyed");
3const Hl=o.messageHandler.sendWithPromise("GetDocRequest",Tl,s?[s.buffer]:null);let ul;if(Z)ul=new h1(Z,{disableRange:k,disableStream:O});else if(!s){if(!e)throw new Error("getDocument - no `url` parameter provided.");const nt=Sb(e)?N1:ce?I1:Y1;ul=new nt({url:e,length:_,httpHeaders:c,withCredentials:d,rangeChunkSize:b,disableRange:k,disableStream:O})}return Hl.then(nt=>{if(l.destroyed)throw new Error("Loading aborted");if(o.destroyed)throw new Error("Worker was destroyed");const ht=new Ob(t,nt,o.port),Xi=new j1(ht,l,ul,vl,sl,A);l._transport=Xi,ht.send("Ready",null)})}).catch(l._capability.reject),l}var eu;const su=class su{constructor(){E(this,"_capability",Promise.withResolvers());E(this,"_transport",null);E(this,"_worker",null);E(this,"docId",`d${rt(su,eu)._++}`);E(this,"destroyed",!1);E(this,"onPassword",null);E(this,"onProgress",null)}get promise(){return this._capability.promise}async destroy(){var l,t,e,s;this.destroyed=!0;try{(l=this._worker)!=null&&l.port&&(this._worker._pendingDestroy=!0),await((t=this._transport)==null?void 0:t.destroy())}catch(c){throw(e=this._worker)!=null&&e.port&&delete this._worker._pendingDestroy,c}this._transport=null,(s=this._worker)==null||s.destroy(),this._worker=null}async getData(){return this._transport.getData()}};eu=new WeakMap,L(su,eu,0);let eW=su;var ya,Nm,rm,Xm,Mm;class sM{constructor(l,t,e=!1,s=null){L(this,ya,Promise.withResolvers());L(this,Nm,[]);L(this,rm,[]);L(this,Xm,[]);L(this,Mm,[]);this.length=l,this.initialData=t,this.progressiveDone=e,this.contentDispositionFilename=s}addRangeListener(l){a(this,Mm).push(l)}addProgressListener(l){a(this,Xm).push(l)}addProgressiveReadListener(l){a(this,rm).push(l)}addProgressiveDoneListener(l){a(this,Nm).push(l)}onDataRange(l,t){for(const e of a(this,Mm))e(l,t)}onDataProgress(l,t){a(this,ya).promise.then(()=>{for(const e of a(this,Xm))e(l,t)})}onDataProgressiveRead(l){a(this,ya).promise.then(()=>{for(const t of a(this,rm))t(l)})}onDataProgressiveDone(){a(this,ya).promise.then(()=>{for(const l of a(this,Nm))l()})}transportReady(){a(this,ya).resolve()}requestDataRange(l,t){Jl("Abstract method PDFDataRangeTransport.requestDataRange")}abort(){}}ya=new WeakMap,Nm=new WeakMap,rm=new WeakMap,Xm=new WeakMap,Mm=new WeakMap;class x1{constructor(l,t){this._pdfInfo=l,this._transport=t}get annotationStorage(){return this._transport.annotationStorage}get canvasFactory(){return this._transport.canvasFactory}get filterFactory(){return this._transport.filterFactory}get numPages(){return this._pdfInfo.numPages}get fingerprints(){return this._pdfInfo.fingerprints}get isPureXfa(){return el(this,"isPureXfa",!!this._transport._htmlForXfa)}get allXfaHtml(){return this._transport._htmlForXfa}getPage(l){return this._transport.getPage(l)}getPageIndex(l){return this._transport.getPageIndex(l)}getDestinations(){return this._transport.getDestinations()}getDestination(l){return this._transport.getDestination(l)}getPageLabels(){return this._transport.getPageLabels()}getPageLayout(){return this._transport.getPageLayout()}getPageMode(){return this._transport.getPageMode()}getViewerPreferences(){return this._transport.getViewerPreferences()}getOpenAction(){return this._transport.getOpenAction()}getAttachments(){return this._transport.getAttachments()}getAnnotationsByType(l,t){return this._transport.getAnnotationsByType(l,t)}getJSActions(){return this._transport.getDocJSActions()}getOutline(){return this._transport.getOutline()}getOptionalContentConfig({intent:l="display"}={}){const{renderingIntent:t}=this._transport.getRenderingIntent(l);return this._transport.getOptionalContentConfig(t)}getPermissions(){return this._transport.getPermissions()}getMetadata(){return this._transport.getMetadata()}getMarkInfo(){return this._transport.getMarkInfo()}getData(){return this._transport.getData()}saveDocument(){return this._transport.saveDocument()}extractPages(l){return this._transport.extractPages(l)}getDownloadInfo(){return this._transport.downloadInfoCapability.promise}cleanup(l=!1){return this._transport.startCleanup(l||this.isPureXfa)}destroy(){return this.loadingTask.destroy()}cachedPageNumber(l){return this._transport.cachedPageNumber(l)}get loadingParams(){return this._transport.loadingParams}get loadingTask(){return this._transport.loadingTask}getFieldObjects(){return this._transport.getFieldObjects()}hasJSActions(){return this._transport.hasJSActions()}getCalculationOrderIds(){return this._transport.getCalculationOrderIds()}}var Pi,Ta,vb;class g1{constructor(l,t,e,s=!1){L(this,Ta);L(this,Pi,!1);this._pageIndex=l,this._pageInfo=t,this._transport=e,this._stats=s?new nN:null,this._pdfBug=s,this.commonObjs=e.commonObjs,this.objs=new _X,this._intentStates=new Map,this.destroyed=!1,this.recordedBBoxes=null}get pageNumber(){return this._pageIndex+1}get rotate(){return this._pageInfo.rotate}get ref(){return this._pageInfo.ref}get userUnit(){return this._pageInfo.userUnit}get view(){return this._pageInfo.view}getViewport({scale:l,rotation:t=this.rotate,offsetX:e=0,offsetY:s=0,dontFlip:c=!1}={}){return new ah({viewBox:this.view,userUnit:this.userUnit,scale:l,rotation:t,offsetX:e,offsetY:s,dontFlip:c})}getAnnotations({intent:l="display"}={}){const{renderingIntent:t}
3=this._transport.getRenderingIntent(l);return this._transport.getAnnotations(this._pageIndex,t)}getJSActions(){return this._transport.getPageJSActions(this._pageIndex)}get filterFactory(){return this._transport.filterFactory}get isPureXfa(){return el(this,"isPureXfa",!!this._transport._htmlForXfa)}async getXfa(){var l;return((l=this._transport._htmlForXfa)==null?void 0:l.children[this._pageIndex])||null}render({canvasContext:l,canvas:t=l.canvas,viewport:e,intent:s="display",annotationMode:c=Ls.ENABLE,transform:d=null,background:n=null,optionalContentConfigPromise:Z=null,annotationCanvasMap:b=null,pageColors:o=null,printAnnotationStorage:m=null,isEditing:h=!1,recordOperations:W=!1,operationsFilter:r=null}){var S,x,g;(S=this._stats)==null||S.time("Overall");const N=this._transport.getRenderingIntent(s,c,m,h),{renderingIntent:M,cacheKey:X}=N;p(this,Pi,!1),Z||(Z=this._transport.getOptionalContentConfig(M));let y=this._intentStates.get(X);y||(y=Object.create(null),this._intentStates.set(X,y)),y.streamReaderCancelTimeout&&(clearTimeout(y.streamReaderCancelTimeout),y.streamReaderCancelTimeout=null);const Y=!!(M&ke.PRINT);y.displayReadyCapability||(y.displayReadyCapability=Promise.withResolvers(),y.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(x=this._stats)==null||x.time("Page Request"),this._pumpOperatorList(N));const T=!!(this._pdfBug&&((g=globalThis.StepperManager)!=null&&g.enabled)),V=!this.recordedBBoxes&&(W||T),I=C=>{var D,J;if(y.renderTasks.delete(w),V){const k=(D=w.gfx)==null?void 0:D.dependencyTracker.take();k&&(w.stepper&&w.stepper.setOperatorBBoxes(k,w.gfx.dependencyTracker.takeDebugMetadata()),W&&(this.recordedBBoxes=k))}Y&&p(this,Pi,!0),z(this,Ta,vb).call(this),C?(w.capability.reject(C),this._abortOperatorList({intentState:y,reason:C instanceof Error?C:new Error(C)})):w.capability.resolve(),this._stats&&(this._stats.timeEnd("Rendering"),this._stats.timeEnd("Overall"),(J=globalThis.Stats)!=null&&J.enabled&&globalThis.Stats.add(this.pageNumber,this._stats))},w=new sW({callback:I,params:{canvas:t,canvasContext:l,dependencyTracker:V?new _5(t,y.operatorList.length,T):null,viewport:e,transform:d,background:n},objs:this.objs,commonObjs:this.commonObjs,annotationCanvasMap:b,operatorList:y.operatorList,pageIndex:this._pageIndex,canvasFactory:this._transport.canvasFactory,filterFactory:this._transport.filterFactory,useRequestAnimationFrame:!Y,pdfBug:this._pdfBug,pageColors:o,enableHWA:this._transport.enableHWA,operationsFilter:r});(y.renderTasks||(y.renderTasks=new Set)).add(w);const R=w.task;return Promise.all([y.displayReadyCapability.promise,Z]).then(([C,D])=>{var J;if(this.destroyed){I();return}if((J=this._stats)==null||J.time("Rendering"),!(D.renderingIntent&M))throw new Error("Mu
3st use the same `intent`-argument when calling the `PDFPageProxy.render` and `PDFDocumentProxy.getOptionalContentConfig` methods.");w.initializeGraphics({transparency:C,optionalContentConfig:D}),w.operatorListChanged()}).catch(I),R}getOperatorList({intent:l="display",annotationMode:t=Ls.ENABLE,printAnnotationStorage:e=null,isEditing:s=!1}={}){var b;function c(){n.operatorList.lastChunk&&(n.opListReadCapability.resolve(n.operatorList),n.renderTasks.delete(Z))}const d=this._transport.getRenderingIntent(l,t,e,s,!0);let n=this._intentStates.get(d.cacheKey);n||(n=Object.create(null),this._intentStates.set(d.cacheKey,n));let Z;return n.opListReadCapability||(Z=Object.create(null),Z.operatorListChanged=c,n.opListReadCapability=Promise.withResolvers(),(n.renderTasks||(n.renderTasks=new Set)).add(Z),n.operatorList={fnArray:[],argsArray:[],lastChunk:!1,separateAnnots:null},(b=this._stats)==null||b.time("Page Request"),this._pumpOperatorList(d)),n.opListReadCapability.promise}streamTextContent({includeMarkedContent:l=!1,disableNormalization:t=!1}={}){return this._transport.messageHandler.sendWithStream("GetTextContent",{pageIndex:this._pageIndex,includeMarkedContent:l===!0,disableNormalization:t===!0},{highWaterMark:100,size(s){return s.items.length}})}getTextContent(l={}){if(this._transport._htmlForXfa)return this.getXfa().then(e=>so.textContent(e));const t=this.streamTextContent(l);return new Promise(function(e,s){function c(){d.read().then(function({value:Z,done:b}){if(b){e(n);return}n.lang??(n.lang=Z.lang),Object.assign(n.styles,Z.styles),n.items.push(...Z.items),c()},s)}const d=t.getReader(),n={items:[],styles:Object.create(null),lang:null};c()})}getStructTree(){return this._transport.getStructTree(this._pageIndex)}_destroy(){this.destroyed=!0;const l=[];for(const t of this._intentStates.values())if(this._abortOperatorList({intentState:t,reason:new Error("Page was destroyed."),force:!0}),!t.opListReadCapability)for(const e of t.renderTasks)l.push(e.completed),e.cancel();return this.objs.clear(),p(this,Pi,!1),Promise.all(l)}cleanup(l=!1){p(this,Pi,!0);const t=z(this,Ta,vb).call(this);return l&&t&&this._stats&&(this._stats=new nN),t}_startRenderPage(l,t){var s,c;const e=this._intentStates.get(t);e&&((s=this._stats)==null||s.timeEnd("Page Request"),(c=e.displayReadyCapability)==null||c.resolve(l))}_renderPageChunk(l,t){for(let e=0,s=l.length;e<s;e++)t.operatorList.fnArray.push(l.fnArray[e]),t.operatorList.argsArray.push(l.argsArray[e]);t.operatorList.lastChunk=l.lastChunk,t.operatorList.separateAnnots=l.separateAnnots;for(const e of t.renderTasks)e.operatorListChanged();l.lastChunk&&z(this,Ta,vb).call(this)}_pumpOperatorList({renderingIntent:l,cacheKey:t,annotationStorageSerializable:e,modifiedIds:s}){const{map:c,transfer:d}=e,Z=this._transport.messageHandler.sendWithStream("GetOperatorList",{pageIndex:this._pageIndex,intent:l,cacheKey:t,annotationStorage:c,modifiedIds:s},d).getReader(),b=this._intentStates.get(t);b.streamReader=Z;const o=()=>{Z.read().then(({value:m,done:h})=>{if(h){b.streamReader=null;return}this._transport.destroyed||(this._renderPageChunk(m,b),o())},m=>{if(b.streamReader=null,!this._transport.destroyed){if(b.operatorList){b.operatorList.lastChunk=!0;for(const h of b.renderTasks)h.operatorListChanged();z(this,Ta,vb).call(this)}if(b.displayReadyCapability)b.displayReadyCapability.reject(m);else if(b.opListReadCapability)b.opListReadCapability.reject(m);else throw m}})};o()}_abortOperatorList({intentState:l,reason:t,force:e=!1}){if(l.streamReader){if(l.streamReaderCancelTimeout&&(clearTimeout(l.streamReaderCancelTimeout),l.streamReaderCancelTimeout=null),!e){if(l.renderTasks.size>0)return;if(t instanceof uu){let s=S1;t.extraDelay>0&&t.extraDelay<1e3&&(s+=t.extraDelay),l.streamReaderCancelTimeout=setTimeout(()=>{l.streamReaderCancelTimeout=null,this._abortOperatorList({intentState:l,reason:t,force:!0})},s);return}}if(l.streamReader.cancel(new Yd(t.message)).catch(()=>{}),l.streamReader=null,!this._transport.destroyed){for(const[s,c]of this._intentStates)if(c===l){this._intentStates.delete(s);break}this.cleanup()}}}get stats(){return this._stats}}Pi=new WeakMap,Ta=new WeakSet,vb=function(){if(!a(this,Pi)||this.destroyed)return!1;for(const{renderTasks:l,operatorList:t}of this._intentStates.values())if(l.size>0||!t.lastChunk)return!1;return this._intentStates.clear(),this.objs.clear(),p(this,Pi,!1),!0};var Ac,Xs,Hi,Va,iu,La,Ia,ae,l0,iM,cM,Qb,jZ,t0;const fl=class fl{constructor({name:l=null,port:t=null,verbosity:e=m5()}={}){L(this,ae);L(this,Ac,Promise.withResolvers());L(this,Xs,null);L(this,Hi,null);L(this,Va,null);if(this.name=l,this.destroyed=!1,this.verbosity=e,t){if(a(fl,Ia).has(t))throw new Error("Cannot use more than one PDFWorker per port.");a(fl,Ia).set(t,this),z(this,ae,iM).call(this,t)}else z(this,ae,cM).call(this)}get promise(){return a(this,Ac).promise}get port(){return a(this,Hi)}get messageHandler(){return a(this,Xs)}destroy(){var l,t;this.destroyed=!0,(l=a(this,Va))==null||l.terminate(),p(this,Va,null),a(fl,Ia).delete(a(this,Hi)),p(this,Hi,null),(t=a(this,Xs))==null||t.destroy(),p(this,Xs,null)}static create(l){const t=a(this,Ia).get(l==null?void 0:l.port);
3if(t){if(t._pendingDestroy)throw new Error("PDFWorker.create - the worker is being destroyed.\nPlease remember to await `PDFDocumentLoadingTask.destroy()`-calls.");return t}return new fl(l)}static get workerSrc(){if(Zi.workerSrc)return Zi.workerSrc;throw new Error('No "GlobalWorkerOptions.workerSrc" specified.')}static get _setupFakeWorkerGlobal(){return el(this,"_setupFakeWorkerGlobal",(async()=>a(this,jZ,t0)?a(this,jZ,t0):(await import(this.workerSrc)).WorkerMessageHandler)())}};Ac=new WeakMap,Xs=new WeakMap,Hi=new WeakMap,Va=new WeakMap,iu=new WeakMap,La=new WeakMap,Ia=new WeakMap,ae=new WeakSet,l0=function(){a(this,Ac).resolve(),a(this,Xs).send("configure",{verbosity:this.verbosity})},iM=function(l){p(this,Hi,l),p(this,Xs,new Ob("main","worker",l)),a(this,Xs).on("ready",()=>{}),z(this,ae,l0).call(this)},cM=function(){if(a(fl,La)||a(fl,jZ,t0)){z(this,ae,Qb).call(this);return}let{workerSrc:l}=fl;try{fl._isSameOrigin(window.location,l)||(l=fl._createCDNWrapper(new URL(l,window.location).href));const t=new Worker(l,{type:"module"}),e=new Ob("main","worker",t),s=()=>{c.abort(),e.destroy(),t.terminate(),this.destroyed?a(this,Ac).reject(new Error("Worker was destroyed")):z(this,ae,Qb).call(this)},c=new AbortController;t.addEventListener("error",()=>{a(this,Va)||s()},{signal:c.signal}),e.on("test",n=>{if(c.abort(),this.destroyed||!n){s();return}p(this,Xs,e),p(this,Hi,t),p(this,Va,t),z(this,ae,l0).call(this)}),e.on("ready",n=>{if(c.abort(),this.destroyed){s();return}try{d()}catch{z(this,ae,Qb).call(this)}});const d=()=>{const n=new Uint8Array;e.send("test",n,[n.buffer])};d();return}catch{hu("The worker has been disabled.")}z(this,ae,Qb).call(this)},Qb=function(){a(fl,La)||(tl("Setting up fake worker."),p(fl,La,!0)),fl._setupFakeWorkerGlobal.then(l=>{if(this.destroyed){a(this,Ac).reject(new Error("Worker was destroyed"));return}const t=new E5;p(this,Hi,t);const e=`fake${rt(fl,iu)._++}`,s=new Ob(e+"_worker",e,t);l.setup(s,t),p(this,Xs,new Ob(e,e+"_worker",t)),z(this,ae,l0).call(this)}).catch(l=>{a(this,Ac).reject(new Error(`Setting up fake worker failed: "${l.message}".`))})},jZ=new WeakSet,t0=function(){var l;try{return((l=globalThis.pdfjsWorker)==null?void 0:l.WorkerMessageHandler)||null}catch{return null}},L(fl,jZ),L(fl,iu,0),L(fl,La,!1),L(fl,Ia,new WeakMap),ce&&(p(fl,La,!0),Zi.workerSrc||(Zi.workerSrc="./pdf.worker.mjs")),fl._isSameOrigin=(l,t)=>{const e=URL.parse(l);if(!(e!=null&&e.origin)||e.origin==="null")return!1;const s=new URL(t,e);return e.origin===s.origin},fl._createCDNWrapper=l=>{const t=`await import("${l}");`;return URL.createObjectURL(new Blob([t],{type:"text/javascript"}))},fl.fromPort=l=>{if(T5("`PDFWorker.fromPort` - please use `PDFWorker.create` instead."),!(l!=null&&l.port))throw new Error("PDFWorker.fromPort - invalid method signature.");return fl.create(l)};let io=fl;var fi,qs,DZ,CZ,Bi,za,Pb;class j1{constructor(l,t,e,s,c,d){L(this,za);L(this,fi,new Map);L(this,qs,new Map);L(this,DZ,new Map);L(this,CZ,new Map);L(this,Bi,null);this.messageHandler=l,this.loadingTask=t,this.commonObjs=new _X,this.fontLoader=new D5({ownerDocument:s.ownerDocument,styleElement:s.styleElement}),this.loadingParams=s.loadingParams,this._params=s,this.canvasFactory=c.canvasFactory,this.filterFactory=c.filterFactory,this.cMapReaderFactory=c.cMapReaderFactory,this.standardFontDataFactory=c.standardFontDataFactory,this.wasmFactory=c.wasmFactory,this.destroyed=!1,this.destroyCapability=null,this._networkStream=e,this._fullReader=null,this._lastProgress=null,this.downloadInfoCapability=Promise.withResolvers(),this.enableHWA=d,this.setupMessageHandler()}get annotationStorage(){return el(this,"annotationStorage",new ZG)}getRenderingIntent(l,t=Ls.ENABLE,e=null,s=!1,c=!1){let d=ke.DISPLAY,n=O2;switch(l){case"any":d=ke.ANY;break;case"display":break;case"print":d=ke.PRINT;break;default:tl(`getRenderingIntent - invalid intent: ${l}`)}const Z=d&ke.PRINT&&e instanceof DX?e:this.annotationStorage;switch(t){case Ls.DISABLE:d+=ke.ANNOTATIONS_DISABLE;break;case Ls.ENABLE:break;case Ls.ENABLE_FORMS:d+=ke.ANNOTATIONS_FORMS;break;case Ls.ENABLE_STORAGE:d+=ke.ANNOTATIONS_STORAGE,n=Z.serializable;break;default:tl(`getRenderingIntent - invalid annotationMode: ${t}`)}
3s&&(d+=ke.IS_EDITING),c&&(d+=ke.OPLIST);const{ids:b,hash:o}=Z.modifiedIds,m=[d,n.hash,o];return{renderingIntent:d,cacheKey:m.join("_"),annotationStorageSerializable:n,modifiedIds:b}}destroy(){var e;if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=Promise.withResolvers(),(e=a(this,Bi))==null||e.reject(new Error("Worker was destroyed during onPassword callback"));const l=[];for(const s of a(this,qs).values())l.push(s._destroy());a(this,qs).clear(),a(this,DZ).clear(),a(this,CZ).clear(),this.hasOwnProperty("annotationStorage")&&this.annotationStorage.resetModified();const t=this.messageHandler.sendWithPromise("Terminate",null);return l.push(t),Promise.all(l).then(()=>{var s,c;this.commonObjs.clear(),this.fontLoader.clear(),a(this,fi).clear(),this.filterFactory.destroy(),ub.cleanup(),(s=this._networkStream)==null||s.cancelAllRequests(new Yd("Worker was terminated.")),(c=this.messageHandler)==null||c.destroy(),this.messageHandler=null,this.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise}setupMessageHandler(){const{messageHandler:l,loadingTask:t}=this;l.on("GetReader",(e,s)=>{Gl(this._networkStream,"GetReader - no `IPDFStream` instance available."),this._fullReader=this._networkStream.getFullReader(),this._fullReader.onProgress=c=>{this._lastProgress={loaded:c.loaded,total:c.total}},s.onPull=()=>{this._fullReader.read().then(function({value:c,done:d}){if(d){s.close();return}Gl(c instanceof ArrayBuffer,"GetReader - expected an ArrayBuffer."),s.enqueue(new Uint8Array(c),1,[c])}).catch(c=>{s.error(c)})},s.onCancel=c=>{this._fullReader.cancel(c),s.ready.catch(d=>{if(!this.destroyed)throw d})}}),l.on("ReaderHeadersReady",async e=>{var n;await this._fullReader.headersReady;const{isStreamingSupported:s,isRangeSupported:c,contentLength:d}=this._fullReader;return(!s||!c)&&(this._lastProgress&&((n=t.onProgress)==null||n.call(t,this._lastProgress)),this._fullReader.onProgress=Z=>{var b;(b=t.onProgress)==null||b.call(t,{loaded:Z.loaded,total:Z.total})}),{isStreamingSupported:s,isRangeSupported:c,contentLength:d}}),l.on("GetRangeReader",(e,s)=>{Gl(this._networkStream,"GetRangeReader - no `IPDFStream` instance available.");const c=this._networkStream.getRangeReader(e.begin,e.end);if(!c){s.close();return}s.onPull=()=>{c.read().then(function({value:d,done:n}){if(n){s.close();return}Gl(d instanceof ArrayBuffer,"GetRangeReader - expected an ArrayBuffer."),s.enqueue(new Uint8Array(d),1,[d])}).catch(d=>{s.error(d)})},s.onCancel=d=>{c.cancel(d),s.ready.catch(n=>{if(!this.destroyed)throw n})}}),l.on("GetDoc",({pdfInfo:e})=>{this._numPages=e.numPages,this._htmlForXfa=e.htmlForXfa,delete e.htmlForXfa,t._capability.resolve(new x1(e,this))}),l.on("DocException",e=>{t._capability.reject(be(e))}),l.on("PasswordRequest",e=>{p(this,Bi,Promise.withResolvers());try{if(!t.onPassword)throw be(e);const s=c=>{c instanceof Error?a(this,Bi).reject(c):a(this,Bi).resolve({password:c})};t.onPassword(s,e.code)}catch(s){a(this,Bi).reject(s)}return a(this,Bi).promise}),l.on("DataLoaded",e=>{var s;(s=t.onProgress)==null||s.call(t,{loaded:e.length,total:e.length}),this.downloadInfoCapability.resolve(e)}),l.on("StartRenderPage",e=>{if(this.destroyed)return;a(this,qs).get(e.pageIndex)._startRenderPage(e.transparency,e.cacheKey)}),l.on("commonobj",([e,s,c])=>{var d;if(this.destroyed||this.commonObjs.has(e))return null;switch(s){case"Font":if("error"in c){const h=c.error;tl(`Error during font loading: ${h}`),this.commonObjs.resolve(e,h);break}const n=new k2(c),Z=this._params.pdfBug&&((d=globalThis.FontInspector)!=null&&d.enabled)?(h,W)=>globalThis.FontInspector.fontAdded(h,W):null,b=new C5(n,Z,c.extra,c.charProcOperatorList);this.fontLoader.bind(b).catch(()=>l.sendWithPromise("FontFallback",{id:e})).finally(()=>{!b.fontExtraProperties&&b.data&&b.clearData(),this.commonObjs.resolve(e,b)});break;case"CopyLocalImage":const{imageRef:o}=c;Gl(o,"The imageRef must be defined.");for(const h of a(this,qs).values())for(const[,W]of h.objs)if((W==null?void 0:W.ref)===o)return W.dataLen?(this.commonObjs.resolve(e,structuredClone(W)),W.dataLen):null;break;case"FontPath":this.commonObjs.resolve(e,new J5(c));break;case"Image":this.commonObjs.resolve(e,c);break;case"Pattern":const m=new U2(c);this.commonObjs.resolve(e,m.getIR());break;default:throw new Error(`Got unknown common object type ${s}`)}return null}
3),l.on("obj",([e,s,c,d])=>{var Z;if(this.destroyed)return;const n=a(this,qs).get(s);if(!n.objs.has(e)){if(n._intentStates.size===0){(Z=d==null?void 0:d.bitmap)==null||Z.close();return}switch(c){case"Image":case"Pattern":n.objs.resolve(e,d);break;default:throw new Error(`Got unknown object type ${c}`)}}}),l.on("DocProgress",e=>{var s;this.destroyed||(s=t.onProgress)==null||s.call(t,{loaded:e.loaded,total:e.total})}),l.on("FetchBinaryData",async e=>{if(this.destroyed)throw new Error("Worker was destroyed.");const s=this[e.type];if(!s)throw new Error(`${e.type} not initialized, see the \`useWorkerFetch\` parameter.`);return s.fetch(e)})}getData(){return this.messageHandler.sendWithPromise("GetData",null)}saveDocument(){var e;this.annotationStorage.size<=0&&tl("saveDocument called while `annotationStorage` is empty, please use the getData-method instead.");const{map:l,transfer:t}=this.annotationStorage.serializable;return this.messageHandler.sendWithPromise("SaveDocument",{isPureXfa:!!this._htmlForXfa,numPages:this._numPages,annotationStorage:l,filename:((e=this._fullReader)==null?void 0:e.filename)??null},t).finally(()=>{this.annotationStorage.resetModified()})}extractPages(l){return this.messageHandler.sendWithPromise("ExtractPages",{pageInfos:l})}getPage(l){if(!Number.isInteger(l)||l<=0||l>this._numPages)return Promise.reject(new Error("Invalid page request."));const t=l-1,e=a(this,DZ).get(t);if(e)return e;const s=this.messageHandler.sendWithPromise("GetPage",{pageIndex:t}).then(c=>{if(this.destroyed)throw new Error("Transport destroyed");c.refStr&&a(this,CZ).set(c.refStr,l);const d=new g1(t,c,this,this._params.pdfBug);return a(this,qs).set(t,d),d});return a(this,DZ).set(t,s),s}getPageIndex(l){return E2(l)?this.messageHandler.sendWithPromise("GetPageIndex",{num:l.num,gen:l.gen}):Promise.reject(new Error("Invalid pageIndex request."))}getAnnotations(l,t){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:l,intent:t})}getFieldObjects(){return z(this,za,Pb).call(this,"GetFieldObjects")}hasJSActions(){return z(this,za,Pb).call(this,"HasJSActions")}getCalculationOrderIds(){return this.messageHandler.sendWithPromise("GetCalculationOrderIds",null)}getDestinations(){return this.messageHandler.sendWithPromise("GetDestinations",null)}getDestination(l){return typeof l!="string"?Promise.reject(new Error("Invalid destination request.")):this.messageHandler.sendWithPromise("GetDestination",{id:l})}getPageLabels(){return this.messageHandler.sendWithPromise("GetPageLabels",null)}getPageLayout(){return this.messageHandler.sendWithPromise("GetPageLayout",null)}getPageMode(){return this.messageHandler.sendWithPromise("GetPageMode",null)}getViewerPreferences(){return this.messageHandler.sendWithPromise("GetViewerPreferences",null)}getOpenAction(){return this.messageHandler.sendWithPromise("GetOpenAction",null)}getAttachments(){return this.messageHandler.sendWithPromise("GetAttachments",null)}getAnnotationsByType(l,t){return this.messageHandler.sendWithPromise("GetAnnotationsByType",{types:l,pageIndexesToSkip:t})}getDocJSActions(){return z(this,za,Pb).call(this,"GetDocJSActions")}getPageJSActions(l){return this.messageHandler.sendWithPromise("GetPageJSActions",{pageIndex:l})}getStructTree(l){return this.messageHandler.sendWithPromise("GetStructTree",{pageIndex:l})}getOutline(){return this.messageHandler.sendWithPromise("GetOutline",null)}getOptionalContentConfig(l){return z(this,za,Pb).call(this,"GetOptionalContentConfig").then(t=>new m1(t,l))}getPermissions(){return this.messageHandler.sendWithPromise("GetPermissions",null)}getMetadata(){const l="GetMetadata",t=a(this,fi).get(l);if(t)return t;const e=this.messageHandler.sendWithPromise(l,null).then(s=>{var c,d;return{info:s[0],metadata:s[1]?new b1(s[1]):null,contentDispositionFilename:((c=this._fullReader)==null?void 0:c.filename)??null,contentLength:((d=this._fullReader)==null?void 0:d.contentLength)??null,hasStructTree:s[2]}});return a(this,fi).set(l,e),e}getMarkInfo(){return this.messageHandler.sendWithPromise("GetMarkInfo",null)}async startCleanup(l=!1){if(!this.destroyed){await this.messageHandler.sendWithProm
3ise("Cleanup",null);for(const t of a(this,qs).values())if(!t.cleanup())throw new Error(`startCleanup: Page ${t.pageNumber} is currently rendering.`);this.commonObjs.clear(),l||this.fontLoader.clear(),a(this,fi).clear(),this.filterFactory.destroy(!0),ub.cleanup()}}cachedPageNumber(l){if(!E2(l))return null;const t=l.gen===0?`${l.num}R`:`${l.num}R${l.gen}`;return a(this,CZ).get(t)??null}}fi=new WeakMap,qs=new WeakMap,DZ=new WeakMap,CZ=new WeakMap,Bi=new WeakMap,za=new WeakSet,Pb=function(l,t=null){const e=a(this,fi).get(l);if(e)return e;const s=this.messageHandler.sendWithPromise(l,t);return a(this,fi).set(l,s),s};var _c;class D1{constructor(l){L(this,_c,null);E(this,"onContinue",null);E(this,"onError",null);p(this,_c,l)}get promise(){return a(this,_c).capability.promise}cancel(l=0){a(this,_c).cancel(null,l)}get separateAnnots(){const{separateAnnots:l}=a(this,_c).operatorList;if(!l)return!1;const{annotationCanvasMap:t}=a(this,_c);return l.form||l.canvas&&(t==null?void 0:t.size)>0}}_c=new WeakMap;var qc,wa;const Od=class Od{constructor({callback:l,params:t,objs:e,commonObjs:s,annotationCanvasMap:c,operatorList:d,pageIndex:n,canvasFactory:Z,filterFactory:b,useRequestAnimationFrame:o=!1,pdfBug:m=!1,pageColors:h=null,enableHWA:W=!1,operationsFilter:r=null}){L(this,qc,null);this.callback=l,this.params=t,this.objs=e,this.commonObjs=s,this.annotationCanvasMap=c,this.operatorListIdx=null,this.operatorList=d,this._pageIndex=n,this.canvasFactory=Z,this.filterFactory=b,this._pdfBug=m,this.pageColors=h,this.running=!1,this.graphicsReadyCallback=null,this.graphicsReady=!1,this._useRequestAnimationFrame=o===!0&&typeof window<"u",this.cancelled=!1,this.capability=Promise.withResolvers(),this.task=new D1(this),this._cancelBound=this.cancel.bind(this),this._continueBound=this._continue.bind(this),this._scheduleNextBound=this._scheduleNext.bind(this),this._nextBound=this._next.bind(this),this._canvas=t.canvas,this._canvasContext=t.canvas?null:t.canvasContext,this._enableHWA=W,this._dependencyTracker=t.dependencyTracker,this._operationsFilter=r}get completed(){return this.capability.promise.catch(function(){})}initializeGraphics({transparency:l=!1,optionalContentConfig:t}){var Z,b;if(this.cancelled)return;if(this._canvas){if(a(Od,wa).has(this._canvas))throw new Error("Cannot use the same canvas during multiple render() operations. Use different canvas or ensure previous operations were cancelled or completed.");a(Od,wa).add(this._canvas)}this._pdfBug&&((Z=globalThis.StepperManager)!=null&&Z.enabled)&&(this.stepper=globalThis.StepperManager.create(this._pageIndex),this.stepper.init(this.operatorList),this.stepper.nextBreakPoint=this.stepper.getNextBreakPoint());const{viewport:e,transform:s,background:c,dependencyTracker:d}=this.params,n=this._canvasContext||this._canvas.getContext("2d",{alpha:!1,willReadFrequently:!this._enableHWA});this.gfx=new On(n,this.commonObjs,this.objs,this.canvasFactory,this.filterFactory,{optionalContentConfig:t},this.annotationCanvasMap,this.pageColors,d),this.gfx.beginDrawing({transform:s,viewport:e,transparency:l,background:c}),this.operatorListIdx=0,this.graphicsReady=!0,(b=this.graphicsReadyCallback)==null||b.call(this)}cancel(l=null,t=0){var e,s,c;this.running=!1,this.cancelled=!0,(e=this.gfx)==null||e.endDrawing(),a(this,qc)&&(window.cancelAnimationFrame(a(this,qc)),p(this,qc,null)),a(Od,wa).delete(this._canvas),l||(l=new uu(`Rendering cancelled, page ${this._pageIndex+1}`,t)),this.callback(l),(c=(s=this.task).onError)==null||c.call(s,l)}operatorListChanged(){var l,t;if(!this.graphicsReady){this.graphicsReadyCallback||(this.graphicsReadyCallback=this._continueBound);return}(l=this.gfx.dependencyTracker)==null||l.growOperationsCount(this.operatorList.fnArray.length),(t=this.stepper)==null||t.updateOperatorList(this.operatorList),!this.running&&this._continue()}_continue(){this.running=!0,!this.cancelled&&(this.task.onContinue?this.task.onContinue(this._scheduleNextBound):this._scheduleNext())}_scheduleNext(){this._useRequestAnimationFrame?p(this,qc,window.requestAnimationFrame(()=>{p(this,qc,null),this._nextBound().catch(this._cancelBound)}
3)):Promise.resolve().then(this._nextBound).catch(this._cancelBound)}async _next(){this.cancelled||(this.operatorListIdx=this.gfx.executeOperatorList(this.operatorList,this.operatorListIdx,this._continueBound,this.stepper,this._operationsFilter),this.operatorListIdx===this.operatorList.argsArray.length&&(this.running=!1,this.operatorList.lastChunk&&(this.gfx.endDrawing(),a(Od,wa).delete(this._canvas),this.callback())))}};qc=new WeakMap,wa=new WeakMap,L(Od,wa,new WeakSet);let sW=Od;const C1="5.4.530",J1="50cc4adac";var Ie,Ra,JZ,Yt,pm,FZ,Ai,Ym,$c,Ms,ym,gl,iW,cW,dW,Dd,dM,Vc;const oe=class oe{constructor({editor:l=null,uiManager:t=null}){L(this,gl);L(this,Ie,null);L(this,Ra,null);L(this,JZ);L(this,Yt,null);L(this,pm,!1);L(this,FZ,!1);L(this,Ai,null);L(this,Ym);L(this,$c,null);L(this,Ms,null);var e,s;l?(p(this,FZ,!1),p(this,Ai,l)):p(this,FZ,!0),p(this,Ms,(l==null?void 0:l._uiManager)||t),p(this,Ym,a(this,Ms)._eventBus),p(this,JZ,((e=l==null?void 0:l.color)==null?void 0:e.toUpperCase())||((s=a(this,Ms))==null?void 0:s.highlightColors.values().next().value)||"#FFFF98"),a(oe,ym)||p(oe,ym,Object.freeze({blue:"pdfjs-editor-colorpicker-blue",green:"pdfjs-editor-colorpicker-green",pink:"pdfjs-editor-colorpicker-pink",red:"pdfjs-editor-colorpicker-red",yellow:"pdfjs-editor-colorpicker-yellow"}))}static get _keyboardManager(){return el(this,"_keyboardManager",new Zh([[["Escape","mac+Escape"],oe.prototype._hideDropdownFromKeyboard],[[" ","mac+ "],oe.prototype._colorSelectFromKeyboard],[["ArrowDown","ArrowRight","mac+ArrowDown","mac+ArrowRight"],oe.prototype._moveToNext],[["ArrowUp","ArrowLeft","mac+ArrowUp","mac+ArrowLeft"],oe.prototype._moveToPrevious],[["Home","mac+Home"],oe.prototype._moveToBeginning],[["End","mac+End"],oe.prototype._moveToEnd]]))}renderButton(){const l=p(this,Ie,document.createElement("button"));l.className="colorPicker",l.tabIndex="0",l.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-button"),l.ariaHasPopup="true",a(this,Ai)&&(l.ariaControls=`${a(this,Ai).id}_colorpicker_dropdown`);const t=a(this,Ms)._signal;l.addEventListener("click",z(this,gl,Dd).bind(this),{signal:t}),l.addEventListener("keydown",z(this,gl,dW).bind(this),{signal:t});const e=p(this,Ra,document.createElement("span"));return e.className="swatch",e.ariaHidden="true",e.style.backgroundColor=a(this,JZ),l.append(e),l}renderMainDropdown(){const l=p(this,Yt,z(this,gl,iW).call(this));return l.ariaOrientation="horizontal",l.ariaLabelledBy="highlightColorPickerLabel",l}_colorSelectFromKeyboard(l){if(l.target===a(this,Ie)){z(this,gl,Dd).call(this,l);return}const t=l.target.getAttribute("data-color");t&&z(this,gl,cW).call(this,t,l)}_moveToNext(l){var t,e;if(!a(this,gl,Vc)){z(this,gl,Dd).call(this,l);return}if(l.target===a(this,Ie)){(t=a(this,Yt).firstElementChild)==null||t.focus();return}(e=l.target.nextSibling)==null||e.focus()}_moveToPrevious(l){var t,e;if(l.target===((t=a(this,Yt))==null?void 0:t.firstElementChild)||l.target===a(this,Ie)){a(this,gl,Vc)&&this._hideDropdownFromKeyboard();return}a(this,gl,Vc)||z(this,gl,Dd).call(this,l),(e=l.target.previousSibling)==null||e.focus()}_moveToBeginning(l){var t;if(!a(this,gl,Vc)){z(this,gl,Dd).call(this,l);return}(t=a(this,Yt).firstElementChild)==null||t.focus()}_moveToEnd(l){var t;if(!a(this,gl,Vc)){z(this,gl,Dd).call(this,l);return}(t=a(this,Yt).lastElementChild)==null||t.focus()}hideDropdown(){var l,t;(l=a(this,Yt))==null||l.classList.add("hidden"),a(this,Ie).ariaExpanded="false",(t=a(this,$c))==null||t.abort(),p(this,$c,null)}_hideDropdownFromKeyboard(){var l;if(!a(this,FZ)){if(!a(this,gl,Vc)){(l=a(this,Ai))==null||l.unselect();return}this.hideDropdown(),a(this,Ie).focus({preventScroll:!0,focusVisible:a(this,pm)})}}updateColor(l){if(a(this,Ra)&&(a(this,Ra).style.backgroundColor=l),!a(this,Yt))return;const t=a(this,Ms).highlightColors.values();for(const e of a(this,Yt).children)e.ariaSelected=t.next().value===l.toUpperCase()}destroy(){var l,t;(l=a(this,Ie))==null||l.remove(),p(this,Ie,null),p(this,Ra,null),(t=a(this,Yt))==null||t.remove(),p(this,Yt,null)}};Ie=new WeakMap,Ra=new WeakMap,JZ=new WeakMap,Yt=new WeakMap,pm=new WeakMap,FZ=new WeakMap,Ai=new WeakMap,Ym=new WeakMap,$c=new WeakMap,Ms=new WeakMap,ym=new WeakMap,gl=new WeakSet,iW=function(){const l=document.createElement("div"),t=a(this,Ms)._signal;l.addEventListener("contextmenu",os,{signal:t}),l.className="dropdown",l.role="listbox",l.ariaMultiSelectable="false",l.ariaOrientation="vertical",l.setAttribute("data-l10n-id","pdfjs-editor-colorpicker-dropdown"),a(this,Ai)&&(l.id=`${a(this,Ai).id}_colorpicker_dropdown`);for(const[e,s]of a(this,Ms).highlightColors){const c=document.createElement("button");c.tabIndex="0",c.role="option",c.setAttribute("data-color",s),c.title=e,c.setAttribute("data-l10n-id",a(oe,ym)[e]);const d=document.createElement("span");c.append(d),d.className="swatch",d.style.backgroundColor=s,c.ariaSelected=s===a(this,JZ),c.addEventListener("click",z(this,gl,cW).bind(this,s),{signal:t}),l.append(c)}return l.addEventListener("keydown",z(this,gl,dW).bind(this),{signal:t}),l},cW=function(l,t){t.stopPropagation(),a(this,Ym).dispatch("switchannotationeditorparams",{source:this,type:Wl.HIGHLIGHT_COLOR,value:l}),this.updateColor(l)},dW=function(l){oe._keyboardManager.exec(this,l)},Dd=function(l){if(a(this,gl,Vc)){this.hideDropdown();return}if(p(this,pm,l.detail===0),a(this,$c)||(p(this,$c,new AbortController),window.addEventListener("pointerdown",z(this,gl,dM).bind(this),{signal:a(this,Ms).combinedSignal(a(this,$c))})),a(this,Ie).ariaExpanded="true",a(this,Yt)){a(this,Yt).classList.remove("hidden");return}const t=p(this,Yt,z(this,gl,iW).call(this));a(this,Ie).append(t)},dM=function(l){var t;(t=a(this,Yt))!=null&&t.contains(l.target)||this.hideDropdown()},Vc=function(){return a(this,Yt)&&!a(this,Yt).classList.contains("hidden")},L(oe,ym,null);let x0=oe;var $s,Tm,OZ,Vm;const kd=class kd{constructor(l){L(this,$s,null);
3L(this,Tm,null);L(this,OZ,null);p(this,Tm,l),p(this,OZ,l._uiManager),a(kd,Vm)||p(kd,Vm,Object.freeze({freetext:"pdfjs-editor-color-picker-free-text-input",ink:"pdfjs-editor-color-picker-ink-input"}))}renderButton(){if(a(this,$s))return a(this,$s);const{editorType:l,colorType:t,color:e}=a(this,Tm),s=p(this,$s,document.createElement("input"));return s.type="color",s.value=e||"#000000",s.className="basicColorPicker",s.tabIndex=0,s.setAttribute("data-l10n-id",a(kd,Vm)[l]),s.addEventListener("input",()=>{a(this,OZ).updateParams(t,s.value)},{signal:a(this,OZ)._signal}),s}update(l){a(this,$s)&&(a(this,$s).value=l)}destroy(){var l;(l=a(this,$s))==null||l.remove(),p(this,$s,null)}hideDropdown(){}};$s=new WeakMap,Tm=new WeakMap,OZ=new WeakMap,Vm=new WeakMap,L(kd,Vm,null);let g0=kd;function RN(i){return Math.floor(Math.max(0,Math.min(1,i))*255).toString(16).padStart(2,"0")}function Tb(i){return Math.max(0,Math.min(255,255*i))}class SN{static CMYK_G([l,t,e,s]){return["G",1-Math.min(1,.3*l+.59*e+.11*t+s)]}static G_CMYK([l]){return["CMYK",0,0,0,1-l]}static G_RGB([l]){return["RGB",l,l,l]}static G_rgb([l]){return l=Tb(l),[l,l,l]}static G_HTML([l]){const t=RN(l);return`#${t}${t}${t}`}static RGB_G([l,t,e]){return["G",.3*l+.59*t+.11*e]}static RGB_rgb(l){return l.map(Tb)}static RGB_HTML(l){return`#${l.map(RN).join("")}`}static T_HTML(){return"#00000000"}static T_rgb(){return[null]}static CMYK_RGB([l,t,e,s]){return["RGB",1-Math.min(1,l+s),1-Math.min(1,e+s),1-Math.min(1,t+s)]}static CMYK_rgb([l,t,e,s]){return[Tb(1-Math.min(1,l+s)),Tb(1-Math.min(1,e+s)),Tb(1-Math.min(1,t+s))]}static CMYK_HTML(l){const t=this.CMYK_RGB(l).slice(1);return this.RGB_HTML(t)}static RGB_CMYK([l,t,e]){const s=1-l,c=1-t,d=1-e,n=Math.min(s,c,d);return["CMYK",s,c,d,n]}}class F1{create(l,t,e=!1){if(l<=0||t<=0)throw new Error("Invalid SVG dimensions");const s=this._createSVG("svg:svg");return s.setAttribute("version","1.1"),e||(s.setAttribute("width",`${l}px`),s.setAttribute("height",`${t}px`)),s.setAttribute("preserveAspectRatio","none"),s.setAttribute("viewBox",`0 0 ${l} ${t}`),s}createElement(l){if(typeof l!="string")throw new Error("Invalid SVG element type");return this._createSVG(l)}_createSVG(l){Jl("Abstract method `_createSVG` called.")}}class j0 extends F1{_createSVG(l){return document.createElementNS(Yi,l)}}const O1=9,an=new WeakSet,k1=new Date().getTimezoneOffset()*60*1e3;class Hu{static create(l){switch(l.data.annotationType){case Wt.LINK:return new mG(l);case Wt.TEXT:return new E1(l);case Wt.WIDGET:switch(l.data.fieldType){case"Tx":return new K1(l);case"Btn":return l.data.radioButton?new ZM(l):l.data.checkBox?new Q1(l):new P1(l);case"Ch":return new H1(l);case"Sig":return new v1(l)}return new on(l);case Wt.POPUP:return new nW(l);case Wt.FREETEXT:return new uM(l);case Wt.LINE:return new B1(l);case Wt.SQUARE:return new A1(l);case Wt.CIRCLE:return new _1(l);case Wt.POLYLINE:return new WM(l);case Wt.CARET:return new $1(l);case Wt.INK:return new hG(l);case Wt.POLYGON:return new q1(l);case Wt.HIGHLIGHT:return new GM(l);case Wt.UNDERLINE:return new lV(l);case Wt.SQUIGGLY:return new tV(l);case Wt.STRIKEOUT:return new eV(l);case Wt.STAMP:return new NM(l);case Wt.FILEATTACHMENT:return new sV(l);default:return new lt(l)}}}var Sa,kZ,cs,Lm,aW;const lN=class lN{constructor(l,{isRenderable:t=!1,ignoreBorder:e=!1,createQuadrilaterals:s=!1}={}){L(this,Lm);L(this,Sa,null);L(this,kZ,!1);L(this,cs,null);this.isRenderable=t,this.data=l.data,this.layer=l.layer,this.linkService=l.linkService,this.downloadManager=l.downloadManager,this.imageResourcesPath=l.imageResourcesPath,this.renderForms=l.renderForms,this.svgFactory=l.svgFactory,this.annotationStorage=l.annotationStorage,this.enableComment=l.enableComment,this.enableScripting=l.enableScripting,this.hasJSActions=l.hasJSActions,this._fieldObjects=l.fieldObjects,this.parent=l.parent,this.hasOwnCommentButton=!1,t&&(this.contentElement=this.container=this._createContainer(e)),s&&this._createQuadrilaterals()}static _hasPopupData({contentsObj:l,richText:t}){return!!(l!=null&&l.str||t!=null&&t.str)}get _isEditable(){return this.data.isEditable}get hasPopupData(){return lN._hasPopupData(this.data)||this.enableComment&&!!this.commentText}get commentData(){var e;const{data:l}=this,t=(e=this.annotationStorage)==null?void 0:e.getEditor(l.id);return t?t.getData():l}get hasCommentButton(){return this.enableComment&&this.hasPopupElement}
3get commentButtonPosition(){var n;const l=(n=this.annotationStorage)==null?void 0:n.getEditor(this.data.id);if(l)return l.commentButtonPositionInPage;const{quadPoints:t,inkLists:e,rect:s}=this.data;let c=-1/0,d=-1/0;if((t==null?void 0:t.length)>=8){for(let Z=0;Z<t.length;Z+=8)t[Z+1]>d?(d=t[Z+1],c=t[Z+2]):t[Z+1]===d&&(c=Math.max(c,t[Z+2]));return[c,d]}if((e==null?void 0:e.length)>=1){for(const Z of e)for(let b=0,o=Z.length;b<o;b+=2)Z[b+1]>d?(d=Z[b+1],c=Z[b]):Z[b+1]===d&&(c=Math.max(c,Z[b]));if(c!==1/0)return[c,d]}return s?[s[2],s[3]]:null}_normalizePoint(l){const{page:{view:t},viewport:{rawDims:{pageWidth:e,pageHeight:s,pageX:c,pageY:d}}}=this.parent;return l[1]=t[3]-l[1]+t[1],l[0]=100*(l[0]-c)/e,l[1]=100*(l[1]-d)/s,l}get commentText(){var t,e,s;const{data:l}=this;return((e=(t=this.annotationStorage.getRawValue(`${to}${l.id}`))==null?void 0:t.popup)==null?void 0:e.contents)||((s=l.contentsObj)==null?void 0:s.str)||""}set commentText(l){const{data:t}=this,e={deleted:!l,contents:l||""};this.annotationStorage.updateEditor(t.id,{popup:e})||this.annotationStorage.setValue(`${to}${t.id}`,{id:t.id,annotationType:t.annotationType,pageIndex:this.parent.page._pageIndex,popup:e,popupRef:t.popupRef,modificationDate:new Date}),l||this.removePopup()}removePopup(){var l,t;(t=((l=a(this,cs))==null?void 0:l.popup)||this.popup)==null||t.remove(),p(this,cs,this.popup=null)}updateEdited(l){var c;if(!this.container)return;l.rect&&(a(this,Sa)||p(this,Sa,{rect:this.data.rect.slice(0)}));const{rect:t,popup:e}=l;t&&z(this,Lm,aW).call(this,t);let s=((c=a(this,cs))==null?void 0:c.popup)||this.popup;!s&&(e!=null&&e.text)&&(this._createPopup(e),s=a(this,cs).popup),s&&(s.updateEdited(l),e!=null&&e.deleted&&(s.remove(),p(this,cs,null),this.popup=null))}resetEdited(){var l;a(this,Sa)&&(z(this,Lm,aW).call(this,a(this,Sa).rect),(l=a(this,cs))==null||l.popup.resetEdited(),p(this,Sa,null))}_createContainer(l){const{data:t,parent:{page:e,viewport:s}}=this,c=document.createElement("section");c.setAttribute("data-annotation-id",t.id),!(this instanceof on)&&!(this instanceof mG)&&(c.tabIndex=0);const{style:d}=c;if(d.zIndex=this.parent.zIndex,this.parent.zIndex+=2,t.alternativeText&&(c.title=t.alternativeText),t.noRotate&&c.classList.add("norotate"),!t.rect||this instanceof nW){const{rotation:N}=t;return!t.hasOwnCanvas&&N!==0&&this.setRotation(N,c),c}const{width:n,height:Z}=this;if(!l&&t.borderStyle.width>0){d.borderWidth=`${t.borderStyle.width}px`;const N=t.borderStyle.horizontalCornerRadius,M=t.borderStyle.verticalCornerRadius;if(N>0||M>0){const y=`calc(${N}px * var(--total-scale-factor)) / calc(${M}px * var(--total-scale-factor))`;d.borderRadius=y}else if(this instanceof ZM){const y=`calc(${n}px * var(--total-scale-factor)) / calc(${Z}px * var(--total-scale-factor))`;d.borderRadius=y}switch(t.borderStyle.style){case Tn.SOLID:d.borderStyle="solid";break;case Tn.DASHED:d.borderStyle="dashed";break;case Tn.BEVELED:tl("Unimplemented border style: beveled");break;case Tn.INSET:tl("Unimplemented border style: inset");break;case Tn.UNDERLINE:d.borderBottomStyle="solid";break}const X=t.borderColor||null;X?(p(this,kZ,!0),d.borderColor=Q.makeHexColor(X[0]|0,X[1]|0,X[2]|0)):d.borderWidth=0}const b=Q.normalizeRect([t.rect[0],e.view[3]-t.rect[1]+e.view[1],t.rect[2],e.view[3]-t.rect[3]+e.view[1]]),{pageWidth:o,pageHeight:m,pageX:h,pageY:W}=s.rawDims;d.left=`${100*(b[0]-h)/o}%`,d.top=`${100*(b[1]-W)/m}%`;const{rotation:r}=t;return t.hasOwnCanvas||r===0?(d.width=`${100*n/o}%`,d.height=`${100*Z/m}%`):this.setRotation(r,c),c}setRotation(l,t=this.container){if(!this.data.rect)return;const{pageWidth:e,pageHeight:s}=this.parent.viewport.rawDims;let{width:c,height:d}=this;l%180!==0&&([c,d]=[d,c]),t.style.width=`${100*c/e}%`,t.style.height=`${100*d/s}%`,t.setAttribute("data-main-rotation",(360-l)%360)}get _commonActions(){const l=(t,e,s)=>{const c=s.detail[t],d=c[0],n=c.slice(1);s.target.style[e]=SN[`${d}_HTML`](n),this.annotationStorage.setValue(this.data.id,{[e]:SN[`${d}_rgb`](n)})};return el(this,"_commonActions",{display:t=>{const{display:e}=t.detail,s=e%2===1;this.container.style.visibility=s?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noView:s,noPrint:e===1||e===2})},print:t=>{this.annotationStorage.setValue(this.data.id,{noPrint:!t.detail.print})},hidden:t=>{const{hidden:e}=t.detail;this.container.style.visibility=e?"hidden":"visible",this.annotationStorage.setValue(this.data.id,{noPrint:e,noView:e})},focus:t=>{setTimeout(()=>
3t.target.focus({preventScroll:!1}),0)},userName:t=>{t.target.title=t.detail.userName},readonly:t=>{t.target.disabled=t.detail.readonly},required:t=>{this._setRequired(t.target,t.detail.required)},bgColor:t=>{l("bgColor","backgroundColor",t)},fillColor:t=>{l("fillColor","backgroundColor",t)},fgColor:t=>{l("fgColor","color",t)},textColor:t=>{l("textColor","color",t)},borderColor:t=>{l("borderColor","borderColor",t)},strokeColor:t=>{l("strokeColor","borderColor",t)},rotation:t=>{const e=t.detail.rotation;this.setRotation(e),this.annotationStorage.setValue(this.data.id,{rotation:e})}})}_dispatchEventFromSandbox(l,t){const e=this._commonActions;for(const s of Object.keys(t.detail)){const c=l[s]||e[s];c==null||c(t)}}_setDefaultPropertiesFromJS(l){if(!this.enableScripting)return;const t=this.annotationStorage.getRawValue(this.data.id);if(!t)return;const e=this._commonActions;for(const[s,c]of Object.entries(t)){const d=e[s];if(d){const n={detail:{[s]:c},target:l};d(n),delete t[s]}}}_createQuadrilaterals(){if(!this.container)return;const{quadPoints:l}=this.data;if(!l)return;const[t,e,s,c]=this.data.rect.map(N=>Math.fround(N));if(l.length===8){const[N,M,X,y]=l.subarray(2,6);if(s===N&&c===M&&t===X&&e===y)return}const{style:d}=this.container;let n;if(a(this,kZ)){const{borderColor:N,borderWidth:M}=d;d.borderWidth=0,n=["url('data:image/svg+xml;utf8,",'<svg xmlns="http://www.w3.org/2000/svg"',' preserveAspectRatio="none" viewBox="0 0 1 1">',`<g fill="transparent" stroke="${N}" stroke-width="${M}">`],this.container.classList.add("hasBorder")}const Z=s-t,b=c-e,{svgFactory:o}=this,m=o.createElement("svg");m.classList.add("quadrilateralsContainer"),m.setAttribute("width",0),m.setAttribute("height",0),m.role="none";const h=o.createElement("defs");m.append(h);const W=o.createElement("clipPath"),r=`clippath_${this.data.id}`;W.setAttribute("id",r),W.setAttribute("clipPathUnits","objectBoundingBox"),h.append(W);for(let N=2,M=l.length;N<M;N+=8){const X=l[N],y=l[N+1],Y=l[N+2],T=l[N+3],V=o.createElement("rect"),I=(Y-t)/Z,w=(c-y)/b,R=(X-Y)/Z,S=(y-T)/b;V.setAttribute("x",I),V.setAttribute("y",w),V.setAttribute("width",R),V.setAttribute("height",S),W.append(V),n==null||n.push(`<rect vector-effect="non-scaling-stroke" x="${I}" y="${w}" width="${R}" height="${S}"/>`)}a(this,kZ)&&(n.push("</g></svg>')"),d.backgroundImage=n.join("")),this.container.append(m),this.container.style.clipPath=`url(#${r})`}_createPopup(l=null){const{data:t}=this;let e,s;l?(e={str:l.text},s=l.date):(e=t.contentsObj,s=t.modificationDate),p(this,cs,new nW({data:{color:t.color,titleObj:t.titleObj,modificationDate:s,contentsObj:e,richText:t.richText,parentRect:t.rect,borderStyle:0,id:`popup_${t.id}`,rotation:t.rotation,noRotate:!0},linkService:this.linkService,parent:this.parent,elements:[this]}))}get hasPopupElement(){return!!(a(this,cs)||this.popup||this.data.popupRef)}get extraPopupElement(){return a(this,cs)}render(){Jl("Abstract method `AnnotationElement.render` called")}_getElementsByName(l,t=null){const e=[];if(this._fieldObjects){const s=this._fieldObjects[l];if(s)for(const{page:c,id:d,exportValues:n}of s){if(c===-1||d===t)continue;const Z=typeof n=="string"?n:null,b=document.querySelector(`[data-element-id="${d}"]`);if(b&&!an.has(b)){tl(`_getElementsByName - element not allowed: ${d}`);continue}e.push({id:d,exportValue:Z,domElement:b})}return e}for(const s of document.getElementsByName(l)){const{exportValue:c}=s,d=s.getAttribute("data-element-id");d!==t&&an.has(s)&&e.push({id:d,exportValue:c,domElement:s})}return e}show(){var l;this.container&&(this.container.hidden=!1),(l=this.popup)==null||l.maybeShow()}hide(){var l;this.container&&(this.container.hidden=!0),(l=this.popup)==null||l.forceHide()}getElementsToTriggerPopup(){return this.container}addHighlightArea(){const l=this.getElementsToTriggerPopup();if(Array.isArray(l))for(const t of l)t.classList.add("highlightArea");else l.classList.add("highlightArea")}_editOnDoubleClick(){if(!this._isEditable)return;const{annotationEditorType:l,data:{id:t}}=this;this.container.addEventListener("dblclick",()=>{var e;(e=this.linkService.eventBus)==null||e.dispatch("switchannotationeditormode",{source:this,mode:l,editId:t,mustEnterInEditMode:!0})})}get width(){return this.data.rect[2]-this.data.rect[0]}get height(){return this.data.rect[3]-this.data.rect[1]}};Sa=new WeakMap,kZ=new WeakMap,cs=new WeakMap,Lm=new WeakSet,aW=function(l){const{container:{style:t},data:{rect:e,rotation:s},parent:{viewport:{rawDims:{pageWidth:c,pageHeight:d,pageX:n,pageY:Z}}}}=this;e==null||e.splice(0,4,...l),t.left=`${100*(l[0]-n)/c}%`,t.top=`${100*(d-l[3]+Z)/d}%`,s===0?(t.width=`${100*(l[2]-l[0])/c}%`,t.height=`${100*(l[3]-l[1])/d}%`):this.setRotation(s)};let lt=lN;class U1 extends lt{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),this.editor=l.editor}render(){return this.container.className="editorAnnotation",this.container}createOrUpdatePopup(){const{editor:l}=this;l.hasComment&&this._createPopup(l.comment)}get hasCommentButton(){return this.enableComment&&this.editor.hasComment}
3get commentButtonPosition(){return this.editor.commentButtonPositionInPage}get commentText(){return this.editor.comment.text}set commentText(l){this.editor.comment=l,l||this.removePopup()}get commentData(){return this.editor.getData()}remove(){this.parent.removeAnnotation(this.data.id),this.container.remove(),this.container=null,this.removePopup()}}var Ke,Cd,aM,nM;class mG extends lt{constructor(t,e=null){super(t,{isRenderable:!0,ignoreBorder:!!(e!=null&&e.ignoreBorder),createQuadrilaterals:!0});L(this,Ke);this.isTooltipOnly=t.data.isTooltipOnly}render(){const{data:t,linkService:e}=this,s=document.createElement("a");s.setAttribute("data-element-id",t.id);let c=!1;return t.url?(e.addLinkAttributes(s,t.url,t.newWindow),c=!0):t.action?(this._bindNamedAction(s,t.action,t.overlaidText),c=!0):t.attachment?(z(this,Ke,aM).call(this,s,t.attachment,t.overlaidText,t.attachmentDest),c=!0):t.setOCGState?(z(this,Ke,nM).call(this,s,t.setOCGState,t.overlaidText),c=!0):t.dest?(this._bindLink(s,t.dest,t.overlaidText),c=!0):(t.actions&&(t.actions.Action||t.actions["Mouse Up"]||t.actions["Mouse Down"])&&this.enableScripting&&this.hasJSActions&&(this._bindJSAction(s,t),c=!0),t.resetForm?(this._bindResetFormAction(s,t.resetForm),c=!0):this.isTooltipOnly&&!c&&(this._bindLink(s,""),c=!0)),this.container.classList.add("linkAnnotation"),c&&(this.contentElement=s,this.container.append(s)),this.container}_bindLink(t,e,s=""){t.href=this.linkService.getDestinationHash(e),t.onclick=()=>(e&&this.linkService.goToDestination(e),!1),(e||e==="")&&z(this,Ke,Cd).call(this),s&&(t.title=s)}_bindNamedAction(t,e,s=""){t.href=this.linkService.getAnchorUrl(""),t.onclick=()=>(this.linkService.executeNamedAction(e),!1),s&&(t.title=s),z(this,Ke,Cd).call(this)}_bindJSAction(t,e){t.href=this.linkService.getAnchorUrl("");const s=new Map([["Action","onclick"],["Mouse Up","onmouseup"],["Mouse Down","onmousedown"]]);for(const c of Object.keys(e.actions)){const d=s.get(c);d&&(t[d]=()=>{var n;return(n=this.linkService.eventBus)==null||n.dispatch("dispatcheventinsandbox",{source:this,detail:{id:e.id,name:c}}),!1})}e.overlaidText&&(t.title=e.overlaidText),t.onclick||(t.onclick=()=>!1),z(this,Ke,Cd).call(this)}_bindResetFormAction(t,e){const s=t.onclick;if(s||(t.href=this.linkService.getAnchorUrl("")),z(this,Ke,Cd).call(this),!this._fieldObjects){tl('_bindResetFormAction - "resetForm" action not supported, ensure that the `fieldObjects` parameter is provided.'),s||(t.onclick=()=>!1);return}t.onclick=()=>{var m;s==null||s();const{fields:c,refs:d,include:n}=e,Z=[];if(c.length!==0||d.length!==0){const h=new Set(d);for(const W of c){const r=this._fieldObjects[W]||[];for(const{id:N}of r)h.add(N)}for(const W of Object.values(this._fieldObjects))for(const r of W)h.has(r.id)===n&&Z.push(r)}else for(const h of Object.values(this._fieldObjects))Z.push(...h);const b=this.annotationStorage,o=[];for(const h of Z){const{id:W}=h;switch(o.push(W),h.type){case"text":{const N=h.defaultValue||"";b.setValue(W,{value:N});break}case"checkbox":case"radiobutton":{const N=h.defaultValue===h.exportValues;b.setValue(W,{value:N});break}case"combobox":case"listbox":{const N=h.defaultValue||"";b.setValue(W,{value:N});break}default:continue}const r=document.querySelector(`[data-element-id="${W}"]`);if(r){if(!an.has(r)){tl(`_bindResetFormAction - element not allowed: ${W}`);continue}}else continue;r.dispatchEvent(new Event("resetform"))}return this.enableScripting&&((m=this.linkService.eventBus)==null||m.dispatch("dispatcheventinsandbox",{source:this,detail:{id:"app",ids:o,name:"ResetForm"}})),!1}}}Ke=new WeakSet,Cd=function(){this.container.setAttribute("data-internal-link","")},aM=function(t,e,s="",c=null){t.href=this.linkService.getAnchorUrl(""),e.description?t.title=e.description:s&&(t.title=s),t.onclick=()=>{var d;return(d=this.downloadManager)==null||d.openOrDownloadData(e.content,e.filename,c),!1},z(this,Ke,Cd).call(this)},nM=function(t,e,s=""){t.href=this.linkService.getAnchorUrl(""),t.onclick=()=>(this.linkService.executeSetOCGState(e),!1),s&&(t.title=s),z(this,Ke,Cd).call(this)};class E1 extends lt{constructor(l){super(l,{isRenderable:!0})}render(){this.container.classList.add("textAnnotation");const l=document.createElement("img");return l.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",l.setAttribute("data-l10n-id","pdfjs-text-annotation-type"),l.setAttribute("data-l10n-args",JSON.stringify({type:this.data.name})),!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container.append(l),this.container}}
3class on extends lt{render(){return this.container}showElementAndHideCanvas(l){var t;this.data.hasOwnCanvas&&(((t=l.previousSibling)==null?void 0:t.nodeName)==="CANVAS"&&(l.previousSibling.hidden=!0),l.hidden=!1)}_getKeyModifier(l){return Tt.platform.isMac?l.metaKey:l.ctrlKey}_setEventListener(l,t,e,s,c){e.includes("mouse")?l.addEventListener(e,d=>{var n;(n=this.linkService.eventBus)==null||n.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:s,value:c(d),shift:d.shiftKey,modifier:this._getKeyModifier(d)}})}):l.addEventListener(e,d=>{var n;if(e==="blur"){if(!t.focused||!d.relatedTarget)return;t.focused=!1}else if(e==="focus"){if(t.focused)return;t.focused=!0}c&&((n=this.linkService.eventBus)==null||n.dispatch("dispatcheventinsandbox",{source:this,detail:{id:this.data.id,name:s,value:c(d)}}))})}_setEventListeners(l,t,e,s){var c,d,n;for(const[Z,b]of e)(b==="Action"||(c=this.data.actions)!=null&&c[b])&&((b==="Focus"||b==="Blur")&&(t||(t={focused:!1})),this._setEventListener(l,t,Z,b,s),b==="Focus"&&!((d=this.data.actions)!=null&&d.Blur)?this._setEventListener(l,t,"blur","Blur",null):b==="Blur"&&!((n=this.data.actions)!=null&&n.Focus)&&this._setEventListener(l,t,"focus","Focus",null))}_setBackgroundColor(l){const t=this.data.backgroundColor||null;l.style.backgroundColor=t===null?"transparent":Q.makeHexColor(t[0],t[1],t[2])}_setTextStyle(l){const t=["left","center","right"],{fontColor:e}=this.data.defaultAppearanceData,s=this.data.defaultAppearanceData.fontSize||O1,c=l.style;let d;const n=2,Z=b=>Math.round(10*b)/10;if(this.data.multiLine){const b=Math.abs(this.data.rect[3]-this.data.rect[1]-n),o=Math.round(b/(Ou*s))||1,m=b/o;d=Math.min(s,Z(m/Ou))}else{const b=Math.abs(this.data.rect[3]-this.data.rect[1]-n);d=Math.min(s,Z(b/Ou))}c.fontSize=`calc(${d}px * var(--total-scale-factor))`,c.color=Q.makeHexColor(e[0],e[1],e[2]),this.data.textAlignment!==null&&(c.textAlign=t[this.data.textAlignment])}_setRequired(l,t){t?l.setAttribute("required",!0):l.removeAttribute("required"),l.setAttribute("aria-required",t)}}class K1 extends on{constructor(l){const t=l.renderForms||l.data.hasOwnCanvas||!l.data.hasAppearance&&!!l.data.fieldValue;super(l,{isRenderable:t})}setPropertyOnSiblings(l,t,e,s){const c=this.annotationStorage;
3for(const d of this._getElementsByName(l.name,l.id))d.domElement&&(d.domElement[t]=e),c.setValue(d.id,{[s]:e})}render(){var s,c;const l=this.annotationStorage,t=this.data.id;this.container.classList.add("textWidgetAnnotation");let e=null;if(this.renderForms){const d=l.getValue(t,{value:this.data.fieldValue});let n=d.value||"";const Z=l.getValue(t,{charLimit:this.data.maxLen}).charLimit;Z&&n.length>Z&&(n=n.slice(0,Z));let b=d.formattedValue||((s=this.data.textContent)==null?void 0:s.join(`
4`))||null;b&&this.data.comb&&(b=b.replaceAll(/\s+/g,""));const o={userValue:n,formattedValue:b,lastCommittedValue:null,commitKey:1,focused:!1};this.data.multiLine?(e=document.createElement("textarea"),e.textContent=b??n,this.data.doNotScroll&&(e.style.overflowY="hidden")):(e=document.createElement("input"),e.type=this.data.password?"password":"text",e.setAttribute("value",b??n),this.data.doNotScroll&&(e.style.overflowX="hidden")),this.data.hasOwnCanvas&&(e.hidden=!0),an.add(e),this.contentElement=e,e.setAttribute("data-element-id",t),e.disabled=this.data.readOnly,e.name=this.data.fieldName,e.tabIndex=0;const{datetimeFormat:m,datetimeType:h,timeStep:W}=this.data,r=!!h&&this.enableScripting;m&&(e.title=m),this._setRequired(e,this.data.required),Z&&(e.maxLength=Z),e.addEventListener("input",M=>{l.setValue(t,{value:M.target.value}),this.setPropertyOnSiblings(e,"value",M.target.value,"value"),o.formattedValue=null}),e.addEventListener("resetform",M=>{const X=this.data.defaultFieldValue??"";e.value=o.userValue=X,o.formattedValue=null});let N=M=>{const{formattedValue:X}=o;X!=null&&(M.target.value=X),M.target.scrollLeft=0};if(this.enableScripting&&this.hasJSActions){e.addEventListener("focus",X=>{var Y;if(o.focused)return;const{target:y}=X;if(r&&(y.type=h,W&&(y.step=W)),o.userValue){const T=o.userValue;if(r)if(h==="time"){const V=new Date(T),I=[V.getHours(),V.getMinutes(),V.getSeconds()];y.value=I.map(w=>w.toString().padStart(2,"0")).join(":")}else y.value=new Date(T-k1).toISOString().split(h==="date"?"T":".",1)[0];else y.value=T}o.lastCommittedValue=y.value,o.commitKey=1,(Y=this.data.actions)!=null&&Y.Focus||(o.focused=!0)}),e.addEventListener("updatefromsandbox",X=>{this.showElementAndHideCanvas(X.target);const y={value(Y){o.userValue=Y.detail.value??"",r||l.setValue(t,{value:o.userValue.toString()}),Y.target.value=o.userValue},formattedValue(Y){const{formattedValue:T}=Y.detail;o.formattedValue=T,T!=null&&Y.target!==document.activeElement&&(Y.target.value=T);const V={formattedValue:T};r&&(V.value=T),l.setValue(t,V)},selRange(Y){Y.target.setSelectionRange(...Y.detail.selRange)},charLimit:Y=>{var w;const{charLimit:T}=Y.detail,{target:V}=Y;if(T===0){V.removeAttribute("maxLength");return}V.setAttribute("maxLength",T);let I=o.userValue;!I||I.length<=T||(I=I.slice(0,T),V.value=o.userValue=I,l.setValue(t,{value:I}),(w=this.linkService.eventBus)==null||w.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:I,willCommit:!0,commitKey:1,selStart:V.selectionStart,selEnd:V.selectionEnd}}))}};this._dispatchEventFromSandbox(y,X)}),e.addEventListener("keydown",X=>{var T;o.commitKey=1;let y=-1;if(X.key==="Escape"?y=0:X.key==="Enter"&&!this.data.multiLine?y=2:X.key==="Tab"&&(o.commitKey=3),y===-1)return;const{value:Y}=X.target;o.lastCommittedValue!==Y&&(o.lastCommittedValue=Y,o.userValue=Y,(T=this.linkService.eventBus)==null||T.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:Y,willCommit:!0,commitKey:y,selStart:X.target.selectionStart,selEnd:X.target.selectionEnd}}))});const M=N;N=null,e.addEventListener("blur",X=>{var T,V;if(!o.focused||!X.relatedTarget)return;(T=this.data.actions)!=null&&T.Blur||(o.focused=!1);const{target:y}=X;let{value:Y}=y;if(r){if(Y&&h==="time"){const I=Y.split(":").map(w=>parseInt(w,10));Y=new Date(2e3,0,1,I[0],I[1],I[2]||0).valueOf(),y.step=""}else Y.includes("T")||(Y=`${Y}T00:00`),Y=new Date(Y).valueOf();y.type="text"}o.userValue=Y,o.lastCommittedValue!==Y&&((V=this.linkService.eventBus)==null||V.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:Y,willCommit:!0,
4commitKey:o.commitKey,selStart:X.target.selectionStart,selEnd:X.target.selectionEnd}})),M(X)}),(c=this.data.actions)!=null&&c.Keystroke&&e.addEventListener("beforeinput",X=>{var S;o.lastCommittedValue=null;const{data:y,target:Y}=X,{value:T,selectionStart:V,selectionEnd:I}=Y;let w=V,R=I;switch(X.inputType){case"deleteWordBackward":{const x=T.substring(0,V).match(/\w*[^\w]*$/);x&&(w-=x[0].length);break}case"deleteWordForward":{const x=T.substring(V).match(/^[^\w]*\w*/);x&&(R+=x[0].length);break}case"deleteContentBackward":V===I&&(w-=1);break;case"deleteContentForward":V===I&&(R+=1);break}X.preventDefault(),(S=this.linkService.eventBus)==null||S.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:T,change:y||"",willCommit:!1,selStart:w,selEnd:R}})}),this._setEventListeners(e,o,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],X=>X.target.value)}if(N&&e.addEventListener("blur",N),this.data.comb){const X=(this.data.rect[2]-this.data.rect[0])/Z;e.classList.add("comb"),e.style.letterSpacing=`calc(${X}px * var(--total-scale-factor) - 1ch)`}}else e=document.createElement("div"),e.textContent=this.data.fieldValue,e.style.verticalAlign="middle",e.style.display="table-cell",this.data.hasOwnCanvas&&(e.hidden=!0);return this._setTextStyle(e),this._setBackgroundColor(e),this._setDefaultPropertiesFromJS(e),this.container.append(e),this.container}}class v1 extends on{constructor(l){super(l,{isRenderable:!!l.data.hasOwnCanvas})}}class Q1 extends on{constructor(l){super(l,{isRenderable:l.renderForms})}render(){const l=this.annotationStorage,t=this.data,e=t.id;let s=l.getValue(e,{value:t.exportValue===t.fieldValue}).value;typeof s=="string"&&(s=s!=="Off",l.setValue(e,{value:s})),this.container.classList.add("buttonWidgetAnnotation","checkBox");const c=document.createElement("input");return an.add(c),c.setAttribute("data-element-id",e),c.disabled=t.readOnly,this._setRequired(c,this.data.required),c.type="checkbox",c.name=t.fieldName,s&&c.setAttribute("checked",!0),c.setAttribute("exportValue",t.exportValue),c.tabIndex=0,c.addEventListener("change",d=>{const{name:n,checked:Z}=d.target;for(const b of this._getElementsByName(n,e)){const o=Z&&b.exportValue===t.exportValue;b.domElement&&(b.domElement.checked=o),l.setValue(b.id,{value:o})}l.setValue(e,{value:Z})}),c.addEventListener("resetform",d=>{const n=t.defaultFieldValue||"Off";d.target.checked=n===t.exportValue}),this.enableScripting&&this.hasJSActions&&(c.addEventListener("updatefromsandbox",d=>{const n={value(Z){Z.target.checked=Z.detail.value!=="Off",l.setValue(e,{value:Z.target.checked})}};this._dispatchEventFromSandbox(n,d)}),this._setEventListeners(c,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],d=>d.target.checked)),this._setBackgroundColor(c),this._setDefaultPropertiesFromJS(c),this.container.append(c),this.container}}class ZM extends on{constructor(l){super(l,{isRenderable:l.renderForms})}render(){this.container.classList.add("buttonWidgetAnnotation","radioButton");const l=this.annotationStorage,t=this.data,e=t.id;let s=l.getValue(e,{value:t.fieldValue===t.buttonValue}).value;if(typeof s=="string"&&(s=s!==t.buttonValue,l.setValue(e,{value:s})),s)for(const d of this._getElementsByName(t.fieldName,e))l.setValue(d.id,{value:!1});const c=document.createElement("input");if(an.add(c),c.setAttribute("data-element-id",e),c.disabled=t.readOnly,this._setRequired(c,this.data.required),c.type="radio",c.name=t.fieldName,s&&c.setAttribute("checked",!0),c.tabIndex=0,c.addEventListener("change",d=>{const{name:n,checked:Z}=d.target;for(const b of this._getElementsByName(n,e))l.setValue(b.id,{value:!1});l.setValue(e,{value:Z})}),c.addEventListener("resetform",d=>{const n=t.defaultFieldValue;d.target.checked=n!=null&&n===t.buttonValue}),this.enableScripting&&this.hasJSActions){const d=t.buttonValue;c.addEventListener("updatefromsandbox",n=>{const Z={value:b=>{const o=d===b.detail.value;for(const m of this._getElementsByName(b.target.name)){const h=o&&m.id===e;m.domElement&&(m.domElement.checked=h),l.setValue(m.id,{value:h})}}};this._dispatchEventFromSandbox(Z,n)}),this._setEventListeners(c,null,[["change","Validate"],["change","Action"],["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"]],n=>n.target.checked)}
4return this._setBackgroundColor(c),this._setDefaultPropertiesFromJS(c),this.container.append(c),this.container}}class P1 extends mG{constructor(l){super(l,{ignoreBorder:l.data.hasAppearance})}render(){const l=super.render();l.classList.add("buttonWidgetAnnotation","pushButton");const t=l.lastChild;return this.enableScripting&&this.hasJSActions&&t&&(this._setDefaultPropertiesFromJS(t),t.addEventListener("updatefromsandbox",e=>{this._dispatchEventFromSandbox({},e)})),l}}class H1 extends on{constructor(l){super(l,{isRenderable:l.renderForms})}render(){this.container.classList.add("choiceWidgetAnnotation");const l=this.annotationStorage,t=this.data.id,e=l.getValue(t,{value:this.data.fieldValue}),s=document.createElement("select");an.add(s),s.setAttribute("data-element-id",t),s.disabled=this.data.readOnly,this._setRequired(s,this.data.required),s.name=this.data.fieldName,s.tabIndex=0;let c=this.data.combo&&this.data.options.length>0;this.data.combo||(s.size=this.data.options.length,this.data.multiSelect&&(s.multiple=!0)),s.addEventListener("resetform",o=>{const m=this.data.defaultFieldValue;for(const h of s.options)h.selected=h.value===m});for(const o of this.data.options){const m=document.createElement("option");m.textContent=o.displayValue,m.value=o.exportValue,e.value.includes(o.exportValue)&&(m.setAttribute("selected",!0),c=!1),s.append(m)}let d=null;if(c){const o=document.createElement("option");o.value=" ",o.setAttribute("hidden",!0),o.setAttribute("selected",!0),s.prepend(o),d=()=>{o.remove(),s.removeEventListener("input",d),d=null},s.addEventListener("input",d)}const n=o=>{const m=o?"value":"textContent",{options:h,multiple:W}=s;return W?Array.prototype.filter.call(h,r=>r.selected).map(r=>r[m]):h.selectedIndex===-1?null:h[h.selectedIndex][m]};let Z=n(!1);const b=o=>{const m=o.target.options;return Array.prototype.map.call(m,h=>({displayValue:h.textContent,exportValue:h.value}))};return this.enableScripting&&this.hasJSActions?(s.addEventListener("updatefromsandbox",o=>{const m={value(h){d==null||d();const W=h.detail.value,r=new Set(Array.isArray(W)?W:[W]);for(const N of s.options)N.selected=r.has(N.value);l.setValue(t,{value:n(!0)}),Z=n(!1)},multipleSelection(h){s.multiple=!0},remove(h){const W=s.options,r=h.detail.remove;W[r].selected=!1,s.remove(r),W.length>0&&Array.prototype.findIndex.call(W,M=>M.selected)===-1&&(W[0].selected=!0),l.setValue(t,{value:n(!0),items:b(h)}),Z=n(!1)},clear(h){for(;s.length!==0;)s.remove(0);l.setValue(t,{value:null,items:[]}),Z=n(!1)},insert(h){const{index:W,displayValue:r,exportValue:N}=h.detail.insert,M=s.children[W],X=document.createElement("option");X.textContent=r,X.value=N,M?M.before(X):s.append(X),l.setValue(t,{value:n(!0),items:b(h)}),Z=n(!1)},items(h){const{items:W}=h.detail;for(;s.length!==0;)s.remove(0);for(const r of W){const{displayValue:N,exportValue:M}=r,X=document.createElement("option");X.textContent=N,X.value=M,s.append(X)}s.options.length>0&&(s.options[0].selected=!0),l.setValue(t,{value:n(!0),items:b(h)}),Z=n(!1)},indices(h){const W=new Set(h.detail.indices);for(const r of h.target.options)r.selected=W.has(r.index);l.setValue(t,{value:n(!0)}),Z=n(!1)},editable(h){h.target.disabled=!h.detail.editable}};this._dispatchEventFromSandbox(m,o)}),s.addEventListener("input",o=>{var W;const m=n(!0),h=n(!1);l.setValue(t,{value:m}),o.preventDefault(),(W=this.linkService.eventBus)==null||W.dispatch("dispatcheventinsandbox",{source:this,detail:{id:t,name:"Keystroke",value:Z,change:h,changeEx:m,willCommit:!1,commitKey:1,keyDown:!1}})}),this._setEventListeners(s,null,[["focus","Focus"],["blur","Blur"],["mousedown","Mouse Down"],["mouseenter","Mouse Enter"],["mouseleave","Mouse Exit"],["mouseup","Mouse Up"],["input","Action"],["input","Validate"]],o=>o.target.value)):s.addEventListener("input",function(o){l.setValue(t,{value:n(!0)})}),this.data.combo&&this._setTextStyle(s),this._setBackgroundColor(s),this._setDefaultPropertiesFromJS(s),this.container.append(s),this.container}}var Im,ZW;class nW extends lt{constructor(t){const{data:e,elements:s,parent:c}=t,d=!!c._commentManager;super(t,{isRenderable:!d&&lt._hasPopupData(e)});L(this,Im);if(this.elements=s,d&&lt._hasPopupData(e)){const n=this.popup=z(this,Im,ZW).call(this);for(const Z of s)Z.popup=n}else this.popup=null}render(){const{container:t}=this;t.classList.add("popupAnnotation"),t.role="comment";
4const e=this.popup=z(this,Im,ZW).call(this),s=[];for(const c of this.elements)c.popup=e,c.container.ariaHasPopup="dialog",s.push(c.data.id),c.addHighlightArea();return this.container.setAttribute("aria-controls",s.map(c=>`${xn}${c}`).join(",")),this.container}}Im=new WeakSet,ZW=function(){return new f1({container:this.container,color:this.data.color,titleObj:this.data.titleObj,modificationDate:this.data.modificationDate||this.data.creationDate,contentsObj:this.data.contentsObj,richText:this.data.richText,rect:this.data.rect,parentRect:this.data.parentRect||null,parent:this.parent,elements:this.elements,open:this.data.open,commentManager:this.parent._commentManager})};var ze,ld,cu,du,UZ,EZ,st,li,td,xa,KZ,vZ,ti,we,_i,qi,it,$i,ed,zm,lc,QZ,ga,sd,It,id,ol,e0,bW,oW,mW,s0,hW,bM,oM,mM,hM,i0,c0,uW;class f1{constructor({container:l,color:t,elements:e,titleObj:s,modificationDate:c,contentsObj:d,richText:n,parent:Z,rect:b,parentRect:o,open:m,commentManager:h=null}){L(this,ol);L(this,ze,null);L(this,ld,z(this,ol,mM).bind(this));L(this,cu,z(this,ol,uW).bind(this));L(this,du,z(this,ol,c0).bind(this));L(this,UZ,z(this,ol,i0).bind(this));L(this,EZ,null);L(this,st,null);L(this,li,null);L(this,td,null);L(this,xa,null);L(this,KZ,null);L(this,vZ,null);L(this,ti,!1);L(this,we,null);L(this,_i,null);L(this,qi,null);L(this,it,null);L(this,$i,null);L(this,ed,null);L(this,zm,null);L(this,lc,null);L(this,QZ,null);L(this,ga,null);L(this,sd,!1);L(this,It,null);L(this,id,null);p(this,st,l),p(this,QZ,s),p(this,li,d),p(this,lc,n),p(this,KZ,Z),p(this,EZ,t),p(this,zm,b),p(this,vZ,o),p(this,xa,e),p(this,ze,h),p(this,It,e[0]),p(this,td,L0.toDateObject(c)),this.trigger=e.flatMap(W=>W.getElementsToTriggerPopup()),h||(z(this,ol,e0).call(this),a(this,st).hidden=!0,m&&z(this,ol,i0).call(this))}renderCommentButton(){if(a(this,it)){a(this,it).parentNode||a(this,It).container.after(a(this,it));return}if(a(this,$i)||z(this,ol,bW).call(this),!a(this,$i))return;const{signal:l}=p(this,_i,new AbortController),t=a(this,It).hasOwnCommentButton,e=()=>{a(this,ze).toggleCommentPopup(this,!0,void 0,!t)},s=()=>{a(this,ze).toggleCommentPopup(this,!1,!0,!t)},c=()=>{a(this,ze).toggleCommentPopup(this,!1,!1)};if(t){p(this,it,a(this,It).container);for(const d of this.trigger)d.ariaHasPopup="dialog",d.ariaControls="commentPopup",d.addEventListener("keydown",a(this,ld),{signal:l}),d.addEventListener("click",e,{signal:l}),d.addEventListener("pointerenter",s,{signal:l}),d.addEventListener("pointerleave",c,{signal:l}),d.classList.add("popupTriggerArea")}else{const d=p(this,it,document.createElement("button"));d.className="annotationCommentButton";const n=a(this,It).container;d.style.zIndex=n.style.zIndex+1,d.tabIndex=0,d.ariaHasPopup="dialog",d.ariaControls="commentPopup",d.setAttribute("data-l10n-id","pdfjs-show-comment-button"),z(this,ol,mW).call(this),z(this,ol,oW).call(this),d.addEventListener("keydown",a(this,ld),{signal:l}),d.addEventListener("click",e,{signal:l}),d.addEventListener("pointerenter",s,{signal:l}),d.addEventListener("pointerleave",c,{signal:l}),n.after(d)}}get commentButtonColor(){const{color:l,opacity:t}=a(this,It).commentData;return l?a(this,KZ)._commentManager.makeCommentColor(l,t):null}focusCommentButton(){setTimeout(()=>{var l;(l=a(this,it))==null||l.focus()},0)}
4getData(){const{richText:l,color:t,opacity:e,creationDate:s,modificationDate:c}=a(this,It).commentData;return{contentsObj:{str:this.comment},richText:l,color:t,opacity:e,creationDate:s,modificationDate:c}}get elementBeforePopup(){return a(this,it)}get comment(){return a(this,id)||p(this,id,a(this,It).commentText),a(this,id)}set comment(l){l!==this.comment&&(a(this,It).commentText=p(this,id,l))}focus(){var l;(l=a(this,It).container)==null||l.focus()}get parentBoundingClientRect(){return a(this,It).layer.getBoundingClientRect()}setCommentButtonStates({selected:l,hasPopup:t}){a(this,it)&&(a(this,it).classList.toggle("selected",l),a(this,it).ariaExpanded=t)}setSelectedCommentButton(l){a(this,it).classList.toggle("selected",l)}get commentPopupPosition(){if(a(this,ed))return a(this,ed);const{x:l,y:t,height:e}=a(this,it).getBoundingClientRect(),{x:s,y:c,width:d,height:n}=a(this,It).layer.getBoundingClientRect();return[(l-s)/d,(t+e-c)/n]}set commentPopupPosition(l){p(this,ed,l)}hasDefaultPopupPosition(){return a(this,ed)===null}get commentButtonPosition(){return a(this,$i)}get commentButtonWidth(){return a(this,it).getBoundingClientRect().width/this.parentBoundingClientRect.width}editComment(l){const[t,e]=a(this,ed)||this.commentButtonPosition.map(b=>b/100),s=this.parentBoundingClientRect,{x:c,y:d,width:n,height:Z}=s;a(this,ze).showDialog(null,this,c+t*n,d+e*Z,{...l,parentDimensions:s})}render(){var e,s;if(a(this,we))return;const l=p(this,we,document.createElement("div"));if(l.className="popup",a(this,EZ)){const c=l.style.outlineColor=Q.makeHexColor(...a(this,EZ));l.style.backgroundColor=`color-mix(in srgb, ${c} 30%, white)`}const t=document.createElement("span");if(t.className="header",(e=a(this,QZ))!=null&&e.str){const c=document.createElement("span");c.className="title",t.append(c),{dir:c.dir,str:c.textContent}=a(this,QZ)}if(l.append(t),a(this,td)){const c=document.createElement("time");c.className="popupDate",c.setAttribute("data-l10n-id","pdfjs-annotation-date-time-string"),c.setAttribute("data-l10n-args",JSON.stringify({dateObj:a(this,td).valueOf()})),c.dateTime=a(this,td).toISOString(),t.append(c)}lX({html:a(this,ol,s0)||a(this,li).str,dir:(s=a(this,li))==null?void 0:s.dir,className:"popupContent"},l),a(this,st).append(l)}updateEdited({rect:l,popup:t,deleted:e}){var s;if(a(this,ze)){e?(this.remove(),p(this,id,null)):t&&(t.deleted?this.remove():(z(this,ol,mW).call(this),p(this,id,t.text))),l&&(p(this,$i,null),z(this,ol,bW).call(this),z(this,ol,oW).call(this));return}if(e||t!=null&&t.deleted){this.remove();return}z(this,ol,e0).call(this),a(this,ga)||p(this,ga,{contentsObj:a(this,li),richText:a(this,lc)}),l&&p(this,qi,null),t&&t.text&&(p(this,lc,z(this,ol,oM).call(this,t.text)),p(this,td,L0.toDateObject(t.date)),p(this,li,null)),(s=a(this,we))==null||s.remove(),p(this,we,null)}resetEdited(){var l;a(this,ga)&&({contentsObj:rt(this,li)._,richText:rt(this,lc)._}=a(this,ga),p(this,ga,null),(l=a(this,we))==null||l.remove(),p(this,we,null),p(this,qi,null))}remove(){var l,t,e;
4if((l=a(this,_i))==null||l.abort(),p(this,_i,null),(t=a(this,we))==null||t.remove(),p(this,we,null),p(this,sd,!1),p(this,ti,!1),(e=a(this,it))==null||e.remove(),p(this,it,null),this.trigger)for(const s of this.trigger)s.classList.remove("popupTriggerArea")}forceHide(){p(this,sd,this.isVisible),a(this,sd)&&(a(this,st).hidden=!0)}maybeShow(){a(this,ze)||(z(this,ol,e0).call(this),a(this,sd)&&(a(this,we)||z(this,ol,c0).call(this),p(this,sd,!1),a(this,st).hidden=!1))}get isVisible(){return a(this,ze)?!1:a(this,st).hidden===!1}}ze=new WeakMap,ld=new WeakMap,cu=new WeakMap,du=new WeakMap,UZ=new WeakMap,EZ=new WeakMap,st=new WeakMap,li=new WeakMap,td=new WeakMap,xa=new WeakMap,KZ=new WeakMap,vZ=new WeakMap,ti=new WeakMap,we=new WeakMap,_i=new WeakMap,qi=new WeakMap,it=new WeakMap,$i=new WeakMap,ed=new WeakMap,zm=new WeakMap,lc=new WeakMap,QZ=new WeakMap,ga=new WeakMap,sd=new WeakMap,It=new WeakMap,id=new WeakMap,ol=new WeakSet,e0=function(){var t;if(a(this,_i))return;p(this,_i,new AbortController);const{signal:l}=a(this,_i);for(const e of this.trigger)e.addEventListener("click",a(this,UZ),{signal:l}),e.addEventListener("pointerenter",a(this,du),{signal:l}),e.addEventListener("pointerleave",a(this,cu),{signal:l}),e.classList.add("popupTriggerArea");for(const e of a(this,xa))(t=e.container)==null||t.addEventListener("keydown",a(this,ld),{signal:l})},bW=function(){const l=a(this,xa).find(t=>t.hasCommentButton);l&&p(this,$i,l._normalizePoint(l.commentButtonPosition))},oW=function(){if(a(this,It).extraPopupElement&&!a(this,It).editor)return;a(this,it)||this.renderCommentButton();const[l,t]=a(this,$i),{style:e}=a(this,it);e.left=`calc(${l}%)`,e.top=`calc(${t}% - var(--comment-button-dim))`},mW=function(){a(this,It).extraPopupElement||(a(this,it)||this.renderCommentButton(),a(this,it).style.backgroundColor=this.commentButtonColor||"")},s0=function(){const l=a(this,lc),t=a(this,li);return l!=null&&l.str&&(!(t!=null&&t.str)||t.str===l.str)&&a(this,lc).html||null},hW=function(){var l,t,e;return((e=(t=(l=a(this,ol,s0))==null?void 0:l.attributes)==null?void 0:t.style)==null?void 0:e.fontSize)||0},bM=function(){var l,t,e;return((e=(t=(l=a(this,ol,s0))==null?void 0:l.attributes)==null?void 0:t.style)==null?void 0:e.color)||null},oM=function(l){const t=[],e={str:l,html:{name:"div",attributes:{dir:"auto"},children:[{name:"p",children:t}]}},s={style:{color:a(this,ol,bM),fontSize:a(this,ol,hW)?`calc(${a(this,ol,hW)}px * var(--total-scale-factor))`:""}};for(const c of l.split(`
5`))t.push({name:"span",value:c,attributes:s});return e},mM=function(l){l.altKey||l.shiftKey||l.ctrlKey||l.metaKey||(l.key==="Enter"||l.key==="Escape"&&a(this,ti))&&z(this,ol,i0).call(this)},hM=function(){if(a(this,qi)!==null)return;const{page:{view:l},viewport:{rawDims:{pageWidth:t,pageHeight:e,pageX:s,pageY:c}}}=a(this,KZ);let d=!!a(this,vZ),n=d?a(this,vZ):a(this,zm);for(const r of a(this,xa))if(!n||Q.intersect(r.data.rect,n)!==null){n=r.data.rect,d=!0;break}const Z=Q.normalizeRect([n[0],l[3]-n[1]+l[1],n[2],l[3]-n[3]+l[1]]),o=d?n[2]-n[0]+5:0,m=Z[0]+o,h=Z[1];p(this,qi,[100*(m-s)/t,100*(h-c)/e]);const{style:W}=a(this,st);W.left=`${a(this,qi)[0]}%`,W.top=`${a(this,qi)[1]}%`},i0=function(){if(a(this,ze)){a(this,ze).toggleCommentPopup(this,!1);return}p(this,ti,!a(this,ti)),a(this,ti)?(z(this,ol,c0).call(this),a(this,st).addEventListener("click",a(this,UZ)),a(this,st).addEventListener("keydown",a(this,ld))):(z(this,ol,uW).call(this),a(this,st).removeEventListener("click",a(this,UZ)),a(this,st).removeEventListener("keydown",a(this,ld)))},c0=function(){a(this,we)||this.render(),this.isVisible?a(this,ti)&&a(this,st).classList.add("focused"):(z(this,ol,hM).call(this),a(this,st).hidden=!1,a(this,st).style.zIndex=parseInt(a(this,st).style.zIndex)+1e3)},uW=function(){a(this,st).classList.remove("focused"),!(a(this,ti)||!this.isVisible)&&(a(this,st).hidden=!0,a(this,st).style.zIndex=parseInt(a(this,st).style.zIndex)-1e3)};class uM extends lt{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),this.textContent=l.data.textContent,this.textPosition=l.data.textPosition,this.annotationEditorType=cl.FREETEXT}
5render(){if(this.container.classList.add("freeTextAnnotation"),this.textContent){const l=this.contentElement=document.createElement("div");l.classList.add("annotationTextContent"),l.setAttribute("role","comment");for(const t of this.textContent){const e=document.createElement("span");e.textContent=t,l.append(e)}this.container.append(l)}return!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this._editOnDoubleClick(),this.container}}var wm;class B1 extends lt{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0});L(this,wm,null)}render(){this.container.classList.add("lineAnnotation");const{data:t,width:e,height:s}=this,c=this.svgFactory.create(e,s,!0),d=p(this,wm,this.svgFactory.createElement("svg:line"));return d.setAttribute("x1",t.rect[2]-t.lineCoordinates[0]),d.setAttribute("y1",t.rect[3]-t.lineCoordinates[1]),d.setAttribute("x2",t.rect[2]-t.lineCoordinates[2]),d.setAttribute("y2",t.rect[3]-t.lineCoordinates[3]),d.setAttribute("stroke-width",t.borderStyle.width||1),d.setAttribute("stroke","transparent"),d.setAttribute("fill","transparent"),c.append(d),this.container.append(c),!t.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return a(this,wm)}addHighlightArea(){this.container.classList.add("highlightArea")}}wm=new WeakMap;var Rm;class A1 extends lt{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0});L(this,Rm,null)}render(){this.container.classList.add("squareAnnotation");const{data:t,width:e,height:s}=this,c=this.svgFactory.create(e,s,!0),d=t.borderStyle.width,n=p(this,Rm,this.svgFactory.createElement("svg:rect"));return n.setAttribute("x",d/2),n.setAttribute("y",d/2),n.setAttribute("width",e-d),n.setAttribute("height",s-d),n.setAttribute("stroke-width",d||1),n.setAttribute("stroke","transparent"),n.setAttribute("fill","transparent"),c.append(n),this.container.append(c),!t.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return a(this,Rm)}addHighlightArea(){this.container.classList.add("highlightArea")}}Rm=new WeakMap;var Sm;class _1 extends lt{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0});L(this,Sm,null)}render(){this.container.classList.add("circleAnnotation");const{data:t,width:e,height:s}=this,c=this.svgFactory.create(e,s,!0),d=t.borderStyle.width,n=p(this,Sm,this.svgFactory.createElement("svg:ellipse"));return n.setAttribute("cx",e/2),n.setAttribute("cy",s/2),n.setAttribute("rx",e/2-d/2),n.setAttribute("ry",s/2-d/2),n.setAttribute("stroke-width",d||1),n.setAttribute("stroke","transparent"),n.setAttribute("fill","transparent"),c.append(n),this.container.append(c),!t.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return a(this,Sm)}addHighlightArea(){this.container.classList.add("highlightArea")}}Sm=new WeakMap;var xm;class WM extends lt{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0});L(this,xm,null);this.containerClassName="polylineAnnotation",this.svgElementName="svg:polyline"}render(){this.container.classList.add(this.containerClassName);const{data:{rect:t,vertices:e,borderStyle:s,popupRef:c},width:d,height:n}=this;if(!e)return this.container;const Z=this.svgFactory.create(d,n,!0);let b=[];for(let m=0,h=e.length;m<h;m+=2){const W=e[m]-t[0],r=t[3]-e[m+1];b.push(`${W},${r}`)}b=b.join(" ");const o=p(this,xm,this.svgFactory.createElement(this.svgElementName));return o.setAttribute("points",b),o.setAttribute("stroke-width",s.width||1),o.setAttribute("stroke","transparent"),o.setAttribute("fill","transparent"),Z.append(o),this.container.append(Z),!c&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}getElementsToTriggerPopup(){return a(this,xm)}addHighlightArea(){this.container.classList.add("highlightArea")}}xm=new WeakMap;class q1 extends WM{constructor(l){super(l),this.containerClassName="polygonAnnotation",this.svgElementName="svg:polygon"}}class $1 extends lt{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0})}render(){return this.container.classList.add("caretAnnotation"),!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container}}
5var gm,ja,jm,WW;class hG extends lt{constructor(t){super(t,{isRenderable:!0,ignoreBorder:!0});L(this,jm);L(this,gm,null);L(this,ja,[]);this.containerClassName="inkAnnotation",this.svgElementName="svg:polyline",this.annotationEditorType=this.data.it==="InkHighlight"?cl.HIGHLIGHT:cl.INK}render(){this.container.classList.add(this.containerClassName);const{data:{rect:t,rotation:e,inkLists:s,borderStyle:c,popupRef:d}}=this,{transform:n,width:Z,height:b}=z(this,jm,WW).call(this,e,t),o=this.svgFactory.create(Z,b,!0),m=p(this,gm,this.svgFactory.createElement("svg:g"));o.append(m),m.setAttribute("stroke-width",c.width||1),m.setAttribute("stroke-linecap","round"),m.setAttribute("stroke-linejoin","round"),m.setAttribute("stroke-miterlimit",10),m.setAttribute("stroke","transparent"),m.setAttribute("fill","transparent"),m.setAttribute("transform",n);for(let h=0,W=s.length;h<W;h++){const r=this.svgFactory.createElement(this.svgElementName);a(this,ja).push(r),r.setAttribute("points",s[h].join(",")),m.append(r)}return!d&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container.append(o),this._editOnDoubleClick(),this.container}updateEdited(t){super.updateEdited(t);const{thickness:e,points:s,rect:c}=t,d=a(this,gm);if(e>=0&&d.setAttribute("stroke-width",e||1),s)for(let n=0,Z=a(this,ja).length;n<Z;n++)a(this,ja)[n].setAttribute("points",s[n].join(","));if(c){const{transform:n,width:Z,height:b}=z(this,jm,WW).call(this,this.data.rotation,c);d.parentElement.setAttribute("viewBox",`0 0 ${Z} ${b}`),d.setAttribute("transform",n)}}getElementsToTriggerPopup(){return a(this,ja)}addHighlightArea(){this.container.classList.add("highlightArea")}}gm=new WeakMap,ja=new WeakMap,jm=new WeakSet,WW=function(t,e){switch(t){case 90:return{transform:`rotate(90) translate(${-e[0]},${e[1]}) scale(1,-1)`,width:e[3]-e[1],height:e[2]-e[0]};case 180:return{transform:`rotate(180) translate(${-e[2]},${e[1]}) scale(1,-1)`,width:e[2]-e[0],height:e[3]-e[1]};case 270:return{transform:`rotate(270) translate(${-e[2]},${e[3]}) scale(1,-1)`,width:e[3]-e[1],height:e[2]-e[0]};default:return{transform:`translate(${-e[0]},${e[3]}) scale(1,-1)`,width:e[2]-e[0],height:e[3]-e[1]}}};class GM extends lt{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0}),this.annotationEditorType=cl.HIGHLIGHT}render(){const{data:{overlaidText:l,popupRef:t}}=this;if(!t&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container.classList.add("highlightAnnotation"),this._editOnDoubleClick(),l){const e=document.createElement("mark");e.classList.add("overlaidText"),e.textContent=l,this.container.append(e)}return this.container}}class lV extends lt{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){const{data:{overlaidText:l,popupRef:t}}=this;if(!t&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container.classList.add("underlineAnnotation"),l){const e=document.createElement("u");e.classList.add("overlaidText"),e.textContent=l,this.container.append(e)}return this.container}}class tV extends lt{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){const{data:{overlaidText:l,popupRef:t}}=this;if(!t&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container.classList.add("squigglyAnnotation"),l){const e=document.createElement("u");e.classList.add("overlaidText"),e.textContent=l,this.container.append(e)}return this.container}}class eV extends lt{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0,createQuadrilaterals:!0})}render(){const{data:{overlaidText:l,popupRef:t}}=this;if(!t&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this.container.classList.add("strikeoutAnnotation"),l){const e=document.createElement("s");e.classList.add("overlaidText"),e.textContent=l,this.container.append(e)}return this.container}}class NM extends lt{constructor(l){super(l,{isRenderable:!0,ignoreBorder:!0}),this.annotationEditorType=cl.STAMP}render(){return this.container.classList.add("stampAnnotation"),this.container.setAttribute("role","img"),!this.data.popupRef&&this.hasPopupData&&(this.hasOwnCommentButton=!0,this._createPopup()),this._editOnDoubleClick(),this.container}}
5var Dm,Cm,GW;class sV extends lt{constructor(t){var s;super(t,{isRenderable:!0});L(this,Cm);L(this,Dm,null);const{file:e}=this.data;this.filename=e.filename,this.content=e.content,(s=this.linkService.eventBus)==null||s.dispatch("fileattachmentannotation",{source:this,...e})}render(){this.container.classList.add("fileAttachmentAnnotation");const{container:t,data:e}=this;let s;e.hasAppearance||e.fillAlpha===0?s=document.createElement("div"):(s=document.createElement("img"),s.src=`${this.imageResourcesPath}annotation-${/paperclip/i.test(e.name)?"paperclip":"pushpin"}.svg`,e.fillAlpha&&e.fillAlpha<1&&(s.style=`filter: opacity(${Math.round(e.fillAlpha*100)}%);`)),s.addEventListener("dblclick",z(this,Cm,GW).bind(this)),p(this,Dm,s);const{isMac:c}=Tt.platform;return t.addEventListener("keydown",d=>{d.key==="Enter"&&(c?d.metaKey:d.ctrlKey)&&z(this,Cm,GW).call(this)}),!e.popupRef&&this.hasPopupData?(this.hasOwnCommentButton=!0,this._createPopup()):s.classList.add("popupTriggerArea"),t.append(s),t}getElementsToTriggerPopup(){return a(this,Dm)}addHighlightArea(){this.container.classList.add("highlightArea")}}Dm=new WeakMap,Cm=new WeakSet,GW=function(){var t;(t=this.downloadManager)==null||t.openOrDownloadData(this.content,this.filename)};var Da,Ca,PZ,cd,Jm,Ja,Re,Fm,uc,d0,NW;const tN=class tN{constructor({div:l,accessibilityManager:t,annotationCanvasMap:e,annotationEditorUIManager:s,page:c,viewport:d,structTreeLayer:n,commentManager:Z,linkService:b,annotationStorage:o}){L(this,uc);L(this,Da,null);L(this,Ca,null);L(this,PZ,null);L(this,cd,new Map);L(this,Jm,null);L(this,Ja,null);L(this,Re,[]);L(this,Fm,!1);this.div=l,p(this,Da,t),p(this,Ca,e),p(this,Jm,n||null),p(this,Ja,b||null),p(this,PZ,o||new ZG),this.page=c,this.viewport=d,this.zIndex=0,this._annotationEditorUIManager=s,this._commentManager=Z||null}hasEditableAnnotations(){return a(this,cd).size>0}async render(l){var n;const{annotations:t}=l,e=this.div;cn(e,this.viewport);const s=new Map,c=[],d={data:null,layer:e,linkService:a(this,Ja),downloadManager:l.downloadManager,imageResourcesPath:l.imageResourcesPath||"",renderForms:l.renderForms!==!1,svgFactory:new j0,annotationStorage:a(this,PZ),enableComment:l.enableComment===!0,enableScripting:l.enableScripting===!0,hasJSActions:l.hasJSActions,fieldObjects:l.fieldObjects,parent:this,elements:null};for(const Z of t){if(Z.noHTML)continue;const b=Z.annotationType===Wt.POPUP;if(b){const h=s.get(Z.id);if(!h)continue;if(!this._commentManager){c.push(Z);continue}d.elements=h}else if(Z.rect[2]===Z.rect[0]||Z.rect[3]===Z.rect[1])continue;d.data=Z;const o=Hu.create(d);if(!o.isRenderable)continue;if(!b&&(a(this,Re).push(o),Z.popupRef)){const h=s.get(Z.popupRef);h?h.push(o):s.set(Z.popupRef,[o])}const m=o.render();Z.hidden&&(m.style.visibility="hidden"),o._isEditable&&(a(this,cd).set(o.data.id,o),(n=this._annotationEditorUIManager)==null||n.renderAnnotationElement(o))}await z(this,uc,d0).call(this);for(const Z of c){const b=d.elements=s.get(Z.id);d.data=Z;const o=Hu.create(d);if(!o.isRenderable)continue;const m=o.render();o.contentElement.id=`${xn}${Z.id}`,Z.hidden&&(m.style.visibility="hidden"),b.at(-1).container.after(m)}z(this,uc,NW).call(this)}async addLinkAnnotations(l){const t={data:null,layer:this.div,linkService:a(this,Ja),svgFactory:new j0,parent:this};for(const e of l){e.borderStyle||(e.borderStyle=tN._defaultBorderStyle),t.data=e;const s=Hu.create(t);s.isRenderable&&(s.render(),s.contentElement.id=`${xn}${e.id}`,a(this,Re).push(s))}await z(this,uc,d0).call(this)}update({viewport:l}){const t=this.div;this.viewport=l,cn(t,{rotation:l.rotation}),z(this,uc,NW).call(this),t.hidden=!1}getEditableAnnotations(){return Array.from(a(this,cd).values())}getEditableAnnotation(l){return a(this,cd).get(l)}addFakeAnnotation(l){const{div:t}=this,{id:e,rotation:s}=l,c=new U1({data:{id:e,rect:l.getPDFRect(),rotation:s},editor:l,layer:t,parent:this,enableComment:!!this._commentManager,linkService:a(this,Ja),annotationStorage:a(this,PZ)});return c.render(),c.contentElement.id=`${xn}${e}`,c.createOrUpdatePopup(),a(this,Re).push(c),c}removeAnnotation(l){var s;const t=a(this,Re).findIndex(c=>c.data.id===l);if(t<0)return;const[e]=a(this,Re).splice(t,1);(s=a(this,Da))==null||s.removePointerInTextLayer(e.contentElement)}updateFakeAnnotations(l){if(l.length!==0){for(const t of l)t.updateFakeAnnotationElement(this);z(this,uc,d0).call(this)}}togglePointerEvents(l=!1){this.div.classList.toggle("disabled",!l)}static get _defaultBorderStyle(){return el(this,"_defaultBorderStyle",Object.freeze({width:1,rawWidth:1,style:Tn.SOLID,dashArray:[3],horizontalCornerRadius:0,verticalCornerRadius:0}))}};Da=new WeakMap,Ca=new WeakMap,PZ=new WeakMap,cd=new WeakMap,Jm=new WeakMap,Ja=new WeakMap,Re=new WeakMap,Fm=new WeakMap,uc=new WeakSet,d0=async function(){var e,s,c;if(a(this,Re).length===0)return;this.div.replaceChildren();const l=[];
5if(!a(this,Fm)){p(this,Fm,!0);for(const{contentElement:d,data:{id:n}}of a(this,Re)){const Z=d.id=`${xn}${n}`;l.push((e=a(this,Jm))==null?void 0:e.getAriaAttributes(Z).then(b=>{if(b)for(const[o,m]of b)d.setAttribute(o,m)}))}}a(this,Re).sort(({data:{rect:[d,n,Z,b]}},{data:{rect:[o,m,h,W]}})=>{if(d===Z&&n===b)return 1;if(o===h&&m===W)return-1;const r=b,N=n,M=(n+b)/2,X=W,y=m,Y=(m+W)/2;if(M>=X&&Y<=N)return-1;if(Y>=r&&M<=y)return 1;const T=(d+Z)/2,V=(o+h)/2;return T-V});const t=document.createDocumentFragment();for(const d of a(this,Re))t.append(d.container),this._commentManager?(c=((s=d.extraPopupElement)==null?void 0:s.popup)||d.popup)==null||c.renderCommentButton():d.extraPopupElement&&t.append(d.extraPopupElement.render());if(this.div.append(t),await Promise.all(l),a(this,Da))for(const d of a(this,Re))a(this,Da).addPointerInTextLayer(d.contentElement,!1)},NW=function(){var t;if(!a(this,Ca))return;const l=this.div;for(const[e,s]of a(this,Ca)){const c=l.querySelector(`[data-annotation-id="${e}"]`);if(!c)continue;s.className="annotationContent";const{firstChild:d}=c;d?d.nodeName==="CANVAS"?d.replaceWith(s):d.classList.contains("annotationContent")?d.after(s):d.before(s):c.append(s);const n=a(this,cd).get(e);n&&(n._hasNoCanvas?((t=this._annotationEditorUIManager)==null||t.setMissingCanvas(e,c.id,s),n._hasNoCanvas=!1):n.canvas=s)}a(this,Ca).clear()};let D0=tN;const zh=/\r\n?|\n/g;var Se,Om,Fa,xe,Nt,rM,XM,MM,a0,Wc,n0,Z0,pM,XW,YM;const Ql=class Ql extends Ul{constructor(t){super({...t,name:"freeTextEditor"});L(this,Nt);L(this,Se,"");L(this,Om,`${this.id}-editor`);L(this,Fa,null);L(this,xe);E(this,"_colorPicker",null);this.color=t.color||Ql._defaultColor||Ul._defaultLineColor,p(this,xe,t.fontSize||Ql._defaultFontSize),this.annotationElementId||this._uiManager.a11yAlert("pdfjs-editor-freetext-added-alert"),this.canAddComment=!1}static get _keyboardManager(){const t=Ql.prototype,e=d=>d.isEmpty(),s=dn.TRANSLATE_SMALL,c=dn.TRANSLATE_BIG;return el(this,"_keyboardManager",new Zh([[["ctrl+s","mac+meta+s","ctrl+p","mac+meta+p"],t.commitOrRemove,{bubbles:!0}],[["ctrl+Enter","mac+meta+Enter","Escape","mac+Escape"],t.commitOrRemove],[["ArrowLeft","mac+ArrowLeft"],t._translateEmpty,{args:[-s,0],checker:e}],[["ctrl+ArrowLeft","mac+shift+ArrowLeft"],t._translateEmpty,{args:[-c,0],checker:e}],[["ArrowRight","mac+ArrowRight"],t._translateEmpty,{args:[s,0],checker:e}],[["ctrl+ArrowRight","mac+shift+ArrowRight"],t._translateEmpty,{args:[c,0],checker:e}],[["ArrowUp","mac+ArrowUp"],t._translateEmpty,{args:[0,-s],checker:e}],[["ctrl+ArrowUp","mac+shift+ArrowUp"],t._translateEmpty,{args:[0,-c],checker:e}],[["ArrowDown","mac+ArrowDown"],t._translateEmpty,{args:[0,s],checker:e}],[["ctrl+ArrowDown","mac+shift+ArrowDown"],t._translateEmpty,{args:[0,c],checker:e}]]))}static initialize(t,e){Ul.initialize(t,e);const s=getComputedStyle(document.documentElement);this._internalPadding=parseFloat(s.getPropertyValue("--freetext-padding"))}static updateDefaultParams(t,e){switch(t){case Wl.FREETEXT_SIZE:Ql._defaultFontSize=e;break;case Wl.FREETEXT_COLOR:Ql._defaultColor=e;break}}updateParams(t,e){switch(t){case Wl.FREETEXT_SIZE:z(this,Nt,rM).call(this,e);break;case Wl.FREETEXT_COLOR:z(this,Nt,XM).call(this,e);break}}static get defaultPropertiesToUpdate(){return[[Wl.FREETEXT_SIZE,Ql._defaultFontSize],[Wl.FREETEXT_COLOR,Ql._defaultColor||Ul._defaultLineColor]]}get propertiesToUpdate(){return[[Wl.FREETEXT_SIZE,a(this,xe)],[Wl.FREETEXT_COLOR,this.color]]}get toolbarButtons(){return this._colorPicker||(this._colorPicker=new g0(this)),[["colorPicker",this._colorPicker]]}get colorType(){return Wl.FREETEXT_COLOR}onUpdatedColor(){var t;this.editorDiv.style.color=this.color,(t=this._colorPicker)==null||t.update(this.color),super.onUpdatedColor()}_translateEmpty(t,e){this._uiManager.translateSelectedEditors(t,e,!0)}getInitialTranslation(){const t=this.parentScale;return[-Ql._internalPadding*t,-(Ql._internalPadding+a(this,xe))*t]}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(this.isAttachedToDOM||this.parent.add(this)))}enableEditMode(){if(!super.enableEditMode())return!1;this.overlayDiv.classList.remove("enabled"),this.editorDiv.contentEditable=!0,this._isDraggable=!1,this.div.removeAttribute("aria-activedescendant"),p(this,Fa,new AbortController);const t=this._uiManager.combinedSignal(a(this,Fa));return this.editorDiv.addEventListener("keydown",this.editorDivKeydown.bind(this),{signal:t}),this.editorDiv.addEventListener("focus",this.editorDivFocus.bind(this),{signal:t}),this.editorDiv.addEventListener("blur",this.editorDivBlur.bind(this),{signal:t}),this.editorDiv.addEventListener("input",this.editorDivInput.bind(this),{signal:t}),this.editorDiv.addEventListener("paste",this.editorDivPaste.bind(this),{signal:t}),!0}disableEditMode(){var t;return super.disableEditMode()?(this.overlayDiv.classList.add("enabled"),this.editorDiv.contentEditable=!1,this.div.setAttribute("aria-activedescendant",a(this,Om)),this._isDraggable=!0,(t=a(this,Fa))==null||t.abort(),p(this,Fa,null),this.div.focus({preventScroll:!0}),this.isEditing=!1,this.parent.div.classList.add("freetextEditing"),!0):!1}focusin(t){this._focusEventsAllowed&&(super.focusin(t),t.target!==this.editorDiv&&this.editorDiv.focus())}onceAdded(t){var e;this.width||(this.enableEditMode(),t&&this.editorDiv.focus(),(e=this._initialOptions)!=null&&e.isCentered&&this.center(),this._initialOptions=null)}isEmpty(){return!this.editorDiv||this.editorDiv.innerText.trim()===""}remove(){this.isEditing=!1,this.parent&&(this.parent.setEditingState(!0),this.parent.div.classList.add("freetextEditing")),super.remove()}commit(){if(!this.isInEditMode())return;super.commit(),this.disableEditMode();const t=a(this,Se),e=p(this,Se,z(this,Nt,MM).call(this).trimEnd());if(t===e)return;const s=c=>{if(p(this,Se,c),!c){this.remove();return}z(this,Nt,Z0).call(this),this._uiManager.rebuild(this),z(this,Nt,a0).call(this)};this.addCommands({cmd:()=>{s(e)},undo:()=>{s(t)},mustExec:!1}),z(this,Nt,a0).call(this)}shouldGetKeyboardEvents(){return this.isInEditMode()}enterInEditMode(){this.enableEditMode(),this.editorDiv.focus()}keydown(t){t.target===this.div&&t.key==="Enter"&&(this.enterInEditMode(),t.preventDefault())}editorDivKeydown(t){Ql._keyboardManager.exec(this,t)}editorDivFocus(t){this.isEditing=!0}editorDivBlur(t){this.isEditing=!1}editorDivInput(t){this.parent.div.classList.toggle("freetextEditing",this.isEmpty())}disableEditing(){this.editorDiv.setAttribute("role","comment"),this.editorDiv.removeAttribute("aria-multiline")}enableEditing(){this.editorDiv.setAttribute("role","textbox"),this.editorDiv.setAttribute("aria-multiline",!0)}get canChangeContent(){return!0}
5render(){if(this.div)return this.div;let t,e;(this._isCopy||this.annotationElementId)&&(t=this.x,e=this.y),super.render(),this.editorDiv=document.createElement("div"),this.editorDiv.className="internal",this.editorDiv.setAttribute("id",a(this,Om)),this.editorDiv.setAttribute("data-l10n-id","pdfjs-free-text2"),this.editorDiv.setAttribute("data-l10n-attrs","default-content"),this.enableEditing(),this.editorDiv.contentEditable=!0;const{style:s}=this.editorDiv;if(s.fontSize=`calc(${a(this,xe)}px * var(--total-scale-factor))`,s.color=this.color,this.div.append(this.editorDiv),this.overlayDiv=document.createElement("div"),this.overlayDiv.classList.add("overlay","enabled"),this.div.append(this.overlayDiv),this._isCopy||this.annotationElementId){const[c,d]=this.parentDimensions;if(this.annotationElementId){const{position:n}=this._initialData;let[Z,b]=this.getInitialTranslation();[Z,b]=this.pageTranslationToScreen(Z,b);const[o,m]=this.pageDimensions,[h,W]=this.pageTranslation;let r,N;switch(this.rotation){case 0:r=t+(n[0]-h)/o,N=e+this.height-(n[1]-W)/m;break;case 90:r=t+(n[0]-h)/o,N=e-(n[1]-W)/m,[Z,b]=[b,-Z];break;case 180:r=t-this.width+(n[0]-h)/o,N=e-(n[1]-W)/m,[Z,b]=[-Z,-b];break;case 270:r=t+(n[0]-h-this.height*m)/o,N=e+(n[1]-W-this.width*o)/m,[Z,b]=[-b,Z];break}this.setAt(r*c,N*d,Z,b)}else this._moveAfterPaste(t,e);z(this,Nt,Z0).call(this),this._isDraggable=!0,this.editorDiv.contentEditable=!1}else this._isDraggable=!1,this.editorDiv.contentEditable=!0;return this.div}editorDivPaste(t){var r,N,M;const e=t.clipboardData||window.clipboardData,{types:s}=e;if(s.length===1&&s[0]==="text/plain")return;t.preventDefault();const c=z(r=Ql,Wc,XW).call(r,e.getData("text")||"").replaceAll(zh,`
6`);if(!c)return;const d=window.getSelection();if(!d.rangeCount)return;this.editorDiv.normalize(),d.deleteFromDocument();const n=d.getRangeAt(0);if(!c.includes(`
7`)){n.insertNode(document.createTextNode(c)),this.editorDiv.normalize(),d.collapseToStart();return}const{startContainer:Z,startOffset:b}=n,o=[],m=[];if(Z.nodeType===Node.TEXT_NODE){const X=Z.parentElement;if(m.push(Z.nodeValue.slice(b).replaceAll(zh,"")),X!==this.editorDiv){let y=o;for(const Y of this.editorDiv.childNodes){if(Y===X){y=m;continue}y.push(z(N=Ql,Wc,n0).call(N,Y))}}o.push(Z.nodeValue.slice(0,b).replaceAll(zh,""))}else if(Z===this.editorDiv){let X=o,y=0;for(const Y of this.editorDiv.childNodes)y++===b&&(X=m),X.push(z(M=Ql,Wc,n0).call(M,Y))}p(this,Se,`${o.join(`
8`)}${c}${m.join(`
9`)}`),z(this,Nt,Z0).call(this);const h=new Range;let W=Math.sumPrecise(o.map(X=>X.length));for(const{firstChild:X}of this.editorDiv.childNodes)if(X.nodeType===Node.TEXT_NODE){const y=X.nodeValue.length;if(W<=y){h.setStart(X,W),h.setEnd(X,W);break}W-=y}d.removeAllRanges(),d.addRange(h)}get contentDiv(){return this.editorDiv}getPDFRect(){const t=Ql._internalPadding*this.parentScale;return this.getRect(t,t)}static async deserialize(t,e,s){var n;let c=null;if(t instanceof uM){const{data:{defaultAppearanceData:{fontSize:Z,fontColor:b},rect:o,rotation:m,id:h,popupRef:W,richText:r,contentsObj:N,creationDate:M,modificationDate:X},textContent:y,textPosition:Y,parent:{page:{pageNumber:T}}}=t;if(!y||y.length===0)return null;c=t={annotationType:cl.FREETEXT,color:Array.from(b),fontSize:Z,value:y.join(`
10`),position:Y,pageIndex:T-1,rect:o.slice(0),rotation:m,annotationElementId:h,id:h,deleted:!1,popupRef:W,comment:(N==null?void 0:N.str)||null,richText:r,creationDate:M,modificationDate:X}}const d=await super.deserialize(t,e,s);return p(d,xe,t.fontSize),d.color=Q.makeHexColor(...t.color),p(d,Se,z(n=Ql,Wc,XW).call(n,t.value)),d._initialData=c,t.comment&&d.setCommentData(t),d}serialize(t=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const e=Ul._colorManager.convert(this.isAttachedToDOM?getComputedStyle(this.editorDiv).color:this.color),s=Object.assign(super.serialize(t),{color:e,fontSize:a(this,xe),value:z(this,Nt,pM).call(this)});return this.addComment(s),t?(s.isCopy=!0,s):this.annotationElementId&&!z(this,Nt,YM).call(this,s)?null:(s.id=this.annotationElementId,s)}renderAnnotationElement(t){const e=super.renderAnnotationElement(t);if(!e)return null;const{style:s}=e;s.fontSize=`calc(${a(this,xe)}px * var(--total-scale-factor))`,s.color=this.color,e.replaceChildren();for(const c of a(this,Se).split(`
11`)){const d=document.createElement("div");d.append(c?document.createTextNode(c):document.createElement("br")),e.append(d)}return t.updateEdited({rect:this.getPDFRect(),popup:this._uiManager.hasCommentManager()||this.hasEditedComment?this.comment:{text:a(this,Se)}}),e}resetAnnotationElement(t){super.resetAnnotationElement(t),t.resetEdited()}};Se=new WeakMap,Om=new WeakMap,Fa=new WeakMap,xe=new WeakMap,Nt=ne
11w WeakSet,rM=function(t){const e=c=>{this.editorDiv.style.fontSize=`calc(${c}px * var(--total-scale-factor))`,this.translate(0,-(c-a(this,xe))*this.parentScale),p(this,xe,c),z(this,Nt,a0).call(this)},s=a(this,xe);this.addCommands({cmd:e.bind(this,t),undo:e.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Wl.FREETEXT_SIZE,overwriteIfSameType:!0,keepUndo:!0})},XM=function(t){const e=c=>{this.color=c,this.onUpdatedColor()},s=this.color;this.addCommands({cmd:e.bind(this,t),undo:e.bind(this,s),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Wl.FREETEXT_COLOR,overwriteIfSameType:!0,keepUndo:!0})},MM=function(){var s;const t=[];this.editorDiv.normalize();let e=null;for(const c of this.editorDiv.childNodes)(e==null?void 0:e.nodeType)===Node.TEXT_NODE&&c.nodeName==="BR"||(t.push(z(s=Ql,Wc,n0).call(s,c)),e=c);return t.join(`
12`)},a0=function(){const[t,e]=this.parentDimensions;let s;if(this.isAttachedToDOM)s=this.div.getBoundingClientRect();else{const{currentLayer:c,div:d}=this,n=d.style.display,Z=d.classList.contains("hidden");d.classList.remove("hidden"),d.style.display="hidden",c.div.append(this.div),s=d.getBoundingClientRect(),d.remove(),d.style.display=n,d.classList.toggle("hidden",Z)}this.rotation%180===this.parentRotation%180?(this.width=s.width/t,this.height=s.height/e):(this.width=s.height/t,this.height=s.width/e),this.fixAndSetPosition()},Wc=new WeakSet,n0=function(t){return(t.nodeType===Node.TEXT_NODE?t.nodeValue:t.innerText).replaceAll(zh,"")},Z0=function(){if(this.editorDiv.replaceChildren(),!!a(this,Se))for(const t of a(this,Se).split(`
13`)){const e=document.createElement("div");e.append(t?document.createTextNode(t):document.createElement("br")),this.editorDiv.append(e)}},pM=function(){return a(this,Se).replaceAll(" "," ")},XW=function(t){return t.replaceAll(" "," ")},YM=function(t){const{value:e,fontSize:s,color:c,pageIndex:d}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||t.value!==e||t.fontSize!==s||t.color.some((n,Z)=>n!==c[Z])||t.pageIndex!==d},L(Ql,Wc),E(Ql,"_freeTextDefaultContent",""),E(Ql,"_internalPadding",0),E(Ql,"_defaultColor",null),E(Ql,"_defaultFontSize",10),E(Ql,"_type","freetext"),E(Ql,"_editorType",cl.FREETEXT);let rW=Ql;class H{toSVGPath(){Jl("Abstract method `toSVGPath` must be implemented.")}get box(){Jl("Abstract getter `box` must be implemented.")}serialize(l,t){Jl("Abstract method `serialize` must be implemented.")}static _rescale(l,t,e,s,c,d){d||(d=new Float32Array(l.length));for(let n=0,Z=l.length;n<Z;n+=2)d[n]=t+l[n]*s,d[n+1]=e+l[n+1]*c;return d}static _rescaleAndSwap(l,t,e,s,c,d){d||(d=new Float32Array(l.length));for(let n=0,Z=l.length;n<Z;n+=2)d[n]=t+l[n+1]*s,d[n+1]=e+l[n]*c;return d}static _translate(l,t,e,s){s||(s=new Float32Array(l.length));for(let c=0,d=l.length;c<d;c+=2)s[c]=t+l[c],s[c+1]=e+l[c+1];return s}static svgRound(l){return Math.round(l*1e4)}static _normalizePoint(l,t,e,s,c){switch(c){case 90:return[1-t/e,l/s];case 180:return[1-l/e,1-t/s];case 270:return[t/e,1-l/s];default:return[l/e,t/s]}}static _normalizePagePoint(l,t,e){switch(e){case 90:return[1-t,l];case 180:return[1-l,1-t];case 270:return[t,1-l];default:return[l,t]}}static createBezierPoints(l,t,e,s,c,d){return[(l+5*e)/6,(t+5*s)/6,(5*e+c)/6,(5*s+d)/6,(e+c)/2,(s+d)/2]}}E(H,"PRECISION",1e-4);var ge,ps,HZ,fZ,ei,ml,Oa,ka,km,Um,BZ,AZ,dd,Em,au,nu,yt,Hb,yM,TM,VM,LM,IM,zM;const Li=class Li{constructor({x:l,y:t},e,s,c,d,n=0){L(this,yt);L(this,ge);L(this,ps,[]);L(this,HZ);L(this,fZ);L(this,ei,[]);L(this,ml,new Float32Array(18));L(this,Oa);L(this,ka);L(this,km);L(this,Um);L(this,BZ);L(this,AZ);L(this,dd,[]);p(this,ge,e),p(this,AZ,c*s),p(this,fZ,d),a(this,ml).set([NaN,NaN,NaN,NaN,l,t],6),p(this,HZ,n),p(this,Um,a(Li,Em)*s),p(this,km,a(Li,nu)*s),p(this,BZ,s),a(this,dd).push(l,t)}isEmpty(){return isNaN(a(this,ml)[8])}add({x:l,y:t}){var S;p(this,Oa,l),p(this,ka,t);const[e,s,c,d]=a(this,ge);let[n,Z,b,o]=a(this,ml).subarray(8,12);const m=l-b,h=t-o,W=Math.hypot(m,h);if(W<a(this,km))return!1;const r=W-a(this,Um),N=r/W,M=N*m,X=N*h;let y=n,Y=Z;n=b,Z=o,b+=M,o+=X,(S=a(this,dd))==null||S.push(l,t);const T=-X/r,V=M/r,I=T*a(this,AZ),w=V*a(this,AZ);return a(this,ml).set(a(this,ml).subarray(2,8),0),a(this,ml).set([b+I,o+w],4),a(this,ml).set(a(this,ml).subarray(14,18),12),a(this,ml).set([b-I,o-w],16),isNaN(a(this,ml)[6])?(a(this,ei).length===0&&(a(this,ml).set([n+I,Z+w],2),a(this,ei).push(NaN,NaN,NaN,NaN,(n+I-e)/c,(Z+w-s)/d),a(this,ml).set([n-I,Z-w],14),a(this,ps).push(NaN,NaN,NaN,NaN,(n-I-e)/c,(Z-w-s)/d)),a(this,ml).set([y,Y,n,Z,b,o],6),!this.isEmpty()):(a(this,ml).set([y,Y,n,Z,b,o],6),Math.abs(Math.atan2(Y-Z,y-n)-Math.atan2(X,M))<Math.PI/2?([n,Z,b,o]=a(this,ml).subarray(2,6),a(this,ei).push(NaN,NaN,NaN,NaN,((n+b)/2-e)/c,((Z+o)/2-s)/d),[n,Z,y,Y]=a(this,ml).subarray(14,18),a(this,ps).push(NaN,NaN,NaN,NaN,((y+n)/2-e)/c,((Y+Z)/2-s)/d),!0):([y,Y,n,Z,b,o]=a(this,ml).subarray(0,6),a(this,ei).push(((y+5*n)/6-e)/c,
13((Y+5*Z)/6-s)/d,((5*n+b)/6-e)/c,((5*Z+o)/6-s)/d,((n+b)/2-e)/c,((Z+o)/2-s)/d),[b,o,n,Z,y,Y]=a(this,ml).subarray(12,18),a(this,ps).push(((y+5*n)/6-e)/c,((Y+5*Z)/6-s)/d,((5*n+b)/6-e)/c,((5*Z+o)/6-s)/d,((n+b)/2-e)/c,((Z+o)/2-s)/d),!0))}toSVGPath(){if(this.isEmpty())return"";const l=a(this,ei),t=a(this,ps);if(isNaN(a(this,ml)[6])&&!this.isEmpty())return z(this,yt,yM).call(this);const e=[];e.push(`M${l[4]} ${l[5]}`);for(let s=6;s<l.length;s+=6)isNaN(l[s])?e.push(`L${l[s+4]} ${l[s+5]}`):e.push(`C${l[s]} ${l[s+1]} ${l[s+2]} ${l[s+3]} ${l[s+4]} ${l[s+5]}`);z(this,yt,VM).call(this,e);for(let s=t.length-6;s>=6;s-=6)isNaN(t[s])?e.push(`L${t[s+4]} ${t[s+5]}`):e.push(`C${t[s]} ${t[s+1]} ${t[s+2]} ${t[s+3]} ${t[s+4]} ${t[s+5]}`);return z(this,yt,TM).call(this,e),e.join(" ")}newFreeDrawOutline(l,t,e,s,c,d){return new wM(l,t,e,s,c,d)}getOutlines(){var m;const l=a(this,ei),t=a(this,ps),e=a(this,ml),[s,c,d,n]=a(this,ge),Z=new Float32Array((((m=a(this,dd))==null?void 0:m.length)??0)+2);for(let h=0,W=Z.length-2;h<W;h+=2)Z[h]=(a(this,dd)[h]-s)/d,Z[h+1]=(a(this,dd)[h+1]-c)/n;if(Z[Z.length-2]=(a(this,Oa)-s)/d,Z[Z.length-1]=(a(this,ka)-c)/n,isNaN(e[6])&&!this.isEmpty())return z(this,yt,LM).call(this,Z);const b=new Float32Array(a(this,ei).length+24+a(this,ps).length);let o=l.length;for(let h=0;h<o;h+=2){if(isNaN(l[h])){b[h]=b[h+1]=NaN;continue}b[h]=l[h],b[h+1]=l[h+1]}o=z(this,yt,zM).call(this,b,o);for(let h=t.length-6;h>=6;h-=6)for(let W=0;W<6;W+=2){if(isNaN(t[h+W])){b[o]=b[o+1]=NaN,o+=2;continue}b[o]=t[h+W],b[o+1]=t[h+W+1],o+=2}return z(this,yt,IM).call(this,b,o),this.newFreeDrawOutline(b,Z,a(this,ge),a(this,BZ),a(this,HZ),a(this,fZ))}};ge=new WeakMap,ps=new WeakMap,HZ=new WeakMap,fZ=new WeakMap,ei=new WeakMap,ml=new WeakMap,Oa=new WeakMap,ka=new WeakMap,km=new WeakMap,Um=new WeakMap,BZ=new WeakMap,AZ=new WeakMap,dd=new WeakMap,Em=new WeakMap,au=new WeakMap,nu=new WeakMap,yt=new WeakSet,Hb=function(){const l=a(this,ml).subarray(4,6),t=a(this,ml).subarray(16,18),[e,s,c,d]=a(this,ge);return[(a(this,Oa)+(l[0]-t[0])/2-e)/c,(a(this,ka)+(l[1]-t[1])/2-s)/d,(
13a(this,Oa)+(t[0]-l[0])/2-e)/c,(a(this,ka)+(t[1]-l[1])/2-s)/d]},yM=function(){const[l,t,e,s]=a(this,ge),[c,d,n,Z]=z(this,yt,Hb).call(this);return`M${(a(this,ml)[2]-l)/e} ${(a(this,ml)[3]-t)/s} L${(a(this,ml)[4]-l)/e} ${(a(this,ml)[5]-t)/s} L${c} ${d} L${n} ${Z} L${(a(this,ml)[16]-l)/e} ${(a(this,ml)[17]-t)/s} L${(a(this,ml)[14]-l)/e} ${(a(this,ml)[15]-t)/s} Z`},TM=function(l){const t=a(this,ps);l.push(`L${t[4]} ${t[5]} Z`)},VM=function(l){const[t,e,s,c]=a(this,ge),d=a(this,ml).subarray(4,6),n=a(this,ml).subarray(16,18),[Z,b,o,m]=z(this,yt,Hb).call(this);l.push(`L${(d[0]-t)/s} ${(d[1]-e)/c} L${Z} ${b} L${o} ${m} L${(n[0]-t)/s} ${(n[1]-e)/c}`)},LM=function(l){const t=a(this,ml),[e,s,c,d]=a(this,ge),[n,Z,b,o]=z(this,yt,Hb).call(this),m=new Float32Array(36);return m.set([NaN,NaN,NaN,NaN,(t[2]-e)/c,(t[3]-s)/d,NaN,NaN,NaN,NaN,(t[4]-e)/c,(t[5]-s)/d,NaN,NaN,NaN,NaN,n,Z,NaN,NaN,NaN,NaN,b,o,NaN,NaN,NaN,NaN,(t[16]-e)/c,(t[17]-s)/d,NaN,NaN,NaN,NaN,(t[14]-e)/c,(t[15]-s)/d],0),this.newFreeDrawOutline(m,l,a(this,ge),a(this,BZ),a(this,HZ),a(this,fZ))},IM=function(l,t){const e=a(this,ps);return l.set([NaN,NaN,NaN,NaN,e[4],e[5]],t),t+=6},zM=function(l,t){const e=a(this,ml).subarray(4,6),s=a(this,ml).subarray(16,18),[c,d,n,Z]=a(this,ge),[b,o,m,h]=z(this,yt,Hb).call(this);return l.set([NaN,NaN,NaN,NaN,(e[0]-c)/n,(e[1]-d)/Z,NaN,NaN,NaN,NaN,b,o,NaN,NaN,NaN,NaN,m,h,NaN,NaN,NaN,NaN,(s[0]-c)/n,(s[1]-d)/Z],t),t+=24},L(Li,Em,8),L(Li,au,2),L(Li,nu,a(Li,Em)+a(Li,au));let C0=Li;var _Z,Ua,tc,Km,je,vm,bt,Zu,RM;class wM extends H{constructor(t,e,s,c,d,n){super();L(this,Zu);L(this,_Z);L(this,Ua,new Float32Array(4));L(this,tc);L(this,Km);L(this,je);L(this,vm);L(this,bt);p(this,bt,t),p(this,je,e),p(this,_Z,s),p(this,vm,c),p(this,tc,d),p(this,Km,n),this.firstPoint=[NaN,NaN],this.lastPoint=[NaN,NaN],z(this,Zu,RM).call(this,n);const[Z,b,o,m]=a(this,Ua);for(let h=0,W=t.length;h<W;h+=2)t[h]=(t[h]-Z)/o,t[h+1]=(t[h+1]-b)/m;for(let h=0,W=e.length;h<W;h+=2)e[h]=(e[h]-Z)/o,e[h+1]=(e[h+1]-b)/m}toSVGPath(){const t=[`M${a(this,bt)[4]} ${a(this,bt)[5]}`];for(let e=6,s=a(this,bt).length;e<s;e+=6){if(isNaN(a(this,bt)[e])){t.push(`L${a(this,bt)[e+4]} ${a(this,bt)[e+5]}`);continue}t.push(`C${a(this,bt)[e]} ${a(this,bt)[e+1]} ${a(this,bt)[e+2]} ${a(this,bt)[e+3]} ${a(this,bt)[e+4]} ${a(this,bt)[e+5]}`)}return t.push("Z"),t.join(" ")}serialize([t,e,s,c],d){const n=s-t,Z=c-e;let b,o;switch(d){case 0:b=H._rescale(a(this,bt),t,c,n,-Z),o=H._rescale(a(this,je),t,c,n,-Z);break;case 90:b=H._rescaleAndSwap(a(this,bt),t,e,n,Z),o=H._rescaleAndSwap(a(this,je),t,e,n,Z);break;case 180:b=H._rescale(a(this,bt),s,e,-n,Z),o=H._rescale(a(this,je),s,e,-n,Z);break;case 270:b=H._rescaleAndSwap(a(this,bt),s,c,-n,-Z),o=H._rescaleAndSwap(a(this,je),s,c,-n,-Z);break}return{outline:Array.from(b),points:[Array.from(o)]}}get box(){return a(this,Ua)}newOutliner(t,e,s,c,d,n=0){return new C0(t,e,s,c,d,n)}getNewOutline(t,e){const[s,c,d,n]=a(this,Ua),[Z,b,o,m]=a(this,_Z),h=d*o,W=n*m,r=s*o+Z,N=c*m+b,M=this.newOutliner({x:a(this,je)[0]*h+r,y:a(this,je)[1]*W+N},a(this,_Z),a(this,vm),t,a(this,Km),e??a(this,tc));for(let X=2;X<a(this,je).length;X+=2)M.add({x:a(this,je)[X]*h+r,y:a(this,je)[X+1]*W+N});return M.getOutlines()}}_Z=new WeakMap,Ua=new WeakMap,tc=new WeakMap,Km=new WeakMap,je=new WeakMap,vm=new WeakMap,bt=new WeakMap,Zu=new WeakSet,RM=function(t){const e=a(this,bt);let s=e[4],c=e[5];const d=[s,c,s,c];let n=s,Z=c,b=s,o=c;const m=t?Math.max:Math.min,h=new Float32Array(4);for(let r=6,N=e.length;r<N;r+=6){const M=e[r+4],X=e[r+5];isNaN(e[r])?(Q.pointBoundingBox(M,X,d),Z>X?(n=M,Z=X):Z===X&&(n=m(n,M)),o<X?(b=M,o=X):o===X&&(b=m(b,M))):(h[0]=h[1]=1/0,h[2]=h[3]=-1/0,Q.bezierBoundingBox(s,c,...e.slice(r,r+6),h),Q.rectBoundingBox(h[0],h[1],h[2],h[3],d),Z>h[1]?(n=h[0],Z=h[1]):Z===h[1]&&(n=m(n,h[0])),o<h[3]?(b=h[2],o=h[3]):o===h[3]&&(b=m(b,h[2]))),s=M,c=X}const W=a(this,Ua);W[0]=d[0]-a(this,tc),W[1]=d[1]-a(this,tc),W[2]=d[2]-d[0]+2*a(this,tc),W[3]=d[3]-d[1]+2*a(this,tc),this.firstPoint=[n,Z],this.lastPoint=[b,o]};var Qm,Pm,Hm,ad,Ys,ne,SM,b0,xM,gM,pW;class MW{constructor(l,t=0,e=0,s=!0){L(this,ne);L(this,Qm);L(this,Pm);L(this,Hm);L(this,ad,[]);L(this,Ys,[]);const c=[1/0,1/0,-1/0,-1/0],d=10**-4;for(const{x:N,y:M,width:X,height:y}of l){const Y=Math.floor((N-t)/d)*d,T=Math.ceil((N+X+t)/d)*d,V=Math.floor((M-t)/d)*d,I=Math.ceil((M+y+t)/d)*d,w=[Y,V,I,!0],R=[T,V,I,!1];a(this,ad).push(w,R),Q.rectBoundingBox(Y,V,T,I,c)}const n=c[2]-c[0]+2*e,Z=c[3]-c[1]+2*e,b=c[0]-e,o=c[1]-e;let m=s?-1/0:1/0,h=1/0;const W=a(this,ad).at(s?-1:-2),r=[W[0],W[2]];for(const N of a(this,ad)){const[M,X,y,Y]=N;!Y&&s?X<h?(h=X,m=M):X===h&&(m=Math.max(m,M)):Y&&!s&&(X<h?(h=X,m=M):X===h&&(m=Math.min(m,M))),N[0]=(M-b)/n,N[1]=(X-o)/Z,N[2]=(y-o)/Z}p(this,Qm,new Float32Array([b,o,n,Z])),p(this,Pm,[m,h]),p(this,Hm,r)}getOutlines(){a(this,ad).sort((t,e)=>t[0]-e[0]||t[1]-e[1]||t[2]-e[2]);const l=[];for(const t of a(this,ad))t[3]?(l.push(...z(this,ne,pW).call(this,t)),z(this,ne,xM).call(this,t)):(z(this,ne,gM).call(this,t),l.push(...z(this,ne,pW).call(this,t)));return z(this,ne,SM).call(this,l)}}Qm=new WeakMap,Pm=new WeakMap,Hm=new WeakMap,ad=new WeakMap,Ys=new WeakMap,ne=new WeakSet,SM=function(l){const t=[],e=new Set;for(const d of l){const[n,Z,b]=d;t.push([n,Z,d],[n,b,d])}t.sort((d,n)=>d[1]-n[1]||d[0]-n[0]);for(let d=0,n=t.length;d<n;d+=2){const Z=t[d][2],b=t[d+1][2];Z.push(b),b.push(Z),e.add(Z),e.add(b)}const s=[];let c;for(;e.size>0;){const d=e.values().next().value;let[n,Z,b,o,m]=d;e.delete(d);let h=n,W=Z;for(c=[n,b],s.push(c);;){let r;if(e.has(o))r=o;else if(e.has(m))r=m;else break;e.delete(r),[n,Z,b,o,m]=r,h!==n&&(c.push(h,W,n,W===Z?Z:b),h=n),W=W===Z?b:Z}c.push(h,W)}return new iV(s,a(this,Qm),a(this,Pm),a(this,Hm))},b0=function(l){const t=a(this,Ys);let e=0,s=t.length-1;for(;e<=s;){const c=e+s>>1,d=t[c][0];if(d===l)return c;d<l?e=c+1:s=c-1}return s+1},xM=function([,l,t]){const e=z(this,ne,b0).call(this,l);a(this,Ys).splice(e,0,[l,t])},gM=function([,l,t]){const e=z(this,ne,b0).call(this,l);for(let s=e;s<a(this,Ys).length;s++){const[c,d]=a(this,Ys)[s];if(c!==l)break;if(c===l&&d===t){a(this,Ys).splice(s,1);return}}for(let s=e-1;s>=0;s--){const[c,d]=a(this,Ys)[s];if(c!==l)break;if(c===l&&d===t){a(this,Ys).splice(s,1);return}}},pW=function(l){const[t,e,s]=l,c=[[t,e,s]],d=z(this,ne,b0).call(this,s);for(let n=0;n<d;n++){const[Z,b]=a(this,Ys)[n];for(let o=0,m=c.length;o<m;o++){const[,h,W]=c[o];if(!(b<=h||W<=Z)){if(h>=Z){if(W>b)c[o][1]=b;else{if(m===1)return[];c.splice(o,1),o--,m--}continue}c[o][2]=Z,W>b&&c.push([t,b,W])}}}return c};var fm,qZ;class iV extends H{constructor(t,e,s,c){super();L(this,fm);L(this,qZ);p(this,qZ,t),p(this,fm,e),this.firstPoint=s,this.lastPoint=c}toSVGPath(){const t=[];for(const e of a(this,qZ)){let[s,c]=e;t.push(`M${s} ${c}`);for(let d=2;d<e.length;d+=2){const n=e[d],Z=e[d+1];n===s?(t.push(`V${Z}`),c=Z):Z===c&&(t.push(`H${n}`),s=n)}t.push("Z")}return t.join(" ")}serialize([t,e,s,c],d){const n=[],Z=s-t,b=c-e;for(const o of a(this,qZ)){const m=new Array(o.length);for(let h=0;h<o.length;h+=2)m[h]=t+o[h]*Z,m[h+1]=c-o[h+1]*b;n.push(m)}return n}get box(){return a(this,fm)}get classNamesForOutlining(){return["highlightOutline"]}}fm=new WeakMap,qZ=new WeakMap;class YW extends C0{newFreeDrawOutline(l,t,e,s,c,d){return new cV(l,t,e,s,c,d)}}class cV extends wM{newOutliner(l,t,e,s,c,d=0){return new YW(l,t,e,s,c,d)}}var $Z,Bm,ec,Ea,Am,Ge,_m,qm,Ka,De,Ce,kt,lb,tb,_t,eb,ds,$m,bl,yW,o0,jM,DM,CM,TW,Jd,ns,Rn,JM,m0,h0,FM,OM,kM,UM,EM;const pl=class pl extends Ul{constructor(t){super({...t,name:"highlightEditor"});L(this,bl);L(this,$Z,null);L(this,Bm,0);L(this,ec);L(this,Ea,null);
13L(this,Am,null);L(this,Ge,null);L(this,_m,null);L(this,qm,0);L(this,Ka,null);L(this,De,null);L(this,Ce,null);L(this,kt,!1);L(this,lb,null);L(this,tb,null);L(this,_t,null);L(this,eb,"");L(this,ds);L(this,$m,"");this.color=t.color||pl._defaultColor,p(this,ds,t.thickness||pl._defaultThickness),this.opacity=t.opacity||pl._defaultOpacity,p(this,ec,t.boxes||null),p(this,$m,t.methodOfCreation||""),p(this,eb,t.text||""),this._isDraggable=!1,this.defaultL10nId="pdfjs-editor-highlight-editor",t.highlightId>-1?(p(this,kt,!0),z(this,bl,o0).call(this,t),z(this,bl,Jd).call(this)):a(this,ec)&&(p(this,$Z,t.anchorNode),p(this,Bm,t.anchorOffset),p(this,_m,t.focusNode),p(this,qm,t.focusOffset),z(this,bl,yW).call(this),z(this,bl,Jd).call(this),this.rotate(this.rotation)),this.annotationElementId||this._uiManager.a11yAlert("pdfjs-editor-highlight-added-alert")}static get _keyboardManager(){const t=pl.prototype;return el(this,"_keyboardManager",new Zh([[["ArrowLeft","mac+ArrowLeft"],t._moveCaret,{args:[0]}],[["ArrowRight","mac+ArrowRight"],t._moveCaret,{args:[1]}],[["ArrowUp","mac+ArrowUp"],t._moveCaret,{args:[2]}],[["ArrowDown","mac+ArrowDown"],t._moveCaret,{args:[3]}]]))}get telemetryInitialData(){return{action:"added",type:a(this,kt)?"free_highlight":"highlight",color:this._uiManager.getNonHCMColorName(this.color),thickness:a(this,ds),methodOfCreation:a(this,$m)}}get telemetryFinalData(){return{type:"highlight",color:this._uiManager.getNonHCMColorName(this.color)}}static computeTelemetryFinalData(t){return{numberOfColors:t.get("color").size}}static initialize(t,e){var s;Ul.initialize(t,e),pl._defaultColor||(pl._defaultColor=((s=e.highlightColors)==null?void 0:s.values().next().value)||"#fff066")}static updateDefaultParams(t,e){switch(t){case Wl.HIGHLIGHT_COLOR:pl._defaultColor=e;break;case Wl.HIGHLIGHT_THICKNESS:pl._defaultThickness=e;break}}translateInPage(t,e){}get toolbarPosition(){return a(this,tb)}get commentButtonPosition(){return a(this,lb)}updateParams(t,e){switch(t){case Wl.HIGHLIGHT_COLOR:z(this,bl,jM).call(this,e);break;case Wl.HIGHLIGHT_THICKNESS:z(this,bl,DM).call(this,e);break}}static get defaultPropertiesToUpdate(){return[[Wl.HIGHLIGHT_COLOR,pl._defaultColor],[Wl.HIGHLIGHT_THICKNESS,pl._defaultThickness]]}get propertiesToUpdate(){return[[Wl.HIGHLIGHT_COLOR,this.color||pl._defaultColor],[Wl.HIGHLIGHT_THICKNESS,a(this,ds)||pl._defaultThickness],[Wl.HIGHLIGHT_FREE,a(this,kt)]]}onUpdatedColor(){var t,e;(t=this.parent)==null||t.drawLayer.updateProperties(a(this,Ce),{root:{fill:this.color,"fill-opacity":this.opacity}}),(e=a(this,Am))==null||e.updateColor(this.color),super.onUpdatedColor()}get toolbarButtons(){return this._uiManager.highlightColors?[["colorPicker",p(this,Am,new x0({editor:this}))]]:super.toolbarButtons}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}fixAndSetPosition(){return super.fixAndSetPosition(z(this,bl,h0).call(this))}getBaseTranslation(){return[0,0]}getRect(t,e){return super.getRect(t,e,z(this,bl,h0).call(this))}onceAdded(t){this.annotationElementId||this.parent.addUndoableEditor(this),t&&this.div.focus()}remove(){z(this,bl,TW).call(this),this._reportTelemetry({action:"deleted"}),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(z(this,bl,Jd).call(this),this.isAttachedToDOM||this.parent.add(this)))}setParent(t){var s;let e=!1;this.parent&&!t?z(this,bl,TW).call(this):t&&(z(this,bl,Jd).call(this,t),e=!this.parent&&((s=this.div)==null?void 0:s.classList.contains("selectedEditor"))),super.setParent(t),this.show(this._isVisible),e&&this.select()}rotate(t){var c,d,n;const{drawLayer:e}=this.parent;let s;a(this,kt)?(t=(t-this.rotation+360)%360,s=z(c=pl,ns,Rn).call(c,a(this,De).box,t)):s=z(d=pl,ns,Rn).call(d,[this.x,this.y,this.width,this.height],t),e.updateProperties(a(this,Ce),{bbox:s,root:{"data-main-rotation":t}}),e.updateProperties(a(this,_t),{bbox:z(n=pl,ns,Rn).call(n,a(this,Ge).box,t),root:{"data-main-rotation":t}})}render(){if(this.div)return this.div;const t=super.render();a(this,eb)&&(t.setAttribute("aria-label",a(this,eb)),t.setAttribute("role","mark")),a(this,kt)?t.classList.add("free"):this.div.addEventListener("keydown",z(this,bl,JM).bind(this),{signal:this._uiManager._signal});const e=p(this,Ka,document.createElement("div"));return t.append(e),e.setAttribute("aria-hidden","true"),e.className="internal",e.style.clipPath=a(this,Ea),this.setDims(),aX(this,a(this,Ka),["pointerover","pointerleave"]),this.enableEditing(),t}pointerover(){var t;this.isSelected||(t=this.parent)==null||t.drawLayer.updateProperties(a(this,_t),{rootClass:{hovered:!0}})}pointerleave(){var t;this.isSelected||(t=this.parent)==null||t.drawLayer.updateProperties(a(this,_t),{rootClass:{hovered:!1}})}_moveCaret(t){switch(this.parent.unselect(this),t){case 0:case 2:z(this,bl,m0).call(this,!0);break;case 1:case 3:z(this,bl,m0).call(this,!1);break}}select(){var t;super.select(),a(this,_t)&&((t=this.parent)==null||t.drawLayer.updateProperties(a(this,_t),{rootClass:{hovered:!1,selected:!0}}))}unselect(){var t;super.unselect(),a(this,_t)&&((t=this.parent)==null||t.drawLayer.updateProperties(a(this,_t),{rootClass:{selected:!1}}),a(this,kt)||z(this,bl,m0).call(this,!1))}get _mustFixPosition(){return!a(this,kt)}show(t=this._isVisible){super.show(t),this.parent&&(this.parent.drawLayer.updateProperties(a(this,Ce),{rootClass:{hidden:!t}}),this.parent.drawLayer.updateProperties(a(this,_t),{rootClass:{hidden:!t}}))}static startHighlighting(t,e,{target:s,x:c,y:d}){const{x:n,y:Z,width:b,height:o}=s.getBoundingClientRect(),m=new AbortController,h=t.combinedSignal(m),W=r=>
13{m.abort(),z(this,ns,UM).call(this,t,r)};window.addEventListener("blur",W,{signal:h}),window.addEventListener("pointerup",W,{signal:h}),window.addEventListener("pointerdown",dt,{capture:!0,passive:!1,signal:h}),window.addEventListener("contextmenu",os,{signal:h}),s.addEventListener("pointermove",z(this,ns,kM).bind(this,t),{signal:h}),this._freeHighlight=new YW({x:c,y:d},[n,Z,b,o],t.scale,this._defaultThickness/2,e,.001),{id:this._freeHighlightId,clipPathId:this._freeHighlightClipId}=t.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:"0 0 1 1",fill:this._defaultColor,"fill-opacity":this._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:this._freeHighlight.toSVGPath()}},!0,!0)}static async deserialize(t,e,s){var N,M,X,y;let c=null;if(t instanceof GM){const{data:{quadPoints:Y,rect:T,rotation:V,id:I,color:w,opacity:R,popupRef:S,richText:x,contentsObj:g,creationDate:C,modificationDate:D},parent:{page:{pageNumber:J}}}=t;c=t={annotationType:cl.HIGHLIGHT,color:Array.from(w),opacity:R,quadPoints:Y,boxes:null,pageIndex:J-1,rect:T.slice(0),rotation:V,annotationElementId:I,id:I,deleted:!1,popupRef:S,richText:
13x,comment:(g==null?void 0:g.str)||null,creationDate:C,modificationDate:D}}else if(t instanceof hG){const{data:{inkLists:Y,rect:T,rotation:V,id:I,color:w,borderStyle:{rawWidth:R},popupRef:S,richText:x,contentsObj:g,creationDate:C,modificationDate:D},parent:{page:{pageNumber:J}}}=t;c=t={annotationType:cl.HIGHLIGHT,color:Array.from(w),thickness:R,inkLists:Y,boxes:null,pageIndex:J-1,rect:T.slice(0),rotation:V,annotationElementId:I,id:I,deleted:!1,popupRef:S,richText:x,comment:(g==null?void 0:g.str)||null,creationDate:C,modificationDate:D}}const{color:d,quadPoints:n,inkLists:Z,opacity:b}=t,o=await super.deserialize(t,e,s);o.color=Q.makeHexColor(...d),o.opacity=b||1,Z&&p(o,ds,t.thickness),o._initialData=c,t.comment&&o.setCommentData(t);const[m,h]=o.pageDimensions,[W,r]=o.pageTranslation;if(n){const Y=p(o,ec,[]);for(let T=0;T<n.length;T+=8)Y.push({x:(n[T]-W)/m,y:1-(n[T+1]-r)/h,width:(n[T+2]-n[T])/m,height:(n[T+1]-n[T+5])/h});z(N=o,bl,yW).call(N),z(M=o,bl,Jd).call(M),o.rotate(o.rotation)}else if(Z){p(o,kt,!0);const Y=Z[0],T={x:Y[0]-W,y:h-(Y[1]-r)},V=new YW(T,[0,0,m,h],1,a(o,ds)/2,!0,.001);for(let R=0,S=Y.length;R<S;R+=2)T.x=Y[R]-W,T.y=h-(Y[R+1]-r),V.add(T);const{id:I,clipPathId:w}=e.drawLayer.draw({bbox:[0,0,1,1],root:{viewBox:"0 0 1 1",fill:o.color,"fill-opacity":o._defaultOpacity},rootClass:{highlight:!0,free:!0},path:{d:V.toSVGPath()}},!0,!0);z(X=o,bl,o0).call(X,{highlightOutlines:V.getOutlines(),highlightId:I,clipPathId:w}),z(y=o,bl,Jd).call(y),o.rotate(o.parentRotation)}return o}serialize(t=!1){if(this.isEmpty()||t)return null;if(this.deleted)return this.serializeDeleted();const e=Ul._colorManager.convert(this._uiManager.getNonHCMColor(this.color)),s=super.serialize(t);return Object.assign(s,{color:e,opacity:this.opacity,thickness:a(this,ds),quadPoints:z(this,bl,FM).call(this),outlines:z(this,bl,OM).call(this,s.rect)}),this.addComment(s),this.annotationElementId&&!z(this,bl,EM).call(this,s)?null:(s.id=this.annotationElementId,s)}renderAnnotationElement(t){return this.deleted?(t.hide(),null):(t.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}static canCreateNewEmptyEditor(){return!1}};$Z=new WeakMap,Bm=new WeakMap,ec=new WeakMap,Ea=new WeakMap,Am=new WeakMap,Ge=new WeakMap,_m=new WeakMap,qm=new WeakMap,Ka=new WeakMap,De=new WeakMap,Ce=new WeakMap,kt=new WeakMap,lb=new WeakMap,tb=new WeakMap,_t=new WeakMap,eb=new WeakMap,ds=new WeakMap,$m=new WeakMap,bl=new WeakSet,yW=function(){const t=new MW(a(this,ec),.001);p(this,De,t.getOutlines()),[this.x,this.y,this.width,this.height]=a(this,De).box;const e=new MW(a(this,ec),.0025,.001,this._uiManager.direction==="ltr");p(this,Ge,e.getOutlines());const{firstPoint:s}=a(this,De);p(this,lb,[(s[0]-this.x)/this.width,(s[1]-this.y)/this.height]);const{lastPoint:c}=a(this,Ge);p(this,tb,[(c[0]-this.x)/this.width,(c[1]-this.y)/this.height])},o0=function({highlightOutlines:t,highlightId:e,clipPathId:s}){var h,W;if(p(this,De,t),p(this,Ge,t.getNewOutline(a(this,ds)/2+1.5,.0025)),e>=0)p(this,Ce,e),p(this,Ea,s),this.parent.drawLayer.finalizeDraw(e,{bbox:t.box,path:{d:t.toSVGPath()}}),p(this,_t,this.parent.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:!0},bbox:a(this,Ge).box,path:{d:a(this,Ge).toSVGPath()}},!0));else if(this.parent){const r=this.parent.viewport.rotation;this.parent.drawLayer.updateProperties(a(this,Ce),{bbox:z(h=pl,ns,Rn).call(h,a(this,De).box,(r-this.rotation+360)%360),path:{d:t.toSVGPath()}}),this.parent.drawLayer.updateProperties(a(this,_t),{bbox:z(W=pl,ns,Rn).call(W,a(this,Ge).box,r),path:{d:a(this,Ge).toSVGPath()}})}const[d,n,Z,b]=t.box;switch(this.rotation){case 0:this.x=d,this.y=n,this.width=Z,this.height=b;break;case 90:{const[r,N]=this.parentDimensions;this.x=n,this.y=1-d,this.width=Z*N/r,this.height=b*r/N;break}case 180:this.x=1-d,this.y=1-n,this.width=Z,this.height=b;break;case 270:{const[r,N]=this.parentDimensions;this.x=1-n,this.y=d,this.width=Z*N/r,this.height=b*r/N;break}}const{firstPoint:o}=t;p(this,lb,[(o[0]-d)/Z,(o[1]-n)/b]);const{lastPoint:m}=a(this,Ge);p(this,tb,[(m[0]-d)/Z,(m[1]-n)/b])},jM=function(t){const e=(d,n)=>{this.color=d,this.opacity=n,this.onUpdatedColor()},s=this.color,c=this.opacity;this.addCommands({cmd:e.bind(this,t,pl._defaultOpacity),undo:e.bind(this,s,c),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Wl.HIGHLIGHT_COLOR,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"color_changed",color:this._uiManager.getNonHCMColorName(t)},!0)},DM=function(t){const e=a(this,ds),s=c=>
13{p(this,ds,c),z(this,bl,CM).call(this,c)};this.addCommands({cmd:s.bind(this,t),undo:s.bind(this,e),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:Wl.INK_THICKNESS,overwriteIfSameType:!0,keepUndo:!0}),this._reportTelemetry({action:"thickness_changed",thickness:t},!0)},CM=function(t){a(this,kt)&&(z(this,bl,o0).call(this,{highlightOutlines:a(this,De).getNewOutline(t/2)}),this.fixAndSetPosition(),this.setDims())},TW=function(){a(this,Ce)===null||!this.parent||(this.parent.drawLayer.remove(a(this,Ce)),p(this,Ce,null),this.parent.drawLayer.remove(a(this,_t)),p(this,_t,null))},Jd=function(t=this.parent){a(this,Ce)===null&&({id:rt(this,Ce)._,clipPathId:rt(this,Ea)._}=t.drawLayer.draw({bbox:a(this,De).box,root:{viewBox:"0 0 1 1",fill:this.color,"fill-opacity":this.opacity},rootClass:{highlight:!0,free:a(this,kt)},path:{d:a(this,De).toSVGPath()}},!1,!0),p(this,_t,t.drawLayer.drawOutline({rootClass:{highlightOutline:!0,free:a(this,kt)},bbox:a(this,Ge).box,path:{d:a(this,Ge).toSVGPath()}},a(this,kt))),a(this,Ka)&&(a(this,Ka).style.clipPath=a(this,Ea)))},ns=new WeakSet,Rn=function([t,e,s,c],d){switch(d){case 90:return[1-e-c,t,c,s];case 180:return[1-t-s,1-e-c,s,c];case 270:return[e,1-t-s,c,s]}return[t,e,s,c]},JM=function(t){pl._keyboardManager.exec(this,t)},m0=function(t){if(!a(this,$Z))return;const e=window.getSelection();t?e.setPosition(a(this,$Z),a(this,Bm)):e.setPosition(a(this,_m),a(this,qm))},h0=function(){return a(this,kt)?this.rotation:0},FM=function(){if(a(this,kt))return null;const[t,e]=this.pageDimensions,[s,c]=this.pageTranslation,d=a(this,ec),n=new Float32Array(d.length*8);let Z=0;for(const{x:b,y:o,width:m,height:h}of d){const W=b*t+s,r=(1-o)*e+c;n[Z]=n[Z+4]=W,n[Z+1]=n[Z+3]=r,n[Z+2]=n[Z+6]=W+m*t,n[Z+5]=n[Z+7]=r-h*e,Z+=8}return n},OM=function(t){return a(this,De).serialize(t,z(this,bl,h0).call(this))},kM=function(t,e){this._freeHighlight.add(e)&&t.drawLayer.updateProperties(this._freeHighlightId,{path:{d:this._freeHighlight.toSVGPath()}})},UM=function(t,e){this._freeHighlight.isEmpty()?t.drawLayer.remove(this._freeHighlightId):t.createAndAddNewEditor(e,!1,{highlightId:this._freeHighlightId,highlightOutlines:this._freeHighlight.getOutlines(),clipPathId:this._freeHighlightClipId,methodOfCreation:"main_toolbar"}),this._freeHighlightId=-1,this._freeHighlight=null,this._freeHighlightClipId=""},EM=function(t){const{color:e}=this._initialData;return this.hasEditedComment||t.color.some((s,c)=>s!==e[c])},L(pl,ns),E(pl,"_defaultColor",null),E(pl,"_defaultOpacity",1),E(pl,"_defaultThickness",12),E(pl,"_type","highlight"),E(pl,"_editorType",cl.HIGHLIGHT),E(pl,"_freeHighlightId",-1),E(pl,"_freeHighlight",null),E(pl,"_freeHighlightClipId","");let J0=pl;var va;class KM{constructor(){L(this,va,Object.create(null))}updateProperty(l,t){this[l]=t,this.updateSVGProperty(l,t)}updateProperties(l){if(l)for(const[t,e]of Object.entries(l))t.startsWith("_")||this.updateProperty(t,e)}updateSVGProperty(l,t){a(this,va)[l]=t}toSVGProperties(){const l=a(this,va);return p(this,va,Object.create(null)),{root:l}}reset(){p(this,va,Object.create(null))}updateAll(l=this){this.updateProperties(l)}clone(){Jl("Not implemented")}}va=new WeakMap;var Je,sb,zt,Qa,Pa,rl,VW,LW,IW,fb,vM,u0,Bb,Sn;const hl=class hl extends Ul{constructor(t){super(t);L(this,rl);L(this,Je,null);L(this,sb);E(this,"_colorPicker",null);E(this,"_drawId",null);p(this,sb,t.mustBeCommitted||!1),this._addOutlines(t)}onUpdatedColor(){var t;(t=this._colorPicker)==null||t.update(this.color),super.onUpdatedColor()}_addOutlines(t){t.drawOutlines&&(z(this,rl,VW).call(this,t),z(this,rl,fb).call(this))}static _mergeSVGProperties(t,e){const s=new Set(Object.keys(t));for(const[c,d]of Object.entries(e))s.has(c)?Object.assign(t[c],d):t[c]=d;return t}static getDefaultDrawingOptions(t){Jl("Not implemented")}static get typesMap(){Jl("Not implemented")}static get isDrawer(){return!0}static get supportMultipleDrawings(){return!1}static updateDefaultParams(t,e){const s=this.typesMap.get(t);s&&this._defaultDrawingOptions.updateProperty(s,e),this._currentParent&&(a(hl,zt).updateProperty(s,e),this._currentParent.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}updateParams(t,e){const s=this.constructor.typesMap.get(t);s&&this._updateProperty(t,s,e)}static get defaultPropertiesToUpdate(){const t=[],e=this._defaultDrawingOptions;for(const[s,c]of this.typesMap)t.push([s,e[c]]);return t}get propertiesToUpdate(){const t=[],{_drawingOptions:e}=this;for(const[s,c]of this.constructor.typesMap)t.push([s,e[c]]);return t}_updateProperty(t,e,s){const c=this._drawingOptions,d=c[e],n=Z=>{var o;c.updateProperty(e,Z);const b=a(this,Je).updateProperty(e,Z);b&&z(this,rl,Bb).call(this,b),(o=this.parent)==null||o.drawLayer.updateProperties(this._drawId,c.toSVGProperties()),t===this.colorType&&this.onUpdatedColor()};this.addCommands({cmd:n.bind(this,s),undo:n.bind(this,d),post:this._uiManager.updateUI.bind(this._uiManager,this),mustExec:!0,type:t,overwriteIfSameType:!0,keepUndo:!0})}_onResizing(){var t;(t=this.parent)==null||t.drawLayer.updateProperties(this._drawId,hl._mergeSVGProperties(a(this,Je).getPathResizingSVGProperties(z(this,rl,u0).call(this)),{bbox:z(this,rl,Sn).call(this)}))}_onResized(){var t;(t=this.parent)==null||t.drawLayer.updateProperties(this._drawId,hl._mergeSVGProperties(a(this,Je).getPathResizedSVGProperties(z(this,rl,u0).call(this)),{bbox:z(this,rl,Sn).call(this)}))}_onTranslating(t,e){var s;(s=this.parent)==null||s.drawLayer.updateProperties(this._drawId,{bbox:z(this,rl,Sn).call(this)})}_onTranslated(){var t;(t=this.parent)==null||t.drawLayer.updateProperties(this._drawId,hl._mergeSVGProperties(a(this,Je).getPathTranslatedSVGProperties(z(this,rl,u0).call(this),this.parentDimensions),{bbox:z(this,rl,Sn).call(this)}))}_onStartDragging(){var t;(t=this.parent)==null||t.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!0}})}_onStopDragging(){var t;(t=this.parent)==null||t.drawLayer.updateProperties(this._drawId,{rootClass:{moving:!1}})}commit(){super.commit(),this.disableEditMode(),this.disableEditing()}disableEditing(){super.disableEditing(),this.div.classList.toggle("disabled",!0)}enableEditing(){super.enableEditing(),this.div.classList.toggle("disabled",!1)}getBaseTranslation(){return[0,0]}get isResizable(){return!0}onceAdded(t){this.annotationElementId||this.parent.addUndoableEditor(this),this._isDraggable=!0,a(this,sb)&&(p(this,sb,!1),this.commit(),this.parent.setSelected(this),t&&this.isOnScreen&&this.div.focus())}remove(){z(this,rl,IW).call(this),super.remove()}rebuild(){this.parent&&(super.rebuild(),this.div!==null&&(z(this,rl,fb).call(this),z(this,rl,Bb).call(this,a(this,Je).box),this.isAttachedToDOM||this.parent.add(this)))}setParent(t){var s;let e=!1;this.parent&&!t?(this._uiManager.removeShouldRescale(this),z(this,rl,IW).call(this)):t&&(this._uiManager.addShouldRescale(this),z(this,rl,fb).call(this,t),e=!this.parent&&((s=this.div)==null?void 0:s.classList.contains("selectedEditor"))),super.setParent(t),e&&this.select()}rotate(){this.parent&&this.parent.drawLayer.updateProperties(this._drawId,hl._mergeSVGProperties({bbox:z(this,rl,Sn).call(this)},a(this,Je).updateRotation((this.parentRotation-this.rotation+360)%360)))}onScaleChanging(){this.parent&&z(this,rl,Bb).call(this,a(this,Je).updateParentDimensions(this.parentDimensions,this.parent.scale))}static onScaleChangingWhenDrawing(){}
13render(){if(this.div)return this.div;let t,e;this._isCopy&&(t=this.x,e=this.y);const s=super.render();s.classList.add("draw");const c=document.createElement("div");return s.append(c),c.setAttribute("aria-hidden","true"),c.className="internal",this.setDims(),this._uiManager.addShouldRescale(this),this.disableEditing(),this._isCopy&&this._moveAfterPaste(t,e),s}static createDrawerInstance(t,e,s,c,d){Jl("Not implemented")}static startDrawing(t,e,s,c){var M;const{target:d,offsetX:n,offsetY:Z,pointerId:b,pointerType:o}=c;if(Pt.isInitializedAndDifferentPointerType(o))return;const{viewport:{rotation:m}}=t,{width:h,height:W}=d.getBoundingClientRect(),r=p(hl,Qa,new AbortController),N=t.combinedSignal(r);if(Pt.setPointer(o,b),window.addEventListener("pointerup",X=>{Pt.isSamePointerIdOrRemove(X.pointerId)&&this._endDraw(X)},{signal:N}),window.addEventListener("pointercancel",X=>{Pt.isSamePointerIdOrRemove(X.pointerId)&&this._currentParent.endDrawingSession()},{signal:N}),window.addEventListener("pointerdown",X=>{Pt.isSamePointerType(X.pointerType)&&(Pt.initializeAndAddPointerId(X.pointerId),a(hl,zt).isCancellable()&&(a(hl,zt).removeLastElement(),a(hl,zt).isEmpty()?this._currentParent.endDrawingSession(!0):this._endDraw(null)))},{capture:!0,passive:!1,signal:N}),window.addEventListener("contextmenu",os,{signal:N}),d.addEventListener("pointermove",this._drawMove.bind(this),{signal:N}),d.addEventListener("touchmove",X=>{Pt.isSameTimeStamp(X.timeStamp)&&dt(X)},{signal:N}),t.toggleDrawing(),(M=e._editorUndoBar)==null||M.hide(),a(hl,zt)){t.drawLayer.updateProperties(this._currentDrawId,a(hl,zt).startNew(n,Z,h,W,m));return}e.updateUIForDefaultProperties(this),p(hl,zt,this.createDrawerInstance(n,Z,h,W,m)),p(hl,Pa,this.getDefaultDrawingOptions()),this._currentParent=t,{id:this._currentDrawId}=t.drawLayer.draw(this._mergeSVGProperties(a(hl,Pa).toSVGProperties(),a(hl,zt).defaultSVGProperties),!0,!1)}static _drawMove(t){if(Pt.isSameTimeStamp(t.timeStamp),!a(hl,zt))return;const{offsetX:e,offsetY:s,pointerId:c}=t;if(Pt.isSamePointerId(c)){if(Pt.isUsingMultiplePointers()){this._endDraw(t);return}this._currentParent.drawLayer.updateProperties(this._currentDrawId,a(hl,zt).add(e,s)),Pt.setTimeStamp(t.timeStamp),dt(t)}}static _cleanup(t){t&&(this._currentDrawId=-1,this._currentParent=null,p(hl,zt,null),p(hl,Pa,null),Pt.clearTimeStamp()),a(hl,Qa)&&(a(hl,Qa).abort(),p(hl,Qa,null),Pt.clearPointerIds())}static _endDraw(t){const e=this._currentParent;if(e){if(e.toggleDrawing(!0),this._cleanup(!1),(t==null?void 0:t.target)===e.div&&e.drawLayer.updateProperties(this._currentDrawId,a(hl,zt).end(t.offsetX,t.offsetY)),this.supportMultipleDrawings){const s=a(hl,zt),c=this._currentDrawId,d=s.getLastElement();e.addCommands({cmd:()=>{e.drawLayer.updateProperties(c,s.setLastElement(d))},undo:()=>{e.drawLayer.updateProperties(c,s.removeLastElement())},mustExec:!1,type:Wl.DRAW_STEP});return}this.endDrawing(!1)}}static endDrawing(t){const e=this._currentParent;if(!e)return null;if(e.toggleDrawing(!0),e.cleanUndoStack(Wl.DRAW_STEP),!a(hl,zt).isEmpty()){const{pageDimensions:[s,c],scale:d}=e,n=e.createAndAddNewEditor({offsetX:0,offsetY:0},!1,{drawId:this._currentDrawId,drawOutlines:a(hl,zt).getOutlines(s*d,c*d,d,this._INNER_MARGIN),drawingOptions:a(hl,Pa),mustBeCommitted:!t});return this._cleanup(!0),n}return e.drawLayer.remove(this._currentDrawId),this._cleanup(!0),null}createDrawingOptions(t){}static deserializeDraw(t,e,s,c,d,n){Jl("Not implemented")}static async deserialize(t,e,s){var m,h;const{rawDims:{pageWidth:c,pageHeight:d,pageX:n,pageY:Z}}=e.viewport,b=this.deserializeDraw(n,Z,c,d,this._INNER_MARGIN,t),o=await super.deserialize(t,e,s);return o.createDrawingOptions(t),z(m=o,rl,VW).call(m,{drawOutlines:b}),z(h=o,rl,fb).call(h),o.onScaleChanging(),o.rotate(),o}serializeDraw(t){const[e,s]=this.pageTranslation,[c,d]=this.pageDimensions;return a(this,Je).serialize([e,s,c,d],t)}renderAnnotationElement(t){return t.updateEdited({rect:this.getPDFRect()}),null}static canCreateNewEmptyEditor(){return!1}};Je=new WeakMap,sb=new WeakMap,zt=new WeakMap,Qa=new WeakMap,Pa=new WeakMap,rl=new WeakSet,VW=function({drawOutlines:t,drawId:e,drawingOptions:s}){p(this,Je,t),this._drawingOptions||(this._drawingOptions=s),this.annotationElementId||this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`),e>=0?(this._drawId=e,this.parent.drawLayer.finalizeDraw(e,t.defaultProperties)):this._drawId=z(this,rl,LW).call(this,t,this.parent),z(this,rl,Bb).call(this,t.box)},LW=function(t,e){const{id:s}=e.drawLayer.draw(hl._mergeSVGProperties(this._drawingOptions.toSVGProperties(),t.defaultSVGProperties),!1,!1);return s},IW=function(){this._drawId===null||!this.parent||(this.parent.drawLayer.remove(this._drawId),this._drawId=null,this._drawingOptions.reset())},fb=function(t=this.parent){if(!(this._drawId!==null&&this.parent===t)){if(this._drawId!==null){this.parent.drawLayer.updateParent(this._drawId,t.drawLayer);return}this._drawingOptions.updateAll(),this._drawId=z(this,rl,LW).call(this,a(this,Je),t)}},vM=function([t,e,s,c]){const{parentDimensions:[d,n],rotation:Z}=this;switch(Z){case 90:return[e,1-t,s*(n/d),c*(d/n)];case 180:return[1-t,1-e,s,c];case 270:return[1-e,t,s*(n/d),c*(d/n)];default:return[t,e,s,c]}},u0=function(){const{x:t,y:e,width:s,height:c,parentDimensions:[d,n],rotation:Z}=this;switch(Z){case 90:return[1-e,t,s*(d/n),c*(n/d)];case 180:return[1-t,1-e,s,c];case 270:return[e,1-t,s*(d/n),c*(n/d)];default:return[t,e,s,c]}},Bb=function(t){[this.x,this.y,this.width,this.height]=z(this,rl,vM).call(this,t),this.div&&(this.fixAndSetPosition(),this.setDims()),this._onResized()},Sn=function(){const{x:t,y:e,width:s,height:c,rotation:d,parentRotation:n,parentDimensions:[Z,b]}=this;switch((d*4+n)/90){case 1:return[1-e-c,t,c,s];case 2:return[1-t-s,1-e-c,s,c];case 3:return[e,1-t-s,c,s];case 4:return[t,e-s*(Z/b),c*(b/Z),s*(Z/b)];case 5:return[1-e,t,s*(Z/b),c*(b/Z)];
13case 6:return[1-t-c*(b/Z),1-e,c*(b/Z),s*(Z/b)];case 7:return[e-s*(Z/b),1-t-c*(b/Z),s*(Z/b),c*(b/Z)];case 8:return[t-s,e-c,s,c];case 9:return[1-e,t-s,c,s];case 10:return[1-t,1-e,s,c];case 11:return[e-c,1-t,c,s];case 12:return[t-c*(b/Z),e,c*(b/Z),s*(Z/b)];case 13:return[1-e-s*(Z/b),t-c*(b/Z),s*(Z/b),c*(b/Z)];case 14:return[1-t,1-e-s*(Z/b),c*(b/Z),s*(Z/b)];case 15:return[e,1-t,s*(Z/b),c*(b/Z)];default:return[t,e,s,c]}},E(hl,"_currentDrawId",-1),E(hl,"_currentParent",null),L(hl,zt,null),L(hl,Qa,null),L(hl,Pa,null),E(hl,"_INNER_MARGIN",3);let F0=hl;var si,wt,Rt,Ha,ib,ee,Ut,as,fa,Ba,Aa,cb,W0;class dV{constructor(l,t,e,s,c,d){L(this,cb);L(this,si,new Float64Array(6));L(this,wt);L(this,Rt);L(this,Ha);L(this,ib);L(this,ee);L(this,Ut,"");L(this,as,0);L(this,fa,new oh);L(this,Ba);L(this,Aa);p(this,Ba,e),p(this,Aa,s),p(this,Ha,c),p(this,ib,d),[l,t]=z(this,cb,W0).call(this,l,t);const n=p(this,wt,[NaN,NaN,NaN,NaN,l,t]);p(this,ee,[l,t]),p(this,Rt,[{line:n,points:a(this,ee)}]),a(this,si).set(n,0)}updateProperty(l,t){l==="stroke-width"&&p(this,ib,t)}isEmpty(){return!a(this,Rt)||a(this,Rt).length===0}isCancellable(){return a(this,ee).length<=10}add(l,t){[l,t]=z(this,cb,W0).call(this,l,t);const[e,s,c,d]=a(this,si).subarray(2,6),n=l-c,Z=t-d;return Math.hypot(a(this,Ba)*n,a(this,Aa)*Z)<=2?null:(a(this,ee).push(l,t),isNaN(e)?(a(this,si).set([c,d,l,t],2),a(this,wt).push(NaN,NaN,NaN,NaN,l,t),{path:{d:this.toSVGPath()}}):(isNaN(a(this,si)[0])&&a(this,wt).splice(6,6),a(this,si).set([e,s,c,d,l,t],0),a(this,wt).push(...H.createBezierPoints(e,s,c,d,l,t)),{path:{d:this.toSVGPath()}}))}end(l,t){const e=this.add(l,t);return e||(a(this,ee).length===2?{path:{d:this.toSVGPath()}}:null)}startNew(l,t,e,s,c){p(this,Ba,e),p(this,Aa,s),p(this,Ha,c),[l,t]=z(this,cb,W0).call(this,l,t);const d=p(this,wt,[NaN,NaN,NaN,NaN,l,t]);p(this,ee,[l,t]);const n=a(this,Rt).at(-1);return n&&(n.line=new Float32Array(n.line),n.points=new Float32Array(n.points)),a(this,Rt).push({line:d,points:a(this,ee)}),a(this,si).set(d,0),p(this,as,0),this.toSVGPath(),null}getLastElement(){return a(this,Rt).at(-1)}setLastElement(l){return a(this,Rt)?(a(this,Rt).push(l),p(this,wt,l.line),p(this,ee,l.points),p(this,as,0),{path:{d:this.toSVGPath()}}):a(this,fa).setLastElement(l)}removeLastElement(){if(!a(this,Rt))return a(this,fa).removeLastElement();a(this,Rt).pop(),p(this,Ut,"");for(let l=0,t=a(this,Rt).length;l<t;l++){const{line:e,points:s}=a(this,Rt)[l];p(this,wt,e),p(this,ee,s),p(this,as,0),this.toSVGPath()}return{path:{d:a(this,Ut)}}}toSVGPath(){const l=H.svgRound(a(this,wt)[4]),t=H.svgRound(a(this,wt)[5]);if(a(this,ee).length===2)return p(this,Ut,`${a(this,Ut)} M ${l} ${t} Z`),a(this,Ut);if(a(this,ee).length<=6){const s=a(this,Ut).lastIndexOf("M");p(this,Ut,`${a(this,Ut).slice(0,s)} M ${l} ${t}`),p(this,as,6)}if(a(this,ee).length===4){const s=H.svgRound(a(this,wt)[10]),c=H.svgRound(a(this,wt)[11]);return p(this,Ut,`${a(this,Ut)} L ${s} ${c}`),p(this,as,12),a(this,Ut)}const e=[];a(this,as)===0&&(e.push(`M ${l} ${t}`),p(this,as,6));for(let s=a(this,as),c=a(this,wt).length;s<c;s+=6){const[d,n,Z,b,o,m]=a(this,wt).slice(s,s+6).map(H.svgRound);e.push(`C${d} ${n} ${Z} ${b} ${o} ${m}`)}return p(this,Ut,a(this,Ut)+e.join(" ")),p(this,as,a(this,wt).length),a(this,Ut)}getOutlines(l,t,e,s){const c=a(this,Rt).at(-1);return c.line=new Float32Array(c.line),c.points=new Float32Array(c.points),a(this,fa).build(a(this,Rt),l,t,e,a(this,Ha),a(this,ib),s),p(this,si,null),p(this,wt,null),p(this,Rt,null),p(this,Ut,null),a(this,fa)}get defaultSVGProperties(){return{root:{viewBox:"0 0 10000 10000"},rootClass:{draw:!0},bbox:[0,0,1,1]}}}si=new WeakMap,wt=new WeakMap,Rt=new WeakMap,Ha=new WeakMap,ib=new WeakMap,ee=new WeakMap,Ut=new WeakMap,as=new WeakMap,fa=new WeakMap,Ba=new WeakMap,Aa=new WeakMap,cb=new WeakSet,W0=function(l,t){return H._normalizePoint(l,t,a(this,Ba),a(this,Aa),a(this,Ha))};var se,lh,th,Fe,ii,ci,db,ab,_a,Kt,Ti,QM,PM,HM;class oh extends H{constructor(){super(...arguments);L(this,Kt);L(this,se);L(this,lh,0);L(this,th);L(this,Fe);L(this,ii);L(this,ci);L(this,db);L(this,ab);L(this,_a)}build(t,e,s,c,d,n,Z){p(this,ii,e),p(this,ci,s),p(this,db,c),p(this,ab,d),p(this,_a,n),p(this,th,Z??0),p(this,Fe,t),z(this,Kt,PM).call(this)}get thickness(){return a(this,_a)}setLastElement(t){return a(this,Fe).push(t),{path:{d:this.toSVGPath()}}}removeLastElement(){return a(this,Fe).pop(),{path:{d:this.toSVGPath()}}}toSVGPath(){const t=[];for(const{line:e}of a(this,Fe)){if(t.push(`M${H.svgRound(e[4])} ${H.svgRound(e[5])}`),e.length===6){t.push("Z");continue}if(e.length===12&&isNaN(e[6])){t.push(`L${H.svgRound(e[10])} ${H.svgRound(e[11])}`);continue}for(let s=6,c=e.length;s<c;s+=6){const[d,n,Z,b,o,m]=e.subarray(s,s+6).map(H.svgRound);t.push(`C${d} ${n} ${Z} ${b} ${o} ${m}`)}}return t.join("")}serialize([t,e,s,c],d){const n=[],Z=[],[b,o,m,h]=z(this,Kt,QM).call(this);let W,r,N,M,X,y,Y,T,V;switch(a(this,ab)){case 0:V=H._rescale,W=t,r=e+c,N=s,M=-c,X=t+b*s,y=e+(1-o-h)*c,Y=t+(b+m)*s,T=e+(1-o)*c;break;case 90:V=H._rescaleAndSwap,W=t,r=e,N=s,M=c,X=t+o*s,y=e+b*c,Y=t+(o+h)*s,T=e+(b+m)*c;break;case 180:V=H._rescale,W=t+s,r=e,N=-s,M=c,X=t+(1-b-m)*s,y=e+o*c,Y=t+(1-b)*s,T=e+(o+h)*c;break;case 270:V=H._rescaleAndSwap,W=t+s,r=e+c,N=-s,M=-c,X=t+(1-o-h)*s,y=e+(1-b-m)*c,Y=t+(1-o)*s,T=e+(1-b)*c;break}for(const{line:I,points:w}of a(this,Fe))n.push(V(I,W,r,N,M,d?new Array(I.length):null)),Z.push(V(w,W,r,N,M,d?new Array(w.length):null));return{lines:n,points:Z,rect:[X,y,Y,T]}}static deserialize(t,e,s,c,d,{paths:{lines:n,points:Z},rotation:b,thickness:o}){const m=[];let h,W,r,N,M;switch(b){case 0:M=H._rescale,h=-t/s,W=e/c+1,r=1/s,N=-1/c;break;case 90:M=H._rescaleAndSwap,h=-e/c,W=-t/s,r=1/c,N=1/s;break;case 180:M=H._rescale,h=t/s+1,W=-e/c,r=-1/s,N=1/c;break;case 270:M=H._rescaleAndSwap,h=e/c+1,W=t/s+1,r=-1/c,N=-1/s;break}if(!n){n=[];for(const y of Z){const Y=y.length;if(Y===2){n.push(new Float32Array([NaN,NaN,NaN,NaN,y[0],y[1]]));continue}if(Y===4){n.push(new Float32Array([NaN,NaN,NaN,NaN,y[0],y[1],NaN,NaN,NaN,NaN,y[2],y[3]]));continue}const T=new Float32Array(3*(Y-2));n.push(T);let[V,I,w,R]=y.subarray(0,4);T.set([NaN,NaN,NaN,NaN,V,I],0);for(let S=4;S<Y;S+=2){const x=y[S],g=y[S+1];T.set(H.createBezierPoints(V,I,w,R,x,g),(S-2)*3),[V,I,w,R]=[w,R,x,g]}}}for(let y=0,Y=n.length;y<Y;y++)m.push({line:M(n[y].map(T=>T??NaN),h,W,r,N),points:M(Z[y].map(T=>T??NaN),h,W,r,N)});const X=new this.prototype.constructor;return X.build(m,s,c,1,b,o,d),X}get box(){return a(this,se)}updateProperty(t,e){return t==="stroke-width"?z(this,Kt,HM).call(this,e):null}updateParentDimensions([t,e],s){const[c,d]=z(this,Kt,Ti).call(this);p(this,ii,t),p(this,ci,e),p(this,db,s);const[n,Z]=z(this,Kt,Ti).call(this),b=n-c,o=Z-d,m=a(this,se);return m[0]-=b,m[1]-=o,m[2]+=2*b,m[3]+=2*o,m}updateRotation(t){return p(this,lh,t),{path:{transform:this.rotationTransform}}}get viewBox(){return a(this,se).map(H.svgRound).join(" ")}get defaultProperties(){const[t,e]=a(this,se);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${H.svgRound(t)} ${H.svgRound(e)}`}}}get rotationTransform(){const[,,t,e]=a(this,se);let s=0,c=0,d=0,n=0,Z=0,b=0;switch(a(this,lh)){case 90:c=e/t,d=-t/e,Z=t;break;case 180:s=-1,n=-1,Z=t,b=e;break;case 270:c=-e/t,d=t/e,b=e;break;default:return""}return`matrix(${s} ${c} ${d} ${n} ${H.svgRound(Z)} ${H.svgRound(b)})`}getPathResizingSVGProperties([t,e,s,c]){const[d,n]=z(this,Kt,Ti).call(this),[Z,b,o,m]=a(this,se);if(Math.abs(o-d)<=H.PRECISION||Math.abs(m-n)<=H.PRECISION){const M=t+s/2-(Z+o/2),X=e+c/2-(b+m/2);return{path:{"transform-origin":`${H.svgRound(t)} ${H.svgRound(e)}`,transform:`${this.rotationTransform} translate(${M} ${X})`}}}const h=(s-2*d)/(o-2*d),W=(c-2*n)/(m-2*n),r=o/s,N=m/c;return{path:{"transform-origin":`${H.svgRound(Z)} ${H.svgRound(b)}`,transform:`${this.rotationTransform} scale(${r} ${N}) translate(${H.svgRound(d)} ${H.svgRound(n)}) scale(${h} ${W}) translate(${H.svgRound(-d)} ${H.svgRound(-n)})`}}}getPathResizedSVGProperties([t,e,s,c]){const[d,n]=z(this,Kt,Ti).call(this),Z=a(this,se),[b,o,m,h]=Z;if(Z[0]=t,Z[1]=e,Z[2]=s,Z[3]=c,Math.abs(m-d)<=H.PRECISION||Math.abs(h-n)<=H.PRECISION){const X=t+s/2-(b+m/2),y=e+c/2-(o+h
13/2);for(const{line:Y,points:T}of a(this,Fe))H._translate(Y,X,y,Y),H._translate(T,X,y,T);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${H.svgRound(t)} ${H.svgRound(e)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}const W=(s-2*d)/(m-2*d),r=(c-2*n)/(h-2*n),N=-W*(b+d)+t+d,M=-r*(o+n)+e+n;if(W!==1||r!==1||N!==0||M!==0)for(const{line:X,points:y}of a(this,Fe))H._rescale(X,N,M,W,r,X),H._rescale(y,N,M,W,r,y);return{root:{viewBox:this.viewBox},path:{"transform-origin":`${H.svgRound(t)} ${H.svgRound(e)}`,transform:this.rotationTransform||null,d:this.toSVGPath()}}}getPathTranslatedSVGProperties([t,e],s){const[c,d]=s,n=a(this,se),Z=t-n[0],b=e-n[1];if(a(this,ii)===c&&a(this,ci)===d)for(const{line:o,points:m}of a(this,Fe))H._translate(o,Z,b,o),H._translate(m,Z,b,m);else{const o=a(this,ii)/c,m=a(this,ci)/d;p(this,ii,c),p(this,ci,d);for(const{line:h,points:W}of a(this,Fe))H._rescale(h,Z,b,o,m,h),H._rescale(W,Z,b,o,m,W);n[2]*=o,n[3]*=m}return n[0]=t,n[1]=e,{root:{viewBox:this.viewBox},path:{d:this.toSVGPath(),"transform-origin":`${H.svgRound(t)} ${H.svgRound(e)}`}}}get defaultSVGProperties(){const t=a(this,se);return{root:{viewBox:this.viewBox},rootClass:{draw:!0},path:{d:this.toSVGPath(),"transform-origin":`${H.svgRound(t[0])} ${H.svgRound(t[1])}`,transform:this.rotationTransform||null},bbox:t}}}se=new WeakMap,lh=new WeakMap,th=new WeakMap,Fe=new WeakMap,ii=new WeakMap,ci=new WeakMap,db=new WeakMap,ab=new WeakMap,_a=new WeakMap,Kt=new WeakSet,Ti=function(t=a(this,_a)){const e=a(this,th)+t/2*a(this,db);return a(this,ab)%180===0?[e/a(this,ii),e/a(this,ci)]:[e/a(this,ci),e/a(this,ii)]},QM=function(){const[t,e,s,c]=a(this,se),[d,n]=z(this,Kt,Ti).call(this,0);return[t+d,e+n,s-2*d,c-2*n]},PM=function(){const t=p(this,se,new Float32Array([1/0,1/0,-1/0,-1/0]));for(const{line:c}of a(this,Fe)){if(c.length<=12){for(let Z=4,b=c.length;Z<b;Z+=6)Q.pointBoundingBox(c[Z],c[Z+1],t);continue}let d=c[4],n=c[5];for(let Z=6,b=c.length;Z<b;Z+=6){const[o,m,h,W,r,N]=c.subarray(Z,Z+6);Q.bezierBoundingBox(d,n,o,m,h,W,r,N,t),d=r,n=N}}const[e,s]=z(this,Kt,Ti).call(this);t[0]=de(t[0]-e,0,1),t[1]=de(t[1]-s,0,1),t[2]=de(t[2]+e,0,1),t[3]=de(t[3]+s,0,1),t[2]-=t[0],t[3]-=t[1]},HM=function(t){const[e,s]=z(this,Kt,Ti).call(this);p(this,_a,t);const[c,d]=z(this,Kt,Ti).call(this),[n,Z]=[c-e,d-s],b=a(this,se);return b[0]-=n,b[1]-=Z,b[2]+=2*n,b[3]+=2*Z,b};class Nu extends KM{constructor(l){super(),this._viewParameters=l,super.updateProperties({fill:"none",stroke:Ul._defaultLineColor,"stroke-opacity":1,"stroke-width":1,"stroke-linecap":"round","stroke-linejoin":"round","stroke-miterlimit":10})}updateSVGProperty(l,t){l==="stroke-width"&&(t??(t=this["stroke-width"]),t*=this._viewParameters.realScale),super.updateSVGProperty(l,t)}clone(){const l=new Nu(this._viewParameters);return l.updateAll(this),l}}var bu,fM;const Fn=class Fn extends F0{constructor(t){super({...t,name:"inkEditor"});L(this,bu);this._willKeepAspectRatio=!0,this.defaultL10nId="pdfjs-editor-ink-editor"}static initialize(t,e){Ul.initialize(t,e),this._defaultDrawingOptions=new Nu(e.viewParameters)}static getDefaultDrawingOptions(t){const e=this._defaultDrawingOptions.clone();return e.updateProperties(t),e}static get supportMultipleDrawings(){return!0}static get typesMap(){return el(this,"typesMap",new Map([[Wl.INK_THICKNESS,"stroke-width"],[Wl.INK_COLOR,"stroke"],[Wl.INK_OPACITY,"stroke-opacity"]]))}static createDrawerInstance(t,e,s,c,d){return new dV(t,e,s,c,d,this._defaultDrawingOptions["stroke-width"])}static deserializeDraw(t,e,s,c,d,n){return oh.deserialize(t,e,s,c,d,n)}static async deserialize(t,e,s){let c=null;if(t instanceof hG){const{data:{inkLists:n,rect:Z,rotation:b,id:o,color:m,opacity:h,borderStyle:{rawWidth:W},popupRef:r,richText:N,contentsObj:M,creationDate:X,modificationDate:y},parent:{page:{pageNumber:Y}}}=t;c=t={annotationType:cl.INK,color:Array.from(m),thickness:W,opacity:h,paths:{points:n},boxes:null,pageIndex:Y-1,rect:Z.slice(0),rotation:b,annotationElementId:o,id:o,deleted:!1,popupRef:r,richText:N,comment:(M==null?void 0:M.str)||null,creationDate:X,modificationDate:y}}const d=await super.deserialize(t,e,s);return d._initialData=c,t.comment&&d.setCommentData(t),d}get toolbarButtons(){return this._colorPicker||(this._colorPicker=new g0(this)),[["colorPicker",this._colorPicker]]}get colorType(){return Wl.INK_COLOR}get color(){return this._drawingOptions.stroke}get opacity(){return this._drawingOptions["stroke-opacity"]}onScaleChanging(){if(!this.parent)return;super.onScaleChanging();const{_drawId:t,_drawingOptions:e,parent:s}=this;e.updateSVGProperty("stroke-width"),s.drawLayer.updateProperties(t,e.toSVGProperties())}static onScaleChangingWhenDrawing(){const t=this._currentParent;t&&(super.onScaleChangingWhenDrawing(),this._defaultDrawingOptions.updateSVGProperty("stroke-width"),t.drawLayer.updateProperties(this._currentDrawId,this._defaultDrawingOptions.toSVGProperties()))}createDrawingOptions({color:t,thickness:e,opacity:s}){this._drawingOptions=Fn.getDefaultDrawingOptions({stroke:Q.makeHexColor(...t),"stroke-width":e,"stroke-opacity":s})}serialize(t=!1){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const{lines:e,points:s}=this.serializeDraw(t),{_drawingOptions:{stroke:c,"stroke-opacity":d,"stroke-width":n}}=this,Z=Object.assign(super.serialize(t),{color:Ul._colorManager.convert(c),opacity:d,thickness:n,paths:{lines:e,points:s}});return this.addComment(Z),t?(Z.isCopy=!0,Z):this.annotationElementId&&!z(this,bu,fM).call(this,Z)?null:(Z.id=this.annotationElementId,Z)}renderAnnotationElement(t){if(this.deleted)return t.hide(),null;const{points:e,rect:s}=this.serializeDraw(!1);return t.updateEdited({rect:s,thickness:this._drawingOptions["stroke-width"],points:e,popup:this.comment}),null}};bu=new WeakSet,fM=function(t){const{color:e,thickness:s,opacity:c,pageIndex:d}=this._initialData;return this.hasEditedComment||this._hasBeenMoved||this._hasBeenResized||t.color.some((n,Z)=>n!==e[Z])||t.thickness!==s||t.opacity!==c||t.pageIndex!==d},E(Fn,"_type","ink"),E(Fn,"_editorType",cl.INK),E(Fn,"_defaultDrawingOptions",null);let zW=Fn;class wW extends oh{toSVGPath(){let l=super.toSVGPath();return l.endsWith("Z")||(l+="Z"),l}}const wh=8,Vb=3;var qa,yl,RW,ys,BM,AM,SW,G0,_M,qM,$M,xW,gW,lp;class nc{static extractContoursFromText(l,{fontFamily:t,fontStyle:e,fontWeight:s},c,d,n,Z){let b=new OffscreenCanvas(1,1),o=b.getContext("2d",{alpha:!1});const m=200,h=o.font=`${e} ${s} ${m}px ${t}`,{actualBoundingBoxLeft:W,actualBoundingBoxRight:r,actualBoundingBoxAscent:N,actualBoundingBoxDescent:M,fontBoundingBoxAscent:X,fontBoundingBoxDescent:y,width:Y}=o.measureText(l),T=1.5,V=Math.ceil(Math.max(Math.abs(W)+Math.abs(r)||0,Y)*T),I=Math.ceil(Math.max(Math.abs(N)+Math.abs(M)||m,Math.abs(X)+Math.abs(y)||m)*T);b=new OffscreenCanvas(V,I),o=b.getContext("2d",{alpha:!0,willReadFrequently:!0}),o.font=h,o.filter="grayscale(1)",o.fillStyle="white",o.fillRect(0,0,V,I),o.fillStyle="black",o.fillText(l,V*(T-1)/2,I*(3-T)/2);const w=z(this,yl,xW).call(this,o.getImageData(0,0,V,I).data),R=z(this,yl,$M).call(this,w),S=z(this,yl,gW).call(this,R),x=z(this,yl,SW).call(this,w,V,I,S);return this.processDrawnLines({lines:{curves:x,width:V,height:I},pageWidth:c,pageHeight:d,rotation:n,innerMargin:Z,mustSmooth:!0,areContours:!0})}static process(l,t,e,s,c){const[d,n,Z]=z(this,yl,lp).call(this,l),[b,o]=z(this,yl,qM).call(this,d,n,Z,Math.hypot(n,Z)*a(this,qa).sigmaSFactor,a(this,qa).sigmaR,a(this,qa).kernelSize),m=z(this,yl,gW).call(this,o),h=z(this,yl,SW).call(this,b,n,Z,m);return this.processDrawnLines({lines:{curves:h,width:n,height:Z},pageWidth:t,pageHeight:e,rotation:s,innerMargin:c,mustSmooth:!0,areContours:!0})}static processDrawnLines({lines:l,pageWidth:t,pageHeight:e,rotation:s,innerMargin:c,mustSmooth:d,are
13Contours:n}){s%180!==0&&([t,e]=[e,t]);const{curves:Z,width:b,height:o}=l,m=l.thickness??0,h=[],W=Math.min(t/b,e/o),r=W/t,N=W/e,M=[];for(const{points:y}of Z){const Y=d?z(this,yl,_M).call(this,y):y;if(!Y)continue;M.push(Y);const T=Y.length,V=new Float32Array(T),I=new Float32Array(3*(T===2?2:T-2));if(h.push({line:I,points:V}),T===2){V[0]=Y[0]*r,V[1]=Y[1]*N,I.set([NaN,NaN,NaN,NaN,V[0],V[1]],0);continue}let[w,R,S,x]=Y;w*=r,R*=N,S*=r,x*=N,V.set([w,R,S,x],0),I.set([NaN,NaN,NaN,NaN,w,R],0);for(let g=4;g<T;g+=2){const C=V[g]=Y[g]*r,D=V[g+1]=Y[g+1]*N;I.set(H.createBezierPoints(w,R,S,x,C,D),(g-2)*3),[w,R,S,x]=[S,x,C,D]}}if(h.length===0)return null;const X=n?new wW:new oh;return X.build(h,t,e,1,s,n?0:m,c),{outline:X,newCurves:M,areContours:n,thickness:m,width:b,height:o}}static async compressSignature({outlines:l,areContours:t,thickness:e,width:s,height:c}){let d=1/0,n=-1/0,Z=0;for(const Y of l){Z+=Y.length;for(let T=2,V=Y.length;T<V;T++){const I=Y[T]-Y[T-2];d=Math.min(d,I),n=Math.max(n,I)}}let b;d>=-128&&n<=127?b=Int8Array:d>=-32768&&n<=32767?b=Int16Array:b=Int32Array;const o=l.length,m=wh+Vb*o,h=new Uint32Array(m);let W=0;h[W++]=m*Uint32Array.BYTES_PER_ELEMENT+(Z-2*o)*b.BYTES_PER_ELEMENT,h[W++]=0,h[W++]=s,h[W++]=c,h[W++]=t?0:1,h[W++]=Math.max(0,Math.floor(e??0)),h[W++]=o,h[W++]=b.BYTES_PER_ELEMENT;for(const Y of l)h[W++]=Y.length-2,h[W++]=Y[0],h[W++]=Y[1];const r=new CompressionStream("deflate-raw"),N=r.writable.getWriter();await N.ready,N.write(h);const M=b.prototype.constructor;for(const Y of l){const T=new M(Y.length-2);for(let V=2,I=Y.length;V<I;V++)T[V-2]=Y[V]-Y[V-2];N.write(T)}N.close();const X=await new Response(r.readable).arrayBuffer(),y=new Uint8Array(X);return qr(y)}static async decompressSignature(l){try{const t=p5(l),{readable:e,writable:s}=new DecompressionStream("deflate-raw"),c=s.getWriter();await c.ready,c.write(t).then(async()=>{await c.ready,await c.close()}).catch(()=>{});let d=null,n=0;for await(const Y of e)d||(d=new Uint8Array(new Uint32Array(Y.buffer,0,4)[0])),d.set(Y,n),n+=Y.length;const Z=new Uint32Array(d.buffer,0,d.length>>2),b=Z[1];if(b!==0)throw new Error(`Invalid version: ${b}`);const o=Z[2],m=Z[3],h=Z[4]===0,W=Z[5],r=Z[6],N=Z[7],M=[],X=(wh+Vb*r)*Uint32Array.BYTES_PER_ELEMENT;let y;switch(N){case Int8Array.BYTES_PER_ELEMENT:y=new Int8Array(d.buffer,X);break;case Int16Array.BYTES_PER_ELEMENT:y=new Int16Array(d.buffer,X);break;case Int32Array.BYTES_PER_ELEMENT:y=new Int32Array(d.buffer,X);break}n=0;for(let Y=0;Y<r;Y++){const T=Z[Vb*Y+wh],V=new Float32Array(T+2);M.push(V);for(let I=0;I<Vb-1;I++)V[I]=Z[Vb*Y+wh+I+1];for(let I=0;I<T;I++)V[I+2]=V[I]+y[n++]}return{areContours:h,thickness:W,outlines:M,width:o,height:m}}catch(t){return tl(`decompressSignature: ${t}`),null}}}qa=new WeakMap,yl=new WeakSet,RW=function(l,t,e,s){return e-=l,s-=t,e===0?s>0?0:4:e===1?s+6:2-s},ys=new WeakMap,BM=function(l,t,e,s,c,d,n){const Z=z(this,yl,RW).call(this,e,s,c,d);for(let b=0;b<8;b++){const o=(-b+Z-n+16)%8,m=a(this,ys)[2*o],h=a(this,ys)[2*o+1];if(l[(e+m)*t+(s+h)]!==0)return o}return-1},AM=function(l,t,e,s,c,d,n){const Z=z(this,yl,RW).call(this,e,s,c,d);for(let b=0;b<8;b++){const o=(b+Z+n+16)%8,m=a(this,ys)[2*o],h=a(this,ys)[2*o+1];if(l[(e+m)*t+(s+h)]!==0)return o}return-1},SW=function(l,t,e,s){const c=l.length,d=new Int32Array(c);for(let o=0;o<c;o++)d[o]=l[o]<=s?1:0;for(let o=1;o<e-1;o++)d[o*t]=d[o*t+t-1]=0;for(let o=0;o<t;o++)d[o]=d[t*e-1-o]=0;let n=1,Z;const b=[];for(let o=1;o<e-1;o++){Z=1;for(let m=1;m<t-1;m++){const h=o*t+m,W=d[h];if(W===0)continue;let r=o,N=m;if(W===1&&d[h-1]===0)n+=1,N-=1;else if(W>=1&&d[h+1]===0)n+=1,N+=1,W>1&&(Z=W);else{W!==1&&(Z=Math.abs(W));continue}const M=[m,o],X=N===m+1,y={isHole:X,points:M,id:n,parent:0};b.push(y);let Y;for(const g of b)if(g.id===Z){Y=g;break}Y?Y.isHole?y.parent=X?Y.parent:Z:y.parent=X?Z:Y.parent:y.parent=X?Z:0;const T=z(this,yl,BM).call(this,d,t,o,m,r,N,0);if(T===-1){d[h]=-n,d[h]!==1&&(Z=Math.abs(d[h]));continue}let V=a(this,ys)[2*T],I=a(this,ys)[2*T+1];const w=o+V,R=m+I;r=w,N=R;let S=o,x=m;for(;;){const g=z(this,yl,AM).call(this,d,t,S,x,r,N,1);V=a(this,ys)[2*g],I=a(this,ys)[2*g+1];const C=S+V,D=x+I;M.push(D,C);const J=S*t+x;if(d[J+1]===0?d[J]=-n:d[J]===1&&(d[J]=n),C===o&&D===m&&S===w&&x===R){d[h]!==1&&(Z=Math.abs(d[h]));break}else r=S,N=x,S=C,x=D}}}return b},G0=function(l,t,e,s){if(e-t<=4){for(let w=t;w<e-2;w+=2)s.push(l[w],l[w+1]);return}const c=l[t],d=l[t+1],n=l[e-4]-c,Z=l[e-3]-d,b=Math.hypot(n,Z),o=n/b,m=Z/b,h=o*
13d-m*c,W=Z/n,r=1/b,N=Math.atan(W),M=Math.cos(N),X=Math.sin(N),y=r*(Math.abs(M)+Math.abs(X)),Y=r*(1-y+y**2),T=Math.max(Math.atan(Math.abs(X+M)*Y),Math.atan(Math.abs(X-M)*Y));let V=0,I=t;for(let w=t+2;w<e-2;w+=2){const R=Math.abs(h-o*l[w+1]+m*l[w]);R>V&&(I=w,V=R)}V>(b*T)**2?(z(this,yl,G0).call(this,l,t,I+2,s),z(this,yl,G0).call(this,l,I,e,s)):s.push(c,d)},_M=function(l){const t=[],e=l.length;return z(this,yl,G0).call(this,l,0,e,t),t.push(l[e-2],l[e-1]),t.length<=4?null:t},qM=function(l,t,e,s,c,d){const n=new Float32Array(d**2),Z=-2*s**2,b=d>>1;for(let N=0;N<d;N++){const M=(N-b)**2;for(let X=0;X<d;X++)n[N*d+X]=Math.exp((M+(X-b)**2)/Z)}const o=new Float32Array(256),m=-2*c**2;for(let N=0;N<256;N++)o[N]=Math.exp(N**2/m);const h=l.length,W=new Uint8Array(h),r=new Uint32Array(256);for(let N=0;N<e;N++)for(let M=0;M<t;M++){const X=N*t+M,y=l[X];let Y=0,T=0;for(let I=0;I<d;I++){const w=N+I-b;if(!(w<0||w>=e))for(let R=0;R<d;R++){const S=M+R-b;if(S<0||S>=t)continue;const x=l[w*t+S],g=n[I*d+R]*o[Math.abs(x-y)];Y+=x*g,T+=g}}const V=W[X]=Math.round(Y/T);r[V]++}return[W,r]},$M=function(l){const t=new Uint32Array(256);for(const e of l)t[e]++;return t},xW=function(l){const t=l.length,e=new Uint8ClampedArray(t>>2);let s=-1/0,c=1/0;for(let n=0,Z=e.length;n<Z;n++){const b=e[n]=l[n<<2];s=Math.max(s,b),c=Math.min(c,b)}const d=255/(s-c);for(let n=0,Z=e.length;n<Z;n++)e[n]=(e[n]-c)*d;return e},gW=function(l){let t,e=-1/0,s=-1/0;const c=l.findIndex(Z=>Z!==0);let d=c,n=c;for(t=c;t<256;t++){const Z=l[t];Z>e&&(t-d>s&&(s=t-d,n=t-1),e=Z,d=t)}for(t=n-1;t>=0&&!(l[t]>l[t+1]);t--);return t},lp=function(l){const t=l,{width:e,height:s}=l,{maxDim:c}=a(this,qa);let d=e,n=s;if(e>c||s>c){let h=e,W=s,r=Math.log2(Math.max(e,s)/c);const N=Math.floor(r);r=r===N?N-1:N;for(let X=0;X<r;X++){d=Math.ceil(h/2),n=Math.ceil(W/2);const y=new OffscreenCanvas(d,n);y.getContext("2d").drawImage(l,0,0,h,W,0,0,d,n),h=d,W=n,l!==t&&l.close(),l=y.transferToImageBitmap()}const M=Math.min(c/d,c/n);d=Math.round(d*M),n=Math.round(n*M)}const b=new OffscreenCanvas(d,n).getContext("2d",{willReadFrequently:!0});b.fillStyle="white",b.fillRect(0,0,d,n),b.filter="grayscale(1)",b.drawImage(l,0,0,l.width,l.height,0,0,d,n);const o=b.getImageData(0,0,d,n).data;return[z(this,yl,xW).call(this,o),d,n]},L(nc,yl),L(nc,qa,{maxDim:512,sigmaSFactor:.02,sigmaR:25,kernelSize:16}),L(nc,ys,new Int32Array([0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1]));class uG extends KM{constructor(){super(),super.updateProperties({fill:Ul._defaultLineColor,"stroke-width":0})}clone(){const l=new uG;return l.updateAll(this),l}}class WG extends Nu{constructor(l){super(l),super.updateProperties({stroke:Ul._defaultLineColor,"stroke-width":1})}clone(){const l=new WG(this._viewParameters);return l.updateAll(this),l}}var nd,di,Zd,$a;const Me=class Me extends F0{constructor(t){super({...t,mustBeCommitted:!0,name:"signatureEditor"});L(this,nd,!1);L(this,di,null);L(this,Zd,null);L(this,$a,null);this._willKeepAspectRatio=!0,p(this,Zd,t.signatureData||null),p(this,di,null),this.defaultL10nId="pdfjs-editor-signature-editor1"}static initialize(t,e){Ul.initialize(t,e),this._defaultDrawingOptions=new uG,this._defaultDrawnSignatureOptions=new WG(e.viewParameters)}static getDefaultDrawingOptions(t){const e=this._defaultDrawingOptions.clone();return e.updateProperties(t),e}static get supportMultipleDrawings(){return!1}static get typesMap(){return el(this,"typesMap",new Map)}static get isDrawer(){return!1}get telemetryFinalData(){return{type:"signature",hasDescription:!!a(this,di)}}static computeTelemetryFinalData(t){const e=t.get("hasDescription");return{hasAltText:e.get(!0)??0,hasNoAltText:e.get(!1)??0}}get isResizable(){return!0}onScaleChanging(){this._drawId!==null&&super.onScaleChanging()}render(){if(this.div)return this.div;let t,e;const{_isCopy:s}=this;if(s&&(this._isCopy=!1,t=this.x,e=this.y),super.render(),this._drawId===null)if(a(this,Zd)){const{lines:c,mustSmooth:d,areContours:n,description:Z,uuid:b,heightInPage:o}=a(this,Zd),{rawDims:{pageWidth:m,pageHeight:h},rotation:W}=this.parent.viewport,r=nc.processDrawnLines({lines:c,pageWidth:m,pageHeight:h,rotation:W,innerMargin:Me._INNER_MARGIN,mustSmooth:d,are
13Contours:n});this.addSignature(r,o,Z,b)}else this.div.setAttribute("data-l10n-args",JSON.stringify({description:""})),this.div.hidden=!0,this._uiManager.getSignature(this);else this.div.setAttribute("data-l10n-args",JSON.stringify({description:a(this,di)||""}));return s&&(this._isCopy=!0,this._moveAfterPaste(t,e)),this.div}setUuid(t){p(this,$a,t),this.addEditToolbar()}getUuid(){return a(this,$a)}get description(){return a(this,di)}set description(t){p(this,di,t),this.div&&(this.div.setAttribute("data-l10n-args",JSON.stringify({description:t})),super.addEditToolbar().then(e=>{e==null||e.updateEditSignatureButton(t)}))}getSignaturePreview(){const{newCurves:t,areContours:e,thickness:s,width:c,height:d}=a(this,Zd),n=Math.max(c,d),Z=nc.processDrawnLines({lines:{curves:t.map(b=>({points:b})),thickness:s,width:c,height:d},pageWidth:n,pageHeight:n,rotation:0,innerMargin:0,mustSmooth:!1,areContours:e});return{areContours:e,outline:Z.outline}}get toolbarButtons(){return this._uiManager.signatureManager?[["editSignature",this._uiManager.signatureManager]]:super.toolbarButtons}addSignature(t,e,s,c){const{x:d,y:n}=this,{outline:Z}=p(this,Zd,t);p(this,nd,Z instanceof wW),this.description=s;let b;a(this,nd)?b=Me.getDefaultDrawingOptions():(b=Me._defaultDrawnSignatureOptions.clone(),b.updateProperties({"stroke-width":Z.thickness})),this._addOutlines({drawOutlines:Z,drawingOptions:b});const[,o]=this.pageDimensions;let m=e/o;m=m>=1?.5:m,this.width*=m/this.height,this.width>=1&&(m*=.9/this.width,this.width=.9),this.height=m,this.setDims(),this.x=d,this.y=n,this.center(),this._onResized(),this.onScaleChanging(),this.rotate(),this._uiManager.addToAnnotationStorage(this),this.setUuid(c),this._reportTelemetry({action:"pdfjs.signature.inserted",data:{hasBeenSaved:!!c,hasDescription:!!s}}),this.div.hidden=!1}getFromImage(t){const{rawDims:{pageWidth:e,pageHeight:s},rotation:c}=this.parent.viewport;return nc.process(t,e,s,c,Me._INNER_MARGIN)}getFromText(t,e){const{rawDims:{pageWidth:s,pageHeight:c},rotation:d}=this.parent.viewport;return nc.extractContoursFromText(t,e,s,c,d,Me._INNER_MARGIN)}getDrawnSignature(t){const{rawDims:{pageWidth:e,pageHeight:s},rotation:c}=this.parent.viewport;return nc.processDrawnLines({lines:t,pageWidth:e,pageHeight:s,rotation:c,innerMargin:Me._INNER_MARGIN,mustSmooth:!1,areContours:!1})}createDrawingOptions({areContours:t,thickness:e}){t?this._drawingOptions=Me.getDefaultDrawingOptions():(this._drawingOptions=Me._defaultDrawnSignatureOptions.clone(),this._drawingOptions.updateProperties({"stroke-width":e}))}serialize(t=!1){if(this.isEmpty())return null;const{lines:e,points:s}=this.serializeDraw(t),{_drawingOptions:{"stroke-width":c}}=this,d=Object.assign(super.serialize(t),{isSignature:!0,areContours:a(this,nd),color:[0,0,0],thickness:a(this,nd)?0:c});return this.addComment(d),t?(d.paths={lines:e,points:s},d.uuid=a(this,$a),d.isCopy=!0):d.lines=e,a(this,di)&&(d.accessibilityData={type:"Figure",alt:a(this,di)}),d}static deserializeDraw(t,e,s,c,d,n){return n.areContours?wW.deserialize(t,e,s,c,d,n):oh.deserialize(t,e,s,c,d,n)}static async deserialize(t,e,s){var d;const c=await super.deserialize(t,e,s);return p(c,nd,t.areContours),c.description=((d=t.accessibilityData)==null?void 0:d.alt)||"",p(c,$a,t.uuid),c}};nd=new WeakMap,di=new WeakMap,Zd=new WeakMap,$a=new WeakMap,E(Me,"_type","signature"),E(Me,"_editorType",cl.SIGNATURE),E(Me,"_defaultDrawingOptions",null);let jW=Me;var Al,St,bd,sc,od,nb,ic,ln,ai,Oe,Zb,Xl,Ab,_b,N0,r0,X0,CW,M0,tp;class DW extends Ul{constructor(t){super({...t,name:"stampEditor"});L(this,Xl);L(this,Al,null);L(this,St,null);L(this,bd,null);L(this,sc,null);L(this,od,null);L(this,nb,"");L(this,ic,null);L(this,ln,!1);L(this,ai,null);L(this,Oe,!1);L(this,Zb,!1);p(this,sc,t.bitmapUrl),p(this,od,t.bitmapFile),this.defaultL10nId="pdfjs-editor-stamp-editor"}static initialize(t,e){Ul.initialize(t,e)}static isHandlingMimeForPasting(t){return p2.includes(t)}static paste(t,e){e.pasteEditor({mode:cl.STAMP},{bitmapFile:t.getAsFile()})}altTextFinish(){this._uiManager.useNewAltTextFlow&&(this.div.hidden=!1),super.altTextFinish()}get telemetryFinalData(){var t;return{type:"stamp",hasAltText:!!((t=this.altTextData)!=null&&t.altText)}}static computeTelemetryFinalData(t){const e=t.get("hasAltText");return{hasAltText:e.get(!0)??0,hasNoAltText:e.get(!1)??0}}async mlGuessAltText(t=null,e=!0){if(this.hasAltTextData())return null;const{mlManager:s}=this._uiManager;if(!s)throw new Error("No ML.");if(!await s.isEnabledFor("altText"))throw new Error("ML isn't enabled for alt text.");const{data:c,width:d,height:n}=t||this.copyCanvas(null,null,!0).imageData,Z=await s.guess({name:"altText",request:{data:c,width:d,height:n,
13channels:c.length/(d*n)}});if(!Z)throw new Error("No response from the AI service.");if(Z.error)throw new Error("Error from the AI service.");if(Z.cancel)return null;if(!Z.output)throw new Error("No valid response from the AI service.");const b=Z.output;return await this.setGuessedAltText(b),e&&!this.hasAltTextData()&&(this.altTextData={alt:b,decorative:!1}),b}remove(){var t;a(this,St)&&(p(this,Al,null),this._uiManager.imageManager.deleteId(a(this,St)),(t=a(this,ic))==null||t.remove(),p(this,ic,null),a(this,ai)&&(clearTimeout(a(this,ai)),p(this,ai,null))),super.remove()}rebuild(){if(!this.parent){a(this,St)&&z(this,Xl,N0).call(this);return}super.rebuild(),this.div!==null&&(a(this,St)&&a(this,ic)===null&&z(this,Xl,N0).call(this),this.isAttachedToDOM||this.parent.add(this))}onceAdded(t){this._isDraggable=!0,t&&this.div.focus()}isEmpty(){return!(a(this,bd)||a(this,Al)||a(this,sc)||a(this,od)||a(this,St)||a(this,ln))}get toolbarButtons(){return[["altText",this.createAltText()]]}get isResizable(){return!0}render(){if(this.div)return this.div;let t,e;return this._isCopy&&(t=this.x,e=this.y),super.render(),this.div.hidden=!0,this.createAltText(),a(this,ln)||(a(this,Al)?z(this,Xl,r0).call(this):z(this,Xl,N0).call(this)),this._isCopy&&this._moveAfterPaste(t,e),this._uiManager.addShouldRescale(this),this.div}setCanvas(t,e){const{id:s,bitmap:c}=this._uiManager.imageManager.getFromCanvas(t,e);e.remove(),s&&this._uiManager.imageManager.isValidId(s)&&(p(this,St,s),c&&p(this,Al,c),p(this,ln,!1),z(this,Xl,r0).call(this))}_onResized(){this.onScaleChanging()}onScaleChanging(){if(!this.parent)return;a(this,ai)!==null&&clearTimeout(a(this,ai)),p(this,ai,setTimeout(()=>{p(this,ai,null),z(this,Xl,CW).call(this)},200))}copyCanvas(t,e,s=!1){t||(t=224);const{width:c,height:d}=a(this,Al),n=new Rs;let Z=a(this,Al),b=c,o=d,m=null;if(e){if(c>e||d>e){const w=Math.min(e/c,e/d);b=Math.floor(c*w),o=Math.floor(d*w)}m=document.createElement("canvas");const W=m.width=Math.ceil(b*n.sx),r=m.height=Math.ceil(o*n.sy);a(this,Oe)||(Z=z(this,Xl,X0).call(this,W,r));const N=m.getContext("2d");N.filter=this._uiManager.hcmFilter;let M="white",X="#cfcfd8";this._uiManager.hcmFilter!=="none"?X="black":I5.isDarkMode&&(M="#8f8f9d",X="#42414d");const y=15,Y=y*n.sx,T=y*n.sy,V=new OffscreenCanvas(Y*2,T*2),I=V.getContext("2d");I.fillStyle=M,I.fillRect(0,0,Y*2,T*2),I.fillStyle=X,I.fillRect(0,0,Y,T),I.fillRect(Y,T,Y,T),N.fillStyle=N.createPattern(V,"repeat"),N.fillRect(0,0,W,r),N.drawImage(Z,0,0,Z.width,Z.height,0,0,W,r)}let h=null;if(s){let W,r;if(n.symmetric&&Z.width<t&&Z.height<t)W=Z.width,r=Z.height;else if(Z=a(this,Al),c>t||d>t){const X=Math.min(t/c,t/d);W=Math.floor(c*X),r=Math.floor(d*X),a(this,Oe)||(Z=z(this,Xl,X0).call(this,W,r))}const M=new OffscreenCanvas(W,r).getContext("2d",{willReadFrequently:!0});M.drawImage(Z,0,0,Z.width,Z.height,0,0,W,r),h={width:W,height:r,data:M.getImageData(0,0,W,r).data}}return{canvas:m,width:b,height:o,imageData:h}}static async deserialize(t,e,s){var M;let c=null,d=!1;if(t instanceof NM){const{data:{rect:X,rotation:y,id:Y,structParent:T,popupRef:V,richText:I,contentsObj:w,creationDate:R,modificationDate:S},container:x,parent:{page:{pageNumber:g}},canvas:C}=t;let D,J;C?(delete t.canvas,{id:D,bitmap:J}=s.imageManager.getFromCanvas(x.id,C),C.remove()):(d=!0,t._hasNoCanvas=!0);const k=((M=await e._structTree.getAriaAttributes(`${xn}${Y}`))==null?void 0:M.get("aria-label"))||"";c=t={annotationType:cl.STAMP,bitmapId:D,bitmap:J,pageIndex:g-1,rect:X.slice(0),rotation:y,annotationElementId:Y,id:Y,deleted:!1,accessibilityData:{decorative:!1,altText:k},isSvg:!1,structParent:T,popupRef:V,richText:I,comment:(w==null?void 0:w.str)||null,creationDate:R,modificationDate:S}}const n=await super.deserialize(t,e,s),{rect:Z,bitmap:b,bitmapUrl:o,bitmapId:m,isSvg:h,accessibilityData:W}=t;d?(s.addMissingCanvas(t.id,n),p(n,ln,!0)):m&&s.imageManager.isValidId(m)?(p(n,St,m),b&&p(n,Al,b)):p(n,sc,o),p(n,Oe,h);const[r,N]=n.pageDimensions;return n.width=(Z[2]-Z[0])/r,n.height=(Z[3]-Z[1])/N,W&&(n.altTextData=W),n._initialData=c,t.comment&&n.setCommentData(t),p(n,Zb,!!c),n}serialize(t=!1,e=null){if(this.isEmpty())return null;if(this.deleted)return this.serializeDeleted();const s=Object.assign(super.serialize(t),{bitmapId:a(this,St),isSvg:a(this,Oe)});if(this.addComment(s),t)return s.bitmapUrl=z(this,Xl,M0).call(this,!0),s.accessibilityData=this.serializeAltText(!0),s.isCopy=!0,s;const{decorative:c,altText:d}=this.serializeAltText(!1);if(!c&&d&&(s.accessibilityData={type:"Figure",alt:d}),this.annotationElementId){const Z=z(this,Xl,tp).call(this,s);return Z.isSame?null:(Z.isSameAltText?delete s.accessibilityData:s.accessibilityData.structParent=this._initialData.structParent??-1,s.id=this.annotationElementId,delete s.bitmapId,s)}if(e===null)return s;e.stamps||(e.stamps=new Map);const n=a(this,Oe)?(s.rect[2]-s.rect[0])*(s.rect[3]-s.rect[1]):null;if(!e.stamps.has(a(this,St)))e.stamps.set(a(this,St),{area:n,serialized:s}),s.bitmap=z(this,Xl,M0).call(this,!1);else if(a(this,Oe)){const Z=e.stamps.get(a(this,St));n>Z.area&&(Z.area=n,Z.serialized.bitmap.close(),Z.serialized.bitmap=z(this,Xl,M0).call(this,!1))}return s}renderAnnotationElement(t){return this.deleted?(t.hide(),null):(t.updateEdited({rect:this.getPDFRect(),popup:this.comment}),null)}}Al=new WeakMap,St=new WeakMap,bd=new WeakMap,sc=new WeakMap,od=new WeakMap,nb=new WeakMap,ic=new WeakMap,ln=new WeakMap,ai=new WeakMap,Oe=new WeakMap,Zb=new WeakMap,Xl=new WeakSet,Ab=function(t,e=!1){if(!t){this.remove();return}p(this,Al,t.bitmap),e||(p(this,St,t.id),p(this,Oe,t.isSvg)),t.file&&p(this,nb,t.file.name),z(this,Xl,r0).call(this)},_b=function(){if(p(this,bd,null),this._uiManager.enableWaiting(!1),!!a(this,ic)){if(this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&a(this,Al)){this.addEditToolbar().then(()=>{this._editToolbar.hide(),this._uiManager.editAltText(this,!0)});return}if(!this._uiManager.useNewAltTextWhenAddingImage&&this._uiManager.useNewAltTextFlow&&a(this,Al)){this._reportTelemetry({action:"pdfjs.image.image_added",data:{alt_text_modal:!1,alt_text_type:"empty"}});try{this.mlGuessAltText()}catch{}}this.div.focus()}},N0=function(){if(a(this,St)){this._uiManager.enableWaiting(!0),this._uiManager.imageManager.getFromId(a(this,St)).then(s=>z(this,Xl,Ab).call(this,s,!0)).finally(()=>z(this,Xl,_b).call(this));return}if(a(this,sc)){const s=a(this,sc);p(this,sc,null),this._uiManager.enableWaiting(!0),p(this,bd,this._uiManager.imageManager.getFromUrl(s).then(c=>z(this,Xl,Ab).call(this,c)).finally(()=>z(this,Xl,_b).call(this)));return}if(a(this,od)){const s=a(this,od);p(this,od,null),this._uiManager.enableWaiting(!0),p(this,bd,this._uiManager.imageManager.getFromFile(s).then(c=>z(this,Xl,Ab).call(this,c)).finally(()=>z(this,Xl,_b).call(this)));return}const t=document.createElement("input");t.type="file",t.accept=p2.join(",");const e=this._uiManager._signal;p(this,bd,new Promise(s=>{t.addEventListener("change",async()=>
13{if(!t.files||t.files.length===0)this.remove();else{this._uiManager.enableWaiting(!0);const c=await this._uiManager.imageManager.getFromFile(t.files[0]);this._reportTelemetry({action:"pdfjs.image.image_selected",data:{alt_text_modal:this._uiManager.useNewAltTextFlow}}),z(this,Xl,Ab).call(this,c)}s()},{signal:e}),t.addEventListener("cancel",()=>{this.remove(),s()},{signal:e})}).finally(()=>z(this,Xl,_b).call(this))),t.click()},r0=function(){var b;const{div:t}=this;let{width:e,height:s}=a(this,Al);const[c,d]=this.pageDimensions,n=.75;if(this.width)e=this.width*c,s=this.height*d;else if(e>n*c||s>n*d){const o=Math.min(n*c/e,n*d/s);e*=o,s*=o}this._uiManager.enableWaiting(!1);const Z=p(this,ic,document.createElement("canvas"));Z.setAttribute("role","img"),this.addContainer(Z),this.width=e/c,this.height=s/d,this.setDims(),(b=this._initialOptions)!=null&&b.isCentered?this.center():this.fixAndSetPosition(),this._initialOptions=null,(!this._uiManager.useNewAltTextWhenAddingImage||!this._uiManager.useNewAltTextFlow||this.annotationElementId)&&(t.hidden=!1),z(this,Xl,CW).call(this),a(this,Zb)||(this.parent.addUndoableEditor(this),p(this,Zb,!0)),this._reportTelemetry({action:"inserted_image"}),a(this,nb)&&this.div.setAttribute("aria-description",a(this,nb)),this.annotationElementId||this._uiManager.a11yAlert("pdfjs-editor-stamp-added-alert")},X0=function(t,e){const{width:s,height:c}=a(this,Al);let d=s,n=c,Z=a(this,Al);for(;d>2*t||n>2*e;){const b=d,o=n;d>2*t&&(d=d>=16384?Math.floor(d/2)-1:Math.ceil(d/2)),n>2*e&&(n=n>=16384?Math.floor(n/2)-1:Math.ceil(n/2));const m=new OffscreenCanvas(d,n);m.getContext("2d").drawImage(Z,0,0,b,o,0,0,d,n),Z=m.transferToImageBitmap()}return Z},CW=function(){const[t,e]=this.parentDimensions,{width:s,height:c}=this,d=new Rs,n=Math.ceil(s*t*d.sx),Z=Math.ceil(c*e*d.sy),b=a(this,ic);if(!b||b.width===n&&b.height===Z)return;b.width=n,b.height=Z;const o=a(this,Oe)?a(this,Al):z(this,Xl,X0).call(this,n,Z),m=b.getContext("2d");m.filter=this._uiManager.hcmFilter,m.drawImage(o,0,0,o.width,o.height,0,0,n,Z)},M0=function(t){if(t){if(a(this,Oe)){const c=this._uiManager.imageManager.getSvgUrl(a(this,St));if(c)return c}const e=document.createElement("canvas");return{width:e.width,height:e.height}=a(this,Al),e.getContext("2d").drawImage(a(this,Al),0,0),e.toDataURL()}if(a(this,Oe)){const[e,s]=this.pageDimensions,c=Math.round(this.width*e*Gc.PDF_TO_CSS_UNITS),d=Math.round(this.height*s*Gc.PDF_TO_CSS_UNITS),n=new OffscreenCanvas(c,d);return n.getContext("2d").drawImage(a(this,Al),0,0,a(this,Al).width,a(this,Al).height,0,0,c,d),n.transferToImageBitmap()}return structuredClone(a(this,Al))},tp=function(t){var n;const{pageIndex:e,accessibilityData:{altText:s}}=this._initialData,c=t.pageIndex===e,d=(((n=t.accessibilityData)==null?void 0:n.alt)||"")===s;return{isSame:!this.hasEditedComment&&!this._hasBeenMoved&&!this._hasBeenResized&&c&&d,isSameAltText:d}},E(DW,"_type","stamp"),E(DW,"_editorType",cl.STAMP);var tn,bb,md,hd,cc,Ne,ud,ob,mb,Ts,dc,xt,ac,Wd,hb,f,Gd,Cl,FW,ep,Os,OW,kW,p0;const hs=class hs{constructor({uiManager:l,pageIndex:t,div:e,structTreeLayer:s,accessibilityManager:c,annotationLayer:d,drawLayer:n,textLayer:Z,viewport:b,l10n:o}){L(this,Cl);L(this,tn);L(this,bb,!1);L(this,md,null);L(this,hd,null);L(this,cc,null);L(this,Ne,new Map);L(this,ud,!1);L(this,ob,!1);L(this,mb,!1);L(this,Ts,null);L(this,dc,null);L(this,xt,null);L(this,ac,null);L(this,Wd,null);L(this,hb,-1);L(this,f);const m=[...a(hs,Gd).values()];if(!hs._initialized){hs._initialized=!0;for(const h of m)h.initialize(o,l)}l.registerEditorTypes(m),p(this,f,l),this.pageIndex=t,this.div=e,p(this,tn,c),p(this,md,d),this.viewport=b,p(this,xt,Z),this.drawLayer=n,this._structTree=s,a(this,f).addLayer(this)}get isEmpty(){return a(this,Ne).size===0}get isInvisible(){return this.isEmpty&&a(this,f).getMode()===cl.NONE}updateToolbar(l){a(this,f).updateToolbar(l)}updateMode(l=a(this,f).getMode()){switch(z(this,Cl,p0).call(this),l){case cl.NONE:this.div.classList.toggle("nonEditing",!0),this.disableTextSelection(),this.togglePointerEvents(!1),this.toggleAnnotationLayerPointerEvents(!0),this.disableClick();return;case cl.INK:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick();break;case cl.HIGHLIGHT:this.enableTextSelection(),this.togglePointerEvents(!1),this.disableClick();break;default:this.disableTextSelection(),this.togglePointerEvents(!0),this.enableClick()}this.toggleAnnotationLayerPointerEvents(!1);const{classList:t}=this.div;if(t.toggle("nonEditing",!1),l===cl.POPUP)t.toggle("commentEditing",!0);else{t.toggle("commentEditing",!1);for(const e of a(hs,Gd).values())t.toggle(`${e._type}Editing`,l===e._editorType)}this.div.hidden=!1}hasTextLayer(l){var t;return l===((t=a(this,xt))==null?void 0:t.div)}setEditingState(l){a(this,f).setEditingState(l)}addCommands(l){a(this,f).addCommands(l)}cleanUndoStack(l){a(this,f).cleanUndoStack(l)}toggleDrawing(l=!1){this.div.classList.toggle("drawing",!l)}togglePointerEvents(l=!1){this.div.classList.toggle("disabled",!l)}toggleAnnotationLayerPointerEvents(l=!1){var t;(t=a(this,md))==null||t.togglePointerEvents(l)}async enable(){var e;p(this,mb,!0),this.div.tabIndex=0,this.togglePointerEvents(!0),this.div.classList.toggle("nonEditing",!1),(e=a(this,Wd))==null||e.abort(),p(this,Wd,null);const l=new Set;for(const s of a(this,Cl,FW))s.enableEditing(),s.show(!0),s.annotationElementId&&(a(this,f).removeChangedExistingAnnotation(s),l.add(s.annotationElementId));const t=a(this,md);if(t)for(const s of t.getEditableAnnotations()){if(s.hide(),a(this,f).isDeletedAnnotationElement(s.data.id)||l.has(s.data.id))continue;const c=await this.deserialize(s);c&&(this.addOrRebuild(c),c.enableEditing())}p(this,mb,!1),a(this,f)._eventBus.dispatch("editorsrendered",{source:this,pageNumber:this.pageIndex+1})}disable(){var s;if(p(this,ob,!0),this.div.tabIndex=-1,this.togglePointerEvents(!1),this.div.classList.toggle("nonEditing",!0),a(this,xt)&&!a(this,Wd)){p(this,Wd,new AbortController);const c=a(this,f).combinedSignal(a(this,Wd));a(this,xt).div.addEventListener("pointerdown",d=>{const{clientX:Z,clientY:b,timeStamp:o}=d,m=a(this,hb);if(o-m>500){p(this,hb,o);return}p(this,hb,-1);const{classList:h}=this.div;h.toggle("getElements",!0);const W=document.elementsFromPoint(Z,b);if(h.toggle("getElements",!1),!this.div.contains(W[0]))return;let r;const N=new RegExp(`^${to}[0-9]+$`);for(const X of W)if(N.test(X.id)){r=X.id;break}if(!r)return;const M=a(this,Ne).get(r);(M==null?void 0:M.annotationElementId)===null&&(d.stopPropagation(),d.preventDefault(),M.dblclick(d))},{signal:c,capture:!0})}const l=a(this,md),t=[];if(l){const c=new Map,d=new Map;for(const Z of a(this,Cl,FW)){if(Z.disableEditing(),!Z.annotationElementId){t.push(Z);continue}if(Z.serialize()!==null){c.set(Z.annotationElementId,Z);continue}else d.set(Z.annotationElementId,Z);(s=this.getEditableAnnotation(Z.annotationElementId))==null||s.show(),Z.remove()}const n=l.getEditableAnnotations();for(const Z of n){const{id:b}=Z.data;if(a(this,f).isDeletedAnnotationElement(b)){Z.updateEdited({deleted:!0}
13);continue}let o=d.get(b);if(o){o.resetAnnotationElement(Z),o.show(!1),Z.show();continue}o=c.get(b),o&&(a(this,f).addChangedExistingAnnotation(o),o.renderAnnotationElement(Z)&&o.show(!1)),Z.show()}}z(this,Cl,p0).call(this),this.isEmpty&&(this.div.hidden=!0);const{classList:e}=this.div;for(const c of a(hs,Gd).values())e.remove(`${c._type}Editing`);this.disableTextSelection(),this.toggleAnnotationLayerPointerEvents(!0),l==null||l.updateFakeAnnotations(t),p(this,ob,!1)}getEditableAnnotation(l){var t;return((t=a(this,md))==null?void 0:t.getEditableAnnotation(l))||null}setActiveEditor(l){a(this,f).getActive()!==l&&a(this,f).setActiveEditor(l)}enableTextSelection(){var l;if(this.div.tabIndex=-1,(l=a(this,xt))!=null&&l.div&&!a(this,ac)){p(this,ac,new AbortController);const t=a(this,f).combinedSignal(a(this,ac));a(this,xt).div.addEventListener("pointerdown",z(this,Cl,ep).bind(this),{signal:t}),a(this,xt).div.classList.add("highlighting")}}disableTextSelection(){var l;this.div.tabIndex=0,(l=a(this,xt))!=null&&l.div&&a(this,ac)&&(a(this,ac).abort(),p(this,ac,null),a(this,xt).div.classList.remove("highlighting"))}enableClick(){if(a(this,hd))return;p(this,hd,new AbortController);const l=a(this,f).combinedSignal(a(this,hd));this.div.addEventListener("pointerdown",this.pointerdown.bind(this),{signal:l});const t=this.pointerup.bind(this);this.div.addEventListener("pointerup",t,{signal:l}),this.div.addEventListener("pointercancel",t,{signal:l})}disableClick(){var l;(l=a(this,hd))==null||l.abort(),p(this,hd,null)}attach(l){a(this,Ne).set(l.id,l);const{annotationElementId:t}=l;t&&a(this,f).isDeletedAnnotationElement(t)&&a(this,f).removeDeletedAnnotationElement(l)}detach(l){var t;a(this,Ne).delete(l.id),(t=a(this,tn))==null||t.removePointerInTextLayer(l.contentDiv),!a(this,ob)&&l.annotationElementId&&a(this,f).addDeletedAnnotationElement(l)}remove(l){this.detach(l),a(this,f).removeEditor(l),l.div.remove(),l.isAttachedToDOM=!1}changeParent(l){var t;l.parent!==this&&(l.parent&&l.annotationElementId&&(a(this,f).addDeletedAnnotationElement(l),Ul.deleteAnnotationElement(l),l.annotationElementId=null),this.attach(l),(t=l.parent)==null||t.detach(l),l.setParent(this),l.div&&l.isAttachedToDOM&&(l.div.remove(),this.div.append(l.div)))}add(l){if(!(l.parent===this&&l.isAttachedToDOM)){if(this.changeParent(l),a(this,f).addEditor(l),this.attach(l),!l.isAttachedToDOM){const t=l.render();this.div.append(t),l.isAttachedToDOM=!0}l.fixAndSetPosition(),l.onceAdded(!a(this,mb)),a(this,f).addToAnnotationStorage(l),l._reportTelemetry(l.telemetryInitialData)}}moveEditorInDOM(l){var e;if(!l.isAttachedToDOM)return;const{activeElement:t}=document;l.div.contains(t)&&!a(this,cc)&&(l._focusEventsAllowed=!1,p(this,cc,setTimeout(()=>{p(this,cc,null),l.div.contains(document.activeElement)?l._focusEventsAllowed=!0:(l.div.addEventListener("focusin",()=>{l._focusEventsAllowed=!0},{once:!0,signal:a(this,f)._signal}),t.focus())},0))),l._structTreeParentId=(e=a(this,tn))==null?void 0:e.moveElementInDOM(this.div,l.div,l.contentDiv,!0)}addOrRebuild(l){l.needsToBeRebuilt()?(l.parent||(l.parent=this),l.rebuild(),l.show()):this.add(l)}addUndoableEditor(l){const t=()=>l._uiManager.rebuild(l),e=()=>{l.remove()};this.addCommands({cmd:t,undo:e,mustExec:!1})}getEditorByUID(l){for(const t of a(this,Ne).values())if(t.uid===l)return t;return null}getNextId(){return a(this,f).getId()}combinedSignal(l){return a(this,f).combinedSignal(l)}canCreateNewEmptyEditor(){var l;return(l=a(this,Cl,Os))==null?void 0:l.canCreateNewEmptyEditor()}async pasteEditor(l,t){this.updateToolbar(l),await a(this,f).updateMode(l.mode);const{offsetX:e,offsetY:s}=z(this,Cl,kW).call(this),c=this.getNextId(),d=z(this,Cl,OW).call(this,{parent:this,id:c,x:e,y:s,uiManager:a(this,f),isCentered:!0,...t});d&&this.add(d)}async deserialize(l){var t;return await((t=a(hs,Gd).get(l.annotationType??l.annotationEditorType))==null?void 0:t.deserialize(l,this,a(this,f)))||null}createAndAddNewEditor(l,t,e={}){const s=this.getNextId(),c=z(this,Cl,OW).call(this,{parent:this,id:s,x:l.offsetX,y:l.offsetY,uiManager:a(this,f),isCentered:t,...e});return c&&this.add(c),c}get boundingClientRect(){return this.div.getBoundingClientRect()}addNewEditor(l={}){this.createAndAddNewEditor(z(this,Cl,kW).call(this),!0,l)}setSelected(l){a(this,f).setSelected(l)}toggleSelected(l){a(this,f).toggleSelected(l)}unselect(l){a(this,f).unselect(l)}pointerup(l){var s;const{isMac:t}=Tt.platform;if(l.button!==0||l.ctrlKey&&t||l.target!==this.div||!a(this,ud)||(p(this,ud,!1),(s=a(this,Cl,Os))!=null&&s.isDrawer&&a(this,Cl,Os).supportMultipleDrawings))return;if(!a(this,bb)){p(this,bb,!0);return}const e=a(this,f).getMode();if(e===cl.STAMP||e===cl.SIGNATURE){a(this,f).unselectAll();return}this.createAndAddNewEditor(l,!1)}pointerdown(l){var s;if(a(this,f).getMode()===cl.HIGHLIGHT&&this.enableTextSelection(),a(this,ud)){p(this,ud,!1);return}const{isMac:t}=Tt.platform;if(l.button!==0||l.ctrlKey&&t||l.target!==this.div)return;if(p(this,ud,!0),(s=a(this,Cl,Os))!=null&&s.isDrawer){this.startDrawingSession(l);return}const e=a(this,f).getActive();p(this,bb,!e||e.isEmpty())}startDrawingSession(l){if(this.div.focus({preventScroll:!0}),a(this,Ts)){a(this,Cl,Os).startDrawing(this,a(this,f),!1,l);return}a(this,f).setCurrentDrawingSession(this),p(this,Ts,new AbortController);const t=a(this,f).combinedSignal(a(this,Ts));this.div.addEventListener("blur",({relatedTarget:e})=>{e&&!this.div.contains(e)&&(p(this,dc,null),this.commitOrRemove())},{signal:t}),a(this,Cl,Os).startDrawing(this,a(this,f),!1,l)}pause(l){if(l){const{activeElement:t}=document;this.div.contains(t)&&p(this,dc,t);return}a(this,dc)&&setTimeout(()=>{var t;(t=a(this,dc))==null||t.focus(),p(this,dc,null)},0)}endDrawingSession(l=!1){return a(this,Ts)?(a(this,f).setCurrentDrawingSession(null),a(this,Ts).abort(),p(this,Ts,null),p(this,dc,null),a(this,Cl,Os).endDrawing(l)):null}findNewParent(l,t,e){const s=a(this,f).findParent(t,e);return s===null||s===this?!1:(s.changeParent(l),!0)}commitOrRemove(){return a(this,Ts)?(this.endDrawingSession(),!0):!1}onScaleChanging(){a(this,Ts)&&a(this,Cl,Os).onScaleChangingWhenDrawing(this)}destroy(){var l,t;this.commitOrRemove(),((l=a(this,f).getActive())==null?void 0:l.parent)===this&&(a(this,f).commitOrRemove(),a(this,f).setActiveEditor(null)),a(this,cc)&&(clearTimeout(a(this,cc)),p(this,cc,null));for(const e of a(this,Ne).values())(t=a(this,tn))==null||t.removePointerInTextLayer(e.contentDiv),e.setParent(null),e.isAttachedToDOM=!1,e.div.remove();this.div=null,a(this,Ne).clear(),a(this,f).removeLayer(this)}render({viewport:l}){this.viewport=l,cn(this.div,l);for(const t of a(this,f).getEditors(this.pageIndex))this.add(t),t.rebuild();this.updateMode()}update({viewport:l}){a(this,f).commitOrRemove(),z(this,Cl,p0).call(this);const t=this.viewport.rotation,e=l.rotation;if(this.viewport=l,cn(this.div,{rotation:e}),t!==e)for(const s of a(this,Ne).values())s.rotate(e)}get pageDimensions(){const{pageWidth:l,pageHeight:t}=this.viewport.rawDims;return[l,t]}get scale(){return a(this,f).viewParameters.realScale}};tn=new WeakMap,bb=new WeakMap,md=new WeakMap,hd=new WeakMap,cc=new WeakMap,Ne=new WeakMap,ud=new WeakMap,ob=new WeakMap,mb=new WeakMap,Ts=new WeakMap,dc=new WeakMap,xt=new WeakMap,ac=new WeakMap,Wd=new WeakMap,hb=new WeakMap,f=new WeakMap,Gd=new WeakMap,Cl=new WeakSet,FW=function(){return a(this,Ne).size!==0?a(this,Ne).values():a(this,f).getEditors(this.pageIndex)},ep=function(l){a(this,f).unselectAll();const{target:t}=l;if(t===a(this,xt).div||(t.getAttribute("role")==="img"||t.classList.contains("endOfContent"))&&a(this,xt).div.contains(t)){const{isMac:e}=Tt.platform;if(l.button!==0||l.ctrlKey&&e)return;a(this,f).showAllEditors("highlight",!0,!0),a(this,xt).div.classList.add("free"),this.toggleDrawing(),J0.startHighlighting(this,a(this,f).direction==="ltr",{target:a(this,xt).div,x:l.x,y:l.y}),a(this,xt).div.addEventListener("pointerup",()=>{a(this,xt).div.classList.remove("free"),this.toggleDrawing(!0)},{once:!0,signal:a(this,f)._signal}),l.preventDefault()}},Os=function(){return a(hs,Gd).get(a(this,f).getMode())},OW=function(l){const t=a(this,Cl,Os);return t?new t.prototype.constructor(l):null},kW=function(){const{x:l,y:t,width:e,height:s}=this.boundingClientRect,c=Math.max(0,l),d=Math.max(0,t),n=Math.min(window.innerWidth,l+e),Z=Math.min(window.innerHeight,t+s),b=(c+n)/2-l,o=(d+Z)/2-t,[m,h]=this.viewport.rotation%180===0?[b,o]:[o,b];return{offsetX:m,offsetY:h}},p0=function(){for(const l of a(this,Ne).values())l.isEmpty()&&l.remove()},E(hs,"_initialized",!1),L(hs,Gd,new Map([rW,zW,DW,J0,jW].map(l=>[l._editorType,l])));let JW=hs;var Vs,ie,en,eh,ou,sp,ui,EW,ip,KW;const Mt=class Mt{constructor({pageIndex:l}){L(this,ui);L(this,Vs,null);L(this,ie,new Map);L(this,en,new Map);this.pageIndex=l}setParent(l){if(!a(this,Vs)){p(this,Vs,l);return}if(a(this,Vs)!==l){if(a(this,ie).size>0)for(const t of a(this,ie).values())t.remove(),l.append(t);p(this,Vs,l)}}static get _svgFactory(){return el(this,"_svgFactory",new j0)}draw(l,t=!1,e=!1){const s=rt(Mt,eh)._++,c=z(this,ui,EW).call(this),d=Mt._svgFactory.createElement("defs");c.append(d);const n=Mt._svgFactory.createElement("path");d.append(n);const Z=`path_p${this.pageIndex}_${s}`;n.setAttribute("id",Z),n.setAttribute("vector-effect","non-scaling-stroke"),t&&a(this,en).set(s,n);const b=e?z(this,ui,ip).call(this,d,Z):null,o=Mt._svgFactory.createElement("use");return c.append(o),o.setAttribute("href",`#${Z}`),this.updateProperties(c,l),a(this,ie).set(s,c),{id:s,clipPathId:`url(#${b})`}}drawOutline(l,t){const e=rt(Mt,eh)._++,s=z(this,ui,EW).call(this),c=Mt._svgFactory.createElement("defs");s.append(c);const d=Mt._svgFactory.createElement("path");c.append(d);const n=`path_p${this.pageIndex}_${e}`;d.setAttribute("id",n),d.setAttribute("vector-effect","non-scaling-stroke");let Z;if(t){const m=Mt._svgFactory.createElement("mask");c.append(m),Z=`mask_p${this.pageIndex}_${e}`,m.setAttribute("id",Z),m.setAttribute("maskUnits","objectBoundingBox");const h=Mt._svgFactory.createElement("rect");m.append(h),h.setAttribute("width","1"),h.setAttribute("height","1"),h.setAttribute("fill","white");const W=Mt._svgFactory.createElement("use");m.append(W),W.setAttribute("href",`#${n}`),W.setAttribute("stroke","none"),W.setAttribute("fill","black"),W.setAttribute("fill-rule","nonzero"),W.classList.add("mask")}const b=Mt._svgFactory.createElement("use");s.append(b),b.setAttribute("href",`#${n}`),Z&&b.setAttribute("mask",`url(#${Z})`);const o=b.cloneNode();return s.append(o),b.classList.add("mainOutline"),o.classList.add("secondaryOutline"),this.updateProperties(s,l),a(this,ie).set(e,s),e}finalizeDraw(l,t){a(this,en).delete(l),this.updateProperties(l,t)}updateProperties(l,t){var Z;if(!t)return;const{root:e,bbox:s,rootClass:c,path:d}=t,n=typeof l=="number"?a(this,ie).get(l):l;if(n){if(e&&z(this,ui,KW).call(this,n,e),s&&z(Z=Mt,ou,sp).call(Z,n,s),c){const{classList:b}=n;for(const[o,m]of Object.entries(c))b.toggle(o,m)}if(d){const o=n.firstElementChild.firstElementChild;z(this,ui,KW).call(this,o,d)}}}updateParent(l,t){if(t===this)return;const e=a(this,ie).get(l);e&&(a(t,Vs).append(e),a(this,ie).delete(l),a(t,ie).set(l,e))}remove(l){a(this,en).delete(l),a(this,Vs)!==null&&(a(this,ie).get(l).remove(),a(this,ie).delete(l))}destroy(){p(this,Vs,null);for(const l of a(this,ie).values())l.remove();
13a(this,ie).clear(),a(this,en).clear()}};Vs=new WeakMap,ie=new WeakMap,en=new WeakMap,eh=new WeakMap,ou=new WeakSet,sp=function(l,[t,e,s,c]){const{style:d}=l;d.top=`${100*e}%`,d.left=`${100*t}%`,d.width=`${100*s}%`,d.height=`${100*c}%`},ui=new WeakSet,EW=function(){const l=Mt._svgFactory.create(1,1,!0);return a(this,Vs).append(l),l.setAttribute("aria-hidden",!0),l},ip=function(l,t){const e=Mt._svgFactory.createElement("clipPath");l.append(e);const s=`clip_${t}`;e.setAttribute("id",s),e.setAttribute("clipPathUnits","objectBoundingBox");const c=Mt._svgFactory.createElement("use");return e.append(c),c.setAttribute("href",`#${t}`),c.classList.add("clip"),s},KW=function(l,t){for(const[e,s]of Object.entries(t))s===null?l.removeAttribute(e):l.setAttribute(e,s)},L(Mt,ou),L(Mt,eh,0);let UW=Mt;globalThis._pdfjsTestingUtils={HighlightOutliner:MW};globalThis.pdfjsLib={AbortException:Yd,AnnotationEditorLayer:JW,AnnotationEditorParamsType:Wl,AnnotationEditorType:cl,AnnotationEditorUIManager:dn,AnnotationLayer:D0,AnnotationMode:Ls,AnnotationType:Wt,applyOpacity:w5,build:J1,ColorPicker:x0,createValidAbsoluteUrl:fr,CSSConstants:z5,DOMSVGFactory:j0,DrawLayer:UW,FeatureTest:Tt,fetchData:dh,findContrastColor:R5,getDocument:eM,getFilenameFromUrl:Y5,getPdfFilenameFromUrl:y5,getRGB:nh,getUuid:_r,getXfaPageViewport:V5,GlobalWorkerOptions:Zi,ImageKind:Eh,InvalidPDFException:X2,isDataScheme:Wu,isPdfFile:nG,isValidExplicitDest:U5,MathClamp:de,noContextMenu:os,normalizeUnicode:X5,OPS:eo,OutputScale:Rs,PasswordResponses:Hr,PDFDataRangeTransport:sM,PDFDateString:L0,PDFWorker:io,PermissionFlag:b5,PixelsPerInch:Gc,RenderingCancelledException:uu,renderRichText:lX,ResponseException:V0,setLayerDimensions:cn,shadow:el,SignatureExtractor:nc,stopEvent:dt,SupportedImageMimeTypes:p2,TextLayer:ub,TouchManager:z0,updateUrlHash:Br,Util:Q,VerbosityLevel:ih,version:C1,XfaLayer:$r};function xN(i){let l=Error(n5);return l.cause=i,l}function aV(i){let l=Error(Z5);return l.cause=i,l}var nV=(i,l,t={})=>{let[e,s]=u.useState(),{workerUrlAdded:c,wasmUrl:d}=i5(),[n,Z]=u.useState(new Map),b=u.useRef(),[o,m]=u.useState(0),[h,W]=u.useState(!1),[r,N]=u.useState(),{password:M,passwordError:X,setPasswordError:y,passwordRequired:Y,setPasswordRequired:T}=sh(),{onLoadError:V,onLoaded:I,onLoadProgress:w,disableAutoFetch:R,disableStream:S,rangeChunkSize:x,withCredentials:g,httpHeaders:C}=t;return u.useEffect(()=>{w&&w(o)},[o,w]),u.useEffect(()=>{if(!c||!i)return;m(0),N(void 0),b.current=Date.now();let D=b.current,J={url:i,cMapPacked:(l==null?void 0:l.isCompressed)??!0,...(l==null?void 0:l.url)&&{cMapUrl:l.url},...M&&{password:M},...R!==void 0&&{disableAutoFetch:R},...S!==void 0&&{disableStream:S},...x!==void 0&&{rangeChunkSize:x},...g!==void 0&&{withCredentials:g},...C!==void 0&&{httpHeaders:C},...d&&{wasmUrl:d},verbosity:ih.ERRORS};try{let k=eM(J);k.onProgress=j=>{if(D===b.current){let{loaded:F,total:U}=j;m(U?Math.min(100,Math.round(F/U*100)):0)}},W(!0),s(void 0);let O=k.promise.then(j=>(D===b.current&&(s(j),m(100)),I&&I(j),T(!1),y(""),j)).catch(j=>{if(j instanceof Error&&j.name==="PasswordException"){let F=j.code;T(!0),F===Hr.INCORRECT_PASSWORD?y("Incorrect password"):y(void 0)}else j instanceof Error&&j.name==="InvalidPDFException"&&M?(T(!0),y("Incorrect password")):j instanceof Error&&j.name==="InvalidPDFException"?(N(Ud.INVALID_OR_CORRUPTED_PDF),V==null||V(xN(j))):V&&V(j)}).finally(()=>{W(!1)});return()=>{O.finally(()=>{k.destroy()})}}catch(k){N(Ud.NOT_SUPPORTED),V==null||V(aV(k))}},[i,c,d,M,V,I]),u.useEffect(()=>{if(Y)return;let D=new Map;if(!e||h){Z(D);return}let J=e.numPages,k=[];for(let O=1;O<=J;O++){let j=e.getPage(O);k.push(j)}Promise.all(k).then(O=>{O.map(j=>{let{thumbnailViewport:F,scale:U}=vr(j),v=j.getViewport();D.set(j.pageNumber,{page:j,thumbnailViewport:F,thumbnailScale:U,defaultRotation:v.rotation})}),Z(D)}).catch(O=>{s(void 0),N(Ud.INVALID_OR_CORRUPTED_PDF),V==null||V(xN(O))})},[e,h,Y,V]),{pdf:e,pages:n,loading:h,error:r,loadingProgress:o,passwordRequired:Y,passwordError:X}},ZV=RegExp("^D:(\\d{4})(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?(\\d{2})?([Z|+|-])?(\\d{2})?'?(\\d{2})?'?"),gd=(i,l,t,e)=>{let s=parseInt(i,10);return s>=l&&s<=t?s:e},gN=i=>{let l=ZV.exec(i);if(!l)return null;let t=parseInt(l[1],10),e=gd(l[2],1,12,1)-1,s=gd(l[3],1,31,1),c=gd(l[4],0,23,0),d=gd(l[5],0,59,0),n=gd(l[6],0,59,0),Z=l[7]||"Z",b=gd(l[8],0,23,0),o=gd(l[9],0,59,0);switch(Z){case"-":c+=b,d+=o;break;case"+":c-=b,d-=o;break}return new Date(Date.UTC(t,e,s,c,d,n))};function bV(i,l){if(i==0)return"0 Bytes";var t=1e3,e=2,s=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],c=Math.floor(Math.log(i)/Math.log(t));return parseFloat((i/t**+c).toFixed(e))+" "+s[c]}var oV=(i,l,t)=>{let[e,s]=u.useState(),c=u.useCallback(async()=>
13{if(!l||!i)return;let d=await l.getMetadata().then(),n=l.numPages,Z=d==null?void 0:d.info,b=await l.getDownloadInfo(),o=0;b&&(o=b.length);try{let m=gN(Z.CreationDate),h=gN(Z.ModDate);s({pageCount:n,filename:t||"",fileSize:bV(o),title:Z.Title,author:Z.Author,subject:Z.Subject,keywords:Z.Keywords||"",creator:Z.Creator,createdOn:(m==null?void 0:m.toISOString())||"",modifiedOn:(h==null?void 0:h.toISOString())||"",pdfProducer:Z.Producer,pdfVersion:Z.PDFFormatVersion})}catch(m){console.log("properties err",m)}},[l,t,i]);return u.useEffect(()=>{c()},[c]),e},cp=u.createContext({pdf:void 0,pages:new Map,setPdfSrc:()=>{},setFilename:()=>{},loading:!1,loaderProgress:0,error:void 0}),mV=({children:i,src:l,characterMap:t,onLoadError:e,onLoaded:s,onLoadProgress:c,disableAutoFetch:d,disableStream:n,rangeChunkSize:Z,withCredentials:b,httpHeaders:o,loaderImage:m})=>{let[h,W]=u.useState(l),[r,N]=u.useState(),{pdf:M,pages:X,loading:y,loadingProgress:Y,error:T}=nV(h,t,{onLoadError:e,onLoaded:s,onLoadProgress:c,disableAutoFetch:d,disableStream:n,rangeChunkSize:Z,withCredentials:b,httpHeaders:o}),V=oV(h,M,r);u.useEffect(()=>{N(l==null?void 0:l.split("/").pop()),W(l)},[l]);let I=u.useMemo(()=>({pdf:M,pages:X,pdfSrc:h,setPdfSrc:W,pdfProperties:V,setFilename:N,filename:r,loading:y,loaderProgress:Y,error:T}),[M,X,h,V,r,y,Y,T]);return G.jsx(cp.Provider,{value:I,children:h?i:null})},at=()=>{let i=u.useContext(cp);return i.pdfSrc||gt.error("Please use this hooks inside children component of RPDocument"),i},dp=u.createContext({}),hV=({children:i,...l})=>G.jsx(dp.Provider,{value:l,children:i}),Yc=()=>u.useContext(dp),ap=u.createContext({scrollMode:kl.VERTICAL_SCROLLING,setScrollMode:()=>{}}),Wi=()=>{let i=u.useContext(ap);return i.scrollMode===void 0&&gt.error("Please use this hooks inside children component of RPProvider"),i},uV=({children:i})=>{let{initialScrollMode:l=kl.VERTICAL_SCROLLING}=Yc(),[t,e]=u.useState(l);return G.jsx(ap.Provider,{value:{scrollMode:t,setScrollMode:e},children:i})},np=u.createContext({columnCount:1,setSinglePage:()=>{},setDualPage:()=>{},setDualPageWithCover:()=>{},viewMode:Yl.SINGLE_PAGE}),Gi=()=>{let i=u.useContext(np);return i.columnCount===void 0&&gt.error("Please use this hooks inside children component of RPProvider"),i},WV=({children:i})=>{let{initialViewMode:l=Yl.SINGLE_PAGE}=Yc(),[t,e]=u.useState(l===Yl.SINGLE_PAGE?1:l===Yl.DUAL_PAGE_WITH_COVER?-2:2),s=u.useCallback(()=>{e(1)},[]),c=u.useCallback(()=>{e(2)},[]),d=u.useCallback(()=>{e(-2)},[]),n=u.useMemo(()=>t===1?Yl.SINGLE_PAGE:t===-2?Yl.DUAL_PAGE_WITH_COVER:Yl.DUAL_PAGE,[t]);return G.jsx(np.Provider,{value:{columnCount:Math.abs(t),setSinglePage:s,setDualPage:c,setDualPageWithCover:d,viewMode:n},children:i})},Zp=u.createContext({rotate:0,setRotate:()=>{}}),GG=()=>{let i=u.useContext(Zp);return(i==null?void 0:i.rotate)===void 0&&gt.error("Please use this hooks inside children component of RPProvider"),i},GV=({children:i})=>{let{initialRotation:l=0}=Yc(),{pdf:t}=at(),[e,s]=u.useState(l);u.useEffect(()=>{t&&s(l)},[t,l]);let c=u.useMemo(()=>({rotate:e,setRotate:s}),[e,s]);return G.jsx(Zp.Provider,{value:c,children:i})},vW=1e3,jN=(i,l,t,e,s,c)=>{if(typeof i=="number")return i;let d=c===Yl.DUAL_PAGE||c===Yl.DUAL_PAGE_WITH_COVER?2*e:e;switch(i){case ws.PAGE_FIT:let n=Math.min((l-20)/d,(t-4)/s);return Math.floor(n*100);case ws.PAGE_WIDTH:return Math.floor((l-20)/d*100);case ws.ACTUAL:default:return 100}},bp=u.createContext({container:null,contentRef:null,pagesRef:null,setContainer:()=>{},setContentRef:()=>{},setPagesRef:()=>{}}),Pe=()=>u.useContext(bp),op=u.createContext({onPageChange:()=>{},onRotate:()=>{},onScroll:()=>{},onTextSelect:()=>{}}),NG=()=>u.useContext(op),NV=({children:i,onPageChange:l,onRotate:t,onScroll:e,onTextSelect:s})=>G.jsx(op.Provider,{value:{onPageChange:l,onRotate:t,onScroll:e,onTextSelect:s},children:i}),mp=u.createContext({currentPage:1,setCurrentPage:()=>{}}),hp=()=>u.useContext(mp),rV=({children:i})=>{let{initialPage:l=1}=Yc(),[t,e]=u.useState(l),{onPageChange:s}=NG();return u.useEffect(()=>{s&&s(t)},[t,s]),G.jsx(mp.Provider,{value:{currentPage:t,setCurrentPage:e},children:i})};function mh(i,l,t){let[e,s]=u.useState(i),c=u.useRef(null);return u.useEffect(()=>{let d=i;t&&!c.current&&(c.current=setTimeout(()=>{s(d),c.current=null},t));let n=setTimeout(()=>{c.current&&(c.current=(clearTimeout(c.current),null)),s(i)},l);return()=>{clearTimeout(n)}},[i,l,t]),e}var up=u.createContext({zoomLevel:100,currentZoom:1,setZoomLevel:()=>{}}),mn=()=>{let i=u.useContext(up);return typeof i.currentZoom!="number"&&gt.warn("Please use this hooks inside children component of RPProvider"),i},XV=({children:i})=>{let{initialScale:l=ws.PAGE_FIT}=Yc(),[t,e]=u.useState(l),{pages:s}=at(),{pagesRef:c}=Pe(),{viewMode:d}=Gi(),[n,Z]=u.useState({width:(c==null?void 0:c.clientWidth)||0,height:(c==null?void 0:c.clientHeight)||0}),b=mh(n,100),{rotate:o}=GG(),[m,h]=u.useState(null),W=u.useRef(null),{currentPage:r}=hp(),[N,M]=u.useState(r);u.useEffect(()=>{let V=s.get(N);V||(V=s.get(1));let I=V==null?void 0:V.page.getViewport({scale:1,rotation:V.defaultRotation+o});I&&JSON.stringify(I)!==JSON.stringify(W.current)&&(W.current=I,h(I)
13)},[s,o,N]);let X=u.useCallback(()=>m?{pageWidth:((m==null?void 0:m.width)||0)+8,pageHeight:(m==null?void 0:m.height)||0,clientWidth:(c==null?void 0:c.clientWidth)||0,clientHeight:(c==null?void 0:c.clientHeight)||0}:null,[m,c]),y=u.useMemo(()=>{let V=X();if(!b.width||!b.height||!V)return 0;if(typeof t=="number")return t/100;let{clientWidth:I,clientHeight:w,pageWidth:R,pageHeight:S}=V;return jN(t,I,w,R,S,d)/100},[t,b,X,d]);u.useEffect(()=>{M(r)},[t]),u.useEffect(()=>{let V=new ResizeObserver(I=>{I.forEach(w=>{Z({width:w.contentRect.width,height:w.contentRect.height})})});return c&&V.observe(c),()=>{V.disconnect()}},[c]);let Y=u.useCallback(V=>{let I=0;if(typeof V=="function"){let w=X();if(!w)return;let{clientWidth:R,clientHeight:S,pageWidth:x,pageHeight:g}=w;I=C=>V(jN(C,R,S,x,g,d))}else I=V;I&&e(I)},[X]),T=u.useMemo(()=>({zoomLevel:t,currentZoom:y,setZoomLevel:Y}),[y,t,Y]);return G.jsx(up.Provider,{value:T,children:i})},Wp=u.createContext({getVirtualScrollRef:()=>{},getPageScrollElementRef:()=>{},getVirtualScrollableElementRef:()=>{},scrollPosition:{scrollTop:0,scrollLeft:0},setScrollPosition:()=>{},totalInnerDimensions:{height:0,width:0},setTotalInnerDimensions:()=>{}}),hh=()=>u.useContext(Wp),MV=({children:i})=>{let[l,t]=u.useState(),[e,s]=u.useState(),[c,d]=u.useState(),[n,Z]=u.useState({scrollTop:0,scrollLeft:0}),[b,o]=u.useState({height:0,width:0});return G.jsx(Wp.Provider,{value:{virtualScrollRef:l,getVirtualScrollRef:t,pageScrollElementRef:c,getPageScrollElementRef:d,virtualScrollableElementRef:e,getVirtualScrollableElementRef:s,scrollPosition:n,setScrollPosition:Z,totalInnerDimensions:b,setTotalInnerDimensions:o},children:i})},Gp=u.createContext({columnCount:1,setColumnCount:()=>{}}),Np=()=>u.useContext(Gp),pV=({children:i})=>{let[l,t]=u.useState(1);return G.jsx(Gp.Provider,{value:{columnCount:l,setColumnCount:t},children:i})};function fu(i,l,t){i.scrollTo({...l,behavior:"smooth"}),t==null||t()}var rp=u.createContext({singlePageRotate:{},setSinglePageRotate:()=>{},pageRotate:{}}),hn=()=>{let{singlePageRotate:i,setSinglePageRotate:l,pageRotate:t}=u.useContext(rp);return{singlePageRotate:i,setSinglePageRotate:l,pageRotate:t}},YV=({children:i})=>{let[l,t]=u.useState({}),{rotate:e}=GG(),{pages:s}=at(),{onRotate:c}=NG();u.useEffect(()=>{s&&t({})},[s]);let d=u.useMemo(()=>{if(!s)return{};let n=Array.from(s.values()).reduce((Z,b)=>(Z[b.page.pageNumber]=l[b.page.pageNumber]?(e+l[b.page.pageNumber]+b.defaultRotation)%360:(e+b.defaultRotation)%360,Z),{});return c&&c(n),n},[e,s,l,c]);return G.jsx(rp.Provider,{value:{singlePageRotate:l,setSinglePageRotate:t,pageRotate:d},children:i})},Xp=u.createContext({widths:[],heights:[],setWidths:()=>{},setHeights:()=>{}}),Nb=()=>{let i=u.useContext(Xp),{widths:l,heights:t}=i;if(l&&t){let e=l.every(c=>typeof c=="number"),s=t.every(c=>typeof c=="number");(!e||!s)&&gt.warn("Please use this hooks inside children component of RPProvider")}return i},yV=({children:i})=>{let[l,t]=u.useState([]),[e,s]=u.useState([]),{pages:c}=at(),{currentZoom:d}=mn(),{pageRotate:n}=hn();return u.useEffect(()=>{if(!c)return;let Z=[],b=[];for(let o of Array.from(c.values())){let m=n[o.page.pageNumber],h=o.page.getViewport({scale:d,rotation:m,dontFlip:!0});Z.push(h.width+4),b.push(h.height+4)}t(o=>[...Z]),s(o=>[...b])},[d,n,c]),G.jsx(Xp.Provider,{value:{widths:l,heights:e,setWidths:t,setHeights:s},children:i})},Mp=u.createContext({targetScrollPage:{current:void 0},scrollBehavior:"smooth"}),TV=({children:i,scrollBehavior:l="smooth"})=>{let t=u.useRef();return G.jsx(Mp.Provider,{value:{targetScrollPage:t,scrollBehavior:l},children:i})},uh=()=>u.useContext(Mp),Xd=(i,l)=>i.slice(0,l).reduce((t,e)=>t+e,0),VV=(i,l,t,e=!1)=>e?i===0?l===0?1:-1:1+(i-1)*t+l+1:i*t+l+1,pp=(i,l,t=!1)=>{if(t){if(i===1)return{rowIndex:0,columnIndex:0};let c=i-1-1;return{rowIndex:Math.floor(c/l)+1,columnIndex:c%l}}let e=i-1,s=Math.floor(e/l);return{rowIndex:s,columnIndex:(e-s*l)%l}},rG=(i,l,t=!1)=>{let e=[],s=[];return i.heights.forEach((c,d)=>{let n=pp(d+1,l,t),Z=i.widths[d];e[n.rowIndex]=Math.max(e[n.rowIndex]||0,c),s[n.columnIndex]=Math.max(s[n.columnIndex]||0,Z)}),{rowsHeight:e,columnsWidth:s}},Yp=()=>{let{viewMode:i}
13=Gi(),{scrollMode:l}=Wi(),{virtualScrollRef:t,virtualScrollableElementRef:e,pageScrollElementRef:s}=hh(),{setFocusedPage:c}=Xe(),d=u.useRef(),{columnCount:n}=Np(),{widths:Z,heights:b}=Nb(),o=u.useRef(l),m=u.useRef(i),h=u.useRef(n),{targetScrollPage:W,scrollBehavior:r}=uh(),N=u.useRef(null);u.useEffect(()=>{t!=null&&t.scrollToItem&&(d.current=t)},[t]),u.useEffect(()=>{o.current=l,m.current=i},[l,i]);let M=u.useCallback((y,Y)=>{if(!s)return;let T=Math.ceil(y/2)*2-1;if(y===T+1){let V={left:Z[T],top:0};return new Promise(I=>fu(s,V,I))}return s==null?void 0:s.scrollTo({left:0,top:0,behavior:Y})},[s,Z,fu]);u.useEffect(()=>{o.current=l,m.current=i},[l,i]),u.useEffect(()=>{h.current=n},[n]);let X=u.useCallback((y,Y=r)=>{c(y);let T=y-1,V=T,I=0;if(m.current===Yl.DUAL_PAGE&&o.current===kl.PAGE_SCROLLING){M(y,Y);return}if(o.current===kl.PAGE_SCROLLING){c(y);return}if(!d.current||!e){N.current={page:y,behavior:Y};return}N.current=null;let w=e;Y==="smooth"&&(W.current=y);let{columnsWidth:R,rowsHeight:S}=rG({widths:Z,heights:b},n);if(o.current===kl.HORIZONTAL_SCROLLING){I=T;let C=Xd(R,I),D={left:Math.floor(C),top:0};return w.scrollTo({...D,behavior:Y})}if(m.current===Yl.DUAL_PAGE){I=T%2,V=Math.floor(T/2);
13let C=Xd(R,I),D=Xd(S,V),J={left:Math.floor(C),top:Math.floor(D)};return w.scrollTo({...J,behavior:Y})}let x=Xd(S,V),g={left:0,top:Math.floor(x)};return w.scrollTo({...g,behavior:Y})},[e,n,M,c,fu,b,Z,r]);return u.useEffect(()=>{if(!e||!N.current)return;let{page:y,behavior:Y}=N.current;N.current=null,X(y,Y)},[e,X]),{scrollToPage:X}},LV=(i=1)=>{let[l,t]=u.useState(i),[e,s]=u.useState(0),{scrollToPage:c}=Yp(),d=u.useRef(i),{viewMode:n}=Gi(),{scrollMode:Z}=Wi(),{widths:b}=Nb(),{pagesRef:o}=Pe(),m=mh(l,100),h=u.useCallback(Y=>{if(!/^[0-9]*$/g.test(Y.toString())||!Y)return{success:!1,currentPage:d.current};let T=+Y;return T<0||T>e?{success:!1,currentPage:d.current}:(t(T),d.current=T,{success:!0,currentPage:+Y})},[e]),W=u.useCallback(h,[h]),r=u.useCallback(Y=>{t(Y),d.current=Y},[]),N=u.useCallback((Y,T)=>{let V=h(Y);return V.success&&c(V.currentPage,T),V},[h,c]),M=u.useCallback(Y=>{let T=Y%2==1;if(!o||T)return!1;let V=T?b[Y]:b[Y-1],I=T?b[Y+1]:b[Y];return n===Yl.DUAL_PAGE&&V+I<o.clientWidth},[n,b,o,e]),X=u.useCallback(()=>{let Y=l-1;M(Y)&&(Y=l-2),N(Y)},[N,l,n,Z,M]),y=u.useMemo(()=>n===Yl.DUAL_PAGE&&Z===kl.PAGE_SCROLLING?l===e-1:l===e,[l,e,n,Z]);return{focusedPage:m,totalPages:e,setFocusedPage:W,resetPage:r,setTotalPages:s,nextPage:u.useCallback(()=>{if(y)return;let Y=l+1;M(Y)&&(Y=l+2),N(Y)},[N,l,M,n,Z,y]),prevPage:X,goToPage:N}},yp=u.createContext({focusedPage:0,setFocusedPage:i=>{},goToPage:(i,l)=>({success:!!i,currentPage:+i}),totalPages:0,setTotalPages:i=>{},prevPage:()=>{},nextPage:()=>{}}),Xe=()=>{let i=u.useContext(yp);return(i==null?void 0:i.focusedPage)===void 0&&gt.error("Please use this hooks inside children component of RPProvider"),i},IV=({children:i})=>{let{pdf:l}=at(),{setCurrentPage:t}=hp(),{initialPage:e=1}=Yc(),{focusedPage:s,totalPages:c,setFocusedPage:d,resetPage:n,setTotalPages:Z,goToPage:b,nextPage:o,prevPage:m}=LV(e),h=u.useRef(!0);return u.useEffect(()=>{if(!l){h.current||(Z(0),n(1));return}if(!l.numPages)return;Z(l.numPages);let W=h.current?e:1;n(Math.min(Math.max(W,1),l.numPages)),h.current=!1},[l,Z,n]),u.useEffect(()=>{t(s)},[s,t]),G.jsx(yp.Provider,{value:{focusedPage:s,totalPages:c,setFocusedPage:d,setTotalPages:Z,nextPage:o,prevPage:m,goToPage:b},children:i})},zV=(i=!1)=>{let[l,t]=u.useState(i);return{darkMode:l,setDarkMode:t}},Tp=u.createContext({darkMode:!1,setDarkMode:i=>{}}),XG=()=>{let i=u.useContext(Tp);return(i==null?void 0:i.darkMode)===void 0&&gt.warn("Please use this hooks inside children component of RPProvider"),i},wV=({children:i,darkMode:l,onDarkModeChange:t})=>{let{darkMode:e,setDarkMode:s}=zV(l);return u.useEffect(()=>{typeof l=="boolean"&&s(l)},[l,s]),u.useEffect(()=>{t&&t(e)},[t,e]),G.jsx(Tp.Provider,{value:{darkMode:e,setDarkMode:s},children:i})},Vp=u.createContext({selectionMode:Nd.TEXT,setSelectionMode:()=>{}}),Lp=()=>{let i=u.useContext(Vp);return i.selectionMode===void 0&&gt.error("Please use this hooks inside children component of RPProvider"),i},RV=({children:i,initialSelectionMode:l=Nd.TEXT})=>{let[t,e]=u.useState(l);return G.jsx(Vp.Provider,{value:{selectionMode:t,setSelectionMode:e},children:i})},SV=()=>{let[i,l]=u.useState(!1),t=typeof document<"u"&&(document.fullscreenEnabled||document.webkitFullscreenEnabled),e=u.useCallback(async c=>{if(!document.fullscreenElement)try{await c.requestFullscreen()}catch(d){console.error("Error attempting to enter fullscreen:",d)}},[]),s=u.useCallback(async()=>{if(document.fullscreenElement)try{await document.exitFullscreen()}catch(c){console.error("Error attempting to exit fullscreen:",c)}},[]);return u.useEffect(()=>{let c=()=>
13{l(!!document.fullscreenElement)};return document.addEventListener("fullscreenchange",c),()=>{document.removeEventListener("fullscreenchange",c)}},[]),{isFullScreen:i,enterFullScreen:e,exitFullScreen:s,isSupported:t}},Ip=u.createContext(void 0),xV=({elementRef:i,children:l})=>{let{isFullScreen:t,enterFullScreen:e,exitFullScreen:s,isSupported:c}=SV(),d=u.useCallback(()=>{t?s():i&&e(i)},[t,s,e,i]),n=u.useMemo(()=>({isFullScreen:t,toggleFullScreen:d,isSupported:c}),[t,d,c]);return G.jsx(Ip.Provider,{value:n,children:l})},zp=()=>{let i=u.useContext(Ip);if(!i)throw Error("useFullScreenContext must be used within a FullScreenProvider");return i},gV=i=>{let[l,t]=u.useState(i),[e,s]=u.useState({en_US:cN,th_TH:l5,zh_CN:_T,it_IT:qT,pt_PT:$T,de_DE:t5}),c=u.useCallback(d=>{s(n=>({...n,...d}))},[]);return{locale:l,setLocale:t,localeMessages:u.useMemo(()=>e[l]||cN,[l,e]),addLocalization:c}},wp=u.createContext({localeMessages:{}}),_l=()=>{let i=u.useContext(wp);return i.localeMessages===void 0&&gt.error("Please use this hooks inside children component of RPProvider"),i},jV=({children:i,locale:l="en_US",localization:t})=>{let{setLocale:e,localeMessages:s,addLocalization:c}=gV(l);u.useEffect(()=>{l&&e(l)},[l,e]),u.useEffect(()=>{t&&c(t)},[t,c]);let d=u.useMemo(()=>({localeMessages:s}),[s]);return G.jsx(wp.Provider,{value:d,children:i})},Rp=u.createContext(null),DV=({children:i})=>{let{setFilename:l,setPdfSrc:t}=at(),e=u.useRef(),s=u.useRef(null),{setPassword:c}=sh(),{localeMessages:d}=_l();return G.jsxs(Rp.Provider,{value:{openFile:()=>{var n;(n=s.current)==null||n.click()}},children:[i,G.jsx("input",{accept:"application/pdf","aria-label":(d==null?void 0:d.openLocalFileLabel)||(d==null?void 0:d.openLocalFileTooltip)||"Open local file",type:"file",id:"rp-open-local-file-input",name:"rp-open-local-file-input",ref:s,style:{display:"none"},onChange:n=>{var o;let Z=(o=n.target.files)==null?void 0:o[0];if(!Z||Z.type!=="application/pdf")return;let b=URL.createObjectURL(Z);e.current&&URL.revokeObjectURL(e.current),e.current=b,l(Z.name),t(b),n.target.value="",c("")}})]})},CV=()=>{let i=u.useContext(Rp);if(!i)throw Error("useOpenFileContext must be used within FileInputProvider");return i},JV=()=>{let{pdf:i,pages:l}=at(),[t,e]=u.useState({loadedPages:0,totalPages:0,percentage:0}),[s,c]=u.useState(!1),[d,n]=u.useState(!1),[Z,b]=u.useState(null),[o,m]=u.useState(void 0),h=u.useRef(!1);u.useEffect(()=>{h.current},[h]);let W=u.useCallback(()=>{document.documentElement.classList.remove("rp-print-html-printing"),document.body.classList.remove("rp-print-body-printing");let V=document.querySelector(".rp-print-zone");V&&V.remove()},[]),r=u.useCallback(()=>{h.current=!1,c(!1),n(!1),b(null),m(void 0),e({loadedPages:0,totalPages:0,percentage:0})},[]),N=()=>{h.current=!0},M=async({scratchCanvas:V,pdfDocument:I,pageNumber:w,viewerPdfPage:R,printResolution:S,optionalContentConfigPromise:x,printAnnotationStoragePromise:g})=>{if(h.current){r();return}let C=S/Gc.PDF;V.width=Math.floor(R.width*C),V.height=Math.floor(R.height*C);let D=V.getContext("2d");D.save(),D.fillStyle="rgb(255, 255, 255)",D.fillRect(0,0,V.width,V.height),D.restore();let[J,k]=await Promise.all([I.getPage(w),g]);if(h.current){r();return}let O={canvas:V,canvasContext:D,transform:[C,0,0,C,0,0],viewport:J.getViewport({scale:1,rotation:R.rotation}),intent:"print",annotationMode:Ls.ENABLE_STORAGE,optionalContentConfigPromise:x,printAnnotationStorage:k};try{return J.render(O).promise}catch(j){throw j instanceof uu||console.error(j),j}},X=u.useCallback(()=>{let V=window.print;return new Promise(I=>{let w=S=>{setTimeout(()=>{V.call(window),setTimeout(()=>S(),20)},0)};if(document.querySelector(".rp-print-zone")){w(I);return}let R=new MutationObserver(()=>{document.querySelector(".rp-print-zone")&&(w(I),R.disconnect())});R.observe(document.body,{childList:!0,subtree:!0})})},[]),y=V=>{let I=document.createElement("img"),w=document.createElement("div");return w.classList.add("rp-print-page"),I.src=V.toDataURL(),w.appendChild(I),w},Y=(V,I)=>{let w=document.createElement("div");w.classList.add("rp-print-zone");let R=document.createElement("style"),S=I.get(1);if(S){let{width:x,height:g}=S.page.getViewport({scale:1});R.innerHTML=`@page { size: ${x}pt ${g}pt; margin: 0; }`}return w.appendChild(R),w.append(...V),w},T=u.useCallback(async V=>{if(!i)return;r();let I=V&&"visibleDefaultProgress"in V?V:void 0;(I==null?void 0:I.visibleDefaultProgress)===void 0?m(!0):m(I.visibleDefaultProgress);let w=document.createElement("canvas"),R=[];try{i.isPureXfa&&console.warn("[rp] XFA Form is not supported at the moment.");let S=i.getOptionalContentConfig({intent:"print"}
13),x=Promise.resolve(i.annotationStorage.print??void 0),g=l.size;for(let[D,J]of l){if(h.current){r();return}if(await M({scratchCanvas:w,pdfDocument:i,pageNumber:D,viewerPdfPage:J.page.getViewport({scale:1}),printResolution:150,optionalContentConfigPromise:S,printAnnotationStoragePromise:x}),h.current){r();return}let k=y(w);R.push(k),e({loadedPages:D,totalPages:g,percentage:parseFloat((R.length/g*100).toFixed(2))})}if(h.current){r();return}let C=Y(R,l);document.body.appendChild(C),document.documentElement.classList.add("rp-print-html-printing"),document.body.classList.add("rp-print-body-printing"),c(!0),await X()}catch(S){n(!0),S instanceof Error&&b(S)}finally{w.height=0,w.width=0}},[i,l,h,r,Y,X]);return u.useEffect(()=>{let V=()=>{r(),W()};return window.addEventListener("afterprint",V,!0),()=>{window.removeEventListener("afterprint",V,!0)}},[W,r]),{print:T,cancel:N,progress:t,isComplete:s,isError:d,error:Z,showDefaultProgress:o}},Sp=u.createContext({print:async()=>{},cancel:()=>{},setOnProgress:i=>{},progress:{},setOnComplete:i=>i(),setOnError:i=>{try{i(Error("Print error occurred"))}catch(l){console.error("Error in setOnError callback:",l)}}}),FV=({children:i})=>{let[l,t]=u.useState(null),[e,s]=u.useState(null),{print:c,cancel:d,progress:n,isComplete:Z,isError:b,error:o,showDefaultProgress:m}=JV(),h=u.useCallback(X=>{X&&typeof X=="function"&&s(()=>X)},[]),W=u.useCallback(X=>{o&&X(o)},[o]),r=u.useCallback(X=>{t(()=>X)},[]),N=u.useCallback(()=>{e&&(e(),s(null))},[e]);u.useEffect(()=>{Z&&e&&N()},[Z,e,N]),u.useEffect(()=>{b&&W(X=>{console.error(X)})},[b]),u.useEffect(()=>{n&&l&&l(n)},[n,l]);let M=u.useMemo(()=>({print:c,cancel:d,setOnProgress:r,setOnComplete:h,setOnError:W,progress:n,showDefaultProgress:m}),[c,d,r,h,W,n,m]);return G.jsx(Sp.Provider,{value:M,children:i})},ru=()=>{let i=u.useContext(Sp);if(!i)throw Error("usePrintContext must be used within a PrintProvider");return i},xp=u.createContext({themeSwitcher:!0,documentProperties:!0,rotateTool:!0,fullscreenTool:!0,openFileTool:!0,dropFileZone:!0,downloadTool:!0,viewModeTool:!0,scrollModeTool:!0,printTool:!0,showPrintProgress:!0,selectionModeTool:!0,jumpNavigationTool:!0,sidebarEnable:!0}),Vt=()=>u.useContext(xp),OV={themeSwitcher:!0,documentProperties:!0,rotateTool:!0,fullscreenTool:!0,openFileTool:!0,dropFileZone:!0,downloadTool:!0,viewModeTool:!0,scrollModeTool:!0,printTool:!0,thumbnailTool:!0,showPrintProgress:!0,selectionModeTool:!0,jumpNavigationTool:!0,sidebarEnable:!0,pageNavigationTool:!0,searchTool:!0,zoomTool:!0},kV=({children:i,slots:l})=>{let t=u.useMemo(()=>({...OV,...l}),[l]);return G.jsx(xp.Provider,{value:t,children:i})},gp=u.createContext({themeSwitcher:!0,documentProperties:!0,rotateTool:!0,fullscreenTool:!0,openFileTool:!0,dropFileZone:!0,downloadTool:!0,viewModeTool:!0,scrollModeTool:!0,printTool:!0,thumbnailTool:!0,showPrintProgress:!0,selectionModeTool:!0,jumpNavigationTool:!0,sidebarEnable:!0,pageNavigationTool:!0,searchTool:!0,zoomTool:!0,setSlots:()=>{throw Error("setSlots is not initialized yet")}}),jt=()=>u.useContext(gp),UV={themeSwitcher:!0,documentProperties:!0,rotateTool:!0,fullscreenTool:!0,openFileTool:!0,dropFileZone:!0,downloadTool:!0,viewModeTool:!0,scrollModeTool:!0,printTool:!0,thumbnailTool:!0,showPrintProgress:!0,selectionModeTool:!0,jumpNavigationTool:!0,sidebarEnable:!0,pageNavigationTool:!0,searchTool:!0,zoomTool:!0},EV=({children:i})=>{let[l,t]=u.useState(UV);return G.jsx(gp.Provider,{value:{...l,setSlots:t},children:i})},jp=u.createContext({dragging:!1,handleDragLeave:()=>{},handleDragEnter:()=>{},handleDrop:()=>{}}),Dp=()=>u.useContext(jp),KV=({children:i})=>{let[l,t]=u.useState(!1),{setFilename:e,setPdfSrc:s}=at(),{openFileTool:c}=Vt(),{openFileTool:d}=jt(),{setPassword:n}=sh(),Z=u.useCallback(m=>{var r;m.preventDefault(),m.stopPropagation(),t(!1);let h=(r=m.dataTransfer)==null?void 0:r.files[0];if(!h||h.type!=="application/pdf")return;let W=URL.createObjectURL(h);e(h.name),s(W),n("")},[e,s]),b=u.useCallback(m=>{m.preventDefault(),m.stopPropagation(),!(!c||!d)&&t(!0)},[c,d]),o=u.useCallback(m=>{m.preventDefault(),m.stopPropagation(),t(!1)},[]);return G.jsx(jp.Provider,{value:{dragging:l,handleDragLeave:o,handleDragEnter:b,handleDrop:Z},children:i})},Be=(function(i){return i[i.SPACE=0]="SPACE",i[i.ALPHA_LETTER=1]="ALPHA_LETTER",i[i.PUNCTUATION=2]="PUNCTUATION",i[i.HAN_LETTER=3]="HAN_LETTER",i[i.KATAKA
13NA_LETTER=4]="KATAKANA_LETTER",i[i.HIRAGANA_LETTER=5]="HIRAGANA_LETTER",i[i.HALF_WIDTH_KATAKANA_LETTER=6]="HALF_WIDTH_KATAKANA_LETTER",i[i.THAI_LETTER=7]="THAI_LETTER",i})(Be||{});function vV(i){return i<11904}function QV(i){return(i&65408)==0}function PV(i){return i>=97&&i<=122||i>=65&&i<=90}function HV(i){return i>=48&&i<=57}function fV(i){return i===32||i===9||i===13||i===10}function BV(i){return i>=13312&&i<=40959||i>=63744&&i<=64255}function AV(i){return i>=12448&&i<=12543}function _V(i){return i>=12352&&i<=12447}function qV(i){return i>=65376&&i<=65439}function $V(i){return(i&65408)==3584}function Rh(i){return vV(i)?QV(i)?fV(i)?Be.SPACE:PV(i)||HV(i)||i===95?Be.ALPHA_LETTER:Be.PUNCTUATION:$V(i)?Be.THAI_LETTER:i===160?Be.SPACE:Be.ALPHA_LETTER:BV(i)?Be.HAN_LETTER:AV(i)?Be.KATAKANA_LETTER:_V(i)?Be.HIRAGANA_LETTER:qV(i)?Be.HALF_WIDTH_KATAKANA_LETTER:Be.ALPHA_LETTER}function Cp(i,l,t,e){let s=[];for(let c of i){let d=tL(l,c,e);s.push(...eL(d,l,t))}return s}var lL=(i,l)=>{let t=["g"];l.matchCase||t.push("i");let e=i.replace(/[.^$*+?()[{|\\]/g,s=>`\\${s}`).trim();return new RegExp(e,t.join(""))};function tL(i,l,t){let e=[];for(let Z of i.items)if(Z.hasEOL)if(Z.str.endsWith("-")){let b=Z.str.lastIndexOf("-");e.push(Z.str.substring(0,b))}else e.push(Z.str,`
14`);else e.push(Z.str);let s=e.join("").replace(/\n/g," "),c;c=l instanceof RegExp?l.flags.indexOf("g")===-1?new RegExp(l,`${l.flags}g`):l:lL(l,t);let d=[],n;for(;(n=c.exec(s))!==null;)t.wholeWords&&!Jp(s,n.index,n[0].length)||d.push([n.index,n[0].length,n[0]]);return d}function eL(i,l,t){function e(b){return b.hasEOL?b.str.endsWith("-")?-1:1:0}let s=0,c=0,d=l.items,n=d.length-1,Z=[];for(let b=0;b<i.length;b++){let o=i[b][0];for(;s!==n&&o>=c+d[s].str.length;){let W=d[s];c+=W.str.length+e(W),s++}let m={idx:s,offset:o-c};for(o+=i[b][1];s!==n&&o>c+d[s].str.length;){let W=d[s];c+=W.str.length+e(W),s++}let h={idx:s,offset:o-c};Z.push({start:m,end:h,str:i[b][2],oIndex:i[b][0],pageIndex:t,rect:{left:0,bottom:0,width:0,height:0},rects:[]})}for(let b of Z){let o=[];for(let m=b.start.idx;m<=b.end.idx;m++){let h=d[m],W=h.transform[4],r=h.transform[5],N=h.str.length>0?h.width/h.str.length:0,M=m===b.start.idx?b.start.offset:0,X=m===b.end.idx?b.end.offset:h.str.length,y=W+M*N,Y=(X-M)*N,T=(l.styles??{})[h.fontName],V=(T==null?void 0:T.ascent)??1,I=r-((T==null?void 0:T.descent)==null?1-V:Math.abs(T.descent))*h.height;h.height>0&&h.width>0&&o.push({left:y,bottom:I,width:Y,height:h.height})}b.rect=o[0],b.rects=o}return Z}function Jp(i,l,t){let e=i.slice(0,l).match(new RegExp("([^\\p{M}])\\p{M}*$","u"));if(e){let s=i.charCodeAt(l),c=e[1].charCodeAt(0);if(Rh(s)===Rh(c))return!1}if(e=i.slice(l+t).match(new RegExp("^\\p{M}*([^\\p{M}])","u")),e){let s=i.charCodeAt(l+t-1),c=e[1].charCodeAt(0);if(Rh(s)===Rh(c))return!1}return!0}function sL(i,l,t){let e=[];function s(c,d,n=-1,Z=-1,b=""){let o=l.items[c],m=[],h="",W="",r="",N=t[c];if(!N)return;if(N.nodeType===Node.TEXT_NODE){let y=document.createElement("span");N.before(y),y.append(N),t[c]=y,N=y}n>=0&&Z>=0?h=o.str.substring(n,Z):n<0&&Z<0?h=o.str:n>=0?h=o.str.substring(n):Z>=0&&(h=o.str.substring(0,Z));let M=document.createTextNode(h),X=document.createElement("span");if(X.className="highlight appended "+b,X.setAttribute("data-match-index",`${d}`),X.append(M),m.push(X),e.push({element:X,index:d}),n>0)if(N.childNodes.length===1&&N.childNodes[0].nodeType===Node.TEXT_NODE){W=o.str.substring(0,n);let y=document.createTextNode(W);m.unshift(y)}else{let y=0,Y=[];for(let T of N.childNodes){let V=T.nodeType===Node.TEXT_NODE?T.no
14deValue:T.firstChild.nodeValue;y+=V.length,y<=n?Y.push(T):n>=y-V.length&&Z<=y&&Y.push(document.createTextNode(V.substring(0,n-(y-V.length))))}m.unshift(...Y)}if(Z>0){r=o.str.substring(Z);let y=document.createTextNode(r);m.push(y)}N.replaceChildren(...m)}for(let[c,d]of i.entries())if(d.start.idx===d.end.idx)s(d.start.idx,c,d.start.offset,d.end.offset);else for(let n=d.start.idx,Z=d.end.idx;n<=Z;n++)n===d.start.idx?s(n,c,d.start.offset,-1,"begin"):n===d.end.idx?s(n,c,-1,d.end.offset,"end"):s(n,c,-1,-1,"middle");return e}function iL(i,l){let t=i.items.map(e=>e.str);for(let e=0;e<l.length;e++){let s=l[e];if(s&&s.nodeType!==Node.TEXT_NODE){let c=document.createTextNode(t[e]);s.replaceChildren(c)}}}function cL(i={}){return{matchCase:!1,wholeWords:!1,...i}}var dL=(i,l,t,e,s)=>{let c=t.height*e,d=t.width*e,n=t.bottom*e,Z=t.left*e,b={width:s%180==90?i.height:i.width,height:s%180==90?i.width:i.height},o={width:s%180==90?c:d,height:s%180==90?d:c},m=document.createElement("div");m.style.width=`${b.width}px`,m.style.height=`${b.height}px`,m.style.position="absolute",m.style.transform=`rotate(${s}deg)`,m.style.transformOrigin="center center",m.style.visibility="hidden",m.style.left="-99999px";let h=document.createElement("div");h.style.position="absolute",h.style.width=`${d}px`,h.style.height=`${c}px`,h.style.position="absolute",h.style.bottom=`${n}px`,h.style.left=`${Z}px`,m.appendChild(h),l.appendChild(m);let W=m.getBoundingClientRect(),r=h.getBoundingClientRect();l.removeChild(m);let N={top:l.clientHeight/2,left:l.clientWidth/2};return{leftInPage:r.left-W.left-N.left+o.width/2,topInPage:r.top-W.top-N.top+o.height/2}},aL=(i={},l="")=>{let[t,e]=u.useState(l),[s,c]=u.useState(!1),{pdf:d,pages:n}=at(),{widths:Z,heights:b}=Nb(),o=u.useRef(!t),{currentZoom:m}=mn(),[h,W]=u.useState([]),{setFocusedPage:r}=Xe(),{columnCount:N,viewMode:M}=Gi(),{pageRotate:X}=hn(),[y,Y]=u.useState(0),{pageScrollElementRef:T,virtualScrollableElementRef:V}=hh(),{scrollMode:I}=Wi(),{pagesRef:w}=Pe(),{scrollBehavior:R}=uh(),S=u.useRef({}),x=u.useRef(0),g=u.useMemo(()=>y===0?null:h[y-1],[y,h]),C=u.useMemo(()=>h.length,[h]),D=u.useCallback(j=>{if(j===0)return;let F=h[j-1];if(!F||!n)return;let U=V||T;if(!U||!w)return;let v=n.get(F.page);if(I===kl.PAGE_SCROLLING&&r(F.page),!v)return;let A=0,q=0;if(I===kl.VERTICAL_SCROLLING){let Hl=F.page-1,ul=N,nt,ht;if(M===Yl.DUAL_PAGE_WITH_COVER)if(F.page===1)nt=0,ht=0;else{let Xi=F.page-2;nt=Xi%2,ht=Math.floor(Xi/2)+1}else nt=Hl%ul,ht=Math.floor(Hl/ul);A=Xd(b,ht),q=Xd(Z,nt)}I===kl.HORIZONTAL_SCROLLING&&(q=Z.slice(0,F.page-1).reduce((Hl,ul)=>Hl+ul,0));let _={height:b[F.page-1],width:Z[F.page-1]},al=X[F.page],{leftInPage:nl,topInPage:B}=dL(_,w,F.rect,m,al),sl=q+nl,Tl=A+B,vl={left:Math.max(sl,0),top:Math.max(Tl,0)};U.scrollTo({...vl,behavior:R})},[n,r,Z,b,I,M,N,V,T,w,h,m,X,R]);u.useEffect(()=>{y&&D(y)},[y]);let J=u.useCallback(()=>{Y(j=>{let F;return F=C?j+1>C?1:j+1:0,x.current=F,F}),x.current===1&&D(x.current)},[C,D]),k=u.useCallback(()=>{Y(j=>{let F;return F=C?j-1<=0?C:j-1:0,x.current=F,F}),x.current===1&&D(x.current)},[C,D]),O=u.useCallback(async j=>{if(!j)return{};let F=j.numPages,U={};for(let v=1;v<=F;v++){if(o.current)throw"close pop over";let A=await j.getPage(v);U[v.toString()]=await A.getTextContent()}return U},[]);return u.useEffect(()=>{if(!t){o.current=!0,W([]),Y(0);return}o.current=!1,c(!0),W([]),Y(0),O(d).then(j=>{S.current=j;let F=Object.keys(j).reduce((U,v)=>{let A=Cp([t],j[v],Number(v)-1,i).map((q,_)=>({...q,page:Number(v),pageMatchIdx:_}));return[...U,...A]},[]);W(F),Y(+!!F.length)}).catch(()=>{W([]),Y(0)}).finally(()=>c(!1))},[t,O,d,i]),{search:t,setSearch:e,loading:s,matches:h,totalMatches:C,currentMatchPosition:y,currentMatch:g,nextMatch:J,prevMatch:k,setCurrentMatchPosition:Y}},Fp=u.createContext({search:"",setSearch:i=>{},loading:!1,matches:[],totalMatches:0,currentMatchPosition:0,currentMatch:null,nextMatch:()=>{},prevMatch:()=>{},searchOptions:{},setSearchOptions:i=>i,setCurrentMatchPosition:i=>i}),nL=({children:i,initialSearch:l})=>{let[t,e]=u.useState({}),{loading:s,setSearch:c,totalMatches:d,currentMatchPosition:n,currentMatch:Z,search:b,matches:o,nextMatch:m,prevMatch:h,setCurrentMatchPosition:W}=aL(t,l);return G.jsx(Fp.Provider,{value:{searchOptions:t,setSearchOptions:e,loading:s,setSearch:c,totalMatches:d,currentMatchPosition:n,currentMatch:Z,nextMatch:m,prevMatch:h,search:b,matches:o,setCurrentMatchPosition:W},children:i})},MG=()=>u.useContext(Fp),ZL=i=>{let l=Math.min(...i.map(c=>c.left)),t=Math.max(...i.map(c=>c.left+c.width)),e=Math.min(...i.map(c=>c.bottom)),s=Math.max(...i.map(c=>c.height));
14return{left:l,bottom:e,width:t-l,height:s}},bL=i=>i.flatMap(l=>l.rects??(l.rect?[l.rect]:[])),oL=i=>{let l=i.reduce((t,e)=>{let s=Math.round(e.bottom);return t[s]||(t[s]=[]),t[s].push(e),t},{});return Object.entries(l).sort((t,e)=>Number(e[0])-Number(t[0])).map(([t,e])=>ZL(e))},mL=i=>{let l={};for(let t of i){let e=t.keyword,s=l[e]??[];s.push(t),l[e]=s}return l},hL=(i,l)=>{let t=i[0],e=bL(i),s=e.length>0?oL(e):t.rect?[t.rect]:[];return{...t,pageMatchIdx:l,rect:s[0]??t.rect,rects:s}},uL=i=>{let l={};for(let s of i){let c=l[s.page]??[];c.push(s),l[s.page]=c}let t=0,e=[];for(let s of Object.values(l)){let c=mL(s);for(let d of Object.values(c))e.push(hL(d,t++))}return e},WL=i=>{let[l,t]=u.useState(void 0),[e,s]=u.useState([]),c=u.useCallback(async Z=>{if(!Z)return{};let b=Z.numPages,o={};for(let m=1;m<=b;m++){let h=await Z.getPage(m);o[m.toString()]=await h.getTextContent()}return o},[]),d=u.useCallback(async Z=>{t(Z)},[]),n=u.useCallback(()=>{s([]),t(void 0)},[]);return u.useEffect(()=>{i&&c(i).then(Z=>{let b=[];for(let{keyword:o,highlightColor:m,options:h}of l){if(!o)continue;let W=cL(h);for(let r of Object.keys(Z)){let N=Cp([o],Z[r],Number(r)-1,W).map((M,X)=>({...M,page:Number(r),pageMatchIdx:X,color:m,keyword:o}));b=[...b,...N]}}s(uL(b))}).catch(()=>{n()})},[l,i,n,c]),{highlight:d,clear:n,highlightMatches:e,highlightKeywords:l}},Op=u.createContext(void 0),GL=({children:i})=>{let{pdf:l}=at(),{highlight:t,highlightMatches:e,highlightKeywords:s,clear:c}=WL(l);return G.jsx(Op.Provider,{value:{highlight:t,highlightMatches:e,highlightKeywords:s,clear:c},children:i})},NL=()=>{let i=u.useContext(Op);if(!i)throw Error("useHighlightContext must be used within a HighlightProvider");return i},rL=Object.create,kp=Object.defineProperty,XL=Object.getOwnPropertyDescriptor,ML=Object.getOwnPropertyNames,pL=Object.getPrototypeOf,YL=Object.prototype.hasOwnProperty,Xg=(i,l)=>()=>(l||(i((l={exports:{}}).exports,l),i=null),l.exports),yL=(i,l,t,e)=>{if(l&&typeof l=="object"||typeof l=="function")for(var s=ML(l),c=0,d=s.length,n;c<d;c++)n=s[c],!YL.call(i,n)&&n!==t&&kp(i,n,{get:(Z=>l[Z]).bind(null,n),enumerable:!(e=XL(l,n))||e.enumerable});return i},TL=(i,l,t)=>(t=i==null?{}:rL(pL(i)),yL(kp(t,"default",{value:i,enumerable:!0}),i)),VL=new Date("2026-05-21T08:14:30.337Z"),Up=`-----BEGIN PUBLIC KEY-----
15MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvIokvErJ0Fctu0jduSAx
16gr+5Har/VSuZLlOunS28hnlqqA+OF1apHL7RYkjBosS15yvviYdLrVWYHpHnoY4b
17HLQ9I6YX6FMB9T/VbB4xLdVdKvfi8r49aTScl5EKuSpgpPgz2VSJTfvVGcRuth/Y
18Bm7PPGYdL2l2gvKDxchmmsHFPukGki9L4JOUeIVX0GXAxabENckaEH/iC1NZhX+W
19vXnpHeHuIIKlZ16LSivXNgo6BH2Z3GFdg4G3cAaXr6qNP8fsacYNqv2SpTW1viFD
20vzcGRabN25gpJAp9/syeScefWH3OiJY1lmw88oTiJbjIoiq6AkPhfn3G9mF54nvR
21kwIDAQAB
22-----END PUBLIC KEY-----`,Bu="Please visit https://app.react-pdf-kit.dev to generate a new license key.",Md={invalidLicense:`You are currently using without a valid license. ${Bu}`,mismatchedDomain:`Your license key is not valid for the current domain / IP. ${Bu}`,expired:`Your license key has expired. ${Bu}`,exceededVersion:"Your license does not support the current version of React PDF. The library version you are using exceeds the supported range of your license.",invalidSignature:"Invalid license key: Signature mismatch"};function LL(i){let l=i.replace(/-----BEGIN PUBLIC KEY-----/,"").replace(/-----END PUBLIC KEY-----/,"").replace(/\s+/g,""),t=atob(l),e=new Uint8Array(t.length);for(let s=0;s<t.length;s++)e[s]=t.charCodeAt(s);return e.buffer}function IL(i){let l=atob(i),t=new Uint8Array(l.length);for(let e=0;e<l.length;e++)t[e]=l.charCodeAt(e);return t.buffer}async function zL(i){try{let l=await HT(()=>import("./lib-BiapEtK1-CLg7zBhG.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,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])).then(Z=>TL(Z.default,1)),t=(l==null?void 0:l.default)??l,e=t.pki.publicKeyFromPem(Up),s=atob(i.data),c=t.util.decode64(i.signature),d=t.md.sha256.create();d.update(s,"utf8");let n=t.pss.create({md:t.md.sha256.create(),mgf:t.mgf.mgf1.create(t.md.sha256.create()),saltLength:32});return e.verify(d.digest().bytes(),c,n)}catch(l){return gt.debug("[License] node-forge verify failed:",l),!1}}async function wL(i,l="SHA-256"){var t;try{let e=JSON.parse(atob(i)),s=!1;try{if((t=window.crypto)!=null&&t.subtle){let c=LL(Up),d=await window.crypto.subtle.importKey("spki",c,{name:"RSA-PSS",hash:l},!0,["verify"]);s=await window.crypto.subtle.verify({name:"RSA-PSS",saltLength:32},d,IL(e.signature),new TextEncoder().encode(atob(e.data)))}}catch(c){gt.debug("[License] crypto.subtle verify failed, trying node-forge fallback:",c)}if(s||(s=await zL(e)),!s)throw Error(Md.invalidSignature);return JSON.parse(atob(e.data))}catch(e){throw e instanceof Error&&e.message===Md.invalidSignature?e:Error(Md.invalidLicense)}}var RL=(i,l)=>{switch(i){case"specific":return l===window.location.host;case"wildcard":return l?window.location.host.includes(l):!1}},Au={isValid:!0,invalidatedMessage:Md.invalidLicense,type:void 0},SL=i=>{let[l,t]=u.useState(Au),e=u.useCallback(async()=>
22{if(t(W=>({...W,validating:!0})),!i)throw t({...Au,validating:!1}),Error(Md.invalidLicense);let s;try{s=await wL(i)}catch(W){throw gt.warn(W.message),Error(W.message)}gt.debug(">>> validatedLicense",s);let{avu:c,exp:d,dmt:n,dm:Z,t:b}=s;if(!d)throw Error("License is missing expiration timestamp");if(d>(2**53-1)/1e3)throw Error("Invalid expiration timestamp: value too large");let o=new Date(d*1e3),m=new Date().getTime();if(o.getTime()<m)throw Error(Md.expired);if(!c)throw Error("License is missing available until version timestamp");if(c>(2**53-1)/1e3)throw Error("Invalid available until version timestamp: value too large");let h=new Date(c*1e3);if(gt.debug("availableUntilTimestamp",h),h.getTime()<VL.getTime())throw Error(Md.exceededVersion);if(b!==aG.Custom&&!RL(n,Z))throw Error(Md.mismatchedDomain);return{isValid:!0,type:b,invalidatedMessage:void 0}},[i]);return u.useEffect(()=>{e().then(({isValid:s,type:c,invalidatedMessage:d})=>{t({isValid:s,type:c,invalidatedMessage:d,validating:!1})}).catch(s=>{t({...Au,isValid:!1,validating:!1}),gt.warn(s.message)})},[e]),l},Ep=u.createContext({isValid:!1}),pG=()=>u.useContext(Ep),xL=({children:i,licenseKey:l})=>{let t=SL(l);return G.jsx(Ep.Provider,{value:t,children:i})};function gL(i,l){!i||typeof i!="object"||Object.entries(i).forEach(([t,e])=>{if(e==null)return;let s=t.replace(/([A-Z])/g,"-$1").toLowerCase(),c="width.height.top.right.bottom.left.margin.margin-top.margin-right.margin-bottom.margin-left.padding.padding-top.padding-right.padding-bottom.padding-left.border-width.border-top-width.border-right-width.border-bottom-width.border-left-width.font-size.line-height.letter-spacing.word-spacing.min-width.min-height.max-width.max-height.flex-basis.grid-gap.grid-row-gap.grid-column-gap".split("."),d;d=typeof e=="number"&&e!==0&&c.includes(s)?`${e}px`:String(e),l.style.setProperty(s,d)})}var jL=(i,l,t,e,s)=>{let c="center";switch(e){case 90:c=`${i.width/2}px ${i.width/2}px`;break;case-90:case 270:c=`${i.height/2}px ${i.height/2}px`;break;default:c="center"}let d=document.createElement("div");d.id="parent-element",d.style.width=`${i.width}px`,d.style.height=`${i.height}px`,d.style.setProperty("--scale-factor",s.toString()),d.style.setProperty("--rotation",e.toString()),d.style.setProperty("--transform-origin",c),d.style.left="-99999px",d.style.visibility="hidden",d.style.position="absolute";let n=document.createElement("div");n.style.position="relative",n.style.width="100%",n.style.height="100%",d.appendChild(n);let Z;if(t instanceof HTMLElement)Z=t.cloneNode(!0),n.appendChild(Z);else{let h=t.props;Z=document.createElement("div"),h.style&&gL(h.style,Z),h.className&&(Z.className=h.className),n.appendChild(Z)}l.appendChild(d);let b=d.getBoundingClientRect(),o=Z.getBoundingClientRect();l.removeChild(d);let m={top:l.clientHeight/2,left:l.clientWidth/2};return{left:o.left-b.left-m.left,top:o.top-b.top-m.top,width:o.width,height:o.height}},Kp=u.createContext(void 0),DL=({children:i})=>{let[l,t]=u.useState({}),{widths:e,heights:s}=Nb(),{pagesRef:c}=Pe(),{scrollMode:d}=Wi(),{pageRotate:n}=hn(),{currentZoom:Z}=mn(),{columnCount:b}=Gi(),{pageScrollElementRef:o,virtualScrollableElementRef:m}=hh(),{scrollBehavior:h}=uh(),W=u.useCallback((X,y,Y)=>{var O;let T=Y??{behavior:h},V=m||o;if(!c||!V)return;let I=(O=l[X])==null?void 0:O[y];if(!I)return;let w=0,R=0;if(d===kl.VERTICAL_SCROLLING){let j=X-1,F=b,U=j%F;w=Xd(s,Math.floor(j/F)),R=Xd(e,U)}d===kl.HORIZONTAL_SCROLLING&&(R=e.slice(0,X-1).reduce((j,F)=>j+F,0));let S={height:s[X-1],width:e[X-1]},x=n[X],{left:g,top:C}=jL(S,c,I,x,Z),D=R+g,J=w+C,k={left:Math.max(D,0),top:Math.max(J,0)};V.scrollTo({...k,behavior:T.behavior})},[l,s,e,c,n,Z,d,h]),r=u.useCallback((X,y)=>{t(Y=>{let T={width:e[X-1],height:s[X-1]};return{...Y,[X]:y(Y[X],T,n[X],Z*100)}})},[e,s,Z,n]),N=u.useCallback(X=>{t(y=>{let Y={...y};return delete Y[X],Y})},[]),M=u.useCallback((X,y)=>{t(Y=>{let T={...Y};return T[X]=T[X].filter((V,I)=>I!==y),T})},[]);return G.jsx(Kp.Provider,{value:{updateElement:r,clearElements:N,removeElement:M,elementList:l,scrollToElement:W},children:i})},Sh=()=>{},CL=()=>{let i=u.useContext(Kp),{type:l,validating:t}=pG(),e=u.useRef(0),s=u.useMemo(()=>
22{if(t!==!1)return{updateElement:Sh,clearElements:Sh,removeElement:Sh,elementList:{},scrollToElement:Sh};if(l===aG.Developer)return{updateElement:()=>{e.current===0&&(console.error(rd),e.current++)},clearElements:()=>{e.current===0&&(console.error(rd),e.current++)},removeElement:()=>{e.current===0&&(console.error(rd),e.current++)},elementList:{},scrollToElement:()=>{e.current===0&&(console.error(rd),e.current++)}}},[l,t]);if(!i)throw Error("useElementPageContext must be used within a ElementPageProvider");return s||i},JL=()=>{let[i,l]=u.useState({}),{pages:t}=at(),e=u.useMemo(()=>Object.keys(i).length,[i]),s=u.useCallback(c=>{if(!t.size)return;let d=c>t.size?t.size:c;l(Array.from(t.values()).slice(0,d).map(n=>{let{thumbnailViewport:Z,scale:b}=vr(n.page,n.defaultRotation);return{scale:b,page:n.page,loading:!0,viewport:Z,defaultRotation:n.defaultRotation}}).reduce((n,Z)=>(n[Z.page.pageNumber]=Z,n),{}))},[t]);return u.useEffect(()=>{s(10)},[s]),{thumbnailPages:i,addPage:u.useCallback(c=>{if(!t)return;let d=t.get(c);d&&l(n=>({...n,[c]:{loading:!0,page:d.page,viewport:d.thumbnailViewport,scale:d.thumbnailScale,defaultRotation:d.defaultRotation}}))},[t]),addToPage:s,thumbnailLength:e}},vp=u.createContext({thumbnailPages:{},addPage:i=>{},addToPage:i=>{},thumbnailLength:0,setActive:i=>{},active:!1}),YG=()=>u.useContext(vp),FL=({children:i,initialThumbnailsVisible:l})=>{let{thumbnailPages:t,addPage:e,addToPage:s,thumbnailLength:c}=JL(),[d,n]=u.useState(l);return G.jsx(vp.Provider,{value:{thumbnailPages:t,addPage:e,addToPage:s,thumbnailLength:c,active:d,setActive:n},children:i})},OL=5,kL=10,DN=(i,l)=>Math.min(Math.max(i,0),Math.max(l,0)),yG=u.createContext(void 0),UL=({children:i})=>{let[l,t]=u.useState({}),{pageRotate:e}=hn(),{thumbnailPages:s,addToPage:c,thumbnailLength:d}=YG(),{scrollBehavior:n}=uh(),{totalPages:Z}=Xe(),b=u.useRef(null),o=u.useRef(s),m=u.useRef(d),[h,W]=u.useState(null);u.useEffect(()=>{o.current=s},[s]),u.useEffect(()=>{m.current=d},[d]);let r=u.useCallback(I=>{b.current=I},[]),N=u.useCallback(I=>{let w=I+kL;return Z?Math.min(w,Z):I},[Z]),M=u.useCallback(I=>{let w=N(I);return!o.current[I]||m.current<w?(c(w),!1):!0},[c,N]),X=u.useCallback((I,w)=>{t(R=>{var g;let S=(g=o.current[I])==null?void 0:g.viewport,x={width:S?S.width:0,height:S?S.height:0};return{...R,[I]:w(R[I]??[],x,e[I]??0)}})},[e]),y=u.useCallback(I=>{t(w=>{let R={...w};return delete R[I],R})},[]),Y=u.useCallback((I,w)=>{t(R=>{let S={...R};return S[I]?(S[I]=S[I].filter((x,g)=>g!==w),S):R})},[]),T=u.useCallback((I,w,R)=>{var O,j;let S=b.current;if(!S)return!1;let x=(j=(O=S.querySelector(`[data-rp="thumbnail-${I}-customElement"]`))==null?void 0:O.children)==null?void 0:j[w];if(!x)return!1;let g=x.closest(`[id="page-${I}"]`)??x,C=S.getBoundingClientRect(),D=g.getBoundingClientRect(),J=S.scrollTop+(D.top-C.top)-(S.clientHeight-D.height)/2,k=S.scrollLeft+(D.left-C.left)-(S.clientWidth-D.width)/2;return S.scrollTo({top:DN(J,S.scrollHeight-S.clientHeight),left:DN(k,S.scrollWidth-S.clientWidth),behavior:(R==null?void 0:R.behavior)??n}),!0},[n]),V=u.useCallback((I,w,R)=>{T(I,w,R)||(M(I),W({page:I,index:w,config:R,attempt:0}))},[M,T]);return u.useEffect(()=>{if(!h)return;let I=N(h.page);if(!s[h.page]||d<I){c(I);return}let w=window.requestAnimationFrame(()=>{if(T(h.page,h.index,h.config)){W(null);return}h.attempt<OL&&W(R=>!R||R.page!==h.page||R.index!==h.index?R:{...R,attempt:R.attempt+1})});return()=>{window.cancelAnimationFrame(w)}},[c,N,h,T,d,s]),G.jsx(yG.Provider,{value:{updateElement:X,clearElements:y,removeElement:Y,elementList:l,scrollToElement:V,setThumbnailContainer:r},children:i})},qb=()=>{},EL=()=>{var i;return((i=u.useContext(yG))==null?void 0:i.setThumbnailContainer)??qb},KL=()=>{let i=u.useContext(yG),{type:l,validating:t}=pG(),e=u.useRef(0),s=u.useMemo(()=>{if(t!==!1)return{updateElement:qb,clearElements:qb,removeElement:qb,elementList:{},scrollToElement:qb};if(l===aG.Developer)return{updateElement:()=>{e.current===0&&(console.error(rd),e.current++)},clearElements:()=>{e.current===0&&(console.error(rd),e.current++)},removeElement:()=>{e.current===0&&(console.error(rd),e.current++)},elementList:{},scrollToElement:()=>{e.current===0&&(console.error(rd),e.current++)}}},[l,t]);
22if(!i)throw Error("useElementThumbnailContext must be used within a ElementThumbnailProvider");return s||i},Qp=u.createContext({textLayer:!0}),vL=()=>u.useContext(Qp),QL=({children:i,textLayer:l=!0})=>G.jsx(Qp.Provider,{value:{textLayer:l},children:i}),PL="data:image/webp;base64,UklGRoaVAABXRUJQVlA4WAoAAAAQAAAAnwUA/wMAQUxQSIZqAAABHIcBkIYNCv8fvQh0H0SEA7dtI2nnPjjrpp15BN40A5t4Jgl7Jtw/kBhCSNo8yYLQg8xvejnw6M0gllt3+KYQBAJCiKmhxqZQFent4E0alOkHek1Wi/0GpoLTWI+Nq1jAVgAgAkP9nimVAArwdlYwZ9r9Dwzjc0PjTLFUZJGBWMGNEHongw/9Sgd5xNXaVYAG7sFYn/8NTg7dMFPBrSUD8BxnvwOUiowUhho/g0F7jW6rHfjFXJIYPY3XDwBtyEn2HhmwIWfv/wfwnuGJezEbOENE4dzuf8BZAyUIHeRXETYFEF7/3N5ADew3QPSD9NmaCpSyQdMACpAUALmcApSA/ZDrcwN7LQqQAsjvWAbfP1vivZ8NqALMmehn2/a20Wxbe2Kk6FBKq8NRIyyGQ6mYvu1bGt5HlTazcWD4oZjDmzbR8N6Hfow2P0kESZCs576gLCJoQbZttY1Qr3l5ZFTk6iaWEEb+tHJbb9jalrCoDkxoS7NhA19oTVtY0z4aekNNjf13Y0lOz2jOt80ighZsW0FjCffO65lEO2VfCVFA9NNXJEm2bdu2BaJDHZQmhIlwPHtNdzeL2r4ighYkSbbqZqiUbBMLIQ4cvTjB8f30q21v3dq2bSFmihLKqUvqGophd2qmLqGVuqZKm7LxYJwHYzztgsbprkSQoEut+umaRYQt2rbDNJKkfbt7hgJTKVmFwbZkPq1c2xs2tiVs6g1TmtJumMATOqYt3KYZanpDTY31d+tPcmqrM7csImhBth22baBzayeRIA37+ASSwHsAP43jIinJobdz7K+XZnQj9tfbsDfCS0yXic276I2GWtenabUM8JTfEtZLWz7WTn0Dtqk5a5/izhxf/6Q3TQSxsnro+4sZJviadAE4XNvT4JxSMvNGHw/Dc1ujzEjDb+egsOPbCWeIHK/Ls9xlWZ4fwtNnAvsf5Gp5k55lw4UUdVxOnDojjlhilm5+KtD++0hY3P1gZrobG27KME2iQq6cAzhSXpa5Opf4tDgXytP0PH0mNFxDrPPZyGfzr7xQ/eVN5Gt8Ab+9SE0lr9LH40FbYXFurR9399J7Ui7jMZPdFNbLF9/96R51mURtyO+uVYBUjS16DXzqTNSTs7NHK/IxQ9y5fznBzo9f8EYvEO4xI+UK4yP9hSPVhL99OaK+HJ09gPyG5Yg7WqT1nyd6hXPfQMYqPX/HX/Lq6y+3ZZnrVejPhqVmCyo4xK1/eSTOSLnrI30T0UuErm8Qg7U9i1/EX0SlT9ing9Q42XYk+Y2ZiCO1wflP6gFgtFyBjmHLIapePyuUkTxSkRlKF/DidceOYV6eAM/bJwV8MYnxTiWFjVocjk4BFyzZ8WAGP3PEUounDwr0klrqEbU/savXweTnQIvUFLQnR5Ajv0Dkn8+GqcWIXFSZeT/1cRzRWcAiNRUOynDFApIBBD4bQonNGXCLqEcQnvNgtRFuLEP8FG44mM+GsEfI3IQ6VhF+dgaqzXDz0tkI92KDC3sRNWEOVmIOrU/RA6Q2RI8cQ4xpK5zYAYgrNrLyaJSVegDUpuARfdeK7XBgbU7E4YrM/9M2L9eBEl3AaWPwaK6mZojbKnIgM4Qsr033CwFGqvYBps1Be0gvk+oPQ5xWSQdALDAHYeC10NNf1AuUSE2KkUXFy2w1eoQl7upYsyXEknINo1vd85PcGVxEN0B6ElgHXHeUwf89uZI9meKsKyQp0Etq5XiVPh4P2rIYqtoRjJCBFvwckRZP9NkwVYkM2CW1wnAIdGcuMTyE2fUEImaHJkyW9+nwqtVDPiFGzEhd5fcABhtespaxoy8IoXLXq0BX9vQBsQfJRzymCBkqVw2M60NUPW9hg4wdvQGIkpI1KwfBruuzga/P90L0GTGliBisxPyYosyppJjVAPBppjXXWRI0/eBwfseOSH8DwGjNkDvNR1F39OOAVxci5lki9angHJFSqQkfAi9eB3PQM3akeRjoCoOTZ1pKDSIgEPpo4E2dseM5HWlMfgi4gG3MBa1sT4wBXoYBzrRJfgfc1TpRnw21HcSDjzUmPwhapNaLNlzxJhoBU4T4W+PAVhoaMcLi0fgonw3+qa9TH4foNGJMW7lclEbBoRyjeUc0Emi1weFUbHY9qNaKnUM8P+D/BbSYttYz3NpEDPW4iGNBptqjmMSbOgj9nqUiRL3DUSOC90aKaat+gjuhjABMtpeiaqd1qVlI99AKOJuZLz1QEowe3WCq9mbA5dy4m5bV6UDgJJxv1sanuFAPhEQDp6QkDWQHWMZ5nwZyW7Xw4Cv+UjthNiJBEHVBRzhyohNBcYZA5Z3NNKT2lAcPlgFsNCTdL8SavaETMuIx87vTgn8EMgQo8fw840zsUgnoy01tyAU4ydILFQUhy4qxpTqlA0tgOni7eAh35HwhkbEjEnVDhGpfz1IuuMeUCbYazTUtvCkgnbxrCUqcNI+jS9MhriR3RINymtan7/rniGyB6OgdizoH7CmzfByeqCcSnNMkVp9jDUAHaKVzsgf5BWJurM8B20fWMnb0RYFq7uIEug5HBsFzgJLQSZlTIJ+GIW64/PDQxyfEABk7eiPAtCnBcZlg1WUROAcoCNFZWbtWCuSXUrAoOZWUbT8AfKatrRWOlosmm6CRLjQD7LxsYUYuwLmvWY4vXQcCry5EXJxEyipgJsN4xKFSHZSJnBPhPoKSOtoNA11hcI55+oLLkAIhu2AZDQJSQtUhYpeYI/qLlCv/iIYBrjI2TgZJxMqELANlNgRIYUlmFhqgbV4LOOyqv/iCCVf8IxoINs/0E9ypduMDhGyDZDgA/xQGqPm9NbH+ebf04/n5+ir8liAaCrTawDQnrPsFsg6Q6eZB5arqIyW+CWSdmskMBplqGYpsw/DxgH5C/zki++AYbxxSeKZbB1b/lOWYo4wAzDWPVClXof/W394BGPNNQwpLoh7IiO4wVXsz4HJuyrW+zLK2NwEFQMNMY9FEPVA1l1JgCFjS8VP+aW4xo3494qn5+/9z54jQLNXm8tdBB7zRl1JgCFTeSeOYH0/9ekT1/vghGoVV87SAjt/U4B8XS4DSrtVa//WIWt41BGQSWLVzpSa02eWpIe3JG1kC03dctFspiAxCq3UiYeYy7Cl6KjBHoc64whSQTt4wSObAVTugeQTkMXGLd08ZA9HRmwXKGNN4O9WlTQJamnCbmQPQAYr0CxLVfvlwsEwxjUXzyZb2bwzm7hLuj3QLquq/GgSPf/U/b8oe1QTMENXuqju30D9A5ppgTvaCWZVJ4MgnJ9vxrozJ6MyQ7WHM9tzqYuszoFwQttcF2SsyChrpQtM/vi9rX3dHdEY4Vx626/L0osJqGxiL8WsBA9XGLkK1UM2uGZ4J0pVmKarb3/pyqctjQ9Z+MVhGg2BaqGY6DtAA7S4fivHuerl/mD6rvSRM9kf00RGHR7Mw7VcDZTYEpkVhM9NxiOqZ5rcW++LHe5U1Pj3SkRTaLwfJcABMi9XGNEjlTPOZQy/EdSsl2xVZ/XqATDdPtYdiVc0y2czNTrb9xB1jyN6lbsiD6ATgGG+cafHcKQJTDLkNQ0OT7SEz1LrUjVMAY75ppkU9U5ctEDC1oHsq5SPvDVNraFvNDy86CygAGGbapRzx1aMEmVLYPZXMTsNNUWuI66VuaPExt/oCzvuKAsEs1ZZyRG6PQIRNJfA26+Ss9tSa+OpSbg8ifCTdQrtfAGEUVpZLF0KnEHobduJcsVizRxHDR3InqgPDJLAMF8jqwLdZgROAgJNkt1IQGYSW3YJZGdU26BQkPM3Bas0wSObAZbR8EGhVZPsCqqepm7zazAJljGnzxlVxLx0CpyLO7SgE00mZY4dCh2WKaXMtCdji7twFVA3pUADUb8VHqs5nCMwQ1VKpuIXSHqRKeLcTIdg9LWMyOjNcE81epNRtLbXMch6rCqq5bU/pcVVe8GPzwtwjDCdmbMUDnRHOLf4p4dEqYJqLinX98Jz7B0N1ttvXBM8E6fzgFSfTiqNsHYqIWN3MggAaoJ1c7HAdc0p7EAvTaYUx9gh7LeUyFAmRSoud6ThE9UybRy+zcPfnxCxKqIWVG+bAh86bSAqbEBCpVB1LDlI50+aS0RCk1LIm9ZYQzfVjgpPZhPtIBVGsqgE3fGakYIiRalF6jviHnP7MRpxHKhD3CcAUM23WH/1oCFHtWxrbiTsmshnXkQpMfR5EwNSCzsjUGxstD70I19zRMLd7jR4wGseRCszUZQ80pbAzMzNSlvIP+ALc+2beaThuQ/Wsr/d1GziVwDMzcV1+7sHvOfky80rjcZosxQNZIfSCDmQLI/CYaS5kPu5OIiNPezKAy4TpHczqwBcTS0TEU34dJu+oYkSqxoRexgIOk6Z2QCuj2mZTrL31IuII8v31ZqvXISVTga5hNnCXOK2DWhXXWFOtuS
22MizsBsej7J21a9yiztTkyQ1QhjSIWAJZMjAlXEOSMmbsLjQJgg7Q5lhimmhT1KdHKa0L5UoGpIp0VFlQQd+bBolRliCGJlZ7XXSNWs9qAq4d0eYriolCjL6xzuAJlihms3zZ5FrFV9LsuZCKwKqvES43MWp+SGjIooSOMVQGSlCeh2b84ZjnBuLd5UboWrgGliQywyQvwGa9YDKJ4tO8MJ0uWWgMWZds3umVkQsihmoMW2Mxyg3apO13FNKV2JIAszbVbLi++kfgEjZEHQDpRt6pl2Y/8z3e8DEbQooT5trai+Vk9JxZrmTcgojhrKOuVMC2VDQ5BSf6UrJtnJrN7mxgQN/hVdnN5lJ7JPNeCiyr59gCFGqr/SU97NHKHiuIsN+kSj17u8A8VMC/r4IxpCTOPc6jDAvWMi6ODf3zocTy3ostpc4ItwbWix1ZIASCrg5TDHUwq7pBZmqfAFuLfVB5Tg59regUrglSCa9wzAc955998RJvC5sqd3oBB6Odwutg3BY6Zx2NI6N4ilJCKcQNd3Wpel6i2oA1/MVgIinvJrctKkWys+LCb8ZkIKddrZtbwJZfBLnP6MbhGRGRFH0KqvNxczBYtyJYIKcvngqrgmCu1AhAh3n9S3XmKu5QDDVv8/E1T+8Avka8wHV8Q5IyZOYmN7Dzw1eLX2779vWJfVfv54dDWk06LiJEyP8BdSILY/nvoVgUxFr/j7JpTwbhcXRyFqiBUaxJrhYqJX3Di8CRVU+7M8Y7g6TxIyDuHqXAUYb6pXHs2KWFSfX9v2QfSar7ehgGnDavqDnyFyBDozrHtAte6eSMCS+jT9ywehEGfaUpzpAZGPOKerCSGXVFI1xT+Y/H0JMy2o168rUD4gHXwnMbZe59BxMPn7EmVasGfs0Le772KYofHbrEMvKTYj83QeTP7GBCn1kRt7X7NWUryIoOF/R9JgQi6q5YVPN96aGKk+0o2dwmb4M+DQv9fUIAluUbHdFscjxLRL68DExbvwenjov996pRaoZXVRze2vevgjoBDh2r0yO+GiehwGibwk1ASzsJLzhX/N5dxbKASox+oBJfraILYY2SLOs3gSDM+5N+2JCCbyGtQEWFxz+UirfXKmRDg8ZpqE9/qUBlutcA0UZwfribwgy4vbQ7VczPY5EKvml/fRveSilufSZm9FhhR1fKZfYwDOuMRKW91nSP3wk1AJterrhWKmi2W4KcM0iQq5cg7gTHONLmLR10yXBdp/PwvsvdLfOvgXx98PN+Jkhuo3byJf4wv47WWaz8cqfTwetEFo+epkfxiqpJe+dtxiYwY3s5ff/ekedZlARMjvrieJgNmweg186tPJ/jhUSiT2aPKRuLZ/OcHOj1/QPeQFAuLry//2B2mmucz42K/qzN9L/Z74gaiT6OrUxjwSd7Q4jfKd9r3CuW8gcy0xFxlT3sNcSbftVq9C/0hUREvNFth87XK2lCNxhur62L+JSOfUjJYQk217Fv9fbjfXfyqeQCwPhm2s30Bi5Ps/Sd3g/Cf1ADDbXIGOYYt4p7T+cCzKOaUgl9SdGUoX8PItiEjFohrOtx+NsCDp4EsqQJstbNTicHQKuERrRVqDFmCE4ukH47Ag69BLaqmNAH9iV68TODgHWqb5Tb07PuIA3f8HQTZ+MKqgqcWIXFQZm+inBpOfBSzTfOagDVeEA3Rpaz8QlbHW2JwBt6huL0RzOQ9WnrU6HJTWAfpYLqyU0AS1jFr3F6ozUJnm9StaQZw/tcGFbUxNMAsrNYLVRubQA6SCYdMr3oiscGNtEFsMcknVS/QAqGjQGsdt/yM73NeBCHohFlds9LiGgRJdwCkcOzFrYUPcVhkPxBBkeW26XwiwppU+wBQP2uOiHaolMsRZHa1nLYgF5koN/qBNljRSL1AqCJU0sqiMS91q9AhLnNXBhjCIJeV0oytr/SQBTa8bIGmmzOw94Nk0dK2eXKnuxhJnXTEkBXpJrRzlRjwwKE+Wk7zrB0bKaZpKpMUT2eKgRyvqpYkGu6RWNU6aeyIP3CainkDk3KEJb2CTNa6J6KV+0QfEiBmpq/weeIBNbSL08Jcj6gtCqrnLVaArezLINREFJvqExxQhQ+VYydgRr9C7awsBMnb0BiDT/F6dShDsuixyStdnrCH9ETGliBisb+bHHGVOJaXbwADkZ5rPaGSSoMkmd7QU6Mr1NwCM1gy503zM+Ev04xBfXYiYZ4mUVY7I7XhoTU34EHhhak/tbRbVcJqHIb3C4OQZWoGRBEJ2ueE/H+AR4nykMfkh4AK21R9gZQdYXx74K7jK2HgZJFGAsswV32+9+2ONyQ+CFqn1og1XXEGO5gguYhzYSkMjWgM7ISjb3I9/6n7q4xAdBixSKw4nxibcAZJdN0cCrTY4LldPI6h+xDrnu6P7+QH/H4AVqZWVKJYX5kbc2rEgU+3OtSgDoEpcXcUT2acR64tCEvODqDNQbUb/aZ8nIRsAk+0fmJs+PjXB2sDegYV/fkxi1TOf+gbOlx4oMW2Fa1HNVSZZAZdzpz35ujXOwHYQA9fGJBY3SqnhwXsgxLS16Q9KPW6zAyzn6rNu8XW1OYquFbiy7hcusPCNLugIR///tBKYizMEKufaJ0Xkcqa842i6NV7ful+IkL2hDzLiMXPRaRUHMgQo8dp9xpHYeSNgs3phKsBJll6oKAjZoRjbd01JaglM987MuyJLiq+Arj9E3RCh2hczdLl2hzy+9jRXR2EKSAfPSn9rUgHngK1Ml/JIR0GT6YgG5TStT99Vp5psC0QnrvNwGFJBnQM25NLSOvr0RIJzqhh8lzUAHaAVdEhtSs942JyRtYwdfVGgmvvjBLqyJ4PgOUDCmIPqVh0CttQ3D318HvEBN2ulNwJM8zBC0QtWXRaBc4AS6CBqjX9ZssyppDjDAeAzbS2NFY6WiyaboJEuOlODwxxaAc59LQmdxbEOBJ5ps7KaPieRsgoY6aI+4AdT++Zx3OS7RTcMdIXBOebpC+oRCNkFy2gXJFxi3jEw+JGfVMMZBrjK2DiZRwsrE7IMlNnux7TNa8MV3VPVZJZcDWcg2EpDI8YobgQI2QbJcNdjWlC8wfF8tyq51JWhQKsNjs81LKKg2ot1gEx3O6YFZrl/bNw4nTIYZKollVD1I2wXuX5k++AY73JMC+o3gSsoIwBzTTRV8io0duV8B2DMdzfB2Cm3K8IMuJybcq2vsKjtXUAB0NVEY9ZcSoEhYBnnfRrcYkb9ekyn5u9/D0I3Ew6bvpQCQ6DyThrHXOdJ+usxZe+PH6KLicfMb7WIMTGzJUCJp48tfidmldEOALmXgmDtwkMELfjHRpbAdPBmCRMi12Kay+K42mc5DxpHoRqOKSCdvGGQ3IprHgF5TNzi3dNwjIHo6M0C5VKc04R3Y8YcgA7QTu/JHnMdJ7DciWt/ZN8BVdVwDILnAGVPb8oe1QTMlZh2TaXmOBTMqkwC5wAlT/SujMno3IhpmxgTIchekVHQSBea+eP7Mrbihs6FmBaUWVKSRMgsYKQL5U5YqT7Ygec+CoOTbnOtzwkKyjBYRoOAkvZMxwG6DtNkE93XOkVlKNNAmQ0BUqaNzUzHIbqN0shMnbCuYfObQzIcANOmbPeLAekyaoOzV81EVmk4vz0ghzZPtbsqVHdh2n50xxivbflhRu+4Ex0AjoMbZ9p0okeXKzBX4drDSExzb3XjEGAc3jTTpnymDuZZAHMTzo3e96StDzoKFAAMM23KeqYeJchchHSX/NveXVeb8Wl+8wOc984RglmqLeVz9x6BCJt7kG7qcGk834nGJ+oW2v0CCKOwap4uhM41WDd3FLHxie7J4WCYBFbxQHYL6rXjFG2vgMggtHoHs0s4ecMgmQNX7YB2B0dvFihjTBtWNsm9dAicruAAXQ5qjh0KHZYppg25bDvJaXCP8g+gbsC/0nDGJ1ZTMgJmiGpbKTs1ndxLh0DqAirA3nAOaws+M1yTpNiLiGyrrQsRYeUP2gtzL2g+sLEVD3RGOPelrVpuhcsetPN1ikA1Vf0BPBOk84OXO6cgUGrPdBygAdrly/l8mec5pbQHMXNuISAVFzvTcYjqmTaMHwz5BjNvjgEgFauvDQ+kcqYNOaPBmmvzUIliVQ24+JmRgsGZc+NIRWK0ipk2ZBVZaDDm3jRSUamH6SSAqQVdWJMnoedLgGGkoip1Ka/hkCmFXVQTYYLPzvNTy/2QBLNQ7Y9HXQIRNpXAizk4qj383LTTB4fbmYkwSpbi6UPoFEIv6EBfYyOgZvbgcDJMEqZ3MKsDX0woERFqhm2lyCBpage0MqqtpS
22ZbEESEHE3miNM6qFVxjTdFzWnqKkeEGlXGkIqpehlHjgRUEeceWkwo3Wv+I6PTZQqpqJqq0rYFAqqGdFpUGL3fehgmZ2WGkGLVnVuIn4EIqRLePYhwIXQ4TH9RZwar2VpVq8E6Si3TMMSqgmq8PONzFmcGZPgcrXiKSZ0Rzq3FnbpgchUwjaOJrgcjZFnQF30mSJeb6hUn2ZH7K4mQRV21Adqt5nQd7fkczBQLM23ItRAQ30nBCFnQXatn2sQfDPlGsyihPjRPKtZ05U3NSsgo7rKVM20uGxqClPorXTFJ0vd3kLf6AI3Cbls102YVW2CIkeqv9JR3MQ3K+b2LjaKuWzHTZn38EQ0hqjWzk+xFGjoKcuhkytSCLqxJI1+Ea0NusNYEktkcum4+aUphF9VkCyZfgHNuWgglGLVTdzIzcSqBF9Skqt9z4jlX4QsTin+ePlqaPIXQC/ppb/8EHjONw7q95wZBdcKGE4iP9lLVgS8mloCIpwRrt1Z8uMyl/jdSGK7Ra1VGqxd7D8T9DYyIeMivtzjabgOCZVf9CxWEz9aLVcU1UWhvRIjw9mlrxWes87HBnFYLKr/4BcGKjoN7oYo4Z8TESSQxDWFMKR6v1vz97405dJI6GdaQTouKkzB71CZSILY/nXoGJ7GTYQnnjLg4CnGOcwwZsWYE2nYndzKsoBrPISxXr+cAZByCZKd69dsbI+mwIRbB8MyqXAVM88n0Bz9D5Ah0Zmge4v5K79MAsAxOZoLFmbYWttMDIh9xTjkgl4JJFuW6DdZaX15XoHxAOvjWvSClbfCi8qW+u3vlYgjQ+G3Wobf2xUhtg9fkvS5MV1JsTNDwvyNpMCG3/oVobYMO0i0W2Q5/Bhv2cmqQBLe3gAjXbTBxIwjPxe3wAx3y6vlmW6D2NhBguw2+nqh7g+pxGCT+h8M0weytIMC5RkKJvjaIvR08595V/W+YyGtQE2BvCU+5bgMX9vTwDaIaCQtOpB2rJ/KC7G3hIcNt4JqjFcuqEtQJ75BirRyp18iAvTUcQeumlK4sHrNE+SCCirJ8DMDeHtx98n7rx/4siQT1TWxg4/H//1NecVeg9xZRJW2s71UwG/Kbgnp5+d2f7lEXJ2pDfnd9J1VJpkf4P1Qhru1fTrDz4xd0D3mFO8y+lSokU5Evm0yDuKNFVnhrV16h7RvIvpcqoqnsSfSfw+vB9EicobqGWLts6pyaODpi30zVEEkyD5L8FhHEkbommE1HDwD7bloUs5YGHKmAadOoC3h9OYUFQYPvJMbSYyMdMLpTwPXl9GxB1NBLapGZeahBNbpzoPXtVAVdWozIRZWfcqe+A4jOAlaknzZzic2F4RbVFXoJnXucB6tQP21KeTRBLasAd2itM1DF+mmThJpgFtZ3Y5YOkTn0AKlgP2/aILaY2jQ+RaAeABXtp02TjQGLKyqxA5QpknYBp3A/Z8rlQGYIWV4bq18FC2RO6wNM8X7EHK1nLYgF5oo278apwJTROoFSQT9ijjaEASyyIKbESi5gVtpugFTRj9iKS1Kgl9RUorSxA2deeRQxi7B+YFTSz5Yr1ica7JKa6pdAWqWPl48yE/UEoprODfbyT30cfAALZqR8ESfSNo9BPrDUpnxfECrq8hBnRSH6hHeKkKFytYjvgiskgwgxLPUqdG8AqurHynWD2/31EZJSRAxWfNY3R5FuWHNpA5BfWT9UK+o5z0R/A8BozbDWTR8LVh39OMRX10+UOzOUvwJevBIOIJ/lCZb9MgzpFfbzJMJhddyONCY/BFzAtvoDrSyLLvfDEF5lP01Cfcbl5GDyY6BFarpoT95EI2CO0J9zHLIzTYSB7Ny1n/o4THQUsEhNRW6ygK/HRoD3RCMRnWmSvrU7Wl44mj4OVqGwKVkAXHOqaGNBptqjqIkRbEmwfsLOQBULm2I8ScgGwGR7qf3zYwKTWTfiNaXxb4BUMHo04zSyrYBLNXhzxASmNEquucTfAKho0BqW9iA7wKrvrnBl3S+IOn30XwGncNyUJxdnCFQDXZVs7RsiECF9dB9kxIMWnFZxIEOAmuimhJvVC1Mr15MsvVBRELKoGNu9TunAEphGuijllJsM5UL9BETdEKHaJmfaGGXwf0dzHQ5jCkgz3ZNpa16dHn342FPBgcUd0SDbFwBasCG/Ug3HZAtEQ12TaasaJ20S8eCFeiLBuV2R6DVkDUBT3ZJpN8ZH+gubM4pyd0R9UeDaH7m6JFX1Xw2CZ6xLUm2ubXRsqa++bs8txsdWu3f1RoBp8izMyQuCLovAmeuOZKuduRZxPiVqLm0A+Ewbsg6ym5yOvyaboJGu6YL8bAuQB2BJoup1IPDqQsTFSaSsAka6pu+C+nRzjAPIb/LdHn4Y6AqDk+apXt9YSSBkFyyjXZBw3/WHlrGjGs4wwFXGRmQeLVEZyjJQZrsf01avPdlX/SO/ZDCccWArDY0zYF1AyDZIhrse01bOXos3DaqPOtmKkUCrDU5tB9wIAVkHyHS3Ewob864NMWZ1ZxkLMtU2u9vMHXARervI9SPbB8d4lxOLmmIlrqCMAMw1SSrctPgmOE2ldwDGfHcTDJs+2w4iM+ByTp7KuxJA4F1AAcDVRINHl3qDfAwByzjn08DdYkH9enDzj3/bA8HNhOOmPDmRIVB5J43jVjvZvz9bmz8QgXAx8Zj5TU9JaglQ3jWcxK8HizfaAQz3UhCyzEEN/kGWwPQdx2LeO0LkWlTL4rjaZ5mH1FGohmMKSCdvGCS34ppHQBMmbvEuPQ3HFoiO3ixQLsU5TcxPiKwB6ADt9AvCYr8bPljuRDpVYDj2wHOAsqc3ZfH1lYC5EtFgXvY5erHD3HRZBM4Bqnlb3pUxGZ0bMW0tYkyEfIEmm6CRLjTzx/dlbMUNnQsxbWXxSCSRsgqYySgecaxs9pUPPPdRGJzjNtf6/kiE7IJlNAhYmXJp+ABdR2VsHE5+ZhYXbYQsA2U2BEjhlWliIohuozQ0YlzMTICQbZAMB+Cfwsz7YkC6jNrgeGX2sj6D4VgHyHTzoHJXheouTPOMAwTk+e74t5qM35+GYx8c441Dipzp0eUKzFW49jD6k0tME588/760HsBwb5ppkiJ1MM8CmJtwLtsXdfwfOvMChQDDTJNUztSjBJmLkC7/Rh3x0A0F43M/tWnj5To5SjBLtViPu/cIRNjcg3RT95R4GK4hSPWrI5iJMAqr5ulC6FyDdbNHEcPTzB4cToZJYBUPZLegXsupyWcFRQbZFuo54jC7hJM3TJI5cNUOaHdQ6WaJMsY0ebNNbSvhdAUVoHFqTv6t0GWZIpnXDreZ6FH+AdQN8BsGDp9mtI+MMEMca1xYfjNR2oPUBVSAYeB4tUWfGa5JUuwpr1V9LuVsH1j5g3aYPSSQX2MrTuqMcO5ZvKncCpc9UTZ2Eaimqj+QZ4J0bfGasNeVUxAotWc6LtAA7fJ0nvea9roHsYV/vuxV5RYCUnGxMx2XqJ5pMjZnoEbFbODadNlryjEApGL15QCJVM40SRkN/SvilaJcm4dKFKtqwMXPjBQMuVt7m56cG0cqfjBaxZALUpGFhtQdvU5N7k0jFfWDOmSLMLWgK0E68p6EXuZe36clAYaRimVGIT2GlCmFXVD7vZSlwpd4vzVrz08t98MdRYJZqEQ1UI9gpk0l8GIOjmoPv/eHw7DWTh8c7s5MhFGy9A5RF1OnEHpBEzWnEXh9tGIqv/Uzz0PLMAnWqkqY1YEvJpSIiLdYC/kTx4oMkqZ2QCuj2v9LTSanmRDxUjLPSTJHnNZBrYprvClqTlNXOSLeyeY3UcaQiqkq7iU1CFXEuYcWE6+k89glmMkyhVRUTbb4O3cJVUM6LSreyOcu9Y1amCGkWHVnir9zl1IlvHsQ4eKFhpz172MGq9laVc1YHbYOOw5pVUE1np8x/LB9UpDxuY6cXWNI6oxgtmqzdsHkKmAah2zvDx9CPsXaovMDkWcCtOxGrzjTJLlnZkHIZ2DjTa2rfyADsG3VcB3n8/maYmE6LS+va1IwQj7BWkoUSn8AUT3T7sOCU75hLkqoD82LirWkYk2zEjLKYy1V3QJI5Uxr+o5GkFKfObjvgevbrA/QKI21sypW1UxrsgMMw4iR6iPd3Ea9P37vYqMs1iLd0CqGXFSKRiNEta3V6X/2Ig0dJbGWhPqcTJla0EWVnNWefBGuDblR3ltr4Q8k87GWVKjLNWlKYRdUdlZ78gW4t9YHlMzFWtC9dDETpxJ4JcwehvR7Tr5cOzSFyXS0qf7VeQGM8hRCL+jD8/d/AitnGi/v9f3TIKgSIU6mwq3sdYlZHfhizn1LZNVMk6SbklvMEP/uhJRx3fUOaGVUy3YKyuv7OyIr5tdbfJsMWf0Llbz2age1Kq7FTNYwOxJh75X+1s9Yl8eGd1UIKr/4xfC8jlbXU10c90IVcW4UkyopiW0IY4CrNX//z8FMq6T5VJW261qFqiFdHpVKiSjVpEBs332ib7S6qO5sabomVQnnRnGplDjX4xwaxAY7qfUw9pIXU1Opk9zJsIJq7m9oD/uJDxqZush+GkR1JFKzIdZU01Y1t8pVwDT3ECc8G0QA2fIuSbTFK/YhVjY3gsWZdtVM7BmiRTmnvEFXN71Xw3Us650IsjDT1mpj5ehALUg6/Gr16d4B/tsJUaatom6Lx8HdSIumOOvgq1XSNBp
22BSr0mr4UwfbRMFwwN/2eTBgG6WqVy7MtoxEj1kvRbwzXxw7Vig7+i1CAJcLVK9vPH0QgxbWrd+6395J8M6MBXW1S0gK1XYT6GL8K1ryfq3pDdCEj8L4dpAlq/ojxmqfAFuJcdMI8Sfm0g61kLoseeAXjOOu0P0TDB16AmxPoWFHhEneFjprkt7sE3OGdnwsIJumNHNl6Y9S5nkyF5SrDmaMWyqrTZR0gxd7CyASNWqxl6X5qUb15xRI6g1V9vZfGYJVlnM1TI5WO1wRCr1hdgkicaNM1dhK4S07MkaXefzU7IkHWW/M2byNe4K+CrWpUxOYnDiYEw0u54n556+d2f7lEXNkvTgFc2m1E5CnLP8gfs7jdW27+cYOfHuwqsT7jgVLmJaFwOQnbkE3ZH3NEiK31rVz4hlBmlYvHPPF/Zm4FMRXTRevfqsLU+iTwSZ6iuW6zXnHVOzarUEWsSdZ/wUSBSDRGL+YdN648jAEfqCsuXoR4YYm1xztiRJ0SLYubuJgQcqY0ZShf8sBbUvEm/9I5QWBC04YdGB/9yxAe1yJ5OYYeoV80lXfaVddnqbwkj91yT4bMFURt9SHnwL8qn0a9znMMNUy/JWVcvtdzMCWyKqILOnvPIg+o42yXIEZ3FDFU9RJzsKKNv3KIu7oONO6guLzQAzuOFtaXsaWy8jWySuHVTvXuG3dZYbTAP0s5YgY234n/dutYGbLdvtqW5xtzWYMXGmoPuOT964IQ6N4VbOd+I21oxs4mN2zITqAdG6LuVPt3KOUoZcFvDdWcuWsm1Y1gXfLDGS3zODjZczjdweu5okEMOr4XVr4IFMqf1wQZrSy5qeS6hhsvtW9fuXTziAHNFS//vsf3XCReE3d2tw3QyzBb1Vo43b65xLxVZgJmjwe/4FdENE4g1rCS/6yGp4N+DptcNfI2zGKMPKZ+iV5aNjPcsoohJ3vXDA2INvfT8iQz96xXrY2vsAYVGllbp45X4awtRTyy0NMWvKMJbB0v0D74OXhB4mG1tJSbgfIrHIB9Ykifqi4Oelpi0kqaDJarz63jFU3iQbQ2V0+b6HuuGdLcQH1s1r94YaGrF5uQQs/3z966X7VFn3vgSFuEhtjVYd+Z9TqK1rrm0AfBD7NRNxJDktoPhzp0D527QA8CxRmuGgcg+iqqjHwc96LTOzs6+NTBD6QLeWOOVsAU4F6XqYbCj7tnR3rHRFqhBWWW6wI014W411Qe2AOE1eeCv5LjrBp0MsuPsYPI+aGPNNH/RnryJA/Q5gaMZBzfWpga5k3WiiX5qMHkvsLEG3tBNFvD12culroyEGmuB59bC+tYeQXj6YY0102pD/X/CoTcP0MfCjLVQY2e1gC3ri0K+IRhiZ6D+KGCa169oJXH+1AbEmitVt1UL2D+jvijk0NccRD9FLt8B6Su1YPRoxkkAWIFXd72aoH4WdY+J3ChShif9DkAPpEWD1mgXPMgOtNpr1QB0Y3JcWf8Dm3GIvwXO8xzhkLUcTnGGYNVfGzSPFpjlFfUOQsmMnPY9YJ6GjgctOK3iQIYgtVCbU+ZxQfyLgM1wwKatgDPSd0HZS6ggZFExtnvtRGIJThtVOQliWbV7DritmIGHvw1IhjVmzgJbKcrLkY7m+jJTUFqpyTGXCn6mrVkarYegDynuBcdCdUSDbF+Icp8iprJSDcdkC0asbVWOJgA+01Y1TtqUtYwdE1FPJDi3a2Lw49YgBJvPsK0E6Jl2Y3zsV9ickbWMHX1R4Jpz8TKq6r8ahA9v+3NbvUDs9pSpNjOznlPJb3GPW91jeiPANA65fvDLiYPrsggd2P6soXYPUSl69SxjstXOXIs4n6Ke9xwAPtPEBNlNTsdfk03YsHZN8E3QAcJsC5AHYDlkTqWBwKsLERcnkbIKGdRcFN35esCXavpd7ltk1ZsfBrrC6N5vfbvUbGYjgZBduLB2gEtIC7U4WRG6hIvPH8Jf1KZA3WWGAa4yvsNhEvNDVoayDBXW7vWQGsYmNjiVjnm2TFu99mTvc63PL9hxaBzYSgM8WpEDAUK2YcKarzO0P/Vxysc8WaatijdIz1pBVKt2RCOBVhsczjWIKQKyDhHY4vlpRJfjyrRVyw++cet0yliQqbba+OINL0J7uX5k+/BASrlRvZ2hyrRVPZp2RcgGwFyTpCJMi62BB9zcxHeABlqOGzHgU0p/OuAkGDyigKvksAIu52TTLcpFbe8CC5ROx4B34CVWYCQatIal3cgOsIxzunVxy15Qvx7c/OPfSvByz7I2ZkjSx+Z9hEPWOh+ayBConPN73bo9PNH7s7X5wx7EMnNqLRypDzbiMXMbaRXPlgAlnl96/fVgca+hCrKgDlEM4CM64aIgZAcHLfhHJEtg+o5jMderDkjvjVck7s6wLsZemFAti+IOmeDSUajnP00B6eQNA6TT3hEvpHa9zXuIBRt1/fDgmkdAEyRuqR/CE9kC0dEbhbtHFHHS1BjhLNQRC85pEp0HrAHoAO30niw+vgv0aDmVlizK3XW2eQfSaYJiEDz+VVt7UxZfXwn3JJPlI16xj09KO2Ts6IwB0/yj1HaA2GFuuiwCpwLUxGnvytq1BvIvmCLKnEpuoM3zM+1WxIkz+QJNNkEDbW7mj+/L2IqbgfxSCnzMcqkb46Bn2srikUgiZRUw0ObyIqxUH+wgN4t+XXfpLtZhsCsMTl5utb4/EiG7YHEKAlamXD7Ywa7A9pqeNR3APxoGucrQHA772K+ECFkGilsIkMIr07QvFbSr9uIs0mdNETQObqWh0Ses67OQbZA4BgApLHaNAi1w0OIxbSCYcMVYm6dWGxyvhEX0GWQdIK7Ng8pdFbigRbH8bp1OGQsz03y1r7vWWo9XpXOXfXA4Nw4pfKZHlyvOKFYyC9mAmGsLtFz0WVfsmJf2HYDh3jSksETqIgw0esWHHZvn5VxVln9x0LuAQoBhSGHRSD3QRovHVJwdaEmHiTqmhwjM8/uxm9q08XJNgllQSaqRegS00ZdSYAdW0k3dU+JhOANLPLtLF6bnBRFGYdU8PcQmo3oXx5whSFGbPb0ST2bNHRxOhkmypbLbRZPcWuF54fotZwhO6FpOu/xBJEUGodU6Z4JhVHYWSd4FyKRqOJagVOWGSTIHrtoBbVDs2pUVIs1Pw7EFo0o3S5QxpvEz1KXt0cR6emJSA2sQqgANoemSfyt0WaaYxqJbqErL8GG1XJ+GYxA+FaALxmfK+T4ywgxBrO2s9txircjkmdI6mw0m+1qETgUYztzHq7Ff/sgzwzUWYy9/raaerxeVR/tY9IbyMJtM8LQJG2iH2aHg19iKkzojnPvSVpX50WBX02KxWoUMtLY/GqpQPZo8E6RDnfUWch3QnWFF2YWLUxAotWc6LtAA7fJlnudDe72chfay99bNoLUMFbcQkJrudqbjEtUzjU9N7Q/eheb1CK/Q2oaJYwBITdnuqypSOdNYsg9y6Oa0VhxyDRzrEHFtHqpNFapqmjUOw3aJfV/Xo7PC1lnsl0/78HBuHKnpgwWsYqaxPc4PrdaOUeNPUutSN94BGu5NIzXlD+qQLcLUgi7M9VlTS62+Yqb7WWAhwDBJiukH9RhSphR2Qf5zKUtVK9XvGnx7m6Xh4zS13A2TowSzUK26lx7BTJtK4MV0zmpPLG9X0BT3wMFH1HbmZ7YkwihZiqdzOrPqFEIvqOO6mgRzs0d8RHcUdxkmCVM8kNWBLybpgl8ez8muFE2RQdL0DmZlVPupVUnlyvTeNcskmSNO6RCBVsW1sJkupqSsZu+aXaKMITWlujieCVXEubvNEAhCYvXzlWUKqSlrssXfuUuoGtLZjEANnHMyx2xRCzOEVDDnUjfF37lLqRLe3YmGYA+cszIGnxmsZi1KWZeqtu1wpB+tKqgWPtNX+hEad4Bdmtf1fF7GVpwFnRHMfrqnhJergGmhtedmzimAF8tCULnYFsLwTJAuu9ErzrSYJscXdLFmEVAJm2kfAA3QbptnM1zHXqOZYmE6LS9vazZCDXWQEhOFJxNBVM+0Kbww5RvNooRa2i2Yi3k1j2CtoIOUWHULIJUzbcrbaAQptfC9fDefQ6g22DEHKZMqVtWAiyonGB6MGKlWeav1Z1Xz/MITdEhd6IZWMeSihGk0QlTbWp3+5+r7HSTMIRWF+nR
22BmVrQhbmu8EW4NuRGee+noj5j3jBFkIoq1GX47mfKlMIuymGeCnwB7q2w/3GdIlCpCnUJZtpUAq8E0VyC33PyCfATmqpSPL0XwKhOIfSCPke0cj6m2i2u8WppvJPG9F4qHszqwBeTNI1o5XzKNEl6cKEuUza3vJl6B7Qyqm31K7dU5n8+opXzIb/e4tuifm/t7VQ7qFVxTaSwuY1p5WTvlf7Wz1hzFTY8q/zZiCdbVnJEoYo4ZzKqlbNKSmIbwhhs/mxEzaeqtG3BhKohXcm4Vs4qyexRm0lR5c/Gp+rOlqYSpUo4ZzKylbNGcm6biMbkT8fDypqXZflKtp73aFVBNb4u4Wds3Di0lbMusp8GQR3i0mx7/pSINuu2B60CKj37xA6JQwSQLe+SRNlqB/PHJLvBK860wSsBpCFalHPKG1GHoU87XMdzXZ97EAuzzDkYlZN+6X2IFiTdQ9tJnF6Z8g1mUUJ9KNczdsi9OFfuQ1s5i6Om7SSiptEIUuoj9k3Ne1nJEB7bysn/2aRBIOok5nLsy2jESPUR/9Zwfdg5Jo9u5cRfUWqQpJOY9fHH0QgxjXOj038uexAMcuXEX+tGv3rShiNCseMdBmTVOMqVE7480O+eLIdZKnwBzrnpMsyVE79fPkmuEvyes877Dx7nyglfA5V+2SR5DWTPCDxmGi8xLtJgUZWRrpzUqT1nTaq/bXIWv4mMwVOCNVsr5tliKw4NdeVk7uCxLCbqGwbVYs0puI3IEfzX+/UG223AxaJcB7tyMn/0aGWDXqF1XhalzjQk3j49WjGu9ZPAxl0so33/M6Z33kS+xr3nqDImJ5HENIQxcQdXs/bdP+9RFydq6zacLgBG5SiITaI7Ypv+0wl2fvxSv+gThj8hM9G4HETjtonQHbEni7j2nP8TlhL/SPB1nq/szTAyx1B0TK5eD6Z3xBoqt8Uaq/YjeHvLPfvEjigQOQOSZKtxRv9y7RiwpHyqToX6iykXM+UJIh+RLjbasAGW1FYYSncx68oCpv4tRBYEDT/TNnAvyh/U6xwfAa8mLUykLtotswZsZMTPhvKo0Weah4X5KZ9Gv87xGfBabGy81HIzHdnjnzVQnHNHnmrpbJcgR/Qp8B0hTnaU0Tduu8t57oOBO9X8C8finw1Tq9y22Aq4t259/2wWda5tEMvn84I3/4HGYu7/yM1bijaLOdnujWhbW86Pzwo38a3cPOJsi8x741viQZ8Yt1JSLzsrReB0uzMXrWR+Ov2PB56fz58W+1uI3eupfiIxIefboj/lBpnTPh2mXNTyXEK9FJn+9VQjPRInnCta9ACfIfXDR8LdWWrr4viVj/71JMAZB14lg5u/Zmj/fSY4yWtSDWEMtXf4rYPnmHOGPtN8itLGEjQJ0l7EEnQ/Epxsev5EhtK/rRWxNp9jTzQ0sv2v9PHKYyPqyd2ZAxQ6ZjpYon/wdfAKEbNHmYDzKR6DfGBJE1Ffrs4cTf6PNLCF3dSe6BXaFCFTzRWWD6ja3R4xbjXOS28uLrPNIRb75+9d3Qq3+0unaKWIyXZnTrckWuuae/9M6PoSMSTV2eyfv2+94twNegCYbTMMRPZRVB38R4XW29nZtQZmKF3Ay7eELcCpyKovHxTP3rbsD1LJB10RuISbmYvoHwavyR/Vr9jlHWT57GDyMmpM8xdtjsIB5OmWwNF8NrAjd7Ikrm6cGkxeSgx4QzdZYM4gGUDgsyFq9B6se335Bo+U0xIKm+yvS655gP7ZEFV9vwdDBFu+IeJwZ6TodfygRhLnTz8hom0hLX4NP382gTka1vVI3f0alATDpld8I7LCjTVB/SzqHhO5UY7qJdYgJBo5bdZodriwNtQ95eE69D94mOzdKnSEg9ZKNv0BEav9RFyQG5PzuusGFyBz2jpkxIO2OC34RyBDXFZX85gQC2yuR2dOWzvH0daioiBkQTG2e+1EYomz8gD/rchSBbbohllpVyNCtcWOtDGwEnJtri8zxVlXXHIx/JCajlVNCMCcYoQ3mMzWo0G2uwL0hdtspZq65bPhUsI0GYMPKDCyHL285Sf6zIXXJMG5qInBj/+mTMTDYrasKtDFpAZKi1fYnFGU5InWpUA6VfVff1WmjPtK+14gPO4pU21m+cirqxYX9oQZO3ojwDQOqX7wGx6+3wiZDvKIHdUfqBS9epYx2TLz47+Mv6jnPQeAzzQxO88mOxx/z+8ETIA8YkegDhBmW4A8AEuWOZUGAq8uRCWzxfqtXNFddOfrAV+6uYITCFuUqv0w0BUGJy+XqGrzGYzfyw1F+CZPC7XorAhdwt3hB7TdEE/DAGeaLqKbTj7swrTfzAFB78tjPrf5yrBl2uS1J8/VXxzO/5fBRYwDW2lonAHrKozfzf145nP7xy4Uj3myTJsKbDJswu0gqlV7opFAqw2MN2BdjfLbOR15fyJcX5vnKhQ25qSumUMNvDUWZKqtTnxFfRBaxcn/hOj7OR46YIJnfaHKtKloR9OuCNkAmGuSVIRpdWngqdbOGbgdas0BPKX0pwNMBWOnTSPbCriki7UOgq0nJGfhdLxWlJvX0AGiokFrWNpKdoAlXVaXOCq3txEecfKX/1Fy5Fj/w/VpNX1snqdwyFrnQxMZApVz7hXo8q32lHd+Rja/+JOiy7pfiNVJ9MFGPGh/Sa3YEqDE80uv8IhpOLlQ+ROjOkRxg4PsTrgoCFnkoF2Y3skSmL7jYkL4+cW4UlGU+9m8CdUOFiVqqWdDPf9pCkgn71rW6Fu3MiHEgk6jHx5c8xlsC7Rg4hbvajotWyCqdMcCcdIaMcKhuqmrzVtwTlPBzgPWAFQB3nROJh9f3TXmgL1kNWNHVxxIp6oWg+DhV2PtpCy+vlrlT0bqOZWWPeX9a+5v8wZMcyHzcXdihwm6LAKnAtQTp8Ejpr6XzteWWxRPX0faPD/J9LSz2Yt/9Jpsggba3Mwfz8vYimNG+Vsp8FHJqTQOeqZNRZ46I4mUVcBAm8tGWNnyRw6Vm7HDuJcnWPbrMNgVBidvW63vIhGyCxanEDBhZboMT+xoV57bCz1EBg43DHKVsfE4+ZmVBCjLQHGLAVB4Zdpd1yraRXtyAf/wj+aIGga30tCI02k33ERCtkHiGAGgsNg1SrSVgzZcca2CTflwQ22eWm1wvBLE1GeQdYC4tg8pd9UeQmP5vwVere4sQ2Fmmqu13XGfhIvQV6Vzl31wOLcOKHymR5eDzhQrmYVsQMy1BVouIHyUuIKreAdguLcNKCyRulx2ahPnQA87Ns/LuaqSZQCBtwGFAMuAwqKRemittZQCO9CSLsO+Mj9kbb8eMUw+snRNgl1ISaqRekS16UspsAMr6bQ9ZXrUgcW/HjF1YXpeEGHVv4rm6SE2r1fsDEFKvLvqDH89Ypo7aJoMm/5dFE+T3oR56ikPDcFJvfB7IvmDSIos+pfRO99C1s5ddouxL66GYwlKVW6YJHvYqh3QhkpQW4w+irpGmqvhmIJRpZslyhrR+Bnq0rYRWE/POndKZ87mCVWAAyEWOxS6LFtEY9l/zqZcqGlfKlquYDjm4FMBUjSn9vQpCrPEtNX2o7P3guAOMhy2tM6WhgahUwGGbeHVGHh2qMZietK9/LWu63Mx9QvlgnR5/WFncDUJG2iH2aHg19iKhzorlLtqoyI9mNxMi8XRKGRconjEUYXq0eTZ4BzqpCXuy8tkeBvNwsUpCJTaMx0HaIF1+TrP15TS17IAzca6l7w/BqNhqLiFgBQnO9NxiPqJxif3DqAPJifVCZPCrDzTMHEMACkW++WWgNRONJbsw5yraq2oUavOOERcm4dqVYWqm2hcPucg2K5lTxdnhb1nUaz7ijMPD+fGkeLAAlYz4qLyRLi99pRH95jqFnSWfQJouDeNFMsHdcgWYXoxF+ZaCS21+oqZ3meBhQDDSLHoB/UYUqYVdUEdzyVPhJRz7bj6Ujdq4ODj1Cp3w+QowSxUa9kvqkcw06YTdyWIeNuDlv12ybd3nQMeUVOTmQijZGmeLqZOI/JCOjsXtJr3PA8e0R3FXYZJwhQPZH3Yi4m64JdHnES7laLIIGl6B7M2pv00HUzV08R3zTJJ5ohTO6B1US1sposxPc2D6F2zC5QxpPjaKG3PhGqi3NXmfbP6dXeEZQopFk12mmwf7eeSognVwzmbEaiBc07mmC1qYIaYFspr9GRKcC8dQqkW2j2JhqAGzkkZg88M12YtSqkG60h7LZ9TadVBteuW0mfrDrDLIv4aJzotYyvOgs4I5x
22atq+0q5GpgWihi0Wu/VFCwhGb1Y3hcbAtheCZIl93olSeaP1T7+oW6oKA7EVTCZtoHQAO026rhOpbnc49iaaL5DEa2Zjv711/n0gUJISUmCqU/gKieaRxemPINZlk+feru5GJe72Rt3192VwJCSqy6BZDKmcayjUaSUS+u5Vv9DME8zTzRr+E+pEyqWFUTrBFcTxqMHKe6LLX+vJer+UpaJ6JfxHlIudANrWLIRQnTaKSYdrSC/kurc/llXIeUKNQnRWVqCdYMrJ5Z7cGXodpUGu29pbz4+9Uch5SoQl2GlCmFXVDfrPbgS1Dvp+oX/XKzVCsDB3eJZtpUAu+JZPYwpN972mn333E8o6gqnt4LYFSnEHobVvBu1Qm8Ztrnsn59Oha4ZXwGmMRV8WBWB77NavuWyFui8WonF9rk8ZkWGERW74BWRrXVltza4fzPiVwBlQPd2juCeWTXAxvMYat2UKvimqRK1rDJiVgaYGlm3gOhsmeGCRwYYYxp8WQ/nRD3Gp+BKuLcKCYnkSd7+FukCsoMU0yLmk9VaRMmoGpIl0flJKrjYhIZQoYYYtqn6s6WphKkSjg3ikulRFJmqGHB7JRMMcO1h7GXvKSqxngOaDvDCq5d5+VHvJ4DyFRGeqnWssZLwKneIUBjjHBO/BE70CpgGpszdmwzRACy5V2ETbzjYMwxQbrsBq8408QrAQREy2JWfQ79OxtgnT5TKsN1lOv52oNYmE4rlPRLnyFaErO7ze+tnmlj40fnrxnMooRa+vTUnYkkVu7Gpz+DpjxoNr+7cqbNJYxGkFLLGsjp8OExvy0pGhr+z8Yt9iXA76+aaXNt+zIaMVItyr81XM+NT3+GDf6KxCF8BMVMm3WIjEaIaZwaX6vZrUFAB3+tQsdTi7m04Yhw7V4aHwVpWCDBpzMdUCnqshymxcAX4Jyb7o0SfkdUibskVwl+z7kn6v7CYoLPlSc6gkLkJXldRxhDZ/iYatdnnKVBKMOxXjhxl4hcJYdQh72cxX+lPgZPCdbKIkqeXa5qFwsp5jo/y2Kigyhj2uDUvoyqEkbkCPL99dwsQk8XhyGrf1Eh14sOo4pj7fOyxKKldxwRd0v2t47rnv5z4q4aWTf9O28iX+N2cEWcM47JSSQxDWFs3KHVrH33H3dGujhR29HVkE47KkdBbM9Ae0ds03/pa5c96ob+gjd6xXQQJZSzjstB2Ip8rOMOsV2IidbzXV9x1XgQFVwb5/nqzjAyp+BUr3574zG8I9aMlFsfNVbtS8J2GEfwj+f8q0/syFEg8hnhUZtn9EcoxIjFJGPW0o9BnGnX5NwMrAkiH5EuNtqwIRbUWhjKz0GYabN+rf4BIx+QDr+gbuBe9kgt8kTHFeXTZ8wZO9RFu2U2XMfVGf7x6/dZB19QvuD4VKIG5WDyAwsy6tODyb2+swLA2gMXEFos0CUVzzoTJjq0zaYIp16PGblOVrUHOlefz7OfDDzTPPNpX39wG00RpKbSGBznUsz1t3Pnyv2zWdiptkCT7ydikykCFW+NB7Gpe03RZkHnWmisOegq8gXDBlMEMz/1svOQky02yr3MqQSG1acIdlMpuY8tuinE2RZqnzB98u9XwmHlKYIUX0P4aRFLeXewPJ9ImsCcZs1lbuqZ04BYdYogdU1FLc9ir6Shfz3VSI/I+eZqt2uvmd9KhEQ1TBEsq7PU1sXxK2P/ehLihAOvklelRciERTVMERzayWtSDWEMD/Up0b3mOQP4ieZTlDaWoEmwx9o4KCscGNUwRbSziboLIIkMKr/oXz15BD7P0MjiVfp4eAjBUSOxaRejY6aDJfoHhvUKkbM32fxB2gpb+0uUdCYCpE6iaz0jqQa2sJvaE71CmyJlprmiRCyGqv3y2ONX7XoASWWU2Z6kMto/f+/q1lC7dekUrZQx1wJzWpJorWvuHRX6KcL/EjHahXXu3Dlw7gY9IEy2C/QQ8VFW7X84Fn2BjUzpjiWqa90KNNyoC3zplvDmRHh5giX6n40Fj39C62gDnPlMjzOdSIrQ5dtcT6Fi0OnMDI7mZ6M4av3stbbRzw4mL8OWaF5usme9QeQEWBI4mh8O/sc/PZ0siSb6qcHkpcgCb+QmC7VGaXj+6Wh+PPBXFL1vGqqPvb1wg0fKcWVXe6+ZXrFmSz8g9Gv1/SKMZnBHHO6MlVTUtDMo30I/KOTZFuL5NdgmMKlhXY+Ubj1wkosezQyr5PhRwc+FWtQ9JnKjpHrotgYjyaA1LC3RDwt8rsSAley8Xyg1tPgqfGSD1kg27X5aoLPnBXclAaxv9/qUVvroddhIB21x2pMD/bRA19U8JsQKNzOjaxTj1yL1wkU+ZIG1ExSc6ceFuF6AVS5BkHEYIfNU9tQNE3o1d6KotRS0PIeXOv7tp+Wd7xFf45KL4cc0v8MOrAR9SI+YGfsQ9MODa3cF6Au32UrfE9EPy2sf/CjgvjJCmCZj8AmF/NAIEWh6gvqUOTj2xIJyURODH/9haftPXDpULGZrujL0PAokVnIq+W+ZsWMi6osD53SViQzyBi5iR2tlohfwOqJUtVm7GUIrfI5HSvujZuzojQHROKSS32K467KIfReBKvyIpT9o6jp6FqOyHcyPe8Zf1GDDA+AnmmxFTbMdjr8mm1h3EaQ+7ff4+Q0QatsGnbkWUfX+dyD0RBN7bCOzRcoqtl0EqcAMpQd86ebEAMVFqdoPg11fcPLtvJi9+Sqjni7LLsK0O3yTH1/UorMidAl3Z07CXyCehkFOtMZL9FV1qR8s7ymz6yJMC0rGjvbWLsOWaSLei2efa33+K4PGwa0zwKMV1Q6fdhz1tFl1EaZ5Ztg/2rjiMU8WeEM3WYLbEyzqWzzRSKi1Bqb1lQhZWU+dTRehWuDzzbViXIXC5vSSNzdPp4yFmWlr4/VfKq/WnzFmrj19Fl2EawfMg7QvVMXC5qywImQDYqqxGCVVfTxkW8cDey5CNm7EGI4x/ekAU8HgoZd4GpIVeDmXyn3rhe68sOYifjvIBda00gGiosEjB2sqtAMt57I5rQvPaxUvbLkI3Rp+4QJLfu4BT+GYNc+oZAhWyjXPusUPn73mhyUX4duh+4VYnUQfaIoH7YfUii1BSjp3kDxP7LgI4YIcoqjcDa5OsFQQslgCaRWTJTiR2w7KioswzhWFrUBynV6QpNpaTIre4citvswUlGqcDRdh2qrESdswbFp4ZMxK2w8PrklSKBfYlw7vajotWzCqcxZchGmrmAO2vpICcSW5Ixac8yz4t9YgxG+lYxrvIkxbG3HSlix7yvvONu9AOtdaDMIHX1nqQY12EaoFlo94gV/2Ix+QsaMzBkzjsIfWwobgaxE6/LY9RzXWRbjmasst4i/HOtLm+ZXF+Ov1JHYGT5uwYTa5I5ke10gXYVuqoQ19LDKn0jjo1QVI7fG0SFmFDLMpb4TCOBfxOJC3UuCDrPo6DHaF4X1ix1KXd7EI2YULiP6+EoZRLkK4gzmozTk+3DDIVYYmia5jP9udLCjLUPGKAQ5jXIRpF+3JBfzD4eaIGga30tCY3WmTfidG2zDxiwASI1yEaSsOJ8Ym3Aaqlvt4bseBUKsNjB08mJj3orQOEc/2YdHfRZi2alHy7s3TKUNhZhonOwIW3mqkPa/OrcWzDw/f1qHR20WYtqpH07OUCYgJdmLpBVpTT+hHbTXvAA3vtuHR10UEg0eU8CYHGYGXc9Wc7P84DSz8W4ZITxcRDR7dYCkFZqAlXdod6BLt0n49JExNRNkcocAuTPq5iHDY9KUU2IGVdUo9/MY6BzwkdWHmJCU0WIVKLxcRj5mT5hnqHw1BSrzoZobwkNTsHE6FTbj0cREFITvKRU9JaghO6gWciN6JpMgiYLq4CNNcgc5d2HkgK0/OnixB6eQNk2QPMj1chGtTJTwl95g10lx3WVMwOnqzRFkDTQcX4Zwm5lj/3xiD0AFaECJJXyWxLBQQdhHSOZrKXXXxwZet1ak1ZqUS5kZcNwCHdXvPloaF0akAw7bwagw8F+K6Ca66vP6wM7hWxgZaMzsU/Bpb8UDnPlw3wlzMtFgcSyMDremfGapQPRo811G5GeCkZ9yXl8nwNttMbVygNf3JjFJ7puMA3UbphkCzse4l749aRc5OweKouIWAFCc703GILqN2U6BxBqyrMNvLV8PEMQCkWOyh8yDdRfHGgDOq1ooatbV8OURcm4dqVYXqLFQ3x7XuQrk4lZ3es5ihvhF9PTycG0e
22KmQWsq3Dttacaf5Kal7pxAmi4N40Uy5k6ZIswN+Fc3Vyy/aXvs8BCgGGgyq89UY8hZS5CulSLL/pSN+oJhvDBrXI3JMEsVGv53L1HMNPmHqyz3y7l9q5rBh5TTk1mIoySpXm6mDrXIN50zkLJLu/kcDJMgvWzXPAYZDfhfGPnZJcwITKI1lIuSA+zS7h4yyCZA1ftgHYHN28XKGNM42ujtN2FuoKrtyjvgWWKaSyaqtJ+LsIm1A0coH1tnJM5ZosamCGmhfIaPbVLY1Z7Sl3AAarrAh5TVoVnhmuzFqU8l2VJtpbp4WvlT7pFqNFA4LSMrTgLOiOcW7RVy61w2ZMuNKsfn5ixW2N4JkiX3eDlbjSIRxwqYTP9AUADtJOU0teyLOv63IOYudkQIGVKFEp/AFE90zi8MOUbzLwNBwApU7bdAkjlTGPZRsPadPOQErIqVNUEawTXkwbD2XjjkDLRTcEqhlyUMI2GsfmmmTZl6pOiMrWgi+qZ1R58quivnSNAw0ybslKXEmVKYRfUN6s9+EzRnztHhGaptt+DurCZNpXAK0E0l+D3HPwFolGuZRXqQqZOIfSCOq5WfQReO2GTZBMVwqwOfDFJ04i8dcQGkdU7oJXB7xdNf6YdfiRtRF46Y3PYqh3UqrgmqaIc7mZE3jlkY0ybTnVxXIEq4twoJq+csimmTTmfqtImTEDVkC6PyhvHbIhpnMtgYbY0lSBVwjkjlxfeTjNce6ghmpOp17jXc0DbGVZwbZznH/HODU7mc2+oEc6JP2IHWgVUC7r3/3WGyKfeUhOky27wijNNNie+AkRey5tqgHX6LMN1PNd13bY9iIWZJkl98mfFAyKv5G1VzzT5ZEQhmEUJ9WruTCSxcrHDn0HTnzdWOdOGHNAQpNRLyRevC9NVv5cUDU1v3lrVTBtyKQsaYqT6lkutf+yxNo5Pf4ZNX95cxYiLn8ABGkJMY/Ws9zb2ZIc+Q6cnb69azKXBIcK1e2l8FKRSgkHy8wYrRV1WA/NU4AtwL9UHSl7eYpW4S2pSgt9z7onq0BRTO2+yQuQltf56YQyd4WOqXZ/PWRqEUvt64dTK26wOezmhXVIfg6dMk1U1h5lcBnWQklSdN1oZ+hJfXCtbcAsjcgTe/npiu3W5OAxZ/YvK5q1WxbH2eVmCLriNyCuKFyfbVn904k4d+sC66v/+u+TNVsQ545icRBp0vI027tBKdPn//z4Tvd1qSKd3e47KRYhpCHNRcYfYKf/Tv+XTG66EclZcHIStyCc67hC7BZa3XAXX/vz8XL0nCRnXWDGajj68wTsgluhNV8A01mfsyFEg8hnhUZtn8NvBMOL86W0XZ9qQnBOzTBD5iHTqODT03OmNF2ba4J86CyMfkO4B37delE+fynchnlJ9FRuu4+oM//j1+6yD75svyKjPJPG6MA0Aaw9cQGjB79svxqkXiDZ9fwfp3rmyLO4dgOdKfwBCTBtyow/LWzHXd82dq+rdBTtP+iMQoRpvRT80exzuXvNETUDnSH8INoiZm8Zedh7yfNQNrB6765762BMfJUXi2agjWDlU1xCuLWIpawfLtxNZbZjrClaN1JCKWp7Lsr+BuX891UiPyHUGsC0b8391HK2Y2GGuI33rX5H/A/zQ1xF3HS/QnKMVt6wawhgWlWP07xy3DPz6XugLCbwXD4cR1RDG0MlO5BH4OegrqU4iutSKIooOlugfvNErBM6v4b+UKiRTkS+TpoMluj/f9RUOKVI+B/a1VBllsR19RDL0ru661VCIOkUrZdyH7IuJvr4vESO62QN37hwPmE1HDwj7aloUtNhow9a1rtCJM1MX+PpyWhC0jjZUMytHJJ3s/ylC19dTcdT6WV8tbHXnvgLKsCUaYz818AueTpZEE/3UYPJSZInGwv3kwF9R9B6sj72+EEy8HFeZsCn40wM+Vdcvwgi23CEYYmeoSkVNyZ8g8AmT59dgm8Ak5odWHimtPWAqFzRFf4rg5wL87Ac7Q8gl1Sk79ICoZMxm9icJfK7EgOfQ7bvxh1JPgnfBRzZk6JsJ+ovJXUkAL823OjElrzcFHPXBRjpg+BsKcp1vokyIFW5W8876DKkfOuEiH64RNBXknB35Br5U5VIFtug1w8FbN0xoVg2Nl08DaCzvfI/4GpdcDD+m+X1Vb5EQ8x4eSUzorx8eXLtZ6PuX1z74UeCNaTIGH9N8Ha24+sbEhcV8K3tiQblF2aftP3HpULGYzx8rQ8+jOIJHvOLqCkXJM1FfHDin2MtwjR2tlYle8RxRNiZXbWb5OKDq+ZGO9KhzRuuNAdPmNeeFK/QMVfiMpT94Bac8YuzrQ7b0fEbEp+eobckB8JOsvW0WLXqkeMllV64XyQ7Crphs2yCj5aJUPRB6onH92UYOBjxSV9st0HfAp25ODFBcZJ2rGwa7vujc5sV0KjvcJdvfmlQyf5PL3d+JJHRBp3CBOWE++IJ4Gga5xtDkc/V2GhXcL5brBiM1l/7gEvxVpqzqh8CmaV5ssgs/f+B0HXzEjkPj4NYZmal6NbAQ+nuY5vPJGSVPnugkZsAbuskS867MpmTxRCOh1hocWrHPrPNvB5OrtrxwNH0aL6ZJcnrJm5unU8bCzLRV69d/qbyN+oyMPKIpJ8H6YiUWNmeFFSEbEFONpZK0qusVm2ylMQfwe4y+A06C0aOAq+SwAi/nUrlf9R/UbONGqdepqANGokFrLHgjO9BiVrbTbsTzWgo03Rp+4QIR4XvgIxyy1hlb/keGYAWtxD6JeZ2Z+Zb0jEoRnEQXbMSDdiXvxbMlSHGTgH1BwgV1iOLEtcdPJ1wUhCyUQN6CyRKcyG0BeYxzRaEmBcj9bN6EamsxKXil9a2+zBSU6OGOaVP0etSP/NgeCWcR1g8PrklSKO+mM1tX02nZghE/1DFtKszpr4wRrjzK0tXmLTj3cMz4t9YgVAFA51EiWMmptGRR0tTZ5h1I51qLQfhUgBlzVAssH1C1W/YjH5CxozMGTONlTdvChoevRehUANBxzdWWWxKN9XWkzfMri/HX60nsDJ42YcNsap9FPmDO0zzO881HZnyNHwe9ugjVOvYWq1XIMJtye2pwmKPbjLl1/F1WfR0Gu8Lg5PtSl3exGO3CxScEjD7CJeagNuc4+2GQM00X0U0nH3Yni9YyVLy6H9O8mpLUVf9wuHlHFzEMbqWhMaWBRb8To22Y+HU9pk0l1IJNuACqK+6r/zAQarXB4WQ7MZWktA4Rz27HtEmLkod1attvKMxM41TsPaaKNdLC6NxaPPvw8O1yYmGTVjJLmYCYYCeWXqA1Y6DRLVbPAA3v7iYYPKKElRiBl3Sxjt7B/g8+Cyz8u5po3LQfnsxAS7pNnTf6Eu3S4MHNbiENc4QCNxOOHVF9MtmBlXXOaf0vsc4BD27/XbALZhpcTDxo0lRC/aMhSIkX3cwQHizuyeFUuJeCkEVpng4uVxmCk3rhpMzSmRS5FtWgcxdIa62nev7TEpRO3jBJbsW1qaBbiHKPme40V8MxBaOjNwuUS3FOU+FYAxwag9ABWk7KokQEy51Ipwk7d5mDj37qt56UOeUHDMyVmOa2Pe1r5YQMQucA1XVxVsbAcyOS6Qs2u8sXqDIJG+nmZiicl7EVD3QupC7EP04pi8XxSyEDrekfDVWoHg2e+ygMTn7GPWUyPI1fCxdozXCOFaxu5p1DgK6jMjRJdCcfoynFmy3mi6HiFgNQnHb7UiG6jdLgEKmkMNvLV8PEMQKgWOyh8yBdRm1wpJRs34vaWr4cIq7tI7WqQnUXpsVaRp+cW54bZ1arqI7z7evh4dw6UMwsYF2Fa6895dG7ZdBlNVcjcwJouLcNFMuZuuSJgLkJ5/R1T5rpfRZYCLCMU/m1Z+pRvnRJZC5COn3dk7fVNOfCR2i2hSEJdpFayjyqezARNvdgnbOw21oDBx4szXPy3JuJsEqV5ulC6FyDeH72CA8W7+RwMmziqngguwnnGzsnu4QJkUVktc6JMLuEi7cMkj1slc4HgXYHN28XKGtE42ujtN2BuoLvOK6+MjpYtojGoqkq7eeyLxWoGzhASeiczDFb1MAsES2UtpbcQrztQeoCDlANnJOyBp4djBWeNNnzK1U1lt05sfIn3SG2rnXjtIytOAs6K5RbtFXLrXDZk66d3f34xIzdGsOzwbnsBi93o0E84lAJm3lrH6AF1klKX8uyrHvdg5i52RAgha8
22UnkwEUT/RvHPv0KqYeRsOACkW2y2A1E40n4/RsDbdPFJBVKHq5lfDuFYaDGfjjSPFdFOwmhEXVSYaDWPzTSPFQn2EkenFXFTPrPbg8wXQMFIsSl3KKqNMK+qiHGap8NkJrXItnSNCs1BtqtSFibDpxF2QqwQ/N7H5Yw2RCIRRrESVuhCh04i8IK8p7z/7EVDjnhwOhkm6FA9mfdiLif4nkWNgxnwWhcggZXoHtDampZr9Xnqay4jYgWQOLtFMqHUxrNlrEz3Ng2hE3IAyhpScbBFyXIFqopzQmDixI3bAMoWvth9FVdqECagezmmpGLFb1MAMgW+Lp6dOtjSVVQapFsoZuQjBZ4Zrr1KU/9uM1WHrOaDtDDuo9udnvop3bnAyQisSPCOc27RR7a1oNTBND42trBNEhG5thmeCdOIGrzzRZHXiK0BkwtnNpGv6A4AGWKdrNVzHJtsexNJEk+SeP+sBkYV/9vHLFtnOdByieqbxJyMKwSxLM/Mx8NhDbFCnoLVPPkMzcO2DB7HalgapnGmSAhqSjOqylu/bnpJ+L5edoekNVp+qWFVTatEUsaAhx6kuS61/FDPK6O4am75gdaIHWsWIy0pCaEgRjVv7uNk9BQCdnmAVV+ojAZlazKXBIcOwVocBs98XVyCQ+MFq1pW6lB8fMqWoSzo2qj34EtTb6gNKvP2tseJ64uAeFybCphJ323VwVHv4vedeqaP0h0n7cBiwpJ7YvQsROoXI2zJun7FjBF4z7bqEWRrcSu3LFietoxV/Z094wawOe9sV2iX1MXhLNNGXOza5SK4NYpBSH0z+e3u6C2hlTGOnIUSoB58RoU/9LvBqU0BPF4vdtwYVe66P392TXVCr4ljrvCzKusoR8YzhpaGtvi45cZdqF/NYV/3ff5cuFauJbYKtiHNGTJxENvOPNe6cgetCnS7///8XIiz67B0qLf7OXUDVkE6LiosYzD3wvKi4Q+yU/+u/8gmrqX7XYpX8nbuQKqGcFRcXYdKo4w6xwixgSVLUetfR1B+fez0FIqwquPZnjyzvSULGMZQL2ePQRBrEEqFW/BE70Cqg2qJrd0WBiABr3qXqt1kUxMLWFq8408QJsTRB5DPKNasJIRa38nya4TpEcgliYaZJKt6EkU8494AvVux/6WptKZhFGTYzxO4D8S3tKbNhQdYo5APSwRerOY9oCDJseoDlwatd/6QdcC3XLsBp4BeruRQ8xDi1RkSb6ZHn3rn6HJveBbjHtGWquIaGEKvKK1Ojyv0f1VNe58rcBrZHtXVwiFCNt0a0se1xuHvlhZqA9ri2rhEywgRfgHs19bJtIHtk23Wwt178nnPvuifuYk9d+kDsdlvGjdW0ZwQeU+26LNcWsZS1hw0nDBKz6+XE9mbi0KqR4uqLwrOYV87d68njc+RYu9ZouZiCGyZge83m/3K6CJVJsMOQ96jrX09CHG0vFSzKmjsiAj3vfTKni0hZNYQx/KjbwNu//peBX1/UGTFRA/XtEiSqIYy9s7B97EIe+eVFXdaiok4iuuyhRooOlugfvNErBM6w0+KiTqKxDrFCg1paz3d9hUOKlNHG48jOj0LIqIoaLexdSiRD7+qu61/N8M6PsmCMNQ6qdtc623ODY6MaorlxYunoFgW4b3WhXnSmHhDG2pC8E7NAZFHQYqMNW9d6Lcy1dIEv1uZcClgWBK2jXdGzxDODyYvQRdSrzSXfLzI86qf4ShApjlo/60v1L+7cYPIybLEWvQ8BqVyc4c9AozBmf9KhhM7k1GDyUmRR9Vrcj/a3M8ZkbOCvKHo39rGXF6K5lOOKtejtxvdwKuASoQM+VdcvwgC2BK5LN+8MVbBN5REi+bmEyRTwwf9yGA9sVQ8K+db9Cy0prT1gCr5rTTDBz4X6WdV3TKRG+a6m1gOi6FtK+Y9wAp8rMeI5bPtuJHvI9Wb5dIEn2E7xB3tS/XAHCnaZO9pjEsRL0y0ws9ebAp76QBNr02o2qGte7CAFuq4t6gmyvs3Myvb22P7rBEuEbaG1IFsXi/ZBBBXkOnfkQ6xxqQJb9Jqh/dcNE4iRE9NNXCzVjQkq73yP+BqXXIw/ovn9rzqognkPGIPtucP1w0NHWzY2j/cmA1zNXvvgR4G3va0Zo8+LWMba6hvh14R6YqGlKaHeW16B2Lb/xKULsEtZPypjj2hefBVE35hZdp6J+uKgpyXVjnwraRB7tB2tlYle8RxhatrM8oHDYOZHykesC6TqjYGmtoTWIcZDBizt1j7F8mrtFZzyCFLX0vMZEZ+eH9qWHAA/0BpjZ538Ye4GxJLir1x25XqR7EBUtq0G8nGLrPo6EHrQ7XEuThSwpK5ZtZTvAFDbXMEBiouscx0HO+rOJdPIQyrZPuFOHgld4OlbYE4itSUYX5nGQQ47HX1IzaWFXUPfKtMFnKJ5r84huyp7HzM4mnFwYy00jD+ozP7WPSsNE3WCJnhjNpny5ASqXmd5OpqRUGMtCnsPNuaSvZgcUY8gPN2AmUl2zIdesbb9xsKMtajqG3YKwR1x+HvBMhU09Zi8CNmAGGsrWkiLX1qylUbCu3uMvgNScmHzD0o/DckKvLrr1QQ527hRSl3TSgeUJIPWWHAgO9Bqr1WT/xGnW8MveFjTSg+EZIPmn2w6kyFY9depSfbA+ZZ0vxDASXRBRzpoV/JePFuC1EJdTp5ECb+xhAv8/KEGH96oEzLyIQsleAWDnSzBaaMqZ/mFZZwrClfsgt0LFaat9ut58ErrWx1gYQpKrK0wrBj49WWaV+KkbRg2bcX7fnIj6oYI1SQplHfTma3LE5EtGO1UteIL+OVVEeoOYr82bjSVnORdRzQo93BMnL0jsgYh2BY81nqBwNmjRLCSU2nJasaOrkhwrupXIrEHH97qtnqF7kyZaoHFo8AwGL+kXHKc+9u8AtNu77TOloevRejQ9udaN9VLPPRnxlxz5ekaksypNLJRIkA00VGWxM7gaRM2rPkHjCvuAGFP8zgPQx9ZVj0OfKKJ3XW2ksVqFTKsbWArK/WAL91mvHtJ/s4yp9Iw4PUFJz9DXd7FYrQLF9buLEqL/9Ep6BIuMQe1OcfZDQOdaLaIzqrdkwk3rWWosBaqP4CMHQ2yp3OwZZpTU5K66h+yvyUGWxsGuM7QOAPWVRi/GyaseeZz+8d/nugkZJnmc6gFm3APkBwkMxBsrcGhZFsrSlJ+O0Rgiy8cTZ+Gq9qwdhGbXrG2swwFmmhcy+jRibV1UXEi2+73w4O2DDd4pC9UxcIm94+LlAmQeWZHbRDc2vbJjLDjDNCg7dLI2OBCCD1gKhg25ck4rRIjAFNOmZ3D0GeBBW7Xev/kGt8S1AOiosGjGTIqmQGXc6vq1mWKdmnwaJ/O5G/PBd4ujYDgtxoRvgs8hWNHVJ9MdoBlnN/r1iVuu/Bg2YIzSQng3LM89IuUkfpAUzxoXtnwXJwhUFnX6v4fHizu1/OEXFIPrBcIOdwJlgpCFstFT0lqCFDmBZywmAuiRm/WIlmuBbJT9oIk1Q4ZLC1qrfXv+jJLYLp4w0Bb
2218bswfbt75YY+hD0gyPXptK8jRzTnea6y5oC0s2bBdqqzQHbyZUUiCvJHaHIOU2FY834YAxE/i0nZVEiAm1txEm7Kwsr8ERdYUg6VfCv5gBkn/qtJ2WPCqOWuDEHbB/r5Pz3OvGGzhBkmtv2FK+VEzIIHv+qZ2UMdDPclkIxvFTddP3RH0DHW1Hu8gWqTALHuWFsncL0vIyteCBXmG9KJtL0dyDqq4sQ8yZRZBQ0zg15bQQ/PEL1aPD0WErBvCs5lYahvcLwPrEjPktxgoeQWcBAZnOfwMrNvHMImrqUglbGjmEorzI02YsgH6IysccYBstqDIDCabcvFTSvPTmBvzim/4TXGAa30tA4PcIrzPby1UDZjYBoLLYvBG3FINPYhJuqXPXu9V0HQq02MN6AdTVqa/lykCy3z7RVFbj1uZFWvWLNZIbCzLSYRkdz0dfQGH9YraJNiL4eINutE42ZBbhV3USblAmICVbw1gvcBqqrOQp9AnCst000ljP1uRAwvSFXMG+DEXg5p34uZnqfBRj7LfOs/NozdZmJkHHSvn92ZqAlnboCXbmtpjkXPkKzLZgQtMu0pXzu3uNMhI0bfSkFhmBlne3uQW5rzaLgwZKak5T485nA0CqqmqcLoePEOb1iQ5ASzx96IzxY3JPDUbSJq+KBTNdxOPWHJXg539g52ZUnQmQRWb0DGU0i5gO5Q2utQ99bS1C6eMsg2cNW7UAmls2wkjvkHrMGCvV/jSkY3bxdoKwRja+NAhkJNk3MwXkiYxC6eot0DyxbRGPRVBWn/c0EsTYvPEeRmLWOOfgcoCR0TgbpQsAsES2IapFUP9q/MZyJm3+iC12EQegcoOpJWQPPDsYKT5rsK5l6jXsNSC+7vazyBapMwka6Js59x47TMrbiIuisUC5pq2K9tW6lWaLIKGSka2a3+IkZuzWGZ4NzgjqUniWRIAqZhctoBE5mqMJm3jkEaIF2adnrulfBGOckH7IyIcNQmQ0BKb5SWPcFQdRPNOHmDIBrfUZ4AqRMw2Q4AKRYbLcAUjvRJG0YuNZ1YCHYucs4RKabRyqIKlTdeIufGem/g8GbL28XpMo8PMYbR4r3bgGsZqJJUscfAZD1pW48DecNoHF400ixUB9hZHoxFwYAdeaNNdrjW8ACgGGkWJS6lCDTirqoNjPikv0c4elPw/lVuZa9jiGYhWpTpS57sOnEXQXT8iCHcKvPEZaB8esxyalRQiQCYRQrUe3dsEanEXlBrVBmQlwu6sDiX48peyeHg2GSLsWDWR/2YuYSCH5VLebXY7LTmUNkkDK9A1ob+jKHYtNczxgHv/C7sgySOdrUDmpd+Hv/TdRuAX95W3aBMoYUn+riuALVRDkj/vK+7LFXSQzLFH0KfxSrKrUJE1A9nAMhZdh678kau0UNzBBSQVTzyS00lyDVQjkYkod3fVPWwDOD1U2LUlKKVf0sOw5h1UE1vs5XdnoOALHCrwPHrbEVCZ4Rzq3aqOZWuBqYdtUxtl6xYObY2K3N8EyQTtzglScaeyWA0FdMdpY3AA2wTlc7XMcmsu1BLE008QsAj45iYjvTcYjqmcaNH529uTHL8mlp8bKv71izl/nXyM6XZAWkcqZJCmhIMmpZd29g+8m8lxt1DpxVoaqmmckOFjTkOLU0czncdpTRu31DoIeCVYy4rCSEhhTRuPpuXJvgYjqb6
22xumJ/WRgEwt5tLgkKHavTT6YNqc7l36himv1MPs3IVMKeoa+Cdchi9BvbWm/iFkXanHhYmwqcRdhdaAy/i9J51/8fL9A5d5rnchQqcQeUmtv14gGoHXTLsu4Uca3NRVnv4uKR7M6rAXc2Rg82PwlmisbiBBmlwkqfrWv0x6B7QyWp3vPfBQ1oPPiLiB2R9KqaSiJwe7b+3XSe2gVsU0kzEEZR0UKiKeMbzMtNXXJSfuzMUZ9A1TsGMerARbEeeMmDiJbOYfa9x5A9f9jdK2Z7XFv3QIoGpIp0XFRagiejZLu1v7himXMRtM8S8dAqkSyllxcREmXXTcaTsHFi32ImasDltPgQirCq7xeB29JwkZtzD+3SCo22qpqfYS6o/YgVYB1cxF5UeBiABrzb+q32ZxX1o34QevONNkdcJrgshnlDtQTaif0M0O1yE2iIWZJql40wyRTzj30HYZzpqCWZRQr2fsYLmlPWUxLLgywz9+fUA6bScxyWk0ggzTDSxfvNr1T1IkAba9XkCYYuwkpqx5OGKc6rPU+tVeBVnnGtN5dnb5ZZNkXq6NRohVp+X1Yend30HizrXvK1/acESoxlvxo43tHW3pXvsHq3tpTpMRxr/KB7hXUy9b+XK6ztY7gpX+OffGPUkXW3JTJvplU4KIeQyr/WOqXdb12iKW8l8P25bcmBvRb5uctIURrfhPmeYTQ30e6iY+zf1r2dfnu30D79GzieqYPGO4W/hfw0W00KWD/rUQUe/wMI3FRG9jWvmt/dafkzVcBLiJSIYftW+tf/1IQkVWUDgg2ioAADCHAp0BKqAFAAQ+kUidST+lIyQq2thT8BIJaW7hZs8A/gf8C/AP9Cf6ttk+G/gX2G/Rb+M+NqyfE7gnwC+if9MugXR34N/BfwD/QX/3efH+AfgB+gH8A80n8APoJ/gH8D/gv4B/oLthX//5//T/zQX4b/AvwD/x38I/+1/64T//1y3/rKd/zzn/8H/b/6P/HAL63+Afwz+B/gN+vv+I/fh3/H9DEEjQVVnkt5MjJFsVZ6AKyO83nQbW0cSdw3u83nQbQp/KfRZBPLP2b7MrzoNraRUsvpanI+fBu3p3eV15HbQMUE6rPOg2h/SXU/d9thnn3rHAxcj3XebzoNraRVZ5TRzQMFuP/x4CbW0ipo3qxIgW4nSLRqy6W0GmMlnjhB9BtbMyd4nIjzDgc1qi2dmKz+BngJtZQnq4eg7tJKJNGaUyeaK6U7X62Leg+g2hcMD62noGaIuBn1LgpeF50G1tIqs86DIDLx6sH3RfuP9LLIcjbCm7+edBtbR1aQCrhZNBV/zuN2Hi06xaoq/trjYm1tHZONt4mUoLeBzWqLZ2YrW9Z50GQvZOkLYYDSparYwFd99d0LkgPYs75tbK05B44LfhIqUe4XGXwjI2wpu5BvIMVP950G1sxIrPNwR3Ti85/3uqFLpFIQbAdtNBVWcX8PxII66xKJEd8Q0wdn05oFNz6BoPoM1HUwhJMg7CRwPFp1cwKbn0DQfIpaKRy0gA5eRXm47zeS1f6IWD6LkgPYs75s4ewGkLGu4uUiD5+1tkxxa74z5LAXMzSC9KqvGaMZgX2wE2s6WKze5gVrWAv8Zt7L7qhS6RSEGw/Wd82hbditT92iQCr/GbWfctXzXQnszoH/y0hZiRV0KvN9ZsciNAviGmDs+mIZq/tekT3bxj866zzn7W2THN4FlO2Ik0LUi2A0hbDAafc63u83ktX+iFg+i5ID2qKCcqg0oHJD1n0YxGPoULvbE2gR4Na7ueelQAza2yWNkxxa74z5LAbJFUFPHGbW0d3r2BzWqLZ2YrW9XmIlBkmKcgyRn0ZvOgEtADxadXMCm59AN1pWgVrVcTa2VqpdJ8bizWVVn+zB9XD1i9rixMSKrPOgyS6osK6nak0N/WEOTlUV1iUSMljZMcWu+M+S1w1UWFdo2AJGgqxI94OZ0sAuNj/H/LOK/qRrze7zcm6AwOa1RbOzFZ9r+7DTMLdhplU5VWedBnZ77OuFX3aREH1NZBG20iqzzjYCu++u6FyQHrfMX4BBquJtbSKmU2UhTigFX+M2dAz6IxGltwxFQQGFdo2AJGgqrQhfJZFHFIx9Cm0KIe0NKA6mgqrPOTdhfmuhPZnQN+ivXdeSRGoJGgqq9QYEfdYpXE3Kzx5m1tIqs8lq/0jUOfo0I1/m93m85+91KUz9hSjJafdW/7S/n8fOxah1oS1xNraRWJhd/P3KMG1tIqs8kDrlp5BmA+g2tpErrdqEdGlVnnQbWynvq4gHAijmdLALjY86gM8BNrN0Cxnss08Ab2tApEGR+oh+jWdBlRHDngJtbSKmU2VDWI4Cza2kVWcRX0vBtHi6UYTXeMEHyKWixfdyAqd2ryqHMaD6DayhPVxAveVA9Ka/d4cjbCmpfIPoNoZkJm2VkMDmrPtmsqrp3TTZWy+Lh/QbW0iXq/ACPXoKqP/4nuazvm1tIldbs31+NKg0APFp1i1RV/a9I0FVXmIlgKSv5kuHUgwNnnQbWUJ6uIF7mbOgZ9EYjS24YioIJoKplNk2t/YwAM2srIYHNI5NN2eYrHq/jnZPNrZmdXgQBeLDlzQXFmsqrVzMVWeU0ctaFp6PgloAeLTq5gU3Pk6g+gyaTOLEiZC69VeVRUwQdYjdM22kSGH/+LVOH6iIGXUzcRX0w7nnvGJFVnlNHLZNUcvYZZ3za2ZjkEjXm/gQBFhXU7UmhzfWoWjsreqMh3m5KJmdcKvu0iIwNnnP3eQyDvN5YSuIKfksde+8t0fwjtjQUhh//i1Th+oiBl1KabJ6p4U83u83JTA7N5x7lypIzcdnskQfQ+5pTX2cgEDDqhiBoXDXebW0d8Q0wdn0xDNX9pi78RM22kVWcm8OwJkF0P7igQ20iqzyWr/RCwfRckB7FV1HxnldYnm1tImNG8Z5tZisrh/JUVrVcTa2yWNkxxa74z5LX6zdR5O3u83nJuwvzXQnszoH/8lxWtVxNraRMhdmi2Coay5m1tIqs3e91Qr5uUmpWhGjKcqkVWedACMFsaCqrqTQmOcdjNraRVaEL5LIo4pGPoU3EfWK7POg2tml1A+a6E9m4p4oxll8kLSKrPOPr60ZIqs86DazdAqvqRNrMgyNBVWedBtbSKrOAdJaexQYnexIqs86Da6Y9xt65vd5vOgx0CKbnDMw9Iijlt7vN50G0LlFEu2Bm1tIqrzESr7A05SrXbE2tpFVnnQbW0iXpgTY0FVZ50AGs8RwFm1tIqs3mB6RLwmQXZZmbzoNoXCdb2aZqKKRBNraOjKnrenDy9kf/xapw/URAy6mbzn+8ug50G1tIl6XW6e1RnKbW0iqvlxEbf/+Hs3ouSA7QbvQfQbWWM7HCqmlgQndWlw1tIl7ma3k08GmsWg2s3QKjRlNNcPHzvtgJs7Z9BtbSJemajLREOpm86DN3XNjv82bzMVWeTC4Gq29VMuq8qipgg+fzI6Sqr+ZNdLuXMROiRg7AhVWbw1LojEaW3DEVBBNAfHevN7vNx2fR3lqTQmmgqmU2UrEQATrrKXRFNAP1EQYp1zeQYqeco1XEztBjvuf7TF5vDeN9cEHydUxYtIV9pwR3a4m1l3jQK7vKIMUK7zx1vOSqIVyJFVdSaE00CjKnmf/0yr8QTa6VuFQqHmDYrKIPoM6iyKHMVreri8ymbW0ipxTGveww/fK7O83nQbOkxC4y+EZG2FNSMWahVZczW3Y9SDA2eU0csa6aPjO93m4B3pFMSKvQM7Byqs86H3/lFhXU7UmhzfS4kWrFP3Eiqzzk6pcWLz/5RU5CJFVnnQZ2gyjRXRoKqzzn8fOOxmz5r3gQndTkZ7/QVcTa2jjlDKHBX0DOwcqrPOg29tyllV3N50G1s0b+b6O7zedBtbR2YeY8zgJtbSKq4uMr8KuQBfhqoEpGgqrPOPc/PU0T36Da2kVV5iNL2e+MDvN50G1tHBg4heb3ebzkUtJEpa6j8BngJtbK/Gaj3ALlp+xvQc9sSSR5tVnnQbW0c6RCLLBCt50G1tIl6WqjNbXT4QtRuh82JtbSKq4uY1xmTLurS4a2kVV85AUolmTXS7m86DJi9dUfmGyT48lARRjJ3uITup1BVWedBmTu41corM6pW/N50GZO74E5e1zwSAIsK6nak0Ob61C0iqzeY58q8y7zJl3U6gqrPJhY9DzBLfKGv6DMndxt5iRUpWHLmpdqLdabxDe
22S4dSDAdp9BtbMSKvQM7BxElGcptbR0ZU+ivXVwM0uVvOgA1m9zNolVLYQndPgYqrzESru6rGs+6N/XhFhXaKfx1vd5Yb5RYaAIpCb8I5UQqSn5K8Xza2YkVegZ2DlWKtXfbATZ1dLQd3nCG4/ohFjNuGItxec2hblqkxxuq4mdRZFDmK1vWcRX0xSwRULSKnFMbK/iYT2pYTa2kSdNeUjNJ820JkFxN7uqGQ0qs8ntRYxdzvvMSKrPTdNLlXlyT1zNraO+LN6ryqHMG60rEciGPd5vOTqmKg/eLRa1quJtbLreuCD5ALY1a+K63IFbXLBVZ5x7lypFpZqJFVnnQ+/8osK6nak0Ob6aQn0GMEH0G0RU7tXlUSf92e+MZPze7zecnVM+h/raRVZ50G1tIqXuoP9M0pVCDiVHYza2kVV1JoPHuMza2kVWem6Y3atPCMBNraRU4piSjuev/SZPNraRVZw7ntGpaLWtVxNraRVZ50G1svPm4YQt7vN50Gz1npRGbW0iqzzkwZ9GfedBtbSKmPYlVjrwIzieEH0G1sxIq9Wm7OMkaqRVZ50G1tIqs8r8V26a2kVWec/d32F8g+g2to7JzfWuu0FVZ5z/eW4+SKGo5EiL0AB/QfQbWboFl3Ls/vzJrpdzec/3l0HOg2to7JzfZvZPNraRUp95S6TthDV6BZtbSKmwTn27gpaMAwQXJAe1XKbW0iV1uz3xjJ4/AeHqQYGzzoNrLDN9Bo71M7QaaxaDaBkQ+3g3u83lYIoz98lw6kGBs86Da2V+Mtsv7inZPNrO5Ay7RrrlWBbJGbiK+d+zv0ZTTXEEt7Di8/+WkLRvjkPoPk6pixbW2rt2fQbWzMnlwVKcKMCZBdE+g2gR4NMsu84SJQzlNrZX4pbaRiCYhcYzpHwFDpgyt5P2IvAVWclLvAhO6nUFIprBhx4CZ2g01iTjtTK8ssMgH6uJtAjwfim1vcgC92ryqKmB/ivpeM3mbWy5W/Oyd3fkXW93nCIPDJGm8YAs1EiqzywlcQU/JXi08vmq4m1tHfFpMkvcboC9VeVXiZuU0ctU5+CkhraOVCszXxXeiQYqfAoAkaCqW+OVO6uqDvN50G3tFS6IpoB+oiDDYEFvIQ3Ty/7aKrPOgD+2Zr4rtcRlttIqs86AS3wcHOJOseRDFmJNsx4joFRKtOVSKrPOQCuIKfksMK+lsnLZ/VcTa2jjlG0I8+20iqzzofc0pTyrmyhRnATa2kVOKYnlEM3nQbW0dl/WnVFFxM7QY75tNpMrSq8krc2tpFVnBjpr6xgg+g2to5B4/6JFVnnQbQI8MmfE5praRVZ5z93fV1KB/8tIWkVWeU0c03AMkOLegDeJO1aUEjQVVnDue0Ty+aribW0iquLx452Tza2kVNoG6By5A1tIqs3mCctCU6TQVVnlYm+9A5tvuBoAttPIDsqCqs85/vLfYcSttBVpC0iqzyYZzTRZBAZ4CbQI8GmIm8RRH/8TvoXJAe1XKbW0iRTVxHfFpHnIzeViN0M2KZtvsgAlRKtOvu/zMr1wGu8YIOmjlqxSLq5swrSt50Gzq6oO/4WVw/oNrPZ2ouIL8np1njAdJdLxlvUHX4uF/zeQYqLpcYPZOGrPLCV8QCRE744YMA3h2AlNE6g+g2deU2tMZntG1BIoy+G/baOOUM5TazdAqNaDVcTrrKXRFNAP1EQN/AZUv9MYKEf0G0SqoXs8AEqI2bML/qxraRMhdbPPWg7CVxBKuAoAtQBeyAjvNwY/ACvNRe/hNOCD49y5UkU02T167zedD8np1cTCea+7TzoNrZo3/BDTZPES20VWedADIPoM7QY75tN0+UTQiDNraRKFyVflE8m/2nNraRUt8cqQndx8kUfM8BNrbJipaMAwQXJAe07gjcPm1tIqr+ZLpjjMSKrPOg2tpFVnJvDsBKaJ0VMsu83nQbPmzCPly1cTza2kVLfGWIwyMUsEMe7zedBt7L7p2FPHfna62kVWedBmuJ/u3ZHq+b3ebzoNraRVZybw7ASmgQh5iRVZ50Gz5svP5dn+86Da2kVLMelnD0EjQVVnlNHLo6Er5m1tIqs4ivpeDgjkaCqs8po6PzedBtZ90Zq4vpQSNBVV81mhIZ50G1tIldbs+XFw/oNraRK63acdnAFFGCD6DMndxvlze8BigxVZ5TRzRbaRVZ5xvKkNKXj4/MjQVVnlNHLvy54atBVWec/3luPkijuMcqSM3nP95b8FhO4m4cuaC4s1lVauZiqzymjlrlM1ThItb0H0GQB1OAeMEHz93lEsy7zHzypoze7zcdxQIXzX6ktjQVTKbJ6p4U87QYq6mbzoAuMViQjVdee5/POgA538DVcQS3yLBm0CPBriIYIPn7vKNXIi69UvHrchgg6mbPha0w5otsvPb7Ob3JpvIFt5QSJkpXD+gyYu8Z5tdKYmoijikY+hUtJmJe22o1Wecm8n2c013XrenEe0G1m6BUT9Hebk3h2AlNE6g+fu8c3E2fNfqS1YV2l1NXpFVdSaE0zL4zeZtbSMQtddRl7gVXE2tml4DEooFRoymmkIuNMr3caPTsI11nnJ1S4sGQYZf3d+QiRVZ5QpzBXFfacBFxIqs849y5UJjz7bSKrPOziw5c0FxZrKq1SBuxoe7zedAH9ta0HnrP5jtMkabs+a2V3m86AS3sODIMMrBE7ttIqs8oU5fYLUI7zedBtZiuWyrnebzoNraU1/rjhtpFVnnQZFk/4KMsrkZnprAd3XOAm1tImQuvVLx5jxo7vN50G1stMXheuq4m1tIqri4+HIqs86DaF7ZwBCGtpFVnlNHLkq/UfrCENvj+X0E4HiFVZ50G1n3RocNVxNraRVX7LL3348BNraRIpkHw6mbzoNrO7g+h+a6Y3RCrvN5yKWi0rFEQviwX/Bu3kwX3UZGbzoNrZX4Nsh88qaM3u83lNHLZGtfrn94QfQbWWM7F5j8NTN50GbuubHf5UnbCBcLKdsRQmoWkVMpsnqnhTzVIFsUAfLFkKFi7bTQVVnnG9EbLR+iIMgwy/za2YkVbW9kz10LH4ADwE2ssZ2M2+IM3hiqziK+km4g+b7Tm10rj/+ecilossk0+bRFUR94E49+quckXebzjeiNEd8Wb1Lx63IYIOoykZhgxbE2FLQlB8ilpFzsxIqrqTQmmgUZU9FUdQVVyoMRzcvGbcMRU12gQGnvbvN5YSzeiVY3wwZrO+bQuZu71XEEt7DgyDDL/Myd3H4AEM3lCoKh/IpaLOJVsaCqW+OVPAjwaccSznQbXSuP/R2XtMRM22kVWclMKu83pybjvAZX9PgfbaRU4piWyF2Q4EHWlYjkQx7vN5QqColFAqXUttIqs8ntRXPOoswQaribW0jEExC4xpMQb3jOAm1tIqs86Db4YM1mkAvCG2kVWcm8OwEpomt1pWI5EMe7zec/uKaehkTpId5vOg2sxXLZvcza2kVWeU0dkNlC7Tgg+g2tkwAAPYVYwWNH+/qRbpqCUb02VEJ49BqR/ky+krQStzu4QV5aHhfrwhvQKzdDZzBlXO19CZyuvBgKmVagIW2p5/lQwxW1rKdOb4WejA4JBB/oqc5KOLeff3+N/vA83vkkorqE/FHBNI8/4f7fJTc1gm+IxErqE+HfUQoa7A9//6vvoi7goQgVSHYN9g8WTrbASZ3Ny11Ce7CCwhLVB/38Ilf5wCxvoD+ChjfadQEo4jESuoT4QXNrFzlqX8k4cJamz79/oKu6NO3HbqwnhDo3RrGSqabY5i1w0keeW376Jk+srC/v+VJYeKOa8Pm9AapvB1suQ175G9JR23vyCKzMxJ03R8bUlTblyKNbXQ6dCaKYHOxhBKhORfVRJyO67qS3vA1Zx02O1GqanctODb11nEYmck366LzhsBG8h2oTn3m7i1bllkHo6pN98KhZwlqg/7ahUBA0czgRO3co3k6nY5VZZ5nvu4ZcOupMAEV14t0a715AEevoHxvXY4SEX/VLFQXkvT8QZfn2ZGMgWr/gjjy3axCE4Ra//SP2ALLR/Oh4Zq5r2Jn2OTqdjlAZJHJnFkOuhM1wAAAABcgYAQQEv3grkHuDs6//VF2jaOWBJcJKT/PB1kzab9/s70LwASakWbAuJ8/FTIAn6nufdyjeTLd2ZJgzh0T32fzkpISpncoET71XWBeWbgy0Ka9Z6xf+v2p3J+T53APzQJkdmDGFguGnt7+5Sa3ujlg7BFmzNul25T2cX8AOVR2o22XHbAY8ShLdVKQGGXjXev0OzmxtyMuDGmdeVhrZ6QdReHRh/mmGL4xYdeBi4SAXgjFb/mlGTaZ8E7HPefHgdNe4+1dT70jRBLtG8z5bo5wLEkzIxAcF6Et46FM1+h2c2Mp891Dek1GQqsozUYTKeMR7oYQs7HcqpG2Bc0kjAwqblk///jeZcnJ0ZnyIKgODV96I2bXX9j/fJIBsk/0AQkRc+RIVW0uoxBGnc3bycBYjDbFnV1kBGZJ+myzQEJIdD2yhFH3MNm5HJfpCbwhOCf8ws/cuJ7spgHCHFq+9EbNrr+yAE+rmTzWBIjIX/+F4JDNcyVpjD7H+cTrPzxZtHs97a6S/UrNy+lZ2mdA5trV/wRx5bsZweLD52qLr7rMHd8KTyL0kIA9apjgG42yj5/1EDH7c08Gtao8LVBgL7PXL210mlG0WDOMVVwrgV//+ANzkK5dFyHIpmh760Bn4HdUGmBnjQpVjKw2bkZhJ2Z+g6jezS2ylM1tRYJQ83xjeVppZSTUQE9Fwd2BstUwllsnYQnvtSFFxjU4H5f/6Z13c0DvD29AxV5o2ly6xCDWirweMorCzKMTMK38spVa2OUHd80suYGJnW/AlHqBCm5ZQC8runo/0Mn4wqYF8Bk61YjDccI/dqQp71D/oVxReqwDs3kvMRphMKBvgDRIqzQE9vAUnCVWtjlB1kkAvgaXhavmRghCUqRWsm+WqG5ADXAjVfbLZOBgGnChvOL0hv21ni+jQ/g7HPqTYnv0ISB4iRKB6qhbWMKsat+BKPUCTAvSt9eEP8/1yM0EijElEhGcCaiU9FdVEDb3H9pigLkyFKzcvpWdpnP3TuCef4Pg3p7WAArm31I3/B/fDKAgoH56xGfKzV3f2xOjIMSEF0OkRPmUtynzuirZpbX
22RXkt5UEgXqclwjwOx+Plkv5hiFCqv82a4Or8/1DIvw+5FvLdLC1fMjBbvGU+nQQn0db5rRcXeAEW23iESMJZbJ2Eq/m+QelwrA0ytZ1nmD+djry4zkyrBtYQaP7l9KztM5+0Dx8PG/DX6aBH/DqJHsMguK/aC6FTiKfVb8CUeohFrvs3CMgxPBOoQDG8rRO3i2byYuKJ51lVrYnxegIQgLueuXtvFHvlz1MRkAwyau0pyCzbKOqUgh4HY/oUSdCrjVCxKUIdM7VbnF4VvGMuatDI2oa/cnUIBM5gWeFipdBmKLrGFWNW/AlHqEDvOagSFJDT5X3jDDjAEiVq8XN102QAaeJSCOz6GfgqGewse8WR92Bstc5AJ16w4YJfVZOdiZJ0KuNjijtSncVECjQEOWkTznqLWoK10OpgSDU/cnUIBM5gWdpcxiG4qhO74cjVutIWHj6kt+nGZCypiZJzcZT7RX1lHuX0R3v10toDDrglubNp8/DrTxHYlVR00HI0zJH5vkLkzNuAhCAx9KNEpHPVyPwa3meKJOhVx2PCifslPxbkvBueaKoAYrAGs8VaevwVgko2ewLO0Z7F6htVijf3vQuSBoOsTEwYhZkffGwbZnqiw/B3fLzcvojvfrpbR/zgEBRU50Ode6JciA8VzanvFVW1FDSEvXuBrNBwUCcE8+mvV6y1mRzN5QEzESFl2CefnnBg7OO7egRvA0pOzHmtkj+Cd3ziBNRcXLsr0s9J2g6LXfZszOWm3CdYCQ5EnBLlr+yAE4Z92tUCkPtBeptDGpQAR3zfIXL0KcRUijr3JBsnUCBtveg4KwYGe2duXt+42B32Ui1/WSdTzSKkMH+isZ7Cx+V95BvvL//TPmB/FyIS0A8RIlBLLqns4H313znk6nZcgeea/JquAlbcjAJtQgH80toR8ndI5DCUhmsBZ+JSjsjqQ7BtRXjXbJ39wm0SC3LVHZGWDfuTqEAmcwLOiP+xoADFxU88h/7HA3LU/nQVmug++u+c8ghY2YQo2EQStSkaoKPG1AkAXQ6RE+dcl5+m/GSGEwwt+AkbpGfTYBFqEs/sAonk6FXGlWo7Iywb9ydQgEzmBZ2iv4ngIwNrmyxKw4FwlP4r1JRIJ47ca8FfBMPvrvnPJ1OzPwCUmkgdwhcJjA4VGCHiecc0UwAvQEIQGPpRolI56vnM9hY95ANcCgLqgZLuiCr7eehRJ0KuNNNdEx0lU0P3J39yDOYFnaKYBlKGPXs+Q0/GyWPZOUm2BbJH8E7vgpk2lyN65/pbR/0CpF2DacXX2gijPo4jeYmgyXdIpcEtzZtPn4dIIa+I6Ifw5Em+lGiUjnq7df/1sFxYhRBd4qui+pysHkcBa0lEnQq41QsR2mGSeW6GOi5MvVRRxv/nbjLnqX2kBebl9Ed79dLaP+dEbnQ23tMHB2QdRGhfDwNnm+NBYfk4YAqgPzrlooQpcpP5vkLkzKLNpcusQg1oCflXYFSUSdCrjY4o7Ua2drNDeaFJR/2k+CLEBNrTLnqX2HTyygGiK8vz/d8M9vAUnF9xXTtB1KuooaQg1qxGG44WRUPqgV5rw1ambs64pP3HlS6L+b5C5MzObl9KztM5+yYf1XYFSUSdCrjungXxLfzkXMisE3qlWV9F2mtD70jwExspTDfL6zjvB6QDDvOagSFJDT5X3jTZgXwGTrViMNxwguFJThVwAQaDprwtMuepiMYCjJn4yU7bB1wNvCxM4BP9uCJNfCVABXs9hY4TpDfL2/4KnJ29FQBSuGPDPlVrY5Qdds/DkNUz1y9t4oShyriy6ecDrTvik2UMma2SPsMUjcn80pfbxGmUf8/xbtqFBLCARvzfIXXhkZ2f+Q1IVaAKnOzGxEgHhavmRghGlRcv/00PLtMMvH/Au54IsxqfjJTRxDdBllcjec/6nMG1VpSPLjOTuE2iQW4BMMZk5oi50z3MDP4BznYLoMVvwJR6xsi6jEkDApdOjzvhnsbXGWpW2oFwsgToQYK0CLNpcusQg1ordEC1tdFFdBxRcnJ0OckBwXhTMl3IKwCyFBXFdSatBmpQujC4GqDvBL98tHg7nSInzLCWWydhM6ZiwKJXnCAx/nEyYzEd4e3udBObl9KztM5+yjfLnqYjIBqXF6lAHgdj+huUzJdyGhh/UeCZ9og64S0f/piVtL88Y7xm3cJtX3jBgbsDZaphLLZOwk/zqA6nRkGEF6rCbU4sKnVD6oFea8NWiEYSUvTEaYUutFXg9hGWlG/aoZqOyMsG/cYW+/h5oYQy/aOC/YWw+X85G7OuK4EhSPRhHn/O1Iqah/a3ZioAApAyDu+EBor09CYuWEstk7CK6TwxJWZy024TqHBqDBC1IqPthMhAWNHZHYU+CcVXBDn9nxCOVRpUMjahr9ydQgEzmBZ1xglgkXUm7hCM49gC38EJ9yR6OqHO8yMZ8DhPAjf+g7T1ZsFP1wTyCr7xhpmfSacqXeMBx5mJ6fSqDE8E6lXUUNIS9e5INk6gQrRTijv3jKfVK/RyAc/5rjDIqwSz/+tguLck6F2A6BNgrKO7f/yxCQgF8OFSblMyXdIphS1LM2+r/kNLM7wm7q+9EbNrr+x/t5E1skfwTu+Mq6DidVup0yIGnUB1ZsLu84Tu+mzAvgM7r3A1mg4KARxKP9AVXTZAR3zfIXJnK2TTPrP3J1CATOYFnaKCQkKBSMZBS/9ZScSH1KmUAWBENvJxu1ydTsuQi/m+Qu1feNaXE78/6nJ29FQBSuGPDPlVrY5OzvLza51i1f/YKDW4bxQ+HSQx5RVAG5NMi1hut5hbAf+eMCaY0vjvCTr1AyLXgXNfmeeH0bG+NBRkz7675zydTsuQNc0LRahVebvzlQuBV02QA1T8OQ1rpRolI56uSYJo2mC5M1k3n9p/wDcnQuwHQJsHZx3b/+Tue8NP80IqrdYOkfX1WTnYY2yt/6I/N8gCFDyE3KSIrWSUFwioezLj8T/153npRWNWbWuBU1FDSEvXuBrNBwwMTXhsSvGC3qsOGSZ7PS2lPkQSjNz1RVA/1nirT1+CsElGz2BZ2kLQ+9I6qLvlpQ4UPUCFA2CV7laq/+Q48uM2KwbWEH+Z2H313wBkdx70uDPVgq5G85/1NLv5IcvW//1sIV5Jfvlo8Hc6RE+dcl4eFOMqpyYmoDov/Wwf6LHnoXAEVYUgeSOyMsG/cnUIBM5gWdos+9OQuXo8CinrIIa/N6OUCykLvWVYBbJ35Vg2sIZ0oVVAIDbk6oHT/0uSAuLxgPKo7QnKtUx3oss61b0uCsLfJMwL4DO69wNZoOCwShT52qLr7rMHULZkzGao8zAMiofVAkKSGeN9R79v33C1CeJXOmhh4avU8VMEG4NJFsxiremxPN5r+Q/EzhsnT2SeUKqgEBtydTsuZP5vkAEgWi7EbDwVCz4U1EKRS61+q9MLACrxMxBecP96zll/Ujnq7L0XYNsz1RYfg6iCjJxqFPeL2dlmtoT5sYjtL+HRwB4avU8VMEG4NJL0TAAg4PbQ7yTY0bPxdKSqgEBQigC/m+QASBaaLK3ei7YXBu9zirsDAL94yDbuE2r0S/fLSIzmk/i962om0/udQHVmwu7zhO75AtX3swSsodomkbiiedG0+fLhUdqNhWqY4RQ+nZEejwKKevtww+8UGQsA6UXeQDEjdSwFmMj83yACQLXc6RE+ZYSy2TsISSU4UfM9LgrCNyW8qCQL1OToRm/C5DUOzGiAr64w2ly6xCDWirweAzX4IjGZi/Qprv4APez4hHQzuWYZ/0MFBkD8l252RPdaJw/AgBPp1nnUgGbbxCJGEstk7CEdx96R4CZV6YWAbJ9/zcb/R066P/UqA+0wqGVR+ns3zCiU6ZjU/GSnbYOuBt4UN/lmVecNlDg77kvJEbzaq6xz9ddoACGgAChW4GFgQhAXc9cvbeKEUsnANLxPDwIAgF6m4aLLTEBsy2DrgbeI0z6TO0fU6ku4afREE5xefkYHtod5Lw4hTTDP3/+tgTw4oLy6rtcblljbkxXC01kEC9gX/+mINZwf8ACh99oL7UE5s7D8ZKdsdXNUCZypWQCqE31HajMrPPKTh1dCQK9rNtBotbUQKDIWAdKLvIBiRvQmyB3NVRuwdeFT7yjtRQymVu9F3PXL23WgAFDiuYgOVPU1FYoqG9IS2n3pHgJcXphYAQo9y+lZ2mc/VjOLmYnr1V1/6+fvBao3nP4g5e/C8GXB2YYfeKDIWAdKLvIBiRvQI/5CDpf/GjgvGKG8HJaoMBfZ65e28YNIfN8gBO6YSN3C7kECv4ivzkOMbdwm1feSX75aPDsc96OyhQrRV4P3nnvhAITQDsCd3w0OpAq7/KnJ3PhNfAmAUlukayzCZ5/Q43/RCQLjCxnap8wVWidJQAKQF6PAop6y8x+ZeYjS+Fnp/uwNlqmEstk7CPbLnqKlQBEyYt7FzIpNm3vDUYJ3gl++WjzPwohcISffwkI9U52Y19Qk7M/QdRvToXYDoE1+WDbuuzgBhagO//TEPqoahXLgnj8moD28PL0WWWVvrlqc+0oJh8rnop0yL22dYJbTLnqKlQBH0IjFBLUeC0wdkAZt7w1GCd4Jfvlo9yqO1KX3GCzVcR0i7BtmeqLD8Hd80qGRtQ1+5OoQCZzAs6C1btaoB5huEFXFKT9chvG1J7ooBTs0twEmoD28PZ7fDLwnUotRnnFSuKkUUAIyAqO1Hv55gG/7Ph7cqTu50iJ865Lw8KcZTw+fPiEjg7wS/fLSAKip58mWXajA1aeGJIhewMEV9ff7lYLWATYKyju3/8sQkBRBh7HAHCuYAHvZ8QjoFeg3XUD8ZKShQO59TPkPsyb+kWaiK5tQcJnjI/U9Rwsbks//rSMbp0lRQ0hL17gazQcFA9FlnXME7wS/fLSW0sDvBdHoFdhs3I5crvx5cdgnSy/BWCSjZ7As7RQXBnyQl4Q9YKn1UFQDb2tZMJOttWel191vuSC8NDEjjz+fL787uAOf2fD25UqsCEIDH0o0Skc9XJJXT99rMxq/fIWRW2LeioAJhnaSnQJp70zaDgWdooT6PP+H+18Fx8+TUbRIMTIYE5yJGFRiScX4MX0Atc9S3o5JVAhILgwhuBXM0DEs9FVXWs2WCOgfqio9QxlUZkpUcmKBC7oAvOyaZ9Z+5OoQCZzAs7qw2dlO1QEgVgxgfnrEZ8311oLm+tmvVAR0Dsx9ReE6lFqM85PzG9sIQsfCxiozM4u7id86d6FB8r4h7xAYVtgC73d7N7CoI+nW9CPGAzJoF5tRUhbPSP7m1PXnpcFYW+MKhkbUNfuTqEAmcwLO0gO85qA6L/1sNk0fCEewrmAOEOMiRl4TqUWozzim+fL1PFTBBuDSUwYklOJVO0OyTUa0ZBslrQuhHpRolI56wb+b5ABIFobiZh4Zkn69lj5wCX75aPGLQyNqGv3J1CATOYFnaLhXnNQK814bEr6xIsSj1ousxRTNxRPOjafPkgqLHoMCybiTN6TiLzI26X0eBRT3qIDbHC7ZXK3w1+mgR9hvWqDAY3JeHhTjKgT+b5ABIFoocO9fzcgdR96R4CZV6YWARVDmfhvePb6ykt4sJ4NIxei7BtmeqLD8HUZLW1ECgyFgHShIkKYeAMDmFRSAdcEakKjk/vSOoE6Uc26kwINync7SpFEyEzViCu8oB6tQe/tpgH2nZlpRQzM8WxtLl1iEFG1D0WWdat6XBWDkjPpM7UpGpgLKmJkni6xmyFfeMvRMACDg9tDvJdudkT3WicgzcOQ6OqAjsqTWJ0ZHXheq1tCiNaKoNydLwoTYXcioA5/zR/6CBz+z4e3Kk7VKFVf5s1wcggH/kRLwZV6YWARZcjec/iHR7YJvVJ7eApOEqtbHKDrAXbOzGB7aHeS7c7InutE4IsW6JYuL/nk5gPSAAKNgrpOXD8vv169H73X7yepREwkfm+QASBb2ue9HZQoVoq8Hg3FbJHePLdBMsBH8/xRZ4gJQy3bmr+rGXECgyFgHSi7yAYkb0AICtM/JLQg+5FQAAAAAA",Lb=new Map,HL=i=>{let{isValid:l}=pG();u.useEffect(()=>{if(l||!i)return;let t=(d,n)=>{d.querySelector(`${n}`)||Lb.has(n)||(Lb.set(n,d),fL(d,n))},e=i,s=BL();if(t(e,s),!e)return;let c=new MutationObserver(d=>{for(let n of d)if(n.type==="childList"){if(e.querySelector(`.${s}`))return;Lb.delete(s),t(e,s)}});return c.observe(e,{childList:!0,subtree:!0}),()=>{c.disconnect(),Lb.forEach(d=>{d.remove()}),Lb.clear()}},[l,i])},fL=(i,l)=>{let t=document.createElement("div");t.classList.add(l),t.style.cssText="display:block!important;visibility:visible!important;transform:none!important;scale:none!important";let e=t.attachShadow({mode:"closed"});return e.innerHTML=`
23    <style>
24      .${l} {
25        background-image: url(${PL});
26        background-size: 150%;
27        position: absolute;
28        top: 0;
29        left: 0;
30        width: 100%;
31        height: 100%;
32        display: flex;
33        align-items: center;
34        justify-content: center;
35        font-size: 2rem;
36        font-weight: 700;
37        line-height: 1.25;
38        color: rgba(140, 153, 166, 0.6);
39        pointer-events: none;
40        z-index: calc(var(--rp-base-z-index, 1) * 5);
41      }
42      @media only screen and (min-width: 768px) {
43        .${l} {
44          font-size: 3.5rem;
45          background-size: cover;
46        }
47      }
48    </style>
49    <div class="${l}"></div>
50  `,i.appendChild(t),t};function BL(){let i="abcdefghijklmnopqrstuvwxyz".charAt(Math.floor(Math.random()*26));for(let l=0;l<7;l++)i+="abcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(Math.random()*36));return i}var Pp=u.createContext(void 0),AL=()=>{let i=u.useContext(Pp);if(!i)throw Error("useDownloadContext must be used within a DownloadProvider");return i},_L=({children:i,downloadFilename:l})=>G.jsx(Pp.Provider,{value:{downloadFilename:l},children:i}),qL=class{constructor(l){E(this,"_items",[]);E(this,"_triggerEnqueue");this._triggerEnqueue=l}enqueue(l,t,e=0){let s={id:l,data:t,priority:e},c=this._items.findIndex(d=>d.priority>e);c===-1?this._items.push(s):this._items.splice(c,0,s),this._triggerEnqueue(t)}dequeue(){return this._items.shift()}removeQueue(l){let t=this._items.findIndex(e=>e.id===l);return t===-1?!1:(this._items.splice(t,1),!0)}changePagePriority(l,t){let e=this._items.find(s=>new RegExp(l).test(s.id));return e?(this.removeQueue(e.id),this.enqueue(e.id,e.data,t),!0):!1}peekAll(){return this._items}isEmpty(){return this._items.length===0}size(){return this._items.length}clear(){this._items=[]}},$L=(i,l,t={})=>{let{scale:e=1,rotate:s=0,renderForms:c=!1,interactiveForm:d=!0}=t,n=l.getContext("2d",{desynchronized:!1}),Z=window.devicePixelRatio,b=i.getViewport({scale:e,rotation:s}),o=i.getViewport({scale:e*Z,rotation:s});l.width=o.width,l.height=o.height,l.style.width=`${Math.floor(b.width)}px`,l.style.height=`${Math.floor(b.height)}px`;let m=c?Ls.ENABLE_FORMS:void 0;return d||(m=Ls.ENABLE),i.render({canvas:l,canvasContext:n,viewport:o,annotationMode:m})},Hp=u.createContext(null),lI=({children:i})=>{let l=u.useRef(!1),[t,e]=u.useState([]),s=u.useCallback(Z=>{e(b=>[...b,{id:Z.page.pageNumber.toString(),data:Z,priority:0}])},[]),c=u.useMemo(()=>new qL(s),[s]),{focusedPage:d}=Xe(),n=u.useCallback(Z=>(l.current=!0,$L(Z.data.page,Z.data.canvasElem,Z.data.options).promise.then(()=>{Z.data.canvasElem.hidden=!1}).finally(()=>{Z.data.onLoaded&&Z.data.onLoaded()})),[]);return u.useEffect(()=>{d&&(c.changePagePriority(`^page-${d}`,0),c.changePagePriority(`^thumbnail-${d}`,1))},[d]),u.useEffect(()=>{if(c.isEmpty()||l.current)return;let Z=()=>{let b=c.dequeue();b?n(b).finally(()=>{Z()}):(l.current=!1,e(c.peekAll()))};Z()},[c,n,t]),G.jsx(Hp.Provider,{value:c,children:i})},fp=()=>{let i=u.useContext(Hp);if(!i)throw Error("RenderQueue not found");return i},tI=i=>{let{children:l,darkMode:t=!1,onDarkModeChange:e,initialRotation:s=0,textLayer:c=!0,initialPage:d=1,initialViewMode:n=Yl.SINGLE_PAGE,initialThumbnailsVisible:Z=!1,initialSearch:b,initialScale:o,initialScrollMode:m=kl.VERTICAL_SCROLLING,locale:h="en_US",localization:W,downloadFilename:r,initialSelectionMode:N=Nd.TEXT,interactiveForm:M=!0,scrollBehavior:X="smooth"}=i,[y,Y]=u.useState(null),[T,V]=u.useState(null),[I,w]=u.useState(null);return HL(I),G.jsx(hV,{initialScale:o,initialPage:d,initialScrollMode:m,initialRotation:s,initialViewMode:n,interactiveForm:M,children:G.jsx(TV,{scrollBehavior:X,children:G.jsx(jV,{locale:h,localization:W,children:G.jsx(pV,{children:G.jsx(MV,{children:G.jsx(WV,{children:G.jsx(uV,{children:G.jsx(RV,{initialSelectionMode:N,children:G.jsx(GV,{children:G.jsx(YV,{children:G.jsx(QL,{textLayer:c,children:G.jsx(bp.Provider,{value:{container:y,contentRef:T,pagesRef:I,setContainer:Y,setContentRef:V,setPagesRef:w},children:G.jsx(rV,{children:G.jsx(XV,{children:G.jsx(yV,{children:G.jsx(IV,{children:G.jsx(wV,{darkMode:t,onDarkModeChange:e,children:G.jsx(nL,{initialSearch:b,children:G.jsx(GL,{children:G.jsx(DL,{children:G.jsx(lI,{children:G.jsx(FL,{initialThumbnailsVisible:Z,children:G.jsx(UL,{children:G.jsx(KV,{children:G.jsx(xV,{elementRef:T,children:G.jsx(FV,{children:G.jsx(_L,{downloadFilename:r,children:G.jsx(DV,{children:l})})})})})})})})})})})})})})})})})})})})})})})})})})})})};function Bp(i){var l,t,e="";if(typeof i=="string"||typeof i=="number")e+=i;else if(typeof i=="object")if(Array.isArray(i)){var s=i.length;for(l=0;l<s;l++)i[l]&&(t=Bp(i[l]))&&(e&&(e+=" "),e+=t)}else for(t in i)i[t]&&(e&&(e+=" "),e+=t);return e}function xl(){for(var i,l,t=0,e="",s=arguments.length;t<s;t++)(i=arguments[t])&&(l=Bp(i))&&(e&&(e+=" "),e+=l);return e}var eI="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABPbSURBVHgB5Vx7jB3ldT/nm7mPfXqxsQFj4msCMYRCTCBVDCFeUlEVhQa7ld0S
50pcI0KSFUwIJCq6ZqvUZV2iR/sDZJWuiDpU1UCUsYUEOgIuxaFKgiCyelMTbYeNfYMeDX2l7v4975vi/n8c3c67UXP9Y29t6zujvvmTu/+zuP75wzg/ARyjVP7pnisfEG7+Ei7+yViDALvLsIPDgH/kIAz2LB0R7eD9AhW2luAJzdBojvWqj83Cbxmxu/Ov0AfESCcBpl3uO+DZrLCyLAGzy6W2jVRQIOoUZAOQYMHFiPNO9oFdISrfHO8Tb68LLnZToGrALMZ/Dv0uzPE+9fgl371m78y8tOG6CnBcDPPOUXeEw6CJHPI/hWBsAHMOSjyFkBkbhGizoPvOSEgb4GQBb64gI6f4yexMqxgi4+42zSu+HOi9bAKZZTBuC81b4tNu4+9L6DbquNVI5JRTfOCND9old2eVkXGMfs0vXCtMAyASWsFyC9q4Kpv4aA6BU8WY98agfb6PPPWCi8vv6OGe/BKZCTDmA7ATdCwNEd3kc30kY3h4iomooEpyUNRQVOQPLpPIHC652ocmAds8r6wEYnW3mbbILAWF4VzoE+sBIcKjsVfITtBOlzG+/62ONwkuWkAvjZZ/ztdJ+dBECJcPN6n8w5L9fhpWDrAvtcBgSGm6WVVtRTwXKqkmADINmneg4+VrAKao/EPqu2Ueyp88bJpZmt22naveEbc16AkyQnBcDPrvYljOzj9DXbvZ6WbwjZmLHqCpAeUhA9ZEC4jFnMHrpDq8BkAMt2r3YwqC1bQAKNLYJzquLMVLWrys6MjcxE2omugKL9aiNp/5dHy/jDLR0Xvw8TFAMTlPmryx3G2HWEVjurqKAUfhZU+qFMURnIgGaCJqwkoSNlR4bc1/ywgoUeL+aQ90TIfhGTXi6sEzMJPvwMTuAyukFZKUoA1+dy/h8v7XrrJpignDAD2dbZyC2j79WhqqnrAwPlv6uu1hllJVRtGNPGb6H5NbThl2Te+qHst45GZuD/b2t8t/Z6V/1o96wIoLXi4ULSyrl09rmep95foA4nqHCq4hICOVFkupoNF3VMaHEzyPvTQQ5Wb77nksfgBOWEAGz/qS8liVtNX2Me2zpdS1/J1xAqnN4razIJ/OilDasLhdwzr34R+2ECcvW/7pw5CuVr6UZuoXNfrZobVJq9uao1m1bmtthWUWeylR6CCwO/2Y1Ef7f5wUs+gOOU4waQwXMV10NwlQ5lXZhXPVWdAfSBcayFe4kRKxsh7updhANwCuTy/9h5AYwMf40ufDVdd4YR/83IaYijsWMIheRLCXWFqbSOwpz4rzfde+nO47nmcQHI4BHne+i6JV4eA5DaKLZg6TLINx6gvVYUTyFwY2Xudza0RK0NN5NZ/UPCZ4YwMQTvqLEmW1y1kBoJ+OD53/cm/pvjAfGYAWTwgMEDmO1TV4tis7GqtuJ4Uabyz60ouLjzdAE3Vj75gy3n+whuJ7xuYtiMRlEh2A7+RONGvhX12mA/8EPlZZu+9eljAvGYAGTw6PfqoUvOlhUBKQVL1RYztZXlPvqad/zvolwvnAHCQFq03yUezoAw2lG1BgnYMXUw3qW38D6MjD50LCAeUxiD1q2mK8xGHUughBshNuE/I6GJBs2srnkXXX2mgMey/s/nvBf5kbuJgk859crirY0Mk1LwJC6S3592mOaK8QMXPLq28WjnPioDv/Bf9mHaqyNzGDokq/GumdrSj2nvf+VL+S44g+Wyrje/bE30R6y5VbVlPEGcTVAjXs3++vktD175ow8734cCSKp7u3HucQhGDTIHAVANZXXWJ/ZPX16U74azQD7+yIYvRNbd4yUo5ESGhDuQjqOzqJWZaeHHW/7iyv8e71zjAsh2L3LudZo9J5wc0vCkNkyRk6D9dO8X87+As0jmfu+Xc2wcf1c8c7CBTA8nY1AZ7mkY62BwtJL/2+3funz3kc4zrg2MvWfVbUsRVsMH6UBLhmz68XecbeCxbHzwU1vAm++H9EYKHk+dU5akSYuGXDzy1fHOc0QAb/pJspROtzAN5qpg6UhW/Ydc8qHeW+In4CyVTQ9cvgaM7UZIwVMHzbGijDOdZsPJ2Xxi9vden3+kcxyZgYjLmHEBLZ9+UiCBvYZzK3t/P9cJZ7lsvu9Tz9Pt/FTHyaLOVmyiF/MYbCFa4/GWCzqfPcwrHwbg7/7EEngSsrD4jHE+S7Qwrv0uiTthksjB5tGnjHc7fchKiIcWVdacpOYn7NR8ceaNY489BMDf44DZ4NJUdU3IMCmIVUYWwLR/VKOLUyE7vn7tEFX4/oVDGSkv8EiFcIwMhnmUOJHAap91/6sNtceOYaBtpxOUUs1Vx6ue1qDORx6eeG6CGZQzUfq+ee0Gbysv6hBPSGc5Y6sEtKEm44twLrbXHjcGQLJ9MlGvi5wg1YSoDBbJmPZjubwcJqmMjuCzRJpBqUWjjA58Og/BKxsffb72mAzAm19IFhJQJZ7P7F+t21W1XvH8ooY+mKSyo/PaIaru/Qx9Wn32UirVeox1Air6wqy/f/WS9JgMQCrF3JpF1epx2RykhGQw+0ZHTTdMcinnyy8R0wbZG6PmDEWPDQ+aSZUlzKng59L9BcCFPb6NMFoqNQ2lbkgYmKoXBuidTI5jPNn2wHXDNCru0U4I9cKaKxSLSPkI5CLNxaXOLUXeXwBMyuQ8UBKiaZIlzSvXlIAmr+0bK0lTskaLhjIudprBQctJWE1CYN6Z7R/nfQVA2nirOAwTxrY1H3K/5L597/M3T17bN1aYhcSzt4WFMsxzWqCWAinbRkt/WOJ9jf4j18zsCx63xndwfo+Kj+4JqDNxmLzhpY/CsSOx6hA0JkRWZe8v5/0M2z9CrqTeAjPPi9XaLkRge6HeJIJfaQUvdEhYqQRo+4TawbZSZ0/RQJLM4/0l7tORW0gup6kq6Hu6jtQ3la1/dcNewMoeF8bFTltJLMfXRkra3o5CoUT5UrNAD/FVuxe6AJiFpN5nXarqZInxZrNmrSWkyTrJ0r6HyNgphozgHHYgBjFrkUBt0eCuKqZs3QKYuGSHtOJpa53Vnh3KQ1m1h5WyOy8mmGdDWpcSHcYwimGhvY2pWwDJ1e5FYwkso71NEpFonoD7oHIxtMa0doqSLihxmrYKlTZKHvRDnUri3EDORM6lfUvWh/IJw+ggsQQgUa3EO6c1oprhnPyjGGYv1Kk0Wz8yHHELHdtD0kbORqmDkGpUxIwk9knRyISab+Z9g1N56ncmX+rqWOWd79y0LwqZackVSobByshE8zSuJQ6ZFqiyLwVRszlQ55IQcJpxSVvP9NGBVOIsbDlEau1gfUsUWlrF6oWZtLGTF+NsT0mehq4gXQF1Tz+QNIwF8cI+6xo1FPxxaoZLHpyp7w8pfPXDMpxTQ8k28Q9+5mdDncrUZc+1aszHLGT+6ce5RMbEFe+HTAiaQ5tQLZAgTUOR1c6EepTCYJLHKATODm3tUwKI8gDAPlblPtVZn9k8zOCkdcaWoE7FYaEFbCIZaSoN64MTISNDKy1p8gg5EdcPmdVT0dxqGItAVLcqbGKYymkD4DRgxA6FG7nSWAUJSbufQkH8RajAZdW4GlvoicHzoE4FK8lURgkjtYOstNZwNosLJZZm/f6YEOyTnvXQ8ydT7d7VeNDhAqhToaxpW/aESTratSCFEY6UK7louylEUW8a7qUZGUyDau2lnPPlOvTE0+9+spkKwk0EG+UA+QPpU1ScFeSWfzsjv3+36b4RBySUCUM4n1XlUFs7BHa3COpMMN84gxTW8sgtPPAtKSx2v9r+4Q6s71xS1pqIMas15S/9H9UBSOgZJmbeCnUnycXqcQkzKxVNGQbzPNtCWtzBewmABPSaav1XW3kxy1BLinDBUqkd14ec980XmkhXpyMHgPqEjqUoRgNpfZCet0iSRQBUO0iqLIzTfph0aJcCm/Dzv3UiiR26gkHjWE9YaAQXaXejBKkUlc5/tyxPegqAbAdpsoZ3M9qDnz4hWVMndh11wcI71+bIYUyLWE2NdnMgx9KYCIhiB8vlzetXLSnz7tXeGLRdoSshLGcdWiE5iFNcHbBwSmHTxyjUK1pPgBFw2iNIILrISl9CIjmZben+h+Sr/qTH7eXH9AHx8I0goO4lxb44MHbyyf1PNkxLzPWUOW2KyLWCdhQhj0EorUXVEU8Di2ho58qFz6WHHNIfSL66i46r7YWutnnoAOUcOmIZTFJpS+JPkNlriL2yjhmInMmXDnSyh4RNxdpf
501R5zCIBUoltBkO+ThVDeVK8ceqWNOBiyhZV2mGxC7KNK20x1GtzWxvZOumGsZrM4gLaDDZXcIc/PHQKgqqZfkfUHhgxN1vYhU9pmoscnlUNp74xbRuy1MWX4GCxJwMgj2uhilFcncUjtKpHr2/HYl4ZqDz2sS58Uv4t415/FhWmRHTIi8vrZcTR5VLl17qVzyPUWSUcJPCtqS4GfBcqkWKdsJGdy8MCKJRvHHnsYgDq0c8uzDgVfJZ5Ow1CZVPlrPbYDznJpW/qfJRPBLGYZxW42jnLqdcnegUt8HKk9JF3ccKTjx60aLe11PYTUgtBviWMPSBMO/FjEY5/DJ+AslPPu+vcZoz66jMweKV6en0/i53UNe4OIppT/M5bmKX75YN8P/vj1I51j/OeFPd5B8AwoEbH6bFzaApfu53z3n73iz76c4Z3PNg5ZvETGtfJqHlJdI2kreT2A9GGRSlN8XGnJmzfHO824AJIq99GpHkofcc3Aq2n7Des4273uG//Dby06O6TltkfPbXW7r2KQYsOF80S9bEVHGvy0JsY8Erb8gp83tz28ZHi8c33oE+v/diOSQ3Er026F6uNe2XDFaxucvKmo+65X/BnvWJpJbbE5P4dZxyAlBFJiIvK4iYQv3PpHxKNl6T/o3/X92379YefDo12Qw5XYcNc6zKvtWpVpzdGpmpOsKFRgedeZNlrp7DSNWy86n2zceTmMDYUnpuIo4xmJp6TliIq9EujS1NIeuYO7Hr1t7dFOe9R3JrBXjh0uolFNHy/Xqq/G2LXrJO99Xznn193Vo69GOSPkzkcbC+/MvASNOxdt5CvEtmG2dZxnhgRyxMCkbIWNrM4uZ4ba8lPeOJZTH5WBqTAgVJnqAX6SU9JdoZEVNAkbcojSaaPDPqkvd9uKWf5PNyr4p12IdU0bL5yORTtN2ZUzOeOEecxACCyMI869OxNHBTSQVNryA29seuTe0WO5xDEDyHLXa75EPx+rc+kQdc68cvrCNgzPmAiSfTS7IqpA92lTawIO3poxpVAonJO3lkaoOaOqmQiIZONomZQ0qCvPV+iw5hxUpuT2rT9W8FiOC0AWZqKP4SUCaE51lOKrQ73gsbmbMxSl0n6cLTS/hqbLu+afIkYy67
50/ySEuDbZ7icwdjb/LCsjxQYdISywwBRnVIShZEDBiDyvaQQaQvWDm36eCG4wGP5bgBZGEQMQfy8rHscdg02M5ixsBAKVJJLAnZez4Qe+l/t4eRNV3zJ/gEALNtLRShobXYGOWKPiqSLx2lGLiChYZWM1IZIYAizOerICobDeYKsUxpADe6p3lwMxwneHIrMAG5+2XbRWBokhUlhEe1iSlgaVICfI1KZ1UroxtJxWEdTf8PY1jnytBP/nDgHw5nqdZrYImBa84xcOX8iAqzeRjamoO42TTFzjT4KDqYjxHKzhSKJhqxCRaIhSM2QlbbvICXExaSKRJVLiblXbuHp70Hq5ZYOAGZEIAsd7/ilxITH6YTtWG1u7Ua4aQjl1Ai0PmaYBxDCMS4Gn2XSrqNAf72b/Pi4ohBK7XMjPqaiewN0w3krYGDe0xL67nRgWFnmos5StuNRJBw1zK5VVZX/i/gsTKz7eNlE5ZjX8lVPjjw2Nd3wQRkwm+w/OH12J2P8GqafSYNtMMLotJ6ir7FEtP5at1UAcdMs0OjbNgWXuhDs4sXL6Y110DcMNVfwBv3DfmpPG2bAgeGy5R6H3SDg4MwNJr3Q+W8h8hKGpQHsRjlaJmsHgXHZVpXjmj0EZvBPbnK2xMFjyWGkyDBKSy89zUaznnopI96aXUkmL3/E2scdpA01QNjX/1ZVX9YFVZs4n+793loacI9hSYPB3b6VsjD/mIem5O8Hxyt+Ebumzc535B3OMQWrZL4YoP3IxXvG+JCxVRye/Z0f2U/nCSZMANrZeV8fGLldTiHZpeD2jZMew19yif974PvFkmTtz7dFlZne69a79tbdtDM2wBzr/JwHq3fpeTZT+NXSIwbjAvEtApFJInHcuKHy5aWiX3G+tHRvC063D1Q6t+658cnD7zw3U+NdLwmDzAuoDE6uUksQRrv+DRRCzWJWkgTjembHDNv/u3P0GBrySoD77xoYMZvGWhODBStmT7SSLXqA9HenDetlQLuJycCI2T3yBY2kjPx7EwseeKcHRwo7dtP3trBKZBTBmCtdLzq+X0MCwmT26thTk2iMW0Kg+BU0oK+OBEwixevMqve2WtgeAfOuqI12ja8H6GBtCc/lRwJORMCEZIR2jsXNdNxUUNTZd+0ZOhEwpLjlZNiA48mXdfh0zR5umOd74iGoZ1und/P0O7lhY4hvKnphkiPC6/Xo8+TlIMiFb4YMG7a72GYVhab/NRdu2FPcwPtdo6FZptAWyEZXHlPOcsenQY5LQwcTwjQtuIIzCPdaqfFEgUYsynEoCAP+TWjbZiFMZ2mnWDvnc42+5MAV9Dev37Rw1szPfQss6cTsLHyG7LNE1I07Q7WAAAAAElFTkSuQmCC",sI={"rp-loader-icon":"_rp-loader-icon_7y2fm_1"},TG=({className:i,...l})=>G.jsx("img",{...l,className:xl(sI["rp-loader-icon"],i),alt:"loader",src:eI}),Ap=u.createContext({LoaderImageComponent:void 0}),VG=()=>{let i=u.useContext(Ap);return i.LoaderImageComponent===void 0&&gt.error("Please use this hooks inside children component of RPProvider"),i},iI=({children:i,loaderImage:l})=>G.jsx(Ap.Provider,{value:{LoaderImageComponent:()=>l||G.jsx(TG,{})},children:i}),_p=u.createContext({setIcons:()=>{throw Error("setIcons is not initialized yet")}}),El=()=>u.useContext(_p),cI=({children:i})=>{let[l,t]=u.useState({});return G.jsx(_p.Provider,{value:{...l,setIcons:t},children:i})},qp=u.createContext({activeDocumentProperties:!1,setActiveDocumentProperties:()=>{}}),$p=()=>u.useContext(qp),dI=({children:i})=>{let[l,t]=u.useState(!1),e=u.useMemo(()=>({activeDocumentProperties:l,setActiveDocumentProperties:t}),[l]);return G.jsx(qp.Provider,{value:e,children:i})},aI=()=>{let i=u.useRef(null),l=u.useRef(/firefox/i.test(navigator.userAgent)),t=u.useCallback(()=>{var b,o;let e=document.getSelection();if(!e||e.rangeCount===0||l.current)return;let s=e.getRangeAt(0),c=i.current&&(s.compareBoundaryPoints(Range.END_TO_END,i.current)===0||s.compareBoundaryPoints(Range.START_TO_END,i.current)===0),d=c?s.startContainer:s.endContainer;if((d==null?void 0:d.nodeType)===Node.TEXT_NODE&&(d=d.parentNode),!c&&s.endOffset===0)do{for(;!(d!=null&&d.previousSibling);)d=d==null?void 0:d.parentNode;d=d.previousSibling}while(!d.childNodes.length);let n=(b=d==null?void 0:d.parentElement)==null?void 0:b.closest("[data-rp-text-layer]"),Z=n==null?void 0:n.querySelector(".endOfContent");Z&&(Z.style.width=n.style.width,Z.style.height=n.style.height,(o=d==null?void 0:d.parentElement)==null||o.insertBefore(Z,c?d:d.nextSibling)),i.current=s.cloneRange()},[]);u.useEffect(()=>(document==null||document.addEventListener("selectionchange",t),()=>{document==null||document.removeEventListener("selectionchange",t)}),[t])},nI=`
51button{font-family:inherit}.hiddenCanvasElement{width:0;height:0;display:none;position:absolute;top:0;left:0}
52._rp-button_1jswj_1{border-radius:var(--rp-button-border-radius);padding:var(--rp-button-padding);color:var(--rp-text-color);cursor:pointer;font-size:var(--rp-icon-font-size);background:0 0;border:none;line-height:0}._rp-button_1jswj_1[aria-disabled=true]{opacity:.5;cursor:not-allowed}._rp-button_1jswj_1:hover:not(:disabled),._rp-button-active_1jswj_18:not(:disabled){background:var(--rp-button-hover-background)}._rp-button_1jswj_1:disabled{cursor:not-allowed;color:var(--rp-icon-disabled)}._rp-button_1jswj_1:focus-visible{outline-color:var(--rp-outline-color,-webkit-focus-ring-color);outline-offset:0;outline-style:solid;transition:none}
53._rp-checkbox_1vwg8_1{all:unset;border-radius:var(--rp-checkbox-border-radius);border-color:var(--rp-checkbox-border-color);width:16px;height:16px;box-shadow:0 2px 10px var(--black-a7);background-color:#fff;border-style:solid;border-width:1px;justify-content:center;align-items:center;margin-right:8px;display:flex}._rp-checkbox_1vwg8_1:focus{outline:1px solid var(--rp-primary-color)}._rp-checkbox_1vwg8_1[data-state=checked]{background-color:var(--rp-primary-color)}._rp-checkbox-indicator_1vwg8_25{color:var(--rp-checkbox-indicator-color)}
54._rp-dropdown-content_1vzkq_1{font-family:var(--rp-font-family);font-size:var(--rp-dropdown-font-size);background-color:var(--rp-dropdown-background-color);border-radius:var(--rp-dropdown-border-radius);will-change:transform, opacity;min-width:260px;z-index:calc(var(--rp-base-z-index,1) * 5);animation-duration:.4s;animation-timing-function:cubic-bezier(.16,1,.3,1);box-shadow:0 2px 12px #00000026}._rp-dropdown-content_1vzkq_1[data-side=top]{animation-name:_slideDownAndFade_
541vzkq_1}._rp-dropdown-content_1vzkq_1[data-side=right]{animation-name:_slideLeftAndFade_1vzkq_1}._rp-dropdown-content_1vzkq_1[data-side=bottom]{animation-name:_slideUpAndFade_1vzkq_1}._rp-dropdown-content_1vzkq_1[data-side=left]{animation-name:_slideRightAndFade_1vzkq_1}._rp-dropdown-arrow_1vzkq_30{fill:var(--rp-dropdown-background-color)}@keyframes _slideUpAndFade_1vzkq_1{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}@keyframes _slideRightAndFade_1vzkq_1{0%{opacity:0;transform:translate(-2px)}to{opacity:1;transform:translate(0)}}@keyframes _slideDownAndFade_1vzkq_1{0%{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}@keyframes _slideLeftAndFade_1vzkq_1{0%{opacity:0;transform:translate(2px)}to{opacity:1;transform:translate(0)}}
55._rp-input_d52xg_1{font-family:var(--rp-font-family);border-width:1px;border-color:var(--rp-input-border-color,transparent);border-radius:var(--rp-input-border-radius);height:2rem;color:var(--rp-text-color);background:var(--rp-input-background-color);padding:var(--rp-input-padding);box-sizing:border-box;border-style:solid;outline:none}._rp-input_d52xg_1::placeholder{color:var(--rp-input-placeholder-color)}._rp-input_d52xg_1[data-icon=true]{padding-left:calc(1rem + 14px)}._rp-input_d52xg_1:focus,._rp-input_d52xg_1:focus-visible{border-color:var(--rp-outline-color,var(--rp-primary-color))}._rp-input-wrapper_d52xg_28{position:relative}._rp-input-label_d52xg_32{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}._rp-input-icon_d52xg_44{color:var(--rp-input-placeholder-color);justify-content:center;align-items:center;padding-left:.5rem;padding-right:.5rem;display:flex;position:absolute;top:0;bottom:0}
56._rp-loading-overlay_wazy2_1{z-index:100;background:#00000080;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}._rp-loading-modal_wazy2_14{background:var(--rp-print-progress-background);border-radius:8px;flex-direction:column;justify-content:center;align-items:center;min-width:240px;min-height:120px;padding:24px;display:flex;box-shadow:0 4px 6px #0000001a}._rp-loading-title_wazy2_27{text-align:center;color:var(--rp-print-progress-color);margin-bottom:16px;font-family:system-ui,-apple-system,sans-serif;font-size:14px}._rp-loading-progress-bar_wazy2_35{background:#f0f0f0;border-radius:32px;width:100%;height:4px;margin-bottom:16px;position:relative;overflow:hidden}._rp-loading-progress_wazy2_35{background:linear-gradient(90deg, color-mix(in srgb, var(--rp-primary-color) 80%, black) 0%, var(--rp-primary-color) 50%, color-mix(in srgb, var(--rp-primary-color) 80%, white) 100%);border-radius:32px;height:100%;position:absolute}._rp-loading-cancel-button_wazy2_55{color:#666;border-radius:var(--rp-button-border-radius);cursor:pointer;background:0 0;border:1px solid #e2e6e9;width:70px;padding:8px;font-family:system-ui,-apple-system,sans-serif;transition:background-color .2s}._rp-loading-cancel-button_wazy2_55:hover{background:#f5f5f5}@keyframes _loading_wazy2_1{0%{transform:translate(-100%)}50%{transform:translate(100%)}to{transform:translate(-100%)}}
57._rp-password-overlay_1cd0u_1{z-index:100;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}._rp-password-modal_1cd0u_13{background:var(--rp-password-background-color);border:1px solid var(--rp-password-border-color);border-radius:8px;flex-direction:column;justify-content:start;max-width:360px;margin-left:10px;margin-right:10px;padding:24px;display:flex;box-shadow:0 2px 12px #00000026}._rp-password-title_1cd0u_27{font-family:var(--rp-font-family);color:var(--rp-password-title-font-color);margin-bottom:16px;font-size:16px;font-weight:500}._rp-password-content_1cd0u_35{font-size:14px;font-family:var(--rp-font-family);color:var(--rp-password-content-font-color)}._rp-password-form_1cd0u_41{margin-top:32px}._rp-password-label_1cd0u_45{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}._rp-password-input_1cd0u_57{border:1px solid var(--rp-password-input-border-color);border-radius:var(--rp-input-border-radius);box-sizing:border-box;background-color:var(--rp-password-background-color);width:100%;height:32px;caret-color:var(--rp-password-input-color);color:var(--rp-password-input-font-color);padding:7.5px;font-size:14px}._rp-password-input_1cd0u_57::placeholder{color:var(--rp-password-input-placeholder-color)}._rp-password-input-invalid_1cd0u_74{border-color:#ff2f61}._rp-password-message-invalid_1cd0u_78{color:#ff2f61;height:20px;margin-top:4px}._rp-password-submit-button_1cd0u_84{text-align:center;border-radius:var(--rp-password-button-border-radius);background-color:var(--rp-password-button-background-color);width:100%;height:35px;color:var(--rp-password-button-font-color);cursor:pointer;font-family:var(--rp-font-family);border:1px solid var(--rp-password-button-border-color);justify-content:center;align-items:center;margin-top:8px;padding:8px;transition:background-color .2s;
57display:flex}
58._tooltipContent_12gjy_1{border-radius:var(--rp-tooltip-border-radius);padding:var(--rp-tooltip-padding);background-color:var(--rp-tooltip-background-color);z-index:1000}._tooltipArrow_12gjy_8{fill:var(--rp-tooltip-background-color)}._tooltipContent_12gjy_1 span{color:var(--rp-tooltip-font-color);font-size:var(--rp-tooltip-font-size)}@keyframes _fadeIn_12gjy_1{0%{opacity:0}to{opacity:1}}
59._rp-drop-zone_1sc50_1{z-index:100;background-color:var(--rp-drop-zone-background-color);font-size:var(--rp-drop-zone-font-size);color:var(--rp-drop-zone-font-color);border:dashed var(--rp-drop-zone-border) 1px;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}._rp-drop-zone-transparent_1sc50_15{z-index:100;background-color:#0000;position:absolute;inset:0}
60._rp-pages_fn8tz_1{justify-content:center;display:flex}._rp-pages_fn8tz_1:not(._rp-page-scrolling-wrapper_fn8tz_6)>div{height:var(--rp-pages-height)!important;width:var(--rp-pages-width)!important}._rp-pages-horizontal-scroll_fn8tz_11{display:block}._rp-not-supported-list_fn8tz_15{margin:0;padding:0 0 0 .5em;list-style-type:disc;list-style-position:inside}._rp-pages-container_fn8tz_23{outline-width:0;height:100%;position:relative}._rp-pages-container_fn8tz_23 .ignore-hover:focus,._rp-pages-container_fn8tz_23 :not(:hover):focus-visible,._rp-pages-container_fn8tz_23 :not(:hover):focus:focus-visible{outline-color:var(--rp-outline-color,-webkit-focus-ring-color);outline-offset:0px;outline-width:1px;outline-style:solid;transition:none}._rp-pages-container_fn8tz_23 .highlight.appended{border-radius:var(--rp-text-layer-highlight-border-radius);background-color:var(--rp-highlight-background-color);opacity:.5}._rp-pages-container_fn8tz_23 .highlight.appended.begin{border-radius:var(--rp-text-layer-highlight-border-radius) 0 0 var(--rp-text-layer-highlight-border-radius)}._rp-pages-container_fn8tz_23 .highlight.appended.middle{border-radius:0}._rp-pages-container_fn8tz_23 .highlight.appended.end{border-radius:0 var(--rp-text-layer-highlight-border-radius) var(--rp-text-layer-highlight-border-radius) 0}._rp-pages-container_fn8tz_23 .highlight.appended.selected{background-color:var(--rp-current-highlight-background-color)}._rp-page-scrolling-wrapper_fn8tz_6{position:relative;overflow:auto}._rp-viewer_fn8tz_65{height:100%;position:relative}._rp-cursor-grab_fn8tz_70{cursor:grab;-webkit-user-select:none;user-select:none}._rp-cursor-grabbing_fn8tz_78{cursor:grabbing;-webkit-user-select:none;user-select:none}._rp-loader_fn8tz_86{background-color:var(--rp-loader-backdrop-color)}._rp-pages-container_fn8tz_23{background:var(--rp-pages-background-color)}._rp-not-supported_fn8tz_15{justify-content:center;align-items:center;width:100%;height:100%;display:flex}._rp-not-supported-content_fn8tz_102{max-width:250px;font-weight:400;line-height:1.5}._rp-load-error_fn8tz_108{justify-content:center;align-items:center;width:100%;height:100%;display:flex}._rp-load-error-message_fn8tz_116{text-align:center;max-width:280px;font-weight:400;line-height:1.5}
61._rp-loader-icon_7y2fm_1{width:40px;height:40px;animation:1s linear infinite _spin_7y2fm_1}@media (prefers-reduced-motion:reduce){._rp-loader-icon_7y2fm_1{animation:none}}@keyframes _spin_7y2fm_1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
62._rp-container_f63gc_1{font-family:var(--rp-font-family);height:600px;color:var(--rp-text-color);border-radius:var(--rp-border-radius);position:relative;overflow:hidden}._rp-container_f63gc_1:focus,._rp-container_f63gc_1:focus-within{outline:var(--rp-container-focus-outline-width) solid var(--rp-container-focus-outline-color);outline-offset:var(--rp-container-focus-outline-offset)}
63._rp-layout_1yzm4_1{height:100%}._rp-layout-wrapper_1yzm4_5{flex:1;height:100%;position:relative}._rp-content_1yzm4_11{width:100%;height:calc(100% - var(--rp-toolbar-height));display:flex;overflow:hidden}._rp-sidebar_1yzm4_18{flex-shrink:0;display:flex}._rp-pages_1yzm4_23{flex:1;min-width:0;height:100%}._rp-container_1yzm4_29{height:100%}._rp-loader_1yzm4_33{background-color:var(--rp-loader-backdrop-color)}._rp-theme-variables_1yzm4_37{--rp-font-family:inherit;--rp-primary-color:#34affc;--rp-border-radius:4px;--rp-text-color:#1c2024;--rp-outline-color:var(--rp-primary-color);--rp-font-size:16px;--rp-drop-mask-background-color:#fafafa;--rp-loader-backdrop-color:transparent;--rp-icon-disabled:#c6ccd2;--rp-icon-font-size:calc(var(--rp-font-size) * 1.25);--rp-toolbar-background:#e2e6e9;--rp-toolbar-border-color:#c6ccd2;--rp-toolbar-padding:.25rem;--rp-toolbar-gap:.25rem;--rp-toolbar-size:48px;--rp-sidebar-width:48px;--rp-thumbnail-border-color:#e2e6e9;--rp-thumbnail-background-color:#fff;--rp-thumbnail-active-color:#0003;--rp-thumbnail-padding-y:16px;--rp-button-hover-background:#0000001a;--rp-button-padding:4px;--rp-button-border-radius:4px;--rp-input-padding:.5rem;--rp-input-border-radius:calc(var(--rp-border-radius) + 2px);--rp-input-background-color:#fff;--rp-input-placeholder-color:#c6ccd2;--rp-pages-background-color:#fff;--rp-page-shadow:0px 2px 12px 0px #00000026;--rp-page-outline:none;--rp-page-outline-offset:0;--rp-annotation-layer__link-hover-background:#ff03;--rp-dropdown-background-color:#f1f2f4;--rp-dropdown-padding:4px;--rp-dropdown-hover-background-color:#0000001a;--rp-dropdown-separator-color:#e2e6e9;--rp-dropdown-separator-margin:4px;--rp-dropdown-padding-menu-item:8px;--rp-dropdown-font-size:calc(var(--rp-font-size) * .875);--rp-dropdown-border-radius:calc(var(--rp-border-radius) + 2px);--rp-search-tool-dropdown-padding:8px;--rp-popover-font-size:calc(var(--rp-font-size) * .875);--rp-popover-background-color:#f1f2f4;--rp-popover-color:#1c2024;--rp-popover-border-color:#e2e6e9;--rp-popover-border-radius:calc(var(--rp-border-radius) + 2px);--rp-overlay-background-color:#000c;--rp-dialog-background-color:#f1f2f4;--rp-properties-divider-color:#e2e6e9;--rp-properties-divider-margin:16px;--rp-property-item-gap:12px;--rp-dialog-title-color:#1c2024;--rp-property-item-label-color:#596673;--rp-property-close-icon-size:calc(var(--rp-font-size) * 1.25);--rp-property-item-font-size:calc(var(--rp-font-size) * .875);
63--rp-property-item-font-weight:400;--rp-dialog-title-font-size:calc(var(--rp-font-size) * 1.125);--rp-dialog-title-font-weight:600;--rp-menu-item-icon-size:16px;--rp-print-progress-background:#f1f2f4;--rp-print-progress-color:#1c2024;--rp-drop-zone-border:#c6ccd2;--rp-drop-zone-font-color:#8c99a6;--rp-drop-zone-font-size:calc(var(--rp-font-size) * 1.125);--rp-drop-zone-background-color:#fafafa;--rp-checkbox-border-radius:var(--rp-border-radius);--rp-checkbox-border-color:#e2e6e9;--rp-checkbox-indicator-color:white;--rp-highlight-background-color:#ff0;--rp-text-layer-highlight-border-radius:var(--rp-border-radius);--rp-current-highlight-background-color:red;--rp-tooltip-background-color:#1c2024;--rp-tooltip-border-radius:var(--rp-border-radius);--rp-tooltip-font-color:#fff;--rp-tooltip-font-size:14px;--rp-tooltip-padding:8px 8px;--rp-password-background-color:#fff;--rp-password-title-font-color:#1c2024;--rp-password-content-font-color:#596673;--rp-password-input-border-color:#e2e6e9;--rp-password-input-placeholder-color:#c6ccd2;--rp-password-input-font-color:#000;--rp-password-button-background-color:#34affc;--rp-password-button-font-color:#fff;--rp-password-button-border-color:#0995ee;--rp-password-border-color:#e2e6e9;--rp-password-button-border-radius:8px;--rp-container-focus-outline-width:0px;--rp-container-focus-outline-color:var(--rp-primary-color);--rp-container-focus-outline-offset:2px;--rp-skip-link-font-size:14px;--rp-skip-link-color:#fff;--rp-skip-link-background-color:#0075cb;--rp-skip-link-border-color:#005da5}._rp-theme-variables_1yzm4_37._rp-dark-mode_1yzm4_156{--rp-primary-color:#34affc;--rp-text-color:#fff;--rp-drop-mask-background-color:#1c2024;--rp-loader-backdrop-color:transparent;--rp-icon-disabled:#596673;--rp-toolbar-background:#2d3339;--rp-toolbar-border-color:#434c56;--rp-thumbnail-border-color:#2d3339;--rp-thumbnail-background-color:#1c2024;--rp-thumbnail-active-color:#0000004d;--rp-button-hover-background:#0000004d;--rp-input-background-color:#1c2024;--rp-pages-background-color:#1c2024;--rp-page-shadow:0px 2px 12px 0px #00000080;--rp-dropdown-background-color:#434c56;--rp-dropdown-hover-background-color:#0000001a;--rp-dropdown-separator-color:#2d3339;--rp-popover-background-color:#434c56;--rp-popover-color:var(--rp-text-color);--rp-popover-border-color:#2d3339;--rp-dialog-background-color:#434c56;--rp-properties-divider-color:#2d3339;--rp-property-item-label-color:#c6ccd2;--rp-dialog-title-color:#fff;--rp-print-progress-background:#434c56;--rp-print-progress-color:#fff;--rp-drop-zone-background-color:#1c2024;--rp-drop-zone-border:#434c56;--rp-drop-zone-font-color:#596673;--rp-tooltip-background-color:#5b6d7f;--rp-password-background-color:#1c2024;--rp-password-title-font-color:#fff;--rp-password-content-font-color:#c6ccd2;--rp-password-input-border-color:#2d3339;--rp-password-input-placeholder-color:#596673;--rp-password-input-font-color:#fff;--rp-password-button-background-color:#34affc;--rp-password-button-font-color:#fff;--rp-password-button-border-color:#0995ee;--rp-password-border-color:#2d3339;--rp-skip-link-font-size:14px;--rp-skip-link-color:#fff;--rp-skip-link-background-color:#0075cb;--rp-skip-link-border-color:#005da5}
64._rp-wrapper-layout_2cghq_1{height:100%;position:relative}
65._rp-skip-link_15qjp_1{z-index:10000;border:1px solid var(--rp-skip-link-border-color);border-radius:var(--rp-border-radius);background:var(--rp-skip-link-background-color);width:200px;height:36px;color:var(--rp-skip-link-color);font-size:var(--rp-skip-link-font-size);white-space:nowrap;clip:rect(0, 0, 0, 0);clip-path:inset(50%);justify-content:center;align-items:center;padding:0;font-weight:600;text-decoration:none;display:flex;position:absolute;top:6px;left:6px;overflow:hidden}._rp-skip-link_15qjp_1:focus{clip:auto;clip-path:none;overflow:visible}._rp-skip-link_15qjp_1:focus:not(:focus-visible),._rp-skip-link_15qjp_1:focus-visible{outline:none}._rp-skip-link_15qjp_1:hover{background:var(--rp-skip-link-border-color);border-color:var(--rp-skip-link-border-color)}
66._rp-sidebar-content-wrapper_ppg43_1{height:100%;display:flex;position:relative;overflow:hidden}._rp-sidebar-content_ppg43_1{background:var(--rp-toolbar-background);min-width:var(--rp-sidebar-width);max-width:var(--rp-sidebar-width);text-align:center;flex-shrink:0;padding-top:.75rem}._rp-thumbnails-wrapper_ppg43_17{width:var(--rp-thumbnail-width,auto);flex-shrink:0;transition:width .15s;position:relative;overflow:hidden}._rp-thumbnails-wrapper_ppg43_17._rp-thumbnails-wrapper-dragging_ppg43_24{transition:width}._rp-thumbnails-wrapper-hidden_ppg43_28{width:0}
67._rp-thumbnail-dragger_1faw8_2{touch-action:none;cursor:col-resize;background-color:var(--rp-thumbnail-border-color);width:4px;height:100%;transition:width .4s;position:absolute;top:0;right:0}._rp-thumbnail-dragger-dragging_1faw8_13,._rp-thumbnail-dragger_1faw8_2:hover{width:5px}
68._rp-thumbnail-dragger_174bn_1{touch-action:none;cursor:col-resize;background-color:var(--rp-thumbnail-border-color);width:4px;height:100%;transition:width .4s;position:absolute;top:0;right:0}._rp-thumbnail-dragger_174bn_1:hover,._rp-thumbnail-dragger-dragging_174bn_15{width:5px}
69._rp-thumbnail-wrapper_czi7p_1{margin-bottom:var(--rp-thumbnail-padding-y);cursor:pointer;flex-direction:column;align-items:center;display:flex}._rp-thumbnail-text_czi7p_10{color:var(--rp-text-color);margin-top:8px;font-size:12px;font-weight:400}._rp-thumbnail_czi7p_1{display:flex;position:relative;box-shadow:0 2px 6px #00000026}._rp-thumbnail_czi7p_1:not(._rp-thumbnail-active_czi7p_23):not(:hover){padding:4px}._rp-thumbnail-active_czi7p_23,._rp-thumbnail_czi7p_1:hover{border:var(--rp-thumbnail-active-color) solid 4px}._rp-thumbnail-loader_czi7p_32{justify-content:center;align-items:center;display:flex}
70._rp-thumbnails-container_1szrf_1{height:100%;max-height:100%;width:var(--rp-thumbnail-width,auto);background:var(--rp-thumbnail-background-color);flex-direction:column;align-items:center;display:flex;overflow:hidden auto}._rp-thumbnails_1szrf_1{padding-top:var(--rp-thumbnail-padding-y);box-sizing:border-box;width:100%;padding-right:4px}
71._rp-dialog-wrapper_xb722_1{z-index:9999;position:fixed;inset:0}._rp-dialog-overlay_xb722_7{background:var(--rp-overlay-background-color);position:fixed;inset:0}._rp-document-dialog_xb722_13{background:var(--rp-dialog-background-color);border-radius:var(--rp-border-radius);border:none;max-width:420px;padding:16px;line-height:16px;position:relative;top:50%;left:50%;transform:translate(-50%,-50%)}._rp-document-dialog_xb722_13:focus-visible{outline:none}@media screen and (width<=640px){._rp-document-dialog_xb722_13{width:85%}}._rp-dialog-title_xb722_35{font-size:var(--rp-dialog-title-font-size);
71font-weight:var(--rp-dialog-title-font-weight);color:var(--rp-dialog-title-color);margin-top:0;margin-bottom:12px;line-height:normal}._rp-dialog-close_xb722_44{font-size:var(--rp-property-close-icon-size);cursor:pointer;position:absolute;top:16px;right:11px}._rp-properties-divider_xb722_52{background:var(--rp-properties-divider-color);width:100%;height:1px;margin-top:var(--rp-properties-divider-margin);margin-bottom:var(--rp-properties-divider-margin)}
72._rp-menu-item_cu12j_1{padding:var(--rp-dropdown-padding-menu-item);cursor:pointer;border-radius:var(--rp-border-radius);outline:none;align-items:center;display:flex}._rp-menu-item_cu12j_1 :is(svg){font-size:var(--rp-menu-item-icon-size)}._rp-menu-item_cu12j_1:is(:hover,:focus-visible){background:var(--rp-dropdown-hover-background-color)}.rp-menu-item-left{justify-content:center;align-items:center;padding-right:8px;display:flex}.rp-menu-item{flex-direction:row;align-items:center;width:100%;display:flex}.rp-menu-item-right{margin-left:auto}.rp-menu-item[aria-disabled=true]{opacity:.5;cursor:not-allowed}._rp-menu-item_cu12j_1[data-disabled]{pointer-events:none;opacity:.5}
73._rp-menu-separator_17dlz_1{background-color:var(--rp-dropdown-separator-color);height:1px;margin-top:var(--rp-dropdown-separator-margin);margin-bottom:var(--rp-dropdown-separator-margin)}
74._rp-go-to-Top_4e0yd_1{transform:rotate(180deg)}
75._rp-other-tool-content_su718_1{padding:var(--rp-dropdown-padding)}
76._rp-paginate_1yinm_1{align-items:center;display:flex}._rp-page-input_1yinm_6{box-sizing:border-box;appearance:none;flex-shrink:0;width:3.5em;min-width:calc(4ch + 1rem);max-width:calc(4ch + 1rem);margin:1px .25rem;padding:.25rem .5rem}._rp-page-input_1yinm_6::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}._rp-page-input_1yinm_6::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}._rp-page-input_1yinm_6[type=number]{-moz-appearance:textfield}._rp-total-page_1yinm_29{color:var(--rp-text-color);margin-right:4px;font-size:14px;font-weight:400}
77._rp-property-item-wrapper_jno3l_1{gap:var(--rp-property-item-gap);margin-top:var(--rp-property-item-gap);margin-bottom:var(--rp-property-item-gap);font-size:var(--rp-property-item-font-size);font-weight:var(--rp-property-item-font-weight);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}._rp-property-item-label_jno3l_11{color:var(--rp-property-item-label-color)}._rp-property-item-value_jno3l_15{grid-column:span 2/span 2}
78._rp-toolbar-content_sz31z_1{background:var(--rp-toolbar-background);border-bottom:var(--rp-toolbar-border-color) 1px solid;padding:0 var(--rp-toolbar-padding);min-height:var(--rp-toolbar-size);align-items:center;display:flex}._rp-toolbar-wrapper_sz31z_10{justify-content:space-between;gap:0;width:100%;padding-left:1px;display:flex;overflow-x:auto}._rp-toolbar-wrapper_sz31z_10::-webkit-scrollbar{width:2px!important;height:2px!important}._rp-toolbar-wrapper_sz31z_10::-webkit-scrollbar-thumb{background-color:#888;border-radius:3px}._rp-toolbar-wrapper_sz31z_10::-webkit-scrollbar-track{background:#f1f1f1}._rp-toolbar-start_sz31z_33{align-items:center;gap:var(--rp-toolbar-gap);display:flex}._rp-toolbar-middle_sz31z_39{justify-content:center;align-items:center;gap:var(--rp-toolbar-gap);display:flex}._rp-toolbar-end_sz31z_46{justify-content:flex-end;align-items:center;gap:var(--rp-toolbar-gap);padding-right:1px;display:flex}
79._rp-rotate-counterclockwise_1nqcb_1{transform:rotateY(180deg)}
80._rp-search-tool-content_t0ih3_1{border:1px solid var(--rp-popover-border-color);border-radius:var(--rp-popover-border-radius);background-color:var(--rp-popover-background-color);color:var(--rp-text-color);padding:8px;display:flex}._rp-search-tool-input_t0ih3_10{color:var(--rp-text-color);align-items:center;gap:.7rem;display:flex}._rp-search-tool-input-icon_t0ih3_17{color:var(--rp-text-color);font-size:1.25rem}._rp-search-tool-input-icon_t0ih3_17[aria-disabled=true]{opacity:.5;cursor:not-allowed}._rp-search-tool-controls_t0ih3_27{border-left:1px solid var(--rp-popover-border-color);align-items:baseline;margin-left:.4rem;padding-left:.4rem;display:flex}._rp-search-tool-input-wrapper_t0ih3_35{flex-direction:column;gap:8px;display:flex}._rp-search-tool-input-checkboxes_t0ih3_41{gap:.5rem;display:flex}._rp-search-tool-input-clear_t0ih3_46{cursor:pointer;color:var(--rp-input-placeholder-color);justify-content:center;align-items:center;padding-left:.5rem;padding-right:.5rem;display:flex;position:absolute;top:0;bottom:0;right:0}._rp-search-input_t0ih3_60{color:var(--rp-text-color);max-width:220px;padding-right:2rem}
80._rp-search-icon-info_t0ih3_66{cursor:pointer;justify-content:center;align-items:center;margin-right:.5rem;font-size:20px;display:flex}._rp-search-loader-icon_t0ih3_75{width:20px;height:20px}._rp-search-tool-result-navigator_t0ih3_80{margin-right:.3rem}
81._rp-toolbar-layout_13tet_1{flex-direction:column;height:100%;display:flex}._rp-content_13tet_7{width:100%;height:calc(100% - var(--rp-toolbar-height));display:flex}._rp-topbar-content_13tet_13{background:var(--rp-toolbar-background);border-bottom:var(--rp-toolbar-border-color) 1px solid;padding:0 var(--rp-toolbar-padding);min-height:var(--rp-toolbar-size);align-items:center;display:flex}._rp-sidebar-content_13tet_22{text-align:center;background:var(--rp-toolbar-background);border-right:var(--rp-toolbar-border-color) 1px solid;min-width:var(--rp-sidebar-width);flex-direction:column;padding-block:.75rem;display:flex}._rp-pages_13tet_32{background:var(--rp-pages-background-color);flex:1}._rp-thumbnails-wrapper_13tet_37{width:var(--rp-thumbnail-width,auto);flex-shrink:0;transition:width .15s;position:relative;overflow:hidden}._rp-thumbnails-wrapper-hidden_13tet_45{width:0}
82._rp-zoom-wrapper_1yldl_1{gap:4px;display:flex}._rp-current-zoom-wrapper_1yldl_6{align-items:center;display:flex}._rp-current-zoom-wrapper_1yldl_6._active_1yldl_11{background-color:var(--rp-button-hover-background)}._rp-current-zoom-icon_1yldl_15{margin-left:2px;transform:rotate(180deg)}._rp-zoom-level-icon_1yldl_20{margin-left:2px}._rp-current-zoom-text_1yldl_24{font-size:14px}._rp-zoom-dropdown-content_1yldl_28{padding:var(--rp-dropdown-padding)}
83._rp-annotation-layer_rwxfx_1{--annotation-unfocused-field-background:url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");--input-focus-border-color:Highlight;--input-focus-outline:1px solid Canvas;--input-unfocused-border-color:transparent;--input-disabled-border-color:transparent;--input-hover-border-color:black;--link-outline:none;pointer-events:none;transform:unset;color:#000;transform-origin:var(--rp-page-rotate-translate);transform:rotate(var(--rp-rotate));display:block;position:absolute;inset:0}._rp-annotation-layer_rwxfx_1 :is(img){width:100%;max-width:100%}._rp-annotation-layer_rwxfx_1 .overlaidText{width:0;height:0;display:inline-block;position:absolute;top:0;left:0;overflow:hidden}._rp-annotation-layer_rwxfx_1 section:not(.popupAnnotation){z-index:calc(var(--rp-base-z-index,1) * 3)!important}._rp-annotation-layer_rwxfx_1 section:has(div.annotationContent) canvas.annotationContent{display:none}._rp-annotation-layer_rwxfx_1 section a{cursor:pointer;width:100%;height:100%;position:absolute;top:0;left:0}._rp-annotation-layer_rwxfx_1 section a:hover{background-color:var(--rp-annotation-layer__link-hover-background)}._rp-annotation-layer_rwxfx_1 section :is(svg){width:100%;height:100%;position:absolute;top:0;left:0}._rp-annotation-layer_rwxfx_1 section .popupTriggerArea,._rp-annotation-layer_rwxfx_1 section.popupTriggerArea{cursor:pointer}._rp-annotation-layer_rwxfx_1 section.popupAnnotation{font-size:calc(9px * var(--scale-factor));pointer-events:none;width:max-content;max-width:45%;height:auto}._rp-annotation-layer_rwxfx_1 section.popupAnnotation.focused .popup{outline-width:3px}._rp-annotation-layer_rwxfx_1 section .popupContent{margin-top:calc(2px * var(--scale-factor));padding-top:calc(2px * var(--scale-factor));border-top:1px solid #333}._rp-annotation-layer_rwxfx_1 section .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--scale-factor))}._rp-annotation-layer_rwxfx_1 section .annotationTextContent,._rp-annotation-layer_rwxfx_1 .overlaidText{opacity:0;color:#0000;-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;height:100%;position:absolute}._rp-annotation-layer_rwxfx_1 section .annotationTextContent span{width:100%;display:inline-block}._rp-annotation-layer_rwxfx_1 section.fileAttachmentAnnotation .popupTriggerArea{width:100%;height:100%}._rp-annotation-layer_rwxfx_1 section.textWidgetAnnotation :is(input,textarea),._rp-annotation-layer_rwxfx_1 section.choiceWidgetAnnotation select,._rp-annotation-layer_rwxfx_1 section.buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--scale-factor)) sans-serif;vertical-align:top;width:100%;height:100%;margin:0}._rp-annotation-layer_rwxfx_1 section.textWidgetAnnotation :is(input,textarea)[disabled],._rp-annotation-layer_rwxfx_1 section.choiceWidgetAnnotation select[disabled],._rp-annotation-layer_rwxfx_1 section.buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{border:2px solid var(--input-disabled-border-color);cursor:not-allowed;background:0 0}._rp-annotation-layer_rwxfx_1 section.textWidgetAnnotation :is(input,textarea):hover,._rp-annotation-layer_rwxfx_1 section.choiceWidgetAnnotation select:hover,._rp-annotation-layer_rwxfx_1 section.buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}._rp-annotation-layer_rwxfx_1 section.textWidgetAnnotation :is(input,textarea):hover,._rp-annotation-layer_rwxfx_1 section.choiceWidgetAnnotation select:hover,._rp-annotation-layer_rwxfx_1 section.buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}._rp-annotation-layer_rwxfx_1 section.textWidgetAnnotation :is(input,textarea):focus,._rp-annotation-layer_rwxfx_1 section.choiceWidgetAnnotation select:focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline);background:0 0;border-radius:2px}._rp-annotation-layer_rwxfx_1 section.textWidgetAnnotation textarea{resize:none}._rp-annotation-layer_rwxfx_1 section .popup{box-shadow:0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) #888;border-radius:calc(2px * var(--scale-factor));padding:calc(6px * var(--scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto;font-size:calc(9px * var(--scale-factor));background-color:#ff9;outline:1.5px solid #ffff4a}._rp-annotation-layer_rwxfx_1 section .popup *{font-size:calc(9px * var(--scale-factor))}._rp-annotation-layer_rwxfx_1 section .popup .header{display:inline-block}._rp-annotation-layer_rwxfx_1 section .popup .header h1{font-weight:700;display:inline}._rp-annotation-layer_rwxfx_1 section .popup .header .popupDate{margin-left:calc(5px * var(--scale-factor));width:fit-content;display:inline-block}._rp-annotation-layer_rwxfx_1 section{text-align:initial;pointer-events:auto;box-sizing:border-box;position:absolute}
84._rp-page-wrapper_krysr_1{justify-content:center;align-items:center;display:flex}._rp-page_krysr_1{box-shadow:var(--rp-page-shadow,0px 2px 12px 0px #00000026);outline:var(--rp-page-outline,none);outline-offset:var(--rp-page-outline-offset,0);position:relative}._rp-loader-wrapper_krysr_17{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;inset:0}
85._rp-text-highlight_jdkf8_1{pointer-events:none;transform-origin:0 0;white-space:pre;line-height:1;position:absolute;overflow:hidden}
86._rp-text-layer_1553j_1{color:#0000;transform:rotate(var(--rp-rotate));transform-origin:var(--rp-page-rotate-translate);z-index:0;--min-font-size:1;--text-scale-factor:calc(var(--total-scale-factor) * var(--min-font-size));--min-font-size-inv:calc(1 / var(--min-font-size));position:absolute;inset:0}._rp-text-layer_1553j_1._selecting_1553j_14~[data-rp$=annotationLayer] section{pointer-events:none}._rp-text-layer_1553j_1 br::selection{color:#0000;background-color:#0000}._rp-text-layer_1553j_1 :is(span,br):not(.highlight){color:#0000;white-space:pre;cursor:text;transform-origin:0 0;position:absolute}._rp-text-layer_1553j_1>:not(._markedContent_1553j_37),._rp-text-layer_1553j_1 ._markedContent_1553j_37 span:not(._markedContent_1553j_37){z-index:1;--font-height:0;font-size:calc(var(--text-scale-factor) * var(--font-height));--scale-x:1;--rotate:0deg;transform:rotate(var(--rotate)) scaleX(var(--scale-x)) scale(var(--m
86in-font-size-inv))}._rp-text-layer_1553j_1 .endOfContent{bottom:0;z-index:0;cursor:default;-webkit-user-select:none;user-select:none;display:block;position:absolute;inset:100% 0 0}._rp-text-layer_1553j_1._selecting_1553j_14 .endOfContent{top:0}._rp-text-layer-text_1553j_61{transform-origin:0 0;white-space:pre;line-height:1;position:absolute;overflow:hidden}@-moz-document url-prefix(){._rp-text-layer-text_1553j_61{overflow:visible}}
87`;function ZI(i,l){if(typeof window>"u"||document.getElementById(l))return;let t=document.createElement("style");t.id=l,t.textContent=i,document.head.appendChild(t)}function bI(){if(typeof document>"u"||document.getElementById("rp-print-style"))return;let i=document.createElement("style");i.id="rp-print-style",i.textContent=`
88  @page { margin: 0; }
89
90  .rp-print-zone { display: none; }
91
92  @media print {
93    .rp-print-html-printing { height: 100%; }
94    .rp-print-body-printing { background: rgb(0 0 0 / 0) none; height: 100% !important; margin: 0 !important; display: block !important; }
95    .rp-print-body-printing * { display: none; }
96    .rp-print-zone { display: block; height: 100%; }
97    .rp-print-page { display: flex; align-items: center; flex-direction: column; justify-content: center; height: 100%; width: 100%; page-break-after: always; page-break-inside: avoid; }
98    .rp-print-page:last-child { page-break-after: auto; }
99    .rp-print-page img, .rp-print-page canvas { display: block; max-width: 100%; max-height: 100%; direction: ltr; }
100  }
101  `,document.head.appendChild(i)}var oI=i=>{let{children:l,src:t,characterMap:e,onLoaded:s,onLoadError:c,loaderImage:d,onLoadProgress:n,disableAutoFetch:Z,disableStream:b,rangeChunkSize:o,withCredentials:m,httpHeaders:h,onPageChange:W,onRotate:r,onScroll:N,onTextSelect:M,...X}=i,y=u.useMemo(()=>typeof t=="string"?t:`${Date.now()}`,[t]),Y=u.useRef(!0),T=Y.current?X.initialPage??1:1;return u.useEffect(()=>{Y.current=!1},[y]),aI(),u.useEffect(()=>{ZI(nI,"rp-viewer-styles"),bI()},[]),G.jsx(d5,{children:G.jsx(mV,{src:t,characterMap:e,onLoaded:s,onLoadError:c,onLoadProgress:n,disableAutoFetch:Z,disableStream:b,rangeChunkSize:o,withCredentials:m,httpHeaders:h,children:G.jsx(NV,{onPageChange:W,onRotate:r,onScroll:N,onTextSelect:M,children:G.jsx(tI,{...X,initialPage:T,children:G.jsx(iI,{loaderImage:d,children:G.jsx(EV,{children:G.jsx(cI,{children:G.jsx(dI,{children:l})})})},y)},y)})},y)})},mI=i=>{let{pageNumber:l,onLoaded:t,onLoading:e}=i,s=u.useRef(null),{pages:c}=at(),{pageRotate:d}=hn(),n=u.useRef(),{currentZoom:Z}=mn(),{interactiveForm:b}=Yc(),o=fp(),m=u.useRef(`page-${l}`);return u.useEffect(()=>{if(!c||Z===0)return;let h=c.get(l);if(s.current&&h){let W=s.current;W.hidden=!0;let r=n.current;r&&r.cancel(),e&&e(),o.enqueue(m.current,{page:h.page,canvasElem:W,options:{scale:Z,rotate:d[l],renderForms:!0,interactiveForm:b},onLoaded:t},3)}return()=>{o.removeQueue(m.current)}},[c,l,d,Z,e,t,o,b]),G.jsx("canvas",{"data-rp":`page-${l}-canvas`,ref:s})},pi={"rp-text-layer":"_rp-text-layer_1553j_1",selecting:"_selecting_1553j_14","rp-text-layer-text":"_rp-text-layer-text_1553j_61"},hI=i=>{let{pageNumber:l}=i,{pages:t}=at(),e=u.useRef(null),{matches:s,currentMatch:c}=MG(),[d,n]=u.useState([]),Z=u.useRef(),b=u.useRef(),o=u.useRef([]),m=u.useMemo(()=>s.filter(y=>y.pageIndex===l-1),[s,l]),h=u.useCallback((y,Y,T=!1)=>{if(T&&iL(y,Y),!m.length){o.current=[],n([]);return}n(sL(m,y,Y))},[m]),W=u.useRef(),r=u.useRef(!1),N=u.useCallback(()=>Array.from(document.querySelectorAll('[data-rp$="-textLayer"]')),[]);u.useEffect(()=>((()=>{if(W.current)return;W.current=new AbortController;let{signal:y}=W.current,Y=()=>{N().forEach(V=>{let I=V.querySelector(".endOfContent");I&&(V.appendChild(I),I.style.width="",I.style.height="",V.classList.remove(pi.selecting))})};document.addEventListener("pointerdown",()=>{r.current=!0},{signal:y}),document.addEventListener("pointerup",()=>{r.current=!1,Y()},{signal:y}),window.addEventListener("blur",()=>{r.current=!1,Y()},{signal:y}),document.addEventListener("keyup",()=>{r.current||Y()},{signal:y});let T=null;document.addEventListener("selectionchange",()=>{var g,C;let V=document.getSelection();if(!V)return;if(V.rangeCount===0){Y();return}let I=new Set;for(let D=0;D<V.rangeCount;D++){let J=V.getRangeAt(D);
101N().forEach(k=>{J.intersectsNode(k)&&!I.has(k)&&I.add(k)})}N().forEach(D=>{if(I.has(D))D.classList.add(pi.selecting);else{let J=D.querySelector(".endOfContent");J&&(D.appendChild(J),J.style.width="",J.style.height="",D.classList.remove(pi.selecting))}});let w=V.getRangeAt(0),R=T&&(w.compareBoundaryPoints(Range.END_TO_END,T)===0||w.compareBoundaryPoints(Range.START_TO_END,T)===0)?w.startContainer:w.endContainer;R.nodeType===Node.TEXT_NODE&&(R=R.parentNode);let S=(g=R.parentElement)==null?void 0:g.closest(pi["rp-text-layer"]),x=S==null?void 0:S.querySelector(".endOfContent");x&&S&&(x.style.width=S.style.width,x.style.height=S.style.height,(C=R.parentElement)==null||C.insertBefore(x,R.nextSibling)),T=w.cloneRange()},{signal:y})})(),()=>{var y;(y=W.current)==null||y.abort(),W.current=void 0}),[N]);let M=u.useCallback(()=>{e.current&&e.current.classList.add(pi.selecting)},[]),X=u.useCallback(()=>{e.current&&e.current.classList.remove(pi.selecting)},[]);return u.useEffect(()=>{if(o.current.forEach(T=>{T.classList.remove("selected")}),!d.length||!c||c.pageIndex!==l-1)return;let y=m.findIndex(T=>JSON.stringify(T)===JSON.stringify(c));if(y===-1)return;let Y=d.filter(T=>T.index===y);Y.length&&(o.current=Y.map(T=>T.element),Y.forEach(T=>{T.element.classList.add("selected")}))},[c,d,m]),u.useEffect(()=>{let y=t.get(l);if(!y||!e.current)return;let Y=e.current;return Z.current&&Z.current.cancel(),y.page.getTextContent().then(T=>{let V=y.page.getViewport({scale:1});return Z.current=new ub({viewport:V,textContentSource:T,container:Y}),b.current=T,Y&&(Y.innerText=""),Z.current.render()}).then(()=>{var I,w;[].slice.call(Y.children).forEach(R=>{R.classList.add(pi["rp-text-layer-text"]),R.setAttribute("data-rp","rp-text-layer-text")});let T=(I=Z.current)==null?void 0:I.textDivs;T&&b.current&&h(b.current,T);let V=document.createElement("div");V.className="endOfContent",(w=e.current)==null||w.appendChild(V)}).catch(()=>{}),()=>{var T;(T=Z.current)==null||T.cancel()}},[t,l]),u.useEffect(()=>{var Y;[].slice.call(e.current.children).forEach(T=>{T.classList.add(pi["rp-text-layer-text"])});let y=(Y=Z.current)==null?void 0:Y.textDivs;y&&b.current&&h(b.current,y,!0)},[h]),G.jsx("div",{"data-rp-text-layer":!0,"data-rp":`page-${l}-textLayer`,className:pi["rp-text-layer"],ref:e,onMouseDown:M,onMouseUp:X})},CN=class{constructor(l,t){E(this,"externalLinkEnabled");E(this,"pdfDocument");this.externalLinkEnabled=!0,this.pdfDocument=l,this.goToPage=t}get pagesCount(){var l;return((l=this.pdfDocument)==null?void 0:l.numPages)??0}get page(){return 0}set page(l){}get rotation(){return 0}set rotation(l){}get isInPresentationMode(){return!1}async goToDestination(l){var c,d,n;let t,e;if(t=typeof l=="string"?await((c=this.pdfDocument)==null?void 0:c.getDestination(l)):await l,!Array.isArray(t)){console.error(`goToDestination: "${t}" is not a valid destination array, for dest="${l}".`);return}let[s]=t;if(s&&typeof s=="object"){if(e=(d=this.pdfDocument)==null?void 0:d.cachedPageNumber(s),!e)try{e=(await((n=this.pdfDocument)==null?void 0:n.getPageIndex(s))||0)+1}catch{console.error(`goToDestination: "${s}" is not a valid page reference, for dest="${l}".`);return}}else Number.isInteger(s)&&(e=s+1);if(!e||e<1||e>this.pagesCount){console.error(`goToDestination: "${e}" is not a valid page number, for dest="${l}".`);return}this.goToPage(e)}goToPage(l){}goToXY(l,t,e,s={}){}addLinkAttributes(l,t,e=!1){l.setAttribute("target","_blank"),l.setAttribute("href",t),l.setAttribute("rel","noopener noreferrer")}getDestinationHash(l){return"#"}getAnchorUrl(l){return"#"}setHash(l){}executeNamedAction(l){}executeSetOCGState(l){}cachePageRef(l,t){}},uI=new Intl.DateTimeFormat("en-US",{dateStyle:"short",timeStyle:"medium"}).format,QW=i=>uI(new Date(i)),lY=["click","dblclick","input","change","mouseover"],PW=new Map,tY=(i,l)=>`${i.loadingTask.docId}___${l.num}R${l.gen===0?"":l.gen}`;function WI(i,l){let t=tY(i,l);return PW.has(t)?PW.get(t)??null:null}var GI=(i,l,t)=>{PW.set(tY(i,l),t)},JN=(i,l)=>{switch(l[1].name){case"XYZ":return{bottomOffset:(t,e)=>l[3]===null?e:l[3],leftOffset:(t,e)=>l[2]===null?0:l[2],pageIndex:i,scaleTo:l[4]};case"Fit":case"FitB":return{bottomOffset:0,leftOffset:0,pageIndex:i,scaleTo:1};case"FitH":case"FitBH":return{bottomOffset:l[2],leftOffset:0,pageIndex:i,scaleTo:1};default:return{bottomOffset:0,leftOffset:0,pageIndex:i,scaleTo:1}}},NI=i=>{var l;i&&((l=i==null?void 0:i.querySelectorAll('[data-l10n-id="pdfjs-annotation-date-time-string"]'))==null||l.forEach(t=>{let{date:e,time:s,dateObj:c}=JSON.parse(t.dataset.l10nArgs??"{}");e&&s?t.textContent=`${e}, ${s}`:c&&(t.textContent=QW(c))}))};async function eY(i,l){let t;if(t=typeof l=="string"?await i.getDestination(l):l,t&&typeof t[0]=="object"&&t[0]!==null){let e=t[0],s=WI(i,e);return s===null?(GI(i,e,await i.getPageIndex(e)),await eY(i,t)):JN(s,t)}else return JN(t[0],t)}function rI(i,l){for(let t of lY)i.addEventListener(t,l)}function FN(i,l){for(let t of lY)i.removeEventListener(t,l)}function XI(i,l,t){let{rotation:e,scale:s}=l,c=e%180==0;if(i.fieldType==="Btn"&&i.pushButton){let d=i.rect[2]-i.rect[0],n=i.rect[3]-i.rect[1],Z=document.createElement("canvas");Z.setAttribute("width",((c?d:n)*s).toString()),Z.setAttribute("height",((c?n:d)*s).toString()),t.set(i.id,Z)}}function ON(i){i.querySelectorAll("[tabindex]").forEach(l=>{let t=l.getAttribute("tabindex");t&&parseInt(t,10)>0&&(l.tagName==="A"||l.tagName==="BUTTON"||l.getAttribute("role")==="button"||l.getAttribute("role")==="link"||l.classList.contains("linkAnnotation")?l.setAttribute("tabindex","0"):l.removeAttribute("tabindex"))})}function kN(i){i.querySelectorAll("a").forEach(l=>{let t=l.textContent&&l.textContent.trim().length>0,e=l.getAttribute("aria-label");if(!t&&!e){let s=l.getAttribute("href")||"",c;if(!s||s.startsWith("#")||s.startsWith("javascript:"))c="Link to page in document";else try{c=`External link to ${new URL(s,window.location.href).hostname.replace("www.","")}`}
101catch{c="External link"}l.setAttribute("aria-label",c)}})}function Ib(i,l,t){let e=[];if(t)for(let s of t)s[i]===l&&e.push(s);return e}function Zc(i,l){return{type:i,data:l}}async function MI(i,l){if(i.dest)if(typeof i.dest=="string"){let t=await eY(l,i.dest);return Zc(ni.INTERNAL_LINK,{referencedPage:t.pageIndex,offset:null})}else{let t=await l.getPageIndex(i.dest[0]);return Zc(ni.INTERNAL_LINK,{referencedPage:t,offset:{left:i.dest[2],bottom:i.dest[3]}})}else if(i.url||i.unsafeUrl)return Zc(ni.LINK,{url:i.url??i.unsafeUrl,unsafeUrl:i.unsafeUrl})}function UN(i){for(let l of i.getElementsByTagName("span")){let t=l.textContent,e=JSON.parse(l.dataset.l10nArgs??"{}");if(t)for(let s in e)t=t.replace(`{{${s}}}`,e[s]);l.textContent=t}}function pI(i){return Zc(ni.FILE_ATTACHMENT,i.file)}function rn(i,l){switch(i.type){case"textarea":case"text":return Zc(ni.FORM_TEXT,{fieldName:i.name,value:i.value});case"select-one":case"select-multiple":let t=[];for(let s of i.options)t.push({value:s.value,label:s.label});let e=[];for(let s of i.selectedOptions)e.push({value:s.value,label:s.label});return Zc(ni.FORM_SELECT,{fieldName:i.name,value:e,options:t});case"checkbox":return Zc(ni.FORM_CHECKBOX,{fieldName:i.name,checked:i.checked});case"radio":return Zc(ni.FORM_RADIO,{fieldName:i.name,...l});case"button":return Zc(ni.FORM_BUTTON,{fieldName:i.name,...l})}}async function YI(i,l,t){var s;let e=i.target.parentNode;if(e.tagName==="DIV"&&(e=e.firstChild),typeof e.className!="object")if(e.className==="linkAnnotation"&&i.type==="click"){let c=(s=e.dataset)==null?void 0:s.annotationId;if(c){let d=Ib("id",c,t);if(d.length)return await MI(d[0],l)}}else if(e.className.includes("textAnnotation"))UN(e);else if(e.className.includes("fileAttachmentAnnotation")){UN(e);let c=e.dataset.annotationId;if(c&&i.type==="dblclick")return pI(Ib("id",c,t)[0])}else if(e.className.includes("textWidgetAnnotation")&&i.type==="input"){let c=e.getElementsByTagName("input")[0];return c||(c=e.getElementsByTagName("textarea")[0]),rn(c)}else{if(e.className.includes("choiceWidgetAnnotation")&&i.type==="input")return rn(e.getElementsByTagName("select")[0]);if(e.className.includes("buttonWidgetAnnotation checkBox")&&i.type==="change")return rn(e.getElementsByTagName("input")[0]);if(e.className.includes("buttonWidgetAnnotation radioButton")&&i.type==="change"){let c=e.dataset.annotationId;if(c){let d=Ib("id",c,t)[0],n=[];for(let Z of Ib("fieldName",d.fieldName,t))Z.buttonValue&&n.push(Z.buttonValue);return rn(e.getElementsByTagName("input")[0],{value:d.buttonValue,defaultValue:d.fieldValue,options:n})}}else if(e.className.includes("buttonWidgetAnnotation pushButton")&&i.type==="click"){let c=e.dataset.annotationId;if(c){let d=Ib("id",c,t)[0],{action:n}=d;return n&&["Print","SaveAs"].includes(n)?{type:ni.BUTTON,data:d}:d.resetForm?rn({name:d.fieldName,type:"button"},{actions:d.actions,reset:!0}):rn({name:d.fieldName,type:"button"},{actions:d.actions,reset:!1})}}}}var EN=".pdf",yI=i=>URL.createObjectURL(i),TI=async i=>yI(await(await fetch(i)).blob()),sY=()=>{let{filename:i,pdfSrc:l}=at(),{downloadFilename:t}=AL(),e=s=>{let c=t||s;return c.endsWith(EN)?c:`${c}${EN}`};return{download:u.useCallback(async()=>{if(!i||!l)throw Error("There is no PDF source to download");let s=document.createElement("a");s.href=await TI(l),s.download=e(i),document.body.appendChild(s),s.click(),document.body.removeChild(s)},[i,l])}},VI={"rp-annotation-layer":"_rp-annotation-layer_rwxfx_1"},LI="https://unpkg.com/[email protected]/web/images/",II=i=>{let{pageNumber:l}=i,t=u.useRef(null),{pages:e,pdf:s}=at(),{interactiveForm:c}=Yc(),d=u.useRef(),[n,Z]=u.useState(),{goToPage:b}=Xe(),{scrollMode:o}=Wi(),{print:m}=ru(),{download:h}=sY(),W=u.useRef(null),r=u.useMemo(()=>e.get(l),[e,l]),N=u.useMemo(()=>r==null?void 0:r.page.getViewport(),[r]);u.useEffect(()=>{d.current&&(d.current=(d.current.div.replaceChildren(),void 0))},[s]),u.useEffect(()=>{r&&r.page.getAnnotations().then(X=>{d.current=void 0,Z(X),t.current&&(t.current.innerText="")})},[r]);let M=u.useCallback(X=>{!n||!s||(NI(t.current),YI(X,s,n).then(y=>{var Y,T;((Y=y==null?void 0:y.data)==null?void 0:Y.action)==="Print"?m():((T=y==null?void 0:y.data)==null?void 0:T.action)==="SaveAs"&&h()}))},[s,n,o,m,h]);return u.useEffect(()=>{if(!r||!n)return;let X=r.page.getViewport();if(d.current){d.current.update({viewport:X.clone({dontFlip:!0})});return}let y=new Map([]);for(let T of n){let{annotationType:V}=T;switch(V){case e5.Widget:XI(T,X,y);break}}let Y=new AbortController;return(async()=>{var I;d.current&&(d.current=(d.current.div.replaceChildren(),void 0)),t.current&&(t.current.innerText=""),d.current=ne
101w D0({div:t.current,accessibilityManager:void 0,annotationCanvasMap:void 0,annotationEditorUIManager:void 0,structTreeLayer:null,page:r.page,viewport:X.clone({dontFlip:!0}),commentManager:void 0,linkService:new CN(s,b),annotationStorage:s==null?void 0:s.annotationStorage}),t.current&&FN(t.current,M);let T=await(s==null?void 0:s.hasJSActions()),V=await(s==null?void 0:s.getFieldObjects());if(Y.signal.aborted)throw"abort";return(I=d.current)==null?void 0:I.render({annotations:n,annotationStorage:s==null?void 0:s.annotationStorage,hasJSActions:T,fieldObjects:V,div:t.current,viewport:X.clone({dontFlip:!0}),page:r.page,imageResourcesPath:LI,renderForms:c??!0,linkService:new CN(s,b),downloadManager:null,enableScripting:!1})})().then(()=>{t.current&&(rI(t.current,M),ON(t.current),kN(t.current),W.current&&W.current.disconnect(),W.current=new MutationObserver(()=>{t.current&&(ON(t.current),kN(t.current))}),W.current.observe(t.current,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["tabindex","href"]}))}).catch(T=>{if(T!=="abort")throw T}).finally(()=>{d.current=void 0}),()=>{Y.abort("clear"),t.current&&FN(t.current,M),W.current&&(W.current=(W.current.disconnect(),null))}},[s,n,M,b]),G.jsx("div",{"data-rp":`page-${l}-annotationLayer`,style:{width:`${N==null?void 0:N.width}px`,height:`${N==null?void 0:N.height}px`},className:VI["rp-annotation-layer"],ref:t})},KN=i=>{let l=i.keyword.replace(/[.^$*+?()[{|\\]/g,e=>`\\${e}`).trim(),t=i.matchCase?"g":"gi";return{keyword:i.keyword,regExp:new RegExp(l,t),wholeWords:i.wholeWords||!1}},zI=(i,l,t)=>i instanceof RegExp?{keyword:i.source,regExp:i,wholeWords:t||!1}:typeof i=="string"?i===""?a5:KN({keyword:i,matchCase:l||!1,wholeWords:t||!1}):(l!==void 0&&(i.matchCase=l),t!==void 0&&(i.wholeWords=t),KN(i)),vN=i=>{let l=i.parentNode;l&&l.removeChild(i)},wI=(i,l)=>{vN(i);let t=l.parentNode;t&&t.insertBefore(i,l),vN(l)},RI=i=>{let l=i.parentNode;if(!l)return;let t=document.createRange();t.selectNodeContents(i),wI(t.extractContents(),i),l.normalize()},SI=(i,l)=>i.top<l.top?-1:i.top>l.top?1:i.left<l.left?-1:+(i.left>l.left),xI={"rp-text-highlight":"_rp-text-highlight_jdkf8_1"},gI=({pageNumber:i,viewport:l})=>{let[t,e]=u.useState(),{pages:s}=at(),{highlightKeywords:c}=NL(),d=u.useRef(null),[n,Z]=u.useState(null),[b,o]=u.useState([]);u.useEffect(()=>{d.current&&Z(d.current.parentElement)},[d]),u.useEffect(()=>{(async()=>{let X=s.get(i);!X||!d.current||e(await X.page.getTextContent())})()},[s,i]);let m=u.useMemo(()=>c?c.map(X=>{var y,Y;return{...zI(X.keyword,(y=X.options)==null?void 0:y.matchCase,(Y=X.options)==null?void 0:Y.wholeWords),color:X.highlightColor}}):[],[c]);function h(X,y){if(!X)return;let Y=`[data-rp="page-${y}-textLayer"]`;return new Promise(T=>{let V=X.querySelector(Y);if(V){T(V);return}new MutationObserver((I,w)=>{let R=X.querySelector(Y);R&&(T(R),w.disconnect())}).observe(X,{childList:!0,subtree:!0})})}function W(X){return new Promise(y=>{let Y=X.querySelectorAll('[data-rp="rp-text-layer-text"]');if(Y.length){y(Array.from(Y));return}new MutationObserver((T,V)=>{let I=X.querySelectorAll(".rp-text-layer-text");I.length&&(y(Array.from(I)),V.disconnect())}).observe(X,{childList:!0,subtree:!0})})}let r=(X,y,Y,T)=>{var U;let V=document.createRange(),I=Y.firstChild;if(!I||I.nodeType!==Node.TEXT_NODE)return null;let w=((U=I.textContent)==null?void 0:U.length)??0,R=T[0].charIdxInSpan,S=T.length===1?R:T[T.length-1].charIdxInSpan;if(R>w||S+1>w)return null;V.setStart(I,R),V.setEnd(I,S+1);let x=document.createElement("span");x.style.width="auto",V.surroundContents(x);let g=x.getBoundingClientRect(),C=X.getBoundingClientRect(),D=C.height,J=C.width,k=100*(g.left-C.left)/J,O=100*(g.top-C.top)/D,j=100*g.height/D,F=100*g.width/J;return RI(x),{keywordStr:y,left:k,top:O,height:j,width:F,pageHeight:D,pageWidth:J}};async function N(X,y){let Y=await h(n,X);if(!Y)return;let T=await W(Y);T.length&&o(M(Y,y,T,T.map(V=>V.tagName==="BR"?" ":V.textContent).reduce((V,I,w)=>V.concat(I.split("").map((R,S)=>({char:R,charIdxInSpan:S,spanIdx:w}))),[{char:"",charIdxInSpan:0,spanIdx:0}]).slice(1)))}let M=(X,y,Y,T)=>{let V=y.length;if(!T.length||!V)return[];let I=[],w=T.map(R=>R.char).join("");return m.forEach(R=>{let{keyword:S,regExp:x,wholeWords:g,color:C}=R,D=S;if(!D.trim())return;let J=x.flags.indexOf("g")===-1?new RegExp(x,`${x.flags}g`):x,k,O=[];for(;(k=J.exec(w))!==null;)g&&!Jp(w,k.index,k[0].length)||O.push({keyword:J,startIndex:k.index,endIndex:J.lastIndex});let j=O.map(F=>({keyword:F.keyword,indexes:T.slice(F.startIndex,F.endIndex),color:C}));for(let F of j){let U=F.indexes.reduce((v,A)=>(v[A.spanIdx]=(v[A.spanIdx]||[]).concat([A]),v),{});for(let v of Object.values(U))if(v.length!==1||v[0].char.trim()!==""){let A=v,q=Y[A[0].spanIdx],_=r(X,D,q,A);if(_){let{left:al,top:nl}=_;if(I.find(B=>B.left===al&&B.top===nl))continue;I.push({..._,highlightColor:F.color})}}}}),I.sort(SI),I};return u.useEffect(()=>{(async()=>
101{if(!c||c.length===0){o([]);return}try{await N(i,c)}catch(X){console.error(X)}})()},[!0,c,i,t,l]),G.jsx(G.Fragment,{children:G.jsx("div",{ref:d,"data-rp":`page-${i}-textHighlightLayer`,children:b.map((X,y)=>G.jsx("div",{className:xI["rp-text-highlight"],style:{top:`${X.top}%`,left:`${X.left}%`,width:`${X.width}%`,height:`${X.height}%`,backgroundColor:X.highlightColor}},y))})})},jI=({child:i})=>{let l=u.useRef(null);return u.useEffect(()=>{var t;return(t=l.current)==null||t.appendChild(i),()=>{var e;(e=l.current)==null||e.removeChild(i)}},[i]),G.jsx("div",{ref:l})},DI=({pageNumber:i})=>{let{elementList:l}=CL(),t=u.useRef(null),e=u.useMemo(()=>{var s;return(s=l[i])==null?void 0:s.map((c,d)=>c instanceof HTMLElement?G.jsx(jI,{child:c},d):G.jsx("div",{children:c},d))},[l,i]);return e?G.jsx(G.Fragment,{children:G.jsx("div",{ref:t,"data-rp":`page-${i}-customElement`,children:e.map(s=>s)})}):null},zd=i=>u.forwardRef?u.forwardRef(i):l=>{let{ref:t,...e}=l;return i(e,t)},_u={"rp-page-wrapper":"_rp-page-wrapper_krysr_1","rp-page":"_rp-page_krysr_1","rp-loader-wrapper":"_rp-loader-wrapper_krysr_17"},kn=zd((i,l)=>{let{pageNumber:t,style:e,...s}=i,{pages:c}=at(),{pageRotate:d}=hn(),{textLayer:n}=vL(),{currentZoom:Z}=mn(),{LoaderImageComponent:b}=VG(),o=u.useRef(c.get(t)),[m,h]=u.useState(!1),W=u.useRef(null),[r,N]=u.useState({width:0,height:0});u.useImperativeHandle(l,()=>W.current);let M=u.useMemo(()=>o.current?d[t]:0,[t,d]);u.useEffect(()=>{c&&(o.current=c.get(t),o.current&&N(o.current.page.getViewport({scale:Z,rotation:M})))},[c,t,M,Z]);let X=u.useMemo(()=>{switch(M){case 90:return`${r.width/2}px ${r.width/2}px`;case-90:case 270:return`${r.height/2}px ${r.height/2}px`;default:return"center"}},[M,r]),y=u.useCallback(()=>{h(!0)},[]),Y=u.useCallback(()=>{h(!1)},[]);return G.jsx("div",{ref:W,id:`page-${t}`,"data-rp":`page-${t}`,...s,style:{...e,"--rp-rotate":`${M}deg`,"--rp-page-rotate-translate":`${X}`,"--user-unit":r.userUnit||1,"--scale-factor":Z,"--total-scale-factor":"calc(var(--scale-factor) * var(--user-unit))"},className:_u["rp-page-wrapper"],children:G.jsxs("div",{style:{width:`${r.width}px`,height:`${r.height}px`},className:_u["rp-page"],children:[G.jsx(mI,{onLoading:y,onLoaded:Y,pageNumber:t}),m&&b&&G.jsx("div",{className:_u["rp-loader-wrapper"],children:G.jsx(b,{})}),G.jsx(DI,{pageNumber:t}),n&&G.jsx(hI,{pageNumber:t}),G.jsx(gI,{pageNumber:t,viewport:r}),G.jsx(II,{pageNumber:t})]})})}),CI=()=>{let{viewMode:i}=Gi(),{scrollMode:l}=Wi(),{setColumnCount:t}=Np(),{virtualScrollableElementRef:e}=hh(),s=Nb(),c=u.useMemo(()=>s.heights.length,[s.heights]),d=u.useMemo(()=>l===kl.HORIZONTAL_SCROLLING?c:i===Yl.DUAL_PAGE||i===Yl.DUAL_PAGE_WITH_COVER?2:1,[i,l,l,c,e]),n=u.useMemo(()=>{if(i===Yl.DUAL_PAGE_WITH_COVER&&s.widths.length>0){let r=[0,0];return s.widths.forEach((N,M)=>{let X=M+1;if(X===1)return;let y=X%2==0?0:1;r[y]=Math.max(r[y]||0,N)}),r}return s.widths.reduce((r,N,M)=>{let X=M%d;return(!r[X]||N>r[X])&&(r[X]=N),r},[])},[s.widths,d,i]),Z=u.useCallback(r=>n[r%n.length]||0,[n]),b=u.useCallback(r=>{if(i===Yl.DUAL_PAGE_WITH_COVER){if(r===0)return s.heights[0]||0;let M=1+(r-1)*d+1,X=Array.from({length:d},(y,Y)=>M+Y-1).filter(y=>y<s.heights.length).map(y=>s.heights[y]||0);return Math.max(...X,0)}let N=Array.from({length:d},(M,X)=>{let y=r*d+X;return s.heights[y]||0});return Math.max(...N)},[s.heights,d,i]);u.useEffect(()=>{t(d)},[d,t]);let o=u.useMemo(()=>l===kl.HORIZONTAL_SCROLLING||l===kl.PAGE_SCROLLING?1:i===Yl.DUAL_PAGE_WITH_COVER&&c>0?1+Math.ceil((c-1)/d):Math.round(c/d),[d,c,l,i]),m=u.useMemo(()=>s.heights.reduce((r,N)=>r+N,0)/s.heights.length||0,[s]),h=u.useMemo(()=>s.widths.reduce((r,N)=>r+N,0)/s.widths.length||0,[s]),W=u.useMemo(()=>{let{rowsHeight:r,columnsWidth:N}=rG(s,d,i===Yl.DUAL_PAGE_WITH_COVER);return{rowsHeight:r,columnsWidth:N}},[s,d,i]);return{rowCount:o,rowHeight:b,columnCount:d,columnWidth:Z,pageDimension:s,estimatedRowHeight:m,estimatedColumnWidth:h,gridDimension:W,totalDimension:u.useMemo(()=>({width:W.columnsWidth.reduce((r,N)=>r+N,0),height:W.rowsHeight.reduce((r,N)=>r+N,0)}),[W])}},JI=u.memo(({widths:i,heights:l})=>{let{focusedPage:t,totalPages:e}=Xe(),s=u.useMemo(()=>{let d=[],n=Math.ceil(t/2)*2-1;if(d.push(n),n+1<=e){let Z=n+1;d.push(Z)}return d},[t,e]),c=u.useMemo(()=>
101{let d=t%2==1?t-1:t-2,n=l(Math.floor(d/2)),Z=i(d),b=i(d+1);return[{position:"absolute",left:0,width:Z,height:n},{position:"absolute",left:Z,width:b,height:n}]},[i,l,s]);return G.jsx("div",{style:{width:u.useMemo(()=>c.reduce((d,n)=>d+Number(n.width||0),0),[c]),position:"relative"},children:s.map((d,n)=>G.jsx(kn,{style:c[n],pageNumber:d},d))})}),FI=u.memo(({widths:i,heights:l})=>{let{focusedPage:t,totalPages:e}=Xe(),s=u.useMemo(()=>{let n=[];if(t===1)return n.push(1),n;let Z=t-1,b=Math.ceil(Z/2)*2;return n.push(b),b+1<=e&&n.push(b+1),n},[t,e]),c=u.useMemo(()=>{if(s.length===1){let Z=i(s[0]-1),b=Z*2;return e>=3?b=i(1)+i(2):e>=2&&(b=Z+i(1)),{width:b,position:"relative",display:"flex",justifyContent:"center",alignItems:"flex-start"}}let n=s[0]-1;return{width:i(n)+(s.length>1?i(n+1):0),position:"relative"}},[i,s,e]),d=u.useMemo(()=>{if(s.length===1){let h=s[0],W=h-1,r=l(h===1?0:Math.floor((h-2)/2)+1);return[{width:i(W),height:r,position:"relative"}]}let n=s[0],Z=n-1,b=l(Math.floor((n-2)/2)+1),o=i(Z),m=i(Z+1);return[{position:"absolute",left:0,width:o,height:b},{position:"absolute",left:o,width:m,height:b}]},[i,l,s]);return G.jsx("div",{style:c,children:s.map((n,Z)=>G.jsx(kn,{style:d[Z],pageNumber:n},n))})}),OI=({widths:i,heights:l})=>{let{focusedPage:t}=Xe(),e=u.useMemo(()=>({position:"absolute",width:i(t-1),height:l(t-1)}),[i,l,t]);return G.jsx("div",{style:{width:u.useMemo(()=>i(t-1),[i]),position:"relative"},children:G.jsx(kn,{style:e,pageNumber:t},t)})},kI=()=>{let[i,l]=u.useState(!1),[t,e]=u.useState({x:0,y:0});return u.useEffect(()=>{let s=d=>{l(!0),e({x:d.clientX,y:d.clientY})},c=()=>{l(!1)};return window.addEventListener("mousedown",s),window.addEventListener("mouseup",c),()=>{window.removeEventListener("mousedown",s),window.removeEventListener("mouseup",c)}},[]),{isPressed:i,coordinates:t}},UI=({isPressed:i,scrollSpeed:l=2})=>{let[t,e]=u.useState("unset"),s=u.useRef(null),c=u.useRef({startY:0,startX:0,startScrollTop:0,startScrollLeft:0}),d=u.useCallback(m=>{s.current&&(c.current={startY:m.pageY,startX:m.pageX,startScrollTop:s.current.scrollTop,startScrollLeft:s.current.scrollLeft})},[]),n=u.useCallback(()=>{e("smooth")},[]),Z=u.useCallback(m=>{if(!i||!s.current)return;m.preventDefault(),e("unset");let{startX:h,startY:W,startScrollTop:r,startScrollLeft:N}=c.current,M=(m.pageX-h)*l,X=(m.pageY-W)*l;s.current.scrollTop=r-X,s.current.scrollLeft=N-M},[i,l,s]),b=u.useCallback(m=>{var h,W,r;s.current&&((h=s.current)==null||h.removeEventListener("mousedown",d),(W=s.current)==null||W.removeEventListener("mouseup",n),(r=s.current)==null||r.removeEventListener("mousemove",Z)),s.current=m,m&&(m==null||m.addEventListener("mousedown",d,{capture:!0}),m==null||m.addEventListener("mouseup",n),m==null||m.addEventListener("mousemove",Z))},[d,n,Z]),o=u.useCallback(()=>{c.current={...c.current,startScrollTop:0,startScrollLeft:0}},[]);return u.useEffect(()=>()=>{s.current&&(s.current.removeEventListener("mousedown",d),s.current.removeEventListener("mouseup",n),s.current.removeEventListener("mousemove",Z))},[d,n,Z]),{initializeGrabScroll:b,scrollBehavior:t,resetGrabState:o}},EI=i=>{let{currentZoom:l,setZoomLevel:t}=mn(),[e,s]=u.useState(0),c=mh(e,100),[d,n]=u.useState(!1),Z=u.useRef(null),b=u.useCallback(M=>{s(M?X=>X+3:X=>X-3)},[]),o=u.useCallback(M=>{M.ctrlKey&&(M.preventDefault(),b(M.deltaY<0))},[b]);u.useEffect(()=>{if(c){let M=Math.round(l*100+c);s(0),t(M>25?M:25)}},[c]);let m=(M,X)=>{let y=M.clientX-X.clientX,Y=M.clientY-X.clientY;return Math.sqrt(y*y+Y*Y)},h=u.useCallback(M=>{!d||M.touches.length!==2||(Z.current=m(M.touches[0],M.touches[1]),M.preventDefault())},[d]),W=u.useCallback(()=>{Z.current=null},[]),r=u.useCallback(M=>{if(!d||M.touches.length!==2||Z.current===null)return;let X=m(M.touches[0],M.touches[1]),y=X-Z.current;Math.abs(y)>5&&(b(y>0),Z.current=X,M.preventDefault())},[b,d]),N=()=>{document.activeElement instanceof HTMLElement&&document.activeElement.blur()};u.useEffect(()=>{if(d){document.body.style.touchAction="pan-x pan-y";return}document.body.style.touchAction=""},[d]),u.useEffect(()=>{let M=()=>{let X=document.activeElement;n(!!(X!=null&&X.closest('[data-rp="container"]')))};return window.addEventListener("focusin",M),window.addEventListener("focusout",M),M(),()=>{window.removeEventListener("focusin",M),window.removeEventListener("focusout",M)}},[]),u.useEffect(()=>{if(!i)return;let M=X=>{i.contains(X.target)||N()};return document.addEventListener("scroll",M),()=>{document.removeEventListener("scroll",M)}},[i]),u.useEffect(()=>{if(i)return i.addEventListener("wheel",o,{passive:!1}),i.addEventListener("touchstart",h,{passive:!1}),i.addEventListener("touchmove",r,{passive:!1}),i.addEventListener("touchend",W,{passive:!1}),()=>{i.removeEventListener("wheel",o),i.removeEventListener("touchstart",h),i.removeEventListener("touchmove",r),i.removeEventListener("touchend",W)}},[i,o,h,r,W])},Fs={"rp-password-overlay":"_rp-password-overlay_1cd0u_1","rp-password-modal":"_rp-password-modal_1cd0u_13","rp-password-title":"_rp-password-title_1cd0u_27","rp-password-content":"_rp-password-content_1cd0u_35","rp-password-form":"_rp-password-form_1cd0u_41","rp-password-label":"_rp-password-label_1cd0u_45","rp-password-input":"_rp-password-input_1cd0u_57","rp-password-input-invalid":"_rp-password-input-invalid_1cd0u_74","rp-password-message-invalid":"_rp-password-message-invalid_1cd0u_78","rp-password-submit-button":"_rp-password-submit-button_1cd0u_84"},KI=()=>{let[i,l]=u.useState(""),{localeMessages:t}=_l(),{setPassword:e,setPasswordError:s,invalidPassword:c}=sh(),d=b=>{l(b.target.value),c&&s(void 0)},n=b=>{b.preventDefault(),i&&i.trim()&&e(i)},Z=!i.trim();return G.jsx("div",{className:xl(Fs["rp-password-overlay"]),role:"dialog","aria-modal":"true","aria-labelledby":"password-modal-title",children:G.jsxs("div",{className:xl(Fs["rp-password-modal"]),children:[G.jsx("div",{id:"password-modal-title",className:xl(Fs["rp-password-title"]),children:t==null?void 0:t.passwordModalTitle}),G.jsx("div",{id:"password-modal-message",className:xl(Fs["rp-password-content"]),children:t==null?void 0:t.passwordModalMessage}),G.jsxs("form",{onSubmit:n,children:[G.jsxs("div",{className:xl(Fs["rp-password-form"]),children:[G.jsx("label",{htmlFor:"rp-password-input",className:Fs["rp-password-label"],children:(t==null?void 0:t.passwordPlaceholder)||"Password"}
101),G.jsx("input",{type:"password",id:"rp-password-input",name:"rp-password-input",value:i,onChange:d,className:xl(Fs["rp-password-input"],c&&Fs["rp-password-input-invalid"]),placeholder:t==null?void 0:t.passwordPlaceholder,autoComplete:"off","aria-required":"true","aria-invalid":c,"aria-describedby":c?"password-modal-message password-error":"password-modal-message"}),G.jsx("div",{id:"password-error",className:xl(Fs["rp-password-message-invalid"]),role:"alert","aria-live":"polite",children:c&&G.jsx("span",{children:t==null?void 0:t.passwordError})})]}),G.jsx("button",{type:"submit",disabled:Z,className:xl(Fs["rp-password-submit-button"]),onClick:n,"aria-label":t==null?void 0:t.passwordConfirmLabel,children:t==null?void 0:t.passwordConfirmLabel})]})]})})},vI=(i,l,t,e)=>{let s=u.useRef(),{contentRef:c}=Pe(),{heights:d,widths:n}=Nb(),{setFocusedPage:Z}=Xe(),b=u.useRef(Z);b.current=Z;let[o,m]=u.useState([]),{targetScrollPage:h}=uh(),W=mh(o,0,500),r=u.useMemo(()=>{let M=e===Yl.DUAL_PAGE_WITH_COVER,{rowsHeight:X,columnsWidth:y}=rG({heights:d,widths:n},i,M);return d.map((Y,T)=>{let V=n[T],I=pp(T+1,i,M),w=y.slice(0,I.columnIndex).reduce((g,C)=>g+C,0),R=X.slice(0,I.rowIndex).reduce((g,C)=>g+C,0),S=w+V,x=R+Y;return{pageNumber:T+1,...I,width:V,height:Y,startX:w,startY:R,endX:S,endY:x}})},[d,n,i,l,e]);u.useEffect(()=>{var M;W.length>0&&!h.current&&b.current(W[0].pageNumber),(M=W[0])!=null&&M.ratio&&W.some(X=>X.pageNumber===h.current)&&setTimeout(()=>{h.current=void 0},500)},[W]);let N=u.useCallback(M=>{s.current&&cancelAnimationFrame(s.current),s.current=requestAnimationFrame(()=>{let X=M.target,y={startTop:X.scrollTop,startLeft:X.scrollLeft,endTop:X.scrollTop+X.clientHeight,endLeft:X.scrollLeft+X.clientWidth};m(r.filter(Y=>{let T=Y.endX>=y.startLeft&&Y.endY>=y.startTop,V=Y.startX<=y.endLeft&&Y.startY<=y.endTop;return T&&V}).map(Y=>{let T=y.startLeft>Y.startX?y.startLeft:Y.startX,V=y.startTop>Y.startY?y.startTop:Y.startY,I=y.endLeft<Y.endX?y.endLeft:Y.endX,w=y.endTop<Y.endY?y.endTop:Y.endY,R=+((I-T)*(w-V)/(Y.width*Y.height)*100).toFixed(2);return{pageNumber:Y.pageNumber,ratio:R}}).sort((Y,T)=>T.ratio-Y.ratio))})},[c,r]);u.useEffect(()=>{if(t)return t==null||t.addEventListener("scroll",N),()=>{t==null||t.removeEventListener("scroll",N)}},[t,N])},bc={"rp-layout":"_rp-layout_1yzm4_1","rp-layout-wrapper":"_rp-layout-wrapper_1yzm4_5","rp-content":"_rp-content_1yzm4_11","rp-sidebar":"_rp-sidebar_1yzm4_18","rp-pages":"_rp-pages_1yzm4_23","rp-container":"_rp-container_1yzm4_29","rp-loader":"_rp-loader_1yzm4_33","rp-theme-variables":"_rp-theme-variables_1yzm4_37","rp-dark-mode":"_rp-dark-mode_1yzm4_156"},iY=u.createContext({}),cY=()=>u.useContext(iY),QI=iY.Provider,dY=zd((i,l)=>{let{children:t,toolbarRef:e,style:s,className:c,...d}=i,{customVariables:n,customDarkVariables:Z}=cY(),{darkMode:b}=XG();return G.jsx("div",{ref:l,...d,className:xl(bc["rp-theme-variables"],bc["rp-container"],b?bc["rp-dark-mode"]:"",c),style:{"--rp-toolbar-height":`${(e==null?void 0:e.clientHeight)||48}px`,...n,...b?Z:{},...s},children:t})}),PI=zd((i,l)=>{let{children:t,...e}=i;return G.jsx("div",{ref:l,className:bc["rp-layout-wrapper"],...e,children:t})}),QN=/[\x00-\x1F]/g,qu=null,xh=null;function HI(i){return qu||(qu=/([\u00a0\u00b5\u037e\u0eb3\u2000-\u200a\u202f\u2126\ufb00-\ufb04\ufb06\ufb20-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufba1\ufba4-\ufba9\ufbae-\ufbb1\ufbd3-\ufbdc\ufbde-\ufbe7\ufbea-\ufbf8\ufbfc-\ufbfd\ufc00-\ufc5d\ufc64-\ufcf1\ufcf5-\ufd3d\ufd88\ufdf4\ufdfa-\ufdfb\ufe71\ufe77\ufe79\ufe7b\ufe7d]+)|(\ufb05+)/gu,xh=new Map([["ſt","ſt"]])),i.replace(qu,(l,t,e)=>t?t.normalize("NFKC"):(xh==null?void 0:xh.get(e))||"")}function fI(i,l=!1){return QN.test(i)?l?i.replace(QN,t=>t==="\0"?"":" "):i.replace(/\x00/g,""):i}var BI=i=>{let l=u.useRef(!1),t=u.useRef(null);u.useEffect(()=>{if(!i||l.current)return;let e=s=>{var n;let c=document.getSelection();if(!c)return;let d=c.toString();d&&((n=s.clipboardData)==null||n.setData("text/plain",fI(HI(d))),s.preventDefault(),s.stopPropagation())};return i.addEventListener("copy",e),t.current=i,l.current=!0,()=>{t.current&&(t.current.removeEventListener("copy",e),l.current=!1)}},[i])},AI=({onTextSelect:i,pagesRef:l})=>{let t=u.useCallback(()=>{let c=l==null?void 0:l.querySelectorAll('[data-rp$="-textLayer"]');return c?Array.from(c):[]},[l]),e=u.useCallback(()=>{let c=document.getSelection();if(!c||c.rangeCount===0||c.toString().trim()==="")return null;let d=c.toString(),n=new Map,Z=t();for(let b=0;b<c.rangeCount;b++){let o=c.getRangeAt(b);Z.forEach(m=>{var h;if(o.intersectsNode(m)){let W=(h=m.getAttribute("data-rp"))==null?void 0:h.match(/page-(\d+)-textLayer/);if(W){let r=parseInt(W[1]),N=m.closest('[data-rp*="page-"]');if(!N)return;let M=N.getBoundingClientRect();n.has(r)||n.set(r,{rects:[],pageRect:M});let X=n.get(r),y=document.createTreeWalker(m,NodeFilter.SHOW_TEXT,null),Y;for(;Y=y.nextNode();)if(o.intersectsNode(Y)&&Y.parentElement){let T=document.createRange();T.selectNodeContents(Y);
101let V=o.compareBoundaryPoints(Range.START_TO_START,T)>0?o.startContainer:T.startContainer,I=o.compareBoundaryPoints(Range.START_TO_START,T)>0?o.startOffset:T.startOffset,w=o.compareBoundaryPoints(Range.END_TO_END,T)<0?o.endContainer:T.endContainer,R=o.compareBoundaryPoints(Range.END_TO_END,T)<0?o.endOffset:T.endOffset,S=document.createRange();S.setStart(V,I),S.setEnd(w,R);let x=S.getBoundingClientRect();if(x.width===0||x.height===0)continue;let g={left:x.left-M.left,top:x.top-M.top,right:x.right-M.left,bottom:x.bottom-M.top,width:x.width,height:x.height};X.rects.push(g)}}}})}return{text:d,pageSelections:Array.from(n.entries()).sort(([b],[o])=>b-o).map(([b,o])=>({pageNumber:b,pageBasedBoundingRects:o.rects,pageDimension:{width:o.pageRect.width,height:o.pageRect.height},pagePositionInWindow:{x:o.pageRect.left,y:o.pageRect.top}}))}},[t]),s=u.useCallback(()=>{let c=e();c&&(i==null||i(c))},[e,i]);u.useEffect(()=>(l==null||l.addEventListener("pointerup",s),()=>{l==null||l.removeEventListener("pointerup",s)}),[l,s])};function PN(i){if(Math.floor(i)===i)return[i,1];let l=1/i;if(l>8)return[1,8];if(Math.floor(l)===l)return[1,l];let t=i>1?l:i,e=0,s=1,c=1,d=1;for(;;){let Z=e+c,b=s+d;if(b>8)break;t<=Z/b?(c=Z,d=b):(e=Z,s=b)}let n;return n=t-e/s<c/d-t?t===i?[e,s]:[s,e]:t===i?[c,d]:[d,c],n}var Dt={"rp-pages":"_rp-pages_fn8tz_1","rp-page-scrolling-wrapper":"_rp-page-scrolling-wrapper_fn8tz_6","rp-pages-horizontal-scroll":"_rp-pages-horizontal-scroll_fn8tz_11","rp-not-supported-list":"_rp-not-supported-list_fn8tz_15","rp-pages-container":"_rp-pages-container_fn8tz_23","rp-viewer":"_rp-viewer_fn8tz_65","rp-cursor-grab":"_rp-cursor-grab_fn8tz_70","rp-cursor-grabbing":"_rp-cursor-grabbing_fn8tz_78","rp-loader":"_rp-loader_fn8tz_86","rp-not-supported":"_rp-not-supported_fn8tz_15","rp-not-supported-content":"_rp-not-supported-content_fn8tz_102","rp-load-error":"_rp-load-error_fn8tz_108","rp-load-error-message":"_rp-load-error-message_fn8tz_116"};function HW(){return HW=Object.assign?Object.assign.bind():function(i){for(var l=1;l<arguments.length;l++){var t=arguments[l];for(var e in t)({}).hasOwnProperty.call(t,e)&&(i[e]=t[e])}return i},HW.apply(null,arguments)}function HN(i){if(i===void 0)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return i}function fW(i,l){return fW=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},fW(i,l)}function _I(i,l){i.prototype=Object.create(l.prototype),i.prototype.constructor=i,fW(i,l)}var fN=Number.isNaN||function(i){return typeof i=="number"&&i!==i};function qI(i,l){return!!(i===l||fN(i)&&fN(l))}function $I(i,l){if(i.length!==l.length)return!1;for(var t=0;t<i.length;t++)if(!qI(i[t],l[t]))return!1;return!0}function $u(i,l){l===void 0&&(l=$I);var t,e=[],s,c=!1;function d(){var n=[...arguments];return c&&t===this&&l(n,e)||(s=i.apply(this,n),c=!0,t=this,e=n),s}return d}function BN(i,l){if(i==null)return{};var t={};for(var e in i)if({}.hasOwnProperty.call(i,e)){if(l.indexOf(e)!==-1)continue;t[e]=i[e]}return t}var AN=typeof performance=="object"&&typeof performance.now=="function"?function(){return performance.now()}:function(){return Date.now()};function _N(i){cancelAnimationFrame(i.id)}function lz(i,l){var t=AN();function e(){AN()-t>=l?i.call(null):s.id=requestAnimationFrame(e)}var s={id:requestAnimationFrame(e)};return s}var l2=-1;function tz(i){if(i===void 0&&(i=!1),l2===-1||i){var l=document.createElement("div"),t=l.style;t.width="50px",t.height="50px",t.overflow="scroll",document.body.appendChild(l),l2=l.offsetWidth-l.clientWidth,document.body.removeChild(l)}return l2}var zb=null;function qN(i){if(i===void 0&&(i=!1),zb===null||i){var l=document.createElement("div"),t=l.style;t.width="50px",t.height="50px",t.overflow="scroll",t.direction="rtl";var e=document.createElement("div"),s=e.style;return s.width="100px",s.height="100px",l.appendChild(e),document.body.appendChild(l),l.scrollLeft>0?zb="positive-descending":(l.scrollLeft=1,zb=l.scrollLeft===0?"negative":"positive-ascending"),document.body.removeChild(l),zb}return zb}var ez=150,sz=function(i){var l=i.columnIndex;return i.data,i.rowIndex+":"+l};function iz(i){var l,t=i.getColumnOffset,e=i.getColumnStartIndexForOffset,s=i.getColumnStopIndexForStartIndex,c=i.getColumnWidth,d=i.getEstimatedTotalHeight,n=i.getEstimatedTotalWidth,Z=i.getOffsetForColumnAndAlignment,b=i.getOffsetForRowAndAlignment,o=i.getRowHeight,m=i.getRowOffset,h=i.getRowStartIndexForOffset,W=i.getRowStopIndexForStartIndex,r=i.initInstanceProps,N=i.shouldResetStyleCacheOnItemSizeChange,M=i.validateProps;return l=(function(X){_I(y,X);function y(T){var V=X.call(this,T)||this;return V._instanceProps=r(V.props,HN(V)),V._resetIsScrollingTimeoutId=null,V._outerRef=void 0,V.state={instance:HN(V),isScrolling:!1,horizontalScrollDirection:"forward",scrollLeft:typeof V.props.initialScrollLeft=="number"?V.props.initialScrollLeft:0,scrollTop:typeof V.props.initialScrollTop=="number"?V.props.initialScrollTop:0,scrollUpdateWasRequested:!1,verticalScrollDirection:"forward"},V._callOnItemsRendered=void 0,V._callOnItemsRendered=$u(function(I,w,R,S,x,g,C,D){return V.props.onItemsRendered({overscanColumnStartIndex:I,overscanColumnStopIndex:w,overscanRowStartIndex:R,overscanRowStopIndex:S,visibleColumnStartIndex:x,visibleColumnStopIndex:g,visibleRowStartIndex:C,visibleRowStopIndex:D})}),V._callOnScroll=void 0,V._callOnScroll=$u(function(I,w,R,S,x){return V.props.onScroll({horizontalScrollDirection:R,scrollLeft:I,scrollTop:w,verticalScrollDirection:S,scrollUpdateWasRequested:x})}),V._getItemStyle=void 0,V._getItemStyle=function(I,w){var R=V.props,S=R.c
101olumnWidth,x=R.direction,g=R.rowHeight,C=V._getItemStyleCache(N&&S,N&&x,N&&g),D=I+":"+w,J;if(C.hasOwnProperty(D))J=C[D];else{var k=t(V.props,w,V._instanceProps),O=x==="rtl";C[D]=J={position:"absolute",left:O?void 0:k,right:O?k:void 0,top:m(V.props,I,V._instanceProps),height:o(V.props,I,V._instanceProps),width:c(V.props,w,V._instanceProps)}}return J},V._getItemStyleCache=void 0,V._getItemStyleCache=$u(function(I,w,R){return{}}),V._onScroll=function(I){var w=I.currentTarget,R=w.clientHeight,S=w.clientWidth,x=w.scrollLeft,g=w.scrollTop,C=w.scrollHeight,D=w.scrollWidth;V.setState(function(J){if(J.scrollLeft===x&&J.scrollTop===g)return null;var k=V.props.direction,O=x;if(k==="rtl")switch(qN()){case"negative":O=-x;break;case"positive-descending":O=D-S-x;break}O=Math.max(0,Math.min(O,D-S));var j=Math.max(0,Math.min(g,C-R));return{isScrolling:!0,horizontalScrollDirection:J.scrollLeft<x?"forward":"backward",scrollLeft:O,scrollTop:j,verticalScrollDirection:J.scrollTop<g?"forward":"backward",scrollUpdateWasRequested:!1}},V._resetIsScrollingDebounced)},V._outerRefSetter=function(I){var w=V.props.outerRef;V._outerRef=I,typeof w=="function"?w(I):typeof w=="object"&&w&&w.hasOwnProperty("current")&&(w.current=I)},V._resetIsScrollingDebounced=function(){V._resetIsScrollingTimeoutId!==null&&_N(V._resetIsScrollingTimeoutId),V._resetIsScrollingTimeoutId=lz(V._resetIsScrolling,ez)},V._resetIsScrolling=function(){V._resetIsScrollingTimeoutId=null,V.setState({isScrolling:!1},function(){V._getItemStyleCache(-1)})},V}y.getDerivedStateFromProps=function(T,V){return cz(T,V),M(T),null};var Y=y.prototype;return Y.scrollTo=function(T){var V=T.scrollLeft,I=T.scrollTop;V!==void 0&&(V=Math.max(0,V)),I!==void 0&&(I=Math.max(0,I)),this.setState(function(w){return V===void 0&&(V=w.scrollLeft),I===void 0&&(I=w.scrollTop),w.scrollLeft===V&&w.scrollTop===I?null:{horizontalScrollDirection:w.scrollLeft<V?"forward":"backward",scrollLeft:V,scrollTop:I,scrollUpdateWasRequested:!0,verticalScrollDirection:w.scrollTop<I?"forward":"backward"}},this._resetIsScrollingDebounced)},Y.scrollToItem=function(T){var V=T.align,I=V===void 0?"auto":V,w=T.columnIndex,R=T.rowIndex,S=this.props,x=S.columnCount,g=S.height,C=S.rowCount,D=S.width,J=this.state,k=J.scrollLeft,O=J.scrollTop,j=tz();w!==void 0&&(w=Math.max(0,Math.min(w,x-1))),R!==void 0&&(R=Math.max(0,Math.min(R,C-1)));var F=d(this.props,this._instanceProps),U=n(this.props,this._instanceProps)>D?j:0,v=F>g?j:0;this.scrollTo({scrollLeft:w===void 0?k:Z(this.props,w,I,k,this._instanceProps,v),scrollTop:R===void 0?O:b(this.props,R,I,O,this._instanceProps,U)})},Y.componentDidMount=function(){var T=this.props,V=T.initialScrollLeft,I=T.initialScrollTop;if(this._outerRef!=null){var w=this._outerRef;typeof V=="number"&&(w.scrollLeft=V),typeof I=="number"&&(w.scrollTop=I)}this._callPropsCallbacks()},Y.componentDidUpdate=function(){var T=this.props.direction,V=this.state,I=V.scrollLeft,w=V.scrollTop;if(V.scrollUpdateWasRequested&&this._outerRef!=null){var R=this._outerRef;if(T==="rtl")switch(qN()){case"negative":R.scrollLeft=-I;break;case"positive-ascending":R.scrollLeft=I;break;default:var S=R.clientWidth;R.scrollLeft=R.scrollWidth-S-I;break}else R.scrollLeft=Math.max(0,I);R.scrollTop=Math.max(0,w)}this._callPropsCallbacks()},Y.componentWillUnmount=function(){this._resetIsScrollingTimeoutId!==null&&_N(this._resetIsScrollingTimeoutId)},Y.render=function(){var T=this.props,V=T.children,I=T.className,w=T.columnCount,R=T.direction,S=T.height,x=T.innerRef,g=T.innerElementType,C=T.innerTagName,D=T.itemData,J=T.itemKey,k=J===void 0?sz:J,O=T.outerElementType,j=T.outerTagName,F=T.rowCount,U=T.style,v=T.useIsScrolling,A=T.width,q=this.state.isScrolling,_=this._getHorizontalRangeToRender(),al=_[0],nl=_[1],B=this._getVerticalRangeToRender(),sl=B[0],Tl=B[1],vl=[];if(w>0&&F)for(var Hl=sl;Hl<=Tl;Hl++)for(var ul=al;ul<=nl;ul++)vl.push(u.createElement(V,{columnIndex:ul,data:D,isScrolling:v?q:void 0,key:k({columnIndex:ul,data:D,rowIndex:Hl}),rowIndex:Hl,style:this._getItemStyle(Hl,ul)}));var nt=d(this.props,this._instanceProps),ht=n(this.props,this._instanceProps);return u.createElement(O||j||"div",{className:I,onScroll:this._onScroll,ref:this._outerRefSetter,style:HW({position:"relative",height:S,width:A,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:R},U)},u.createElement(g||C||"div",{children:vl,ref:x,style:{height:nt,pointerEvents:q?"none":void 0,width:ht}}))},Y._callPropsCallbacks=function(){var T=this.props,V=T.columnCount,I=T.onItemsRendered,w=T.onScroll,R=T.rowCount;if(typeof I=="function"&&V>0&&R>0){var S=this._getHorizontalRangeToRender(),x=S[0],g=S[1],C=S[2],D=S[3],J=this._getVerticalRangeToRender(),k=J[0],O=J[1],j=J[2],F=J[3];this._callOnItemsRendered(x,g,k,O,C,D,j,F)}if(typeof w=="function"){var U=this.state,v=U.horizontalScrollDirection,A=U.scrollLeft,q=U.scrollTop,_=U.scrollUpdateWasRequested,al=U.verticalScrollDirection;this._callOnScroll(A,q,v,al,_)}},Y._getHorizontalRangeToRender=function(){var T=this.props,V=T.columnCount,I=T.overscanColumnCount,w=T.overscanColumnsCount,R=T.overscanCount,S=T.rowCount,x=this.state,g=x.horizontalScrollDirection,C=x.isScrolling,D=x.scrollLeft,J=I||w||R||1;if(V===0||S===0)return[0,0,0,0];var k=e(this.props,D,this._instanceProps),O=s(this.props,k,D,this._instanceProps),j=!C||g==="backward"?Math.max(1,J):1,F=!C||g==="forward"?Math.max(1,J):1;return[Math.max(0,k-j),Math.max(0,Math.min(V-1,O+F)),k,O]},Y._getVerticalRangeToRender=function(){var T=this.props,V=T.columnCount,I=T.overscanCount,w=T.overscanRowCount,R=T.overscanRowsCount,S=T.rowCount,x=this.state,g=x.isScrolling,C=x.verticalScrollDirection,D=x.scrollTop,J=w||R||I||1;if(V===0||S===0)return[0,0,0,0];var k=h(this.props,D,this._instanceProps),O=W(this.props,k,D,this._instanceProps),j=!g||C==="backward"?Math.max(1,J):1,F=!g||C==="forward"?Math.max(1,J):1;return[Math.max(0,k-j),Math.max(0,Math.min(S-1,O+F)),k,O]},y})(u.PureComponent),l.defaultProps={direction:"ltr",itemData:void 0,useIsScrolling:!1},l}var cz=function(i,l){i.children,i.direction,i.height,i.innerTagName,i.outerTagName,i.overscanColumnsCount,i.overscanCount,i.overscanRowsCount,i.width,l.instance},$N=50,aY=function(i,l){var t=i.rowCount,e=l.rowMetadataMap,s=l.estimatedRowHeight,c=l.lastMeasuredRowIndex,d=0;if(c>=t&&(c=t-1),c>=0){var n=e[c];d=n.offset+n.size}var Z=(t-c-1)*s;return d+Z},nY=function(i,l){var t=i.columnCount,e=l.columnMetadataMap,s=l.estimatedColumnWidth,c=l.lastMeasuredColumnIndex,d=0;if(c>=t&&(c=t-1),c>=0){var n=e[c];d=n.offset+n.size}var Z=(t-c-1)*s;return d+Z},Ii=function(i,l,t,e){var s,c,d;if(i==="column"?(s=e.columnMetadataMap,c=l.columnWidth,d=e.lastMeasuredColumnIndex):(s=e.rowMetadataMap,c=l.rowHeight,d=e.lastMeasuredRowIndex),t>d){var n=0;if(d>=0){var Z=s[d];n=Z.offset+Z.size}for(var b=d+1;b<=t;b++){var o=c(b);s[b]={offset:n,size:o},n+=o}i==="column"?e.lastMeasuredColumnIndex=t:e.lastMeasuredRowIndex=t}return s[t]},lr=function(i,l,t,e){var s,c;return i==="column"?(s=t.columnMetadataMap,c=t.lastMeasuredColumnIndex):(s=t.rowMetadataMap,c=t.lastMeasuredRowIndex),(c>0?s[c].offset:0)>=e?ZY(i,l,t,c,0,e):dz(i,l,t,Math.max(0,c),e)},ZY=function(i,l,t,e,s,c){for(;s<=e;){var d=s+Math.floor((e-s)/2),n=Ii(i,l,d,t).offset;if(n===c)return d;n<c?s=d+1:n>c&&(e=d-1)}return s>0?s-1:0},dz=function(i,l,t,e,s){for(var c=i==="column"?l.columnCount:l.rowCount,d=1;e<c&&Ii(i,l,e,t).offset<s;)e+=d,d*=2;return ZY(i,l,t,Math.min(e,c-1),Math.floor(e/2),s)},tr=function(i,l,t,e,s,c,d){var n=i==="column"?l.width:l.height,Z=Ii(i,l,t,c),b=i==="column"?nY(l,c):aY(l,c),o=Math.max(0,Math.min(b-n,Z.offset)),m=Math.max(0,Z.offset-n+d+Z.size);switch(e==="smart"&&(e=s>=m-n&&s<=o+n?"auto":"center"),e){case"start":return o;case"end":return m;case"center":return Math.round(m+(o-m)/2);default:return s>=m&&s<=o?s:m>o||s<m?m:o}},az=iz({getColumnOffset:function(i,l,t){return Ii("column",i,l,t).offset},getColumnStartIndexForOffset:function(i,l,t){return lr("column",i,t,l)},getColumnStopIndexForStartIndex:function(i,l,t,e){for(var s=i.columnCount,c=i.width,d=Ii("column",i,l,e),n=t
101+c,Z=d.offset+d.size,b=l;b<s-1&&Z<n;)b++,Z+=Ii("column",i,b,e).size;return b},getColumnWidth:function(i,l,t){return t.columnMetadataMap[l].size},getEstimatedTotalHeight:aY,getEstimatedTotalWidth:nY,getOffsetForColumnAndAlignment:function(i,l,t,e,s,c){return tr("column",i,l,t,e,s,c)},getOffsetForRowAndAlignment:function(i,l,t,e,s,c){return tr("row",i,l,t,e,s,c)},getRowOffset:function(i,l,t){return Ii("row",i,l,t).offset},getRowHeight:function(i,l,t){return t.rowMetadataMap[l].size},getRowStartIndexForOffset:function(i,l,t){return lr("row",i,t,l)},getRowStopIndexForStartIndex:function(i,l,t,e){for(var s=i.rowCount,c=i.height,d=Ii("row",i,l,e),n=t+c,Z=d.offset+d.size,b=l;b<s-1&&Z<n;)b++,Z+=Ii("row",i,b,e).size;return b},initInstanceProps:function(i,l){var t=i,e=t.estimatedColumnWidth,s=t.estimatedRowHeight,c={columnMetadataMap:{},estimatedColumnWidth:e||$N,estimatedRowHeight:s||$N,lastMeasuredColumnIndex:-1,lastMeasuredRowIndex:-1,rowMetadataMap:{}};return l.resetAfterColumnIndex=function(d,n){n===void 0&&(n=!0),l.resetAfterIndices({columnIndex:d,shouldForceUpdate:n})},l.resetAfterRowIndex=function(d,n){n===void 0&&(n=!0),l.resetAfterIndices({rowIndex:d,shouldForceUpdate:n})},l.resetAfterIndices=function(d){var n=d.columnIndex,Z=d.rowIndex,b=d.shouldForceUpdate,o=b===void 0?!0:b;typeof n=="number"&&(c.lastMeasuredColumnIndex=Math.min(c.lastMeasuredColumnIndex,n-1)),typeof Z=="number"&&(c.lastMeasuredRowIndex=Math.min(c.lastMeasuredRowIndex,Z-1)),l._getItemStyleCache(-1),o&&l.forceUpdate()},c},shouldResetStyleCacheOnItemSizeChange:!1,validateProps:function(i){i.columnWidth,i.rowHeight}});function er(i,l){for(var t in i)if(!(t in l))return!0;for(var e in l)if(i[e]!==l[e])return!0;return!1}var nz=["style"],Zz=["style"];function bz(i,l){var t=i.style,e=BN(i,nz),s=l.style,c=BN(l,Zz);return!er(t,s)&&!er(e,c)}var oc=typeof window<"u"?window:typeof self<"u"?self:global,BW=null,AW=null,sr=20,t2=oc.clearTimeout,ir=oc.setTimeout,e2=oc.cancelAnimationFrame||oc.mozCancelAnimationFrame||oc.webkitCancelAnimationFrame,cr=oc.requestAnimationFrame||oc.mozRequestAnimationFrame||oc.webkitRequestAnimationFrame;e2==null||cr==null?(BW=t2,AW=function(i){return ir(i,sr)}):(BW=function([i,l]){e2(i),t2(l)},AW=function(i){let l=cr(function(){t2(t),i()}),t=ir(function(){e2(l),i()},sr);return[l,t]});function oz(i){let l,t,e,s,c,d,n,Z=typeof document<"u"&&document.attachEvent;if(!Z){d=function(N){let M=N.__resizeTriggers__,X=M.firstElementChild,y=M.lastElementChild,Y=X.firstElementChild;y.scrollLeft=y.scrollWidth,y.scrollTop=y.scrollHeight,Y.style.width=X.offsetWidth+1+"px",Y.style.height=X.offsetHeight+1+"px",X.scrollLeft=X.scrollWidth,X.scrollTop=X.scrollHeight},c=function(N){return N.offsetWidth!==N.__resizeLast__.width||N.offsetHeight!==N.__resizeLast__.height},n=function(N){if(N.target.className&&typeof N.target.className.indexOf=="function"&&N.target.className.indexOf("contract-trigger")<0&&N.target.className.indexOf("expand-trigger")<0)return;let M=this;d(this),this.__resizeRAF__&&BW(this.__resizeRAF__),this.__resizeRAF__=AW(function(){c(M)&&(M.__resizeLast__.width=M.offsetWidth,M.__resizeLast__.height=M.offsetHeight,M.__resizeListeners__.forEach(function(X){X.call(M,N)}))})};let o=!1,m="";e="animationstart";let h="Webkit Moz O ms".split(" "),W="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),r="";{let N=document.createElement("fakeelement");if(N.style.animationName!==void 0&&(o=!0),o===!1){for(let M=0;M<h.length;M++)if(N.style[h[M]+"AnimationName"]!==void 0){r=h[M],m="-"+r.toLowerCase()+"-",e=W[M],o=!0;break}}}t="resizeanim",l="@"+m+"keyframes "+t+" { from { opacity: 0; } to { opacity: 0; } } ",s=m+"animation: 1ms "+t+"; "}let b=function(o){if(!o.getElementById("detectElementResize")){let m=(l||"")+".resize-triggers { "+(s||"")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',h=o.head||o.getElementsByTagName("head")[0],W=o.createElement("style");W.id="detectElementResize",W.type="text/css",i!=null&&W.setAttribute("nonce",i),W.styleSheet?W.styleSheet.cssText=m:W.appendChild(o.createTextNode(m)),h.appendChild(W)}};
101return{addResizeListener:function(o,m){if(Z)o.attachEvent("onresize",m);else{if(!o.__resizeTriggers__){let h=o.ownerDocument,W=oc.getComputedStyle(o);W&&W.position==="static"&&(o.style.position="relative"),b(h),o.__resizeLast__={},o.__resizeListeners__=[],(o.__resizeTriggers__=h.createElement("div")).className="resize-triggers";let r=h.createElement("div");r.className="expand-trigger",r.appendChild(h.createElement("div"));let N=h.createElement("div");N.className="contract-trigger",o.__resizeTriggers__.appendChild(r),o.__resizeTriggers__.appendChild(N),o.appendChild(o.__resizeTriggers__),d(o),o.addEventListener("scroll",n,!0),e&&(o.__resizeTriggers__.__animationListener__=function(M){M.animationName===t&&d(o)},o.__resizeTriggers__.addEventListener(e,o.__resizeTriggers__.__animationListener__))}o.__resizeListeners__.push(m)}},removeResizeListener:function(o,m){if(Z)o.detachEvent("onresize",m);else if(o.__resizeListeners__.splice(o.__resizeListeners__.indexOf(m),1),!o.__resizeListeners__.length){o.removeEventListener("scroll",n,!0),o.__resizeTriggers__.__animationListener__&&(o.__resizeTriggers__.removeEventListener(e,o.__resizeTriggers__.__animationListener__),o.__resizeTriggers__.__animationListener__=null);try{o.__resizeTriggers__=!o.removeChild(o.__resizeTriggers__)}catch{}}}}}var mz=class extends u.Component{constructor(...l){super(...l),this.state={height:this.props.defaultHeight||0,width:this.props.defaultWidth||0},this._autoSizer=null,this._detectElementResize=null,this._didLogDeprecationWarning=!1,this._parentNode=null,this._resizeObserver=null,this._timeoutId=null,this._onResize=()=>{this._timeoutId=null;let{disableHeight:t,disableWidth:e,onResize:s}=this.props;if(this._parentNode){let c=window.getComputedStyle(this._parentNode)||{},d=parseFloat(c.paddingLeft||"0"),n=parseFloat(c.paddingRight||"0"),Z=parseFloat(c.paddingTop||"0"),b=parseFloat(c.paddingBottom||"0"),o=this._parentNode.getBoundingClientRect(),m=o.height-Z-b,h=o.width-d-n;if(!t&&this.state.height!==m||!e&&this.state.width!==h){this.setState({height:m,width:h});let W=()=>{this._didLogDeprecationWarning||(this._didLogDeprecationWarning=!0,console.warn("scaledWidth and scaledHeight parameters have been deprecated; use width and height instead"))};typeof s=="function"&&s({height:m,width:h,get scaledHeight(){return W(),m},get scaledWidth(){return W(),h}})}}},this._setRef=t=>{this._autoSizer=t}}componentDidMount(){let{nonce:l}=this.props,t=this._autoSizer?this._autoSizer.parentNode:null;if(t!=null&&t.ownerDocument&&t.ownerDocument.defaultView&&t instanceof t.ownerDocument.defaultView.HTMLElement){this._parentNode=t;let e=t.ownerDocument.defaultView.ResizeObserver;e==null?(this._detectElementResize=oz(l),this._detectElementResize.addResizeListener(t,this._onResize)):(this._resizeObserver=new e(()=>{this._timeoutId=setTimeout(this._onResize,0)}),this._resizeObserver.observe(t)),this._onResize()}}componentWillUnmount(){this._parentNode&&(this._detectElementResize&&this._detectElementResize.removeResizeListener(this._parentNode,this._onResize),this._timeoutId!==null&&clearTimeout(this._timeoutId),this._resizeObserver&&this._resizeObserver.disconnect())}render(){let{children:l,defaultHeight:t,defaultWidth:e,disableHeight:s=!1,disableWidth:c=!1,doNotBailOutOnEmptyChildren:d=!1,nonce:n,onResize:Z,style:b={},tagName:o="div",...m}=this.props,{height:h,width:W}=this.state,r={overflow:"visible"},N={},M=!1;return s||(h===0&&(M=!0),r.height=0,N.height=h,N.scaledHeight=h),c||(W===0&&(M=!0),r.width=0,N.width=W,N.scaledWidth=W),d&&(M=!1),u.createElement(o,{ref:this._setRef,style:{...r,...b},...m},!M&&l(N))}},hz=u.memo(({columnIndex:i,rowIndex:l,data:t,style:e})=>{let s=VV(l,i,t.columnCount,t.isDualPageWithCover);if(s<=0)return null;if(t.isDualPageWithCover){let c=s===t.totalPages&&t.totalPages%2==0;if(l===0&&s===1||c&&i===0){let d=t.columnWidths.reduce((n,Z)=>n+Z,0);return G.jsx("div",{style:{...e,width:d,display:"flex",justifyContent:"center",alignItems:"flex-start"},children:G.jsx(kn,{style:{position:"relative"},pageNumber:s},s)})}}return t.columnCount===2?G.jsx("div",{style:{...e,display:"flex",justifyContent:i===0?"flex-end":"flex-start",alignItems:"flex-start"},children:G.jsx(kn,{style:{position:"relative"},pageNumber:s},s)}):G.jsx(kn,{style:e,pageNumber:s},s)},bz),uz=()=>{let i=u.useRef(new Rs),{initialPage:l=1,initialScrollMode:t}=Yc(),{pagesRef:e,setPagesRef:s,setContentRef:c}=Pe(),{scrollToPage:d}=Yp();BI(e);let{virtualScrollRef:n,getVirtualScrollRef:Z,getPageScrollElementRef:b,getVirtualScrollableElementRef:o,setTotalInnerDimensions:m,virtualScrollableElementRef:h,totalInnerDimensions:W,pageScrollElementRef:r}=hh(),N=u.useRef(l>1),[M,X]=u.useState(l>1),{nextPage:y,prevPage:Y,setFocusedPage:T,focusedPage:V,totalPages:I}=Xe(),{scrollMode:w}=Wi(),{viewMode:R}=Gi(),S=u.useRef(null),x=u.useRef(null),{loading:g,error:C}=at(),{passwordRequired:D}=sh(),{LoaderImageComponent:J}=VG(),k=u.useRef(W),O=u.useRef({viewMode:R,scrollMode:w}),j=u.useRef(!1),F=u.useRef(),{isFullScreen:U}=zp(),{pageDimension:v,rowCount:A,rowHeight:q,columnCount:_,columnWidth:al,estimatedColumnWidth:nl,estimatedRowHeight:B,totalDimension:sl}=CI(),Tl=mh(W,100),{onScroll:vl,onTextSelect:Hl}=NG();AI({onTextSelect:Hl,pagesRef:e});let ul=u.useRef();vI(_,A,h,R);let nt=u.useRef({scrollTop:0,scrollLeft:0});EI(e);let{isPressed:ht}=kI(),{selectionMode:Xi}=Lp(),{initializeGrabScroll:Mh,resetGrabState:ju}=UI({isPressed:ht}),Rd=u.useMemo(()=>Xi===Nd.HAND,[Xi]),Du=u.useMemo(()=>{let Ml=Array.from({length:_},(Nl,Mi)=>al(Mi));return{columnCount:_,isDualPageWithCover:R===Yl.DUAL_PAGE_WITH_COVER,columnWidths:Ml,totalPages:I}},[_,R,al,I]),yc=u.useCallback(Ml=>{let Nl=document.activeElement!==e;!U&&Nl||(["ArrowUp","ArrowLeft"].includes(Ml.key)?(Ml.preventDefault(),Y()):["ArrowDown","ArrowRight"].includes(Ml.key)&&
101(Ml.preventDefault(),y()))},[y,Y,U,w]);u.useEffect(()=>(window.addEventListener("keydown",yc),()=>{window.removeEventListener("keydown",yc)}),[yc]),u.useEffect(()=>{if(S.current&&(S.current.style.position="relative"),n)for(let Ml=0;Ml<A;Ml++)for(let Nl=0;Nl<_;Nl++)n.resetAfterIndices({columnIndex:Nl,rowIndex:Ml,shouldForceUpdate:!0})},[A,_,v,n]);let CT=u.useCallback((Ml,Nl)=>{if(!h)return{scrollTop:0,scrollLeft:0};let Mi=nt.current.scrollTop>Nl,Tc=nt.current.scrollLeft>Ml;return Mi||Tc?nt.current:{scrollTop:h.scrollTop,scrollLeft:h.scrollLeft}},[h]),eN=u.useCallback((Ml,Nl)=>{if(O.current.viewMode!==R||O.current.scrollMode!==w){ul.current&&clearTimeout(ul.current),j.current=!0,d(V,"auto"),ul.current=setTimeout(()=>{requestAnimationFrame(()=>{O.current={viewMode:R,scrollMode:w}})},100);return}let Mi=Ml.scrollTop,Tc=Ml.scrollLeft;if(!Nl.height||!Nl.width)return;j.current=!0;let{height:Mb,width:Sd}=Nl,{height:Cu,width:Ju}=k.current;if(Cu===Mb&&Ju===Sd)return;if(N.current&&l>1){k.current={height:Nl.height,width:Nl.width};return}if(!Cu||!Ju){k.current={height:Nl.height,width:Nl.width};return}if(Mi===0&&Tc===0){k.current={height:Nl.height,width:Nl.width};return}let kT=Mi/Cu*Mb,UT=Tc/Ju*Sd,ET=Math.round(Math.min(kT,Mb))||0,KT=Math.round(Math.min(UT,Sd))||0;F.current=setTimeout(()=>{requestAnimationFrame(()=>{h==null||h.scrollTo({top:ET,left:KT,behavior:"auto"})})},0),k.current={height:Nl.height,width:Nl.width}},[h,R,w,d,l]);u.useEffect(()=>{clearTimeout(F.current);let Ml=Array.from({length:A}).reduce((Tc,Mb,Sd)=>Tc+q(Sd),0),Nl=Array.from({length:_}).reduce((Tc,Mb,Sd)=>Tc+al(Sd),0),Mi=CT(Nl,Ml);nt.current=Mi,eN(Mi,{height:Ml,width:Nl}),m({height:Ml,width:Nl})},[v,A,_,eN]);let JT=u.useCallback(Ml=>{nt.current={scrollTop:Ml.scrollTop,scrollLeft:Ml.scrollLeft}},[h]);u.useEffect(()=>{if(vl)return r&&r.addEventListener("scroll",vl),h&&h.addEventListener("scroll",vl),()=>{r==null||r.removeEventListener("scroll",vl),h==null||h.removeEventListener("scroll",vl)}},[h,r,vl]),u.useEffect(()=>()=>{ul.current&&clearTimeout(ul.current)},[]);let FT=u.useMemo(()=>xl(Dt["rp-pages-container"],{[Dt["rp-cursor-grab"]]:Rd&&!ht,[Dt["rp-cursor-grabbing"]]:Rd&&ht}),[Rd,ht]),OT=u.useCallback(Ml=>{if(Rd&&Ml){let Nl=xl(Dt["rp-pages"]);Mh(document.querySelector(`.${Nl}`))}},[Rd,Mh,Dt]);return u.useEffect(()=>{g&&ju()},[g]),u.useEffect(()=>{if(C!==Ud.INVALID_OR_CORRUPTED_PDF)return;let Ml=requestAnimationFrame(()=>{var Nl;(Nl=x.current)==null||Nl.focus()});return()=>{cancelAnimationFrame(Ml)}},[C]),u.useEffect(()=>{if(!(Tl.height===0||!N.current)){if(t===kl.PAGE_SCROLLING){l!==V&&r&&T(l),N.current=!1,X(!1);return}h&&(d(l,"auto"),(h.scrollLeft>0||h.scrollTop>0)&&(T(l),N.current=!1,X(!1)))}},[d,t,r,T,Tl,h]),G.jsxs(G.Fragment,{children:[G.jsx(PI,{ref:c,children:G.jsx(dY,{ref:s,tabIndex:-1,className:FT,style:{"--scale-round-x":`${PN(i.current.sx)[1]}px`,"--scale-round-y":`${PN(i.current.sy)[1]}px`},children:G.jsx(mz,{style:{minHeight:"50px"},children:({width:Ml,height:Nl})=>G.jsx("div",{"data-rp":"pages",ref:OT,style:{width:Ml,height:Nl,...M&&{visibility:"hidden"}},children:w===kl.PAGE_SCROLLING?C===Ud.INVALID_OR_CORRUPTED_PDF?G.jsx("div",{ref:x,className:Dt["rp-load-error"],style:{width:Ml,height:Nl},tabIndex:-1,role:"alert","aria-live":"assertive","aria-atomic":"true",children:G.jsx("div",{className:Dt["rp-load-error-message"],children:"Invalid or corrupted PDF file."})}):G.jsx("div",{ref:b,style:{width:Ml,height:Nl},className:xl(Dt["rp-pages"],Dt["rp-page-scrolling-wrapper"]),children:R===Yl.DUAL_PAGE?G.jsx(JI,{widths:al,heights:q}):R===Yl.DUAL_PAGE_WITH_COVER?G.jsx(FI,{widths:al,heights:q}):G.jsx(OI,{widths:al,heights:q})}):B?G.jsx(az,{ref:Z,itemData:Du,outerRef:o,innerRef:S,onScroll:JT,columnCount:_,columnWidth:al,rowHeight:q,height:Nl,width:Ml,estimatedColumnWidth:nl,estimatedRowHeight:B,rowCount:A,className:xl(Dt["rp-pages"],w===kl.HORIZONTAL_SCROLLING?Dt["rp-pages-horizontal-scroll"]:""),style:{"--rp-pages-height":`${sl.height}px`,"--rp-pages-width":`${sl.width}px`,"--rp-row-count":`${A}`,"--rp-column-count":`${_}`},children:hz}):!g&&!C?G.jsx("div",{className:Dt["rp-loader"],style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",width:"100%"},children:J&&G.jsx(J,{})}):C===Ud.NOT_SUPPORTED?G.jsx("div",{className:Dt["rp-not-supported"],children:G.jsxs("div",{className:Dt["rp-not-supported-content"],
101children:["React PDF Kit is unable to render on this browser. Please use the supported browsers from the list below:",G.jsx("div",{children:G.jsxs("ul",{className:Dt["rp-not-supported-list"],children:[G.jsx("li",{children:"Chrome 126+"}),G.jsx("li",{children:"Edge 126+"}),G.jsx("li",{children:"Firefox 126+"}),G.jsx("li",{children:"Safari 18.4+"}),G.jsx("li",{children:"Safari iOS 18.4+"}),G.jsx("li",{children:"Chrome Android 126+"})]})})]})}):C===Ud.INVALID_OR_CORRUPTED_PDF?G.jsx("div",{ref:x,className:Dt["rp-load-error"],tabIndex:-1,role:"alert","aria-live":"assertive","aria-atomic":"true",children:G.jsx("div",{className:Dt["rp-load-error-message"],children:"Invalid or corrupted PDF file."})}):null})})})}),D&&G.jsx(KI,{})]})},bY=i=>{let{children:l,customVariables:t,customDarkVariables:e}=i,{customVariables:s,customDarkVariables:c}=cY();return G.jsx(QI,{value:{customVariables:{...s,...t},customDarkVariables:{...c,...e}},children:l})},Wz=i=>{let[l,t]=u.useState(!1);return u.useEffect(()=>{if(typeof window<"u"){let e=new URL("data:text/javascript;base64,LyoqCiAqIEBsaWNzdGFydCBUaGUgZm9sbG93aW5nIGlzIHRoZSBlbnRpcmUgbGljZW5zZSBub3RpY2UgZm9yIHRoZQogKiBKYXZhU2NyaXB0IGNvZGUgaW4gdGhpcyBwYWdlCiAqCiAqIENvcHlyaWdodCAyMDI0IE1vemlsbGEgRm91bmRhdGlvbgogKgogKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICoKICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogKgogKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKgogKiBAbGljZW5kIFRoZSBhYm92ZSBpcyB0aGUgZW50aXJlIGxpY2Vuc2Ugbm90aWNlIGZvciB0aGUKICogSmF2YVNjcmlwdCBjb2RlIGluIHRoaXMgcGFnZQogKi8KLyoqCiAqIHBkZmpzVmVyc2lvbiA9IDUuNC41MzAKICogcGRmanNCdWlsZCA9IDUwY2M0YWRhYwogKi9jb25zdCBlPSEoIm9iamVjdCIhPXR5cGVvZiBwcm9jZXNzfHxwcm9jZXNzKyIiIT0iW29iamVjdCBwcm9jZXNzXSJ8fHByb2Nlc3MudmVyc2lvbnMubnd8fHByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb24mJnByb2Nlc3MudHlwZSYmImJyb3dzZXIiIT09cHJvY2Vzcy50eXBlKSx0PVsuMDAxLDAsMCwuMDAxLDAsMF0sYT0xLjM1LHI9LjM1LGk9LjI1OTI1OTI1OTI1OTI1OTI0LG49MSxzPTIsbz00LGM9OCxsPTE2LGg9NjQsdT0xMjgsZD0yNTYsZj0icGRmanNfaW50ZXJuYWxfZWRpdG9yXyIsZz0zLHA9OSxtPTEzLGI9MTUseT0xMDEsdz17UFJJTlQ6NCxNT0RJRllfQ09OVEVOVFM6OCxDT1BZOjE2LE1PRElGWV9BTk5PVEFUSU9OUzozMixGSUxMX0lOVEVSQUNUSVZFX0ZPUk1TOjI1NixDT1BZX0ZPUl9BQ0NFU1NJQklMSVRZOjUxMixBU1NFTUJMRToxMDI0LFBSSU5UX0hJR0hfUVVBTElUWToyMDQ4fSx4PTEsUz0yLGs9MyxDPTAsdj00LEY9MSxUPTIsTz0zLEQ9e1RFWFQ6MSxMSU5LOjIsRlJFRVRFWFQ6MyxMSU5FOjQsU1FVQVJFOjUsQ0lSQ0xFOjYsUE9MWUdPTjo3LFBPTFlMSU5FOjgsSElHSExJR0hUOjksVU5ERVJMSU5FOjEwLFNRVUlHR0xZOjExLFNUUklLRU9VVDoxMixTVEFNUDoxMyxDQVJFVDoxNCxJTks6MTUsUE9QVVA6MTYsRklMRUFUVEFDSE1FTlQ6MTcsU09VTkQ6MTgsTU9WSUU6MTksV0lER0VUOjIwLFNDUkVFTjoyMSxQUklOVEVSTUFSSzoyMixUUkFQTkVUOjIzLFdBVEVSTUFSSzoyNCxUSFJFRUQ6MjUsUkVEQUNUOjI2fSxNPSJHcm91cCIsUj0iUiIsTj0xLEU9MixMPTQsXz0xNixVPTMyLGo9MTI4LFg9NTEyLHE9MSxIPTIsVz00MDk2LHo9ODE5MiwkPTMyNzY4LEc9NjU1MzYsVj0xMzEwNzIsSz0xMDQ4NTc2LEo9MjA5NzE1MixZPTgzODg2MDgsWj0xNjc3NzIxNixRPTEsZWU9Mix0ZT0zLGFlPTQscmU9NSxpZT17RToiTW91c2UgRW50ZXIiLFg6Ik1vdXNlIEV4aXQiLEQ6Ik1vdXNlIERvd24iLFU6Ik1vdXNlIFVwIixGbzoiRm9jdXMiLEJsOiJCbHVyIixQTzoiUGFnZU9wZW4iLFBDOiJQYWdlQ2xvc2UiLFBWOiJQYWdlVmlzaWJsZSIsUEk6IlBhZ2VJbnZpc2libGUiLEs6IktleXN0cm9rZSIsRjoiRm9ybWF0IixWOiJWYWxpZGF0ZSIsQzoiQ2FsY3VsYXRlIn0sbmU9e1dDOiJXaWxsQ2xvc2UiLFdTOiJXaWxsU2F2ZSIsRFM6IkRpZFNhdmUiLFdQOiJXaWxsUHJpbnQiLERQOiJEaWRQcmludCJ9LHNlPXtPOiJQYWdlT3BlbiIsQzoiUGFnZUNsb3NlIn0sb2U9MSxjZT01LGxlPTEsaGU9Mix1ZT0zLGRlPTQsZmU9NSxnZT02LHBlPTcsbWU9OCxiZT05LHllPTEwLHdlPTExLHhlPTEyLFNlPTEzLEFlPTE0LGtlPTE1LENlPTE2LHZlPTE3LEZlPTE4LEllPTE5LFRlPTIwLE9lPTIxLERlPTIyLE1lPTIzLFJlPTI0LEJlPTI1LE5lPTI2LFBlPTI3LEVlPTI4LExlPTI5LF9lPTMwLFVlPTMxLGplPTMyLFhlPTMzLHFlPTM0LEhlPTM1LFdlPTM2LHplPTM3LCRlPTM4LEdlPTM5LFZlPTQwLEtlPTQxLEplPTQyLFllPTQzLFplPTQ0LFFlPTQ1LGV0PTQ2LHR0PTQ3LGF0PTQ4LHJ0PTQ5LGl0PTUwLG50PTUxLHN0PTUyLG90PTUzLGN0PTU0LGx0PTU1LGh0PTU2LHV0PTU3LGR0PTU4LGZ0PTU5LGd0PTYwLHB0PTYxLG10PTYyLGJ0PTYzLHl0PTY0LHd0PTY1LHh0PTY2LFN0PTY3LEF0PTY4LGt0PTY5LEN0PTcwLHZ0PTcxLEZ0PTcyLEl0PTczLFR0PTc0LE90PTc1LER0PTc2LE10PTc3LFJ0PTgwLEJ0PTgxLE50PTgzLFB0PTg0LEV0PTg1LEx0PTg2LF90PTg3LFV0PTg4LGp0PTg5LFh0PTkwLHF0PTkxLEh0PTkyLFd0PTkzLHp0PTk0LCR0PTAsR3Q9MSxWdD0yLEt0PTMsSnQ9NCxZdD0xLFp0PTI7bGV0IFF0PW9lO2Z1bmN0aW9uIGdldFZlcmJvc2l0eUxldmVsKCl7cmV0dXJuIFF0fWZ1bmN0aW9uIGluZm8oZSl7UXQ+PWNlJiZjb25zb2xlLmluZm8oYEluZm86ICR7ZX1gKX1mdW5jdGlvbiB3YXJuKGUpe1F0Pj1vZSYmY29uc29sZS53YXJuKGBXYXJuaW5nOiAke2V9YCl9ZnVuY3Rpb24gdW5yZWFjaGFibGUoZSl7dGhyb3cgbmV3IEVycm9yKGUpfWZ1bmN0aW9uIGFzc2VydChlLHQpe2V8fHVucmVhY2hhYmxlKHQpfWZ1bmN0aW9uIGNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSx0PW51bGwsYT1udWxsKXtpZighZSlyZXR1cm4gbnVsbDtpZihhJiYic3RyaW5nIj09dHlwZW9mIGUpe2lmKGEuYWRkRGVmYXVsdFByb3RvY29sJiZlLnN0YXJ0c1dpdGgoInd3dy4iKSl7Y29uc3QgdD1lLm1hdGNoKC9cLi9nKTt0Py5sZW5ndGg+PTImJihlPWBodHRwOi8vJHtlfWApfWlmKGEudHJ5Q29udmVydEVuY29kaW5nKXRyeXtlPXN0cmluZ1RvVVRGOFN0cmluZyhlKX1jYXRjaHt9fWNvbnN0IHI9dD9VUkwucGFyc2UoZSx0KTpVUkwucGFyc2UoZSk7cmV0dXJuIGZ1bmN0aW9uIF9pc1ZhbGlkUHJvdG9jb2woZSl7c3dpdGNoKGU/LnByb3RvY29sKXtjYXNlImh0dHA6IjpjYXNlImh0dHBzOiI6Y2FzZSJmdHA6IjpjYXNlIm1haWx0bzoiOmNhc2UidGVsOiI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19KHIpP3I6bnVsbH1mdW5jdGlvbiBzaGFkb3coZSx0LGEscj0hMSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6YSxlbnVtZXJhYmxlOiFyLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMX0pO3JldHVybiBhfWNvbnN0IGVhPWZ1bmN0aW9uIEJhc2VFeGNlcHRpb25DbG9zdXJlKCl7ZnVuY3Rpb24gQmFzZUV4Y2VwdGlvbihlLHQpe3RoaXMubWVzc2FnZT1lO3RoaXMubmFtZT10fUJhc2VFeGNlcHRpb24ucHJvdG90eXBlPW5ldyBFcnJvcjtCYXNlRXhjZXB0aW9uLmNvbnN0cnVjdG9yPUJhc2VFeGNlcHRpb247cmV0dXJuIEJhc2VFeGNlcHRpb259KCk7Y2xhc3MgUGFzc3dvcmRFeGNlcHRpb24gZXh0ZW5kcyBlYXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsIlBhc3N3b3JkRXhjZXB0aW9uIik7dGhpcy5jb2RlPXR9fWNsYXNzIFVua25vd25FcnJvckV4Y2VwdGlvbiBleHRlbmRzIGVhe2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSwiVW5rbm93bkVycm9yRXhjZXB0aW9uIik7dGhpcy5kZXRhaWxzPXR9fWNsYXNzIEludmFsaWRQREZFeGNlcHRpb24gZXh0ZW5kcyBlYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJJbnZhbGlkUERGRXhjZXB0aW9uIil9fWNsYXNzIFJlc3BvbnNlRXhjZXB0aW9uIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKGUsIlJlc3BvbnNlRXhjZXB0aW9uIik7dGhpcy5zdGF0dXM9dDt0aGlzLm1pc3Npbmc9YX19Y2xhc3MgRm9ybWF0RXJyb3IgZXh0ZW5kcyBlYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJGb3JtYXRFcnJvciIpfX1jbGFzcyBBYm9ydEV4Y2VwdGlvbiBleHRlbmRzIGVhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIkFib3J0RXhjZXB0aW9uIil9fWZ1bmN0aW9uIGJ5dGVzVG9TdHJpbmc
101oZSl7Im9iamVjdCI9PXR5cGVvZiBlJiZ2b2lkIDAhPT1lPy5sZW5ndGh8fHVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBieXRlc1RvU3RyaW5nIik7Y29uc3QgdD1lLmxlbmd0aCxhPTgxOTI7aWYodDxhKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZSk7Y29uc3Qgcj1bXTtmb3IobGV0IGk9MDtpPHQ7aSs9YSl7Y29uc3Qgbj1NYXRoLm1pbihpK2EsdCkscz1lLnN1YmFycmF5KGksbik7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxzKSl9cmV0dXJuIHIuam9pbigiIil9ZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhlKXsic3RyaW5nIiE9dHlwZW9mIGUmJnVucmVhY2hhYmxlKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBzdHJpbmdUb0J5dGVzIik7Y29uc3QgdD1lLmxlbmd0aCxhPW5ldyBVaW50OEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDsrK3IpYVtyXT0yNTUmZS5jaGFyQ29kZUF0KHIpO3JldHVybiBhfWZ1bmN0aW9uIHN0cmluZzMyKGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUpfWZ1bmN0aW9uIG9iamVjdFNpemUoZSl7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aH1jbGFzcyBGZWF0dXJlVGVzdHtzdGF0aWMgZ2V0IGlzTGl0dGxlRW5kaWFuKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0xpdHRsZUVuZGlhbiIsZnVuY3Rpb24gaXNMaXR0bGVFbmRpYW4oKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KDQpO2VbMF09MTtyZXR1cm4gMT09PW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlciwwLDEpWzBdfSgpKX1zdGF0aWMgZ2V0IGlzRXZhbFN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNFdmFsU3VwcG9ydGVkIixmdW5jdGlvbiBpc0V2YWxTdXBwb3J0ZWQoKXt0cnl7bmV3IEZ1bmN0aW9uKCIiKTtyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX19KCkpfXN0YXRpYyBnZXQgaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIE9mZnNjcmVlbkNhbnZhcyl9c3RhdGljIGdldCBpc0ltYWdlRGVjb2RlclN1cHBvcnRlZCgpe3JldHVybiBzaGFkb3codGhpcywiaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQiLCJ1bmRlZmluZWQiIT10eXBlb2YgSW1hZ2VEZWNvZGVyKX1zdGF0aWMgZ2V0IGlzRmxvYXQxNkFycmF5U3VwcG9ydGVkKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc0Zsb2F0MTZBcnJheVN1cHBvcnRlZCIsInVuZGVmaW5lZCIhPXR5cGVvZiBGbG9hdDE2QXJyYXkpfXN0YXRpYyBnZXQgaXNTYW5pdGl6ZXJTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzU2FuaXRpemVyU3VwcG9ydGVkIiwidW5kZWZpbmVkIiE9dHlwZW9mIFNhbml0aXplcil9c3RhdGljIGdldCBwbGF0Zm9ybSgpe2NvbnN0e3BsYXRmb3JtOmUsdXNlckFnZW50OnR9PW5hdmlnYXRvcjtyZXR1cm4gc2hhZG93KHRoaXMsInBsYXRmb3JtIix7aXNBbmRyb2lkOnQuaW5jbHVkZXMoIkFuZHJvaWQiKSxpc0xpbnV4OmUuaW5jbHVkZXMoIkxpbnV4IiksaXNNYWM6ZS5pbmNsdWRlcygiTWFjIiksaXNXaW5kb3dzOmUuaW5jbHVkZXMoIldpbiIpLGlzRmlyZWZveDp0LmluY2x1ZGVzKCJGaXJlZm94Iil9KX1zdGF0aWMgZ2V0IGlzQ1NTUm91bmRTdXBwb3J0ZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzQ1NTUm91bmRTdXBwb3J0ZWQiLGdsb2JhbFRoaXMuQ1NTPy5zdXBwb3J0cz8uKCJ3aWR0aDogcm91bmQoMS41cHgsIDFweCkiKSl9fWNvbnN0IHRhPUFycmF5LmZyb20oQXJyYXkoMjU2KS5rZXlzKCksZT0+ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKTtjbGFzcyBVdGlse3N0YXRpYyBtYWtlSGV4Q29sb3IoZSx0LGEpe3JldHVybmAjJHt0YVtlXX0ke3RhW3RdfSR7dGFbYV19YH1zdGF0aWMgZG9tTWF0cml4VG9UcmFuc2Zvcm0oZSl7cmV0dXJuW2UuYSxlLmIsZS5jLGUuZCxlLmUsZS5mXX1zdGF0aWMgc2NhbGVNaW5NYXgoZSx0KXtsZXQgYTtpZihlWzBdKXtpZihlWzBdPDApe2E9dFswXTt0WzBdPXRbMl07dFsyXT1hfXRbMF0qPWVbMF07dFsyXSo9ZVswXTtpZihlWzNdPDApe2E9dFsxXTt0WzFdPXRbM107dFszXT1hfXRbMV0qPWVbM107dFszXSo9ZVszXX1lbHNle2E9dFswXTt0WzBdPXRbMV07dFsxXT1hO2E9dFsyXTt0WzJdPXRbM107dFszXT1hO2lmKGVbMV08MCl7YT10WzFdO3RbMV09dFszXTt0WzNdPWF9dFsxXSo9ZVsxXTt0WzNdKj1lWzFdO2lmKGVbMl08MCl7YT10WzBdO3RbMF09dFsyXTt0WzJdPWF9dFswXSo9ZVsyXTt0WzJdKj1lWzJdfXRbMF0rPWVbNF07dFsxXSs9ZVs1XTt0WzJdKz1lWzRdO3RbM10rPWVbNV19c3RhdGljIHRyYW5zZm9ybShlLHQpe3JldHVybltlWzBdKnRbMF0rZVsyXSp0WzFdLGVbMV0qdFswXStlWzNdKnRbMV0sZVswXSp0WzJdK2VbMl0qdFszXSxlWzFdKnRbMl0rZVszXSp0WzNdLGVbMF0qdFs0XStlWzJdKnRbNV0rZVs0XSxlWzFdKnRbNF0rZVszXSp0WzVdK2VbNV1dfXN0YXRpYyBtdWx0aXBseUJ5RE9NTWF0cml4KGUsdCl7cmV0dXJuW2VbMF0qdC5hK2VbMl0qdC5iLGVbMV0qdC5hK2VbM10qdC5iLGVbMF0qdC5jK2VbMl0qdC5kLGVbMV0qdC5jK2VbM10qdC5kLGVbMF0qdC5lK2VbMl0qdC5mK2VbNF0sZVsxXSp0LmUrZVszXSp0LmYrZVs1XV19c3RhdGljIGFwcGx5VHJhbnNmb3JtKGUsdCxhPTApe2NvbnN0IHI9ZVthXSxpPWVbYSsxXTtlW2FdPXIqdFswXStpKnRbMl0rdFs0XTtlW2ErMV09cip0WzFdK2kqdFszXSt0WzVdfXN0YXRpYyBhcHBseVRyYW5zZm9ybVRvQmV6aWVyKGUsdCxhPTApe2NvbnN0IHI9dFswXSxpPXRbMV0sbj10WzJdLHM9dFszXSxvPXRbNF0sYz10WzVdO2ZvcihsZXQgdD0wO3Q8Njt0Kz0yKXtjb25zdCBsPWVbYSt0XSxoPWVbYSt0KzFdO2VbYSt0XT1sKnIraCpuK287ZVthK3QrMV09bCppK2gqcytjfX1zdGF0aWMgYXBwbHlJbnZlcnNlVHJhbnNmb3JtKGUsdCl7Y29uc3QgYT1lWzBdLHI9ZVsxXSxpPXRbMF0qdFszXS10WzFdKnRbMl07ZVswXT0oYSp0WzNdLXIqdFsyXSt0WzJdKnRbNV0tdFs0XSp0WzNdKS9pO2VbMV09KC1hKnRbMV0rcip0WzBdK3RbNF0qdFsxXS10WzVdKnRbMF0pL2l9c3RhdGljIGF4aWFsQWxpZ25lZEJvdW5kaW5nQm94KGUsdCxhKXtjb25zdCByPXRbMF0saT10WzFdLG49dFsyXSxzPXRbM10sbz10WzRdLGM9dFs1XSxsPWVbMF0saD1lWzFdLHU9ZVsyXSxkPWVbM107bGV0IGY9cipsK28sZz1mLHA9cip1K28sbT1wLGI9cypoK2MseT1iLHc9cypkK2MseD13O2lmK
101DAhPT1pfHwwIT09bil7Y29uc3QgZT1pKmwsdD1pKnUsYT1uKmgscj1uKmQ7Zis9YTttKz1hO3ArPXI7Zys9cjtiKz1lO3grPWU7dys9dDt5Kz10fWFbMF09TWF0aC5taW4oYVswXSxmLHAsZyxtKTthWzFdPU1hdGgubWluKGFbMV0sYix3LHkseCk7YVsyXT1NYXRoLm1heChhWzJdLGYscCxnLG0pO2FbM109TWF0aC5tYXgoYVszXSxiLHcseSx4KX1zdGF0aWMgaW52ZXJzZVRyYW5zZm9ybShlKXtjb25zdCB0PWVbMF0qZVszXS1lWzFdKmVbMl07cmV0dXJuW2VbM10vdCwtZVsxXS90LC1lWzJdL3QsZVswXS90LChlWzJdKmVbNV0tZVs0XSplWzNdKS90LChlWzRdKmVbMV0tZVs1XSplWzBdKS90XX1zdGF0aWMgc2luZ3VsYXJWYWx1ZURlY29tcG9zZTJkU2NhbGUoZSx0KXtjb25zdCBhPWVbMF0scj1lWzFdLGk9ZVsyXSxuPWVbM10scz1hKioyK3IqKjIsbz1hKmkrcipuLGM9aSoqMituKioyLGw9KHMrYykvMixoPU1hdGguc3FydChsKioyLShzKmMtbyoqMikpO3RbMF09TWF0aC5zcXJ0KGwraHx8MSk7dFsxXT1NYXRoLnNxcnQobC1ofHwxKX1zdGF0aWMgbm9ybWFsaXplUmVjdChlKXtjb25zdCB0PWUuc2xpY2UoMCk7aWYoZVswXT5lWzJdKXt0WzBdPWVbMl07dFsyXT1lWzBdfWlmKGVbMV0+ZVszXSl7dFsxXT1lWzNdO3RbM109ZVsxXX1yZXR1cm4gdH1zdGF0aWMgaW50ZXJzZWN0KGUsdCl7Y29uc3QgYT1NYXRoLm1heChNYXRoLm1pbihlWzBdLGVbMl0pLE1hdGgubWluKHRbMF0sdFsyXSkpLHI9TWF0aC5taW4oTWF0aC5tYXgoZVswXSxlWzJdKSxNYXRoLm1heCh0WzBdLHRbMl0pKTtpZihhPnIpcmV0dXJuIG51bGw7Y29uc3QgaT1NYXRoLm1heChNYXRoLm1pbihlWzFdLGVbM10pLE1hdGgubWluKHRbMV0sdFszXSkpLG49TWF0aC5taW4oTWF0aC5tYXgoZVsxXSxlWzNdKSxNYXRoLm1heCh0WzFdLHRbM10pKTtyZXR1cm4gaT5uP251bGw6W2EsaSxyLG5dfXN0YXRpYyBwb2ludEJvdW5kaW5nQm94KGUsdCxhKXthWzBdPU1hdGgubWluKGFbMF0sZSk7YVsxXT1NYXRoLm1pbihhWzFdLHQpO2FbMl09TWF0aC5tYXgoYVsyXSxlKTthWzNdPU1hdGgubWF4KGFbM10sdCl9c3RhdGljIHJlY3RCb3VuZGluZ0JveChlLHQsYSxyLGkpe2lbMF09TWF0aC5taW4oaVswXSxlLGEpO2lbMV09TWF0aC5taW4oaVsxXSx0LHIpO2lbMl09TWF0aC5tYXgoaVsyXSxlLGEpO2lbM109TWF0aC5tYXgoaVszXSx0LHIpfXN0YXRpYyNlKGUsdCxhLHIsaSxuLHMsbyxjLGwpe2lmKGM8PTB8fGM+PTEpcmV0dXJuO2NvbnN0IGg9MS1jLHU9YypjLGQ9dSpjLGY9aCooaCooaCplKzMqYyp0KSszKnUqYSkrZCpyLGc9aCooaCooaCppKzMqYypuKSszKnUqcykrZCpvO2xbMF09TWF0aC5taW4obFswXSxmKTtsWzFdPU1hdGgubWluKGxbMV0sZyk7bFsyXT1NYXRoLm1heChsWzJdLGYpO2xbM109TWF0aC5tYXgobFszXSxnKX1zdGF0aWMjdChlLHQsYSxyLGksbixzLG8sYyxsLGgsdSl7aWYoTWF0aC5hYnMoYyk8MWUtMTIpe01hdGguYWJzKGwpPj0xZS0xMiYmdGhpcy4jZShlLHQsYSxyLGksbixzLG8sLWgvbCx1KTtyZXR1cm59Y29uc3QgZD1sKioyLTQqaCpjO2lmKGQ8MClyZXR1cm47Y29uc3QgZj1NYXRoLnNxcnQoZCksZz0yKmM7dGhpcy4jZShlLHQsYSxyLGksbixzLG8sKC1sK2YpL2csdSk7dGhpcy4jZShlLHQsYSxyLGksbixzLG8sKC1sLWYpL2csdSl9c3RhdGljIGJlemllckJvdW5kaW5nQm94KGUsdCxhLHIsaSxuLHMsbyxjKXtjWzBdPU1hdGgubWluKGNbMF0sZSxzKTtjWzFdPU1hdGgubWluKGNbMV0sdCxvKTtjWzJdPU1hdGgubWF4KGNbMl0sZSxzKTtjWzNdPU1hdGgubWF4KGNbM10sdCxvKTt0aGlzLiN0KGUsYSxpLHMsdCxyLG4sbywzKigzKihhLWkpLWUrcyksNiooZS0yKmEraSksMyooYS1lKSxjKTt0aGlzLiN0KGUsYSxpLHMsdCxyLG4sbywzKigzKihyLW4pLXQrbyksNioodC0yKnIrbiksMyooci10KSxjKX19Y29uc3QgYWE9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcyOCw3MTEsNzEwLDcyOSw3MzMsNzMxLDczMCw3MzIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODIyNiw4MjI0LDgyMjUsODIzMCw4MjEyLDgyMTEsNDAyLDgyNjAsODI0OSw4MjUwLDg3MjIsODI0MCw4MjIyLDgyMjAsODIyMSw4MjE2LDgyMTcsODIxOCw4NDgyLDY0MjU3LDY0MjU4LDMyMSwzMzgsMzUyLDM3NiwzODEsMzA1LDMyMiwzMzksMzUzLDM4MiwwLDgzNjRdO2Z1bmN0aW9uIHN0cmluZ1RvUERGU3RyaW5nKGUsdD0hMSl7aWYoZVswXT49IsOvIil7bGV0IGE7aWYoIsO+Ij09PWVbMF0mJiLDvyI9PT1lWzFdKXthPSJ1dGYtMTZiZSI7ZS5sZW5ndGglMj09MSYmKGU9ZS5zbGljZSgwLC0xKSl9ZWxzZSBpZigiw78iPT09ZVswXSYmIsO+Ij09PWVbMV0pe2E9InV0Zi0xNmxlIjtlLmxlbmd0aCUyPT0xJiYoZT1lLnNsaWNlKDAsLTEpKX1lbHNlIsOvIj09PWVbMF0mJiLCuyI9PT1lWzFdJiYiwr8iPT09ZVsyXSYmKGE9InV0Zi04Iik7aWYoYSl0cnl7Y29uc3Qgcj1uZXcgVGV4dERlY29kZXIoYSx7ZmF0YWw6ITB9KSxpPXN0cmluZ1RvQnl0ZXMoZSksbj1yLmRlY29kZShpKTtyZXR1cm4gdHx8IW4uaW5jbHVkZXMoIhsiKT9uOm4ucmVwbGFjZUFsbCgvXHgxYlteXHgxYl0qKD86XHgxYnwkKS9nLCIiKX1jYXRjaChlKXt3YXJuKGBzdHJpbmdUb1BERlN0cmluZzogIiR7ZX0iLmApfX1jb25zdCBhPVtdO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7Y29uc3Qgbj1lLmNoYXJDb2RlQXQocik7aWYoIXQmJjI3PT09bil7Zm9yKDsrK3I8aSYmMjchPT1lLmNoYXJDb2RlQXQocik7KTtjb250aW51ZX1jb25zdCBzPWFhW25dO2EucHVzaChzP1N0cmluZy5mcm9tQ2hhckNvZGUocyk6ZS5jaGFyQXQocikpfXJldHVybiBhLmpvaW4oIiIpfWZ1bmN0aW9uIHN0cmluZ1RvVVRGOFN0cmluZyhlKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShlKSl9ZnVuY3Rpb24gdXRmOFN0cmluZ1RvU3RyaW5nKGUpe3JldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpfWZ1bmN0aW9uIGlzQXJyYXlFcXVhbChlLHQpe2lmKGUubGVuZ3RoIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKWlmKGVbYV0hPT10W2FdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGdldE1vZGlmaWNhdGlvbkRhdGUoZT1uZXcgRGF0ZSl7ZSBpbnN0YW5jZW9mIERhdGV8fChlPW5ldyBEYXRlKGUpKTtyZXR1cm5bZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCksKGUuZ2V0VVRDTW9udGgoKSsxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0RhdGUoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKSxlLmdldFVUQ0hvdXJzKCkudG9TdHJpbmc
101oKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIiksZS5nZXRVVENTZWNvbmRzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIildLmpvaW4oIiIpfWxldCByYT1udWxsLGlhPW51bGw7ZnVuY3Rpb24gTWF0aENsYW1wKGUsdCxhKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoZSx0KSxhKX1mdW5jdGlvbiB0b0hleFV0aWwoZSl7cmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLnRvSGV4P2UudG9IZXgoKTpBcnJheS5mcm9tKGUsZT0+dGFbZV0pLmpvaW4oIiIpfSJmdW5jdGlvbiIhPXR5cGVvZiBQcm9taXNlLnRyeSYmKFByb21pc2UudHJ5PWZ1bmN0aW9uKGUsLi4udCl7cmV0dXJuIG5ldyBQcm9taXNlKGE9PnthKGUoLi4udCkpfSl9KTsiZnVuY3Rpb24iIT10eXBlb2YgTWF0aC5zdW1QcmVjaXNlJiYoTWF0aC5zdW1QcmVjaXNlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZHVjZSgoZSx0KT0+ZSt0LDApfSk7Y29uc3QgbmE9U3ltYm9sKCJDSVJDVUxBUl9SRUYiKSxzYT1TeW1ib2woIkVPRiIpO2xldCBvYT1PYmplY3QuY3JlYXRlKG51bGwpLGNhPU9iamVjdC5jcmVhdGUobnVsbCksbGE9T2JqZWN0LmNyZWF0ZShudWxsKTtjbGFzcyBOYW1le2NvbnN0cnVjdG9yKGUpe3RoaXMubmFtZT1lfXN0YXRpYyBnZXQoZSl7cmV0dXJuIGNhW2VdfHw9bmV3IE5hbWUoZSl9fWNsYXNzIENtZHtjb25zdHJ1Y3RvcihlKXt0aGlzLmNtZD1lfXN0YXRpYyBnZXQoZSl7cmV0dXJuIG9hW2VdfHw9bmV3IENtZChlKX19Y29uc3QgaGE9ZnVuY3Rpb24gbm9uU2VyaWFsaXphYmxlQ2xvc3VyZSgpe3JldHVybiBoYX07Y2xhc3MgRGljdHtjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX21hcD1uZXcgTWFwO3RoaXMueHJlZj1lO3RoaXMub2JqSWQ9bnVsbDt0aGlzLnN1cHByZXNzRW5jcnlwdGlvbj0hMTt0aGlzLl9fbm9uU2VyaWFsaXphYmxlX189aGF9YXNzaWduWHJlZihlKXt0aGlzLnhyZWY9ZX1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9tYXAuc2l6ZX1nZXQoZSx0LGEpe2xldCByPXRoaXMuX21hcC5nZXQoZSk7aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXAuZ2V0KHQpO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcC5nZXQoYSkpfXJldHVybiByIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoKHIsdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pOnJ9YXN5bmMgZ2V0QXN5bmMoZSx0LGEpe2xldCByPXRoaXMuX21hcC5nZXQoZSk7aWYodm9pZCAwPT09ciYmdm9pZCAwIT09dCl7cj10aGlzLl9tYXAuZ2V0KHQpO3ZvaWQgMD09PXImJnZvaWQgMCE9PWEmJihyPXRoaXMuX21hcC5nZXQoYSkpfXJldHVybiByIGluc3RhbmNlb2YgUmVmJiZ0aGlzLnhyZWY/dGhpcy54cmVmLmZldGNoQXN5bmMocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6cn1nZXRBcnJheShlLHQsYSl7bGV0IHI9dGhpcy5fbWFwLmdldChlKTtpZih2b2lkIDA9PT1yJiZ2b2lkIDAhPT10KXtyPXRoaXMuX21hcC5nZXQodCk7dm9pZCAwPT09ciYmdm9pZCAwIT09YSYmKHI9dGhpcy5fbWFwLmdldChhKSl9ciBpbnN0YW5jZW9mIFJlZiYmdGhpcy54cmVmJiYocj10aGlzLnhyZWYuZmV0Y2gocix0aGlzLnN1cHByZXNzRW5jcnlwdGlvbikpO2lmKEFycmF5LmlzQXJyYXkocikpe3I9ci5zbGljZSgpO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKylyW2VdaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZiYmKHJbZV09dGhpcy54cmVmLmZldGNoKHJbZV0sdGhpcy5zdXBwcmVzc0VuY3J5cHRpb24pKX1yZXR1cm4gcn1nZXRSYXcoZSl7cmV0dXJuIHRoaXMuX21hcC5nZXQoZSl9Z2V0S2V5cygpe3JldHVyblsuLi50aGlzLl9tYXAua2V5cygpXX1nZXRSYXdWYWx1ZXMoKXtyZXR1cm5bLi4udGhpcy5fbWFwLnZhbHVlcygpXX1nZXRSYXdFbnRyaWVzKCl7cmV0dXJuIHRoaXMuX21hcC5lbnRyaWVzKCl9c2V0KGUsdCl7dGhpcy5fbWFwLnNldChlLHQpfXNldElmTm90RXhpc3RzKGUsdCl7dGhpcy5oYXMoZSl8fHRoaXMuc2V0KGUsdCl9c2V0SWZOdW1iZXIoZSx0KXsibnVtYmVyIj09dHlwZW9mIHQmJnRoaXMuc2V0KGUsdCl9c2V0SWZBcnJheShlLHQpeyhBcnJheS5pc0FycmF5KHQpfHxBcnJheUJ1ZmZlci5pc1ZpZXcodCkpJiZ0aGlzLnNldChlLHQpfXNldElmRGVmaW5lZChlLHQpe251bGwhPXQmJnRoaXMuc2V0KGUsdCl9c2V0SWZOYW1lKGUsdCl7InN0cmluZyI9PXR5cGVvZiB0P3RoaXMuc2V0KGUsTmFtZS5nZXQodCkpOnQgaW5zdGFuY2VvZiBOYW1lJiZ0aGlzLnNldChlLHQpfXNldElmRGljdChlLHQpe3QgaW5zdGFuY2VvZiBEaWN0JiZ0aGlzLnNldChlLHQpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlKX0qW1N5bWJvbC5pdGVyYXRvcl0oKXtmb3IoY29uc3RbZSx0XW9mIHRoaXMuX21hcCl5aWVsZFtlLHQgaW5zdGFuY2VvZiBSZWYmJnRoaXMueHJlZj90aGlzLnhyZWYuZmV0Y2godCx0aGlzLnN1cHByZXNzRW5jcnlwdGlvbik6dF19c3RhdGljIGdldCBlbXB0eSgpe2NvbnN0IGU9bmV3IERpY3QobnVsbCk7ZS5zZXQ9KGUsdCk9Pnt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBzZXRgIG9uIHRoZSBlbXB0eSBkaWN0aW9uYXJ5LiIpfTtyZXR1cm4gc2hhZG93KHRoaXMsImVtcHR5IixlKX1zdGF0aWMgbWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6dCxtZXJnZVN1YkRpY3RzOmE9ITF9KXtjb25zdCByPW5ldyBEaWN0KGUpLGk9bmV3IE1hcDtmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LHJdb2YgZS5fbWFwKXtsZXQgZT1pLmdldCh0KTtpZih2b2lkIDA9PT1lKXtlPVtdO2kuc2V0KHQsZSl9ZWxzZSBpZighKGEmJnIgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtlLnB1c2gocil9Zm9yKGNvbnN0W3QsYV1vZiBpKXtpZigxPT09YS5sZW5ndGh8fCEoYVswXWluc3RhbmNlb2YgRGljdCkpe3IuX21hcC5zZXQodCxhWzBdKTtjb250aW51ZX1jb25zdCBpPW5ldyBEaWN0KGUpO2Zvcihjb25zdCBlIG9mIGEpZm9yKGNvbnN0W3QsYV1vZiBlLl9tYXApaS5fbWFwLmhhcyh0KXx8aS5fbWFwLnNldCh0LGEpO2kuc2l6ZT4wJiZyLl9tYXAuc2V0KHQsaSl9aS5jbGVhcigpO3JldHVybiByLnNpemU+MD9yOkRpY3QuZW1wdHl9Y2xvbmUoKXtjb25zdCBlPW5ldyBEaWN0K
101HRoaXMueHJlZik7Zm9yKGNvbnN0IHQgb2YgdGhpcy5nZXRLZXlzKCkpZS5zZXQodCx0aGlzLmdldFJhdyh0KSk7cmV0dXJuIGV9ZGVsZXRlKGUpe3RoaXMuX21hcC5kZWxldGUoZSl9fWNsYXNzIFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMubnVtPWU7dGhpcy5nZW49dH10b1N0cmluZygpe3JldHVybiAwPT09dGhpcy5nZW4/YCR7dGhpcy5udW19UmA6YCR7dGhpcy5udW19UiR7dGhpcy5nZW59YH1zdGF0aWMgZnJvbVN0cmluZyhlKXtjb25zdCB0PWxhW2VdO2lmKHQpcmV0dXJuIHQ7Y29uc3QgYT0vXihcZCspUihcZCopJC8uZXhlYyhlKTtyZXR1cm4gYSYmIjAiIT09YVsxXT9sYVtlXT1uZXcgUmVmKHBhcnNlSW50KGFbMV0pLGFbMl0/cGFyc2VJbnQoYVsyXSk6MCk6bnVsbH1zdGF0aWMgZ2V0KGUsdCl7Y29uc3QgYT0wPT09dD9gJHtlfVJgOmAke2V9UiR7dH1gO3JldHVybiBsYVthXXx8PW5ldyBSZWYoZSx0KX19Y2xhc3MgUmVmU2V0e2NvbnN0cnVjdG9yKGU9bnVsbCl7dGhpcy5fc2V0PW5ldyBTZXQoZT8uX3NldCl9aGFzKGUpe3JldHVybiB0aGlzLl9zZXQuaGFzKGUudG9TdHJpbmcoKSl9cHV0KGUpe3RoaXMuX3NldC5hZGQoZS50b1N0cmluZygpKX1yZW1vdmUoZSl7dGhpcy5fc2V0LmRlbGV0ZShlLnRvU3RyaW5nKCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX3NldC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX3NldC5jbGVhcigpfX1jbGFzcyBSZWZTZXRDYWNoZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX21hcD1uZXcgTWFwfWdldCBzaXplKCl7cmV0dXJuIHRoaXMuX21hcC5zaXplfWdldChlKXtyZXR1cm4gdGhpcy5fbWFwLmdldChlLnRvU3RyaW5nKCkpfWhhcyhlKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhlLnRvU3RyaW5nKCkpfXB1dChlLHQpe3RoaXMuX21hcC5zZXQoZS50b1N0cmluZygpLHQpfXB1dEFsaWFzKGUsdCl7dGhpcy5fbWFwLnNldChlLnRvU3RyaW5nKCksdGhpcy5nZXQodCkpfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuX21hcC52YWx1ZXMoKX1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpfSp2YWx1ZXMoKXt5aWVsZCp0aGlzLl9tYXAudmFsdWVzKCl9Kml0ZW1zKCl7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLl9tYXApeWllbGRbUmVmLmZyb21TdHJpbmcoZSksdF19KmtleXMoKXtmb3IoY29uc3QgZSBvZiB0aGlzLl9tYXAua2V5cygpKXlpZWxkIFJlZi5mcm9tU3RyaW5nKGUpfX1mdW5jdGlvbiBpc05hbWUoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIE5hbWUmJih2b2lkIDA9PT10fHxlLm5hbWU9PT10KX1mdW5jdGlvbiBpc0NtZChlLHQpe3JldHVybiBlIGluc3RhbmNlb2YgQ21kJiYodm9pZCAwPT09dHx8ZS5jbWQ9PT10KX1mdW5jdGlvbiBpc0RpY3QoZSx0KXtyZXR1cm4gZSBpbnN0YW5jZW9mIERpY3QmJih2b2lkIDA9PT10fHxpc05hbWUoZS5nZXQoIlR5cGUiKSx0KSl9ZnVuY3Rpb24gaXNSZWZzRXF1YWwoZSx0KXtyZXR1cm4gZS5udW09PT10Lm51bSYmZS5nZW49PT10Lmdlbn1jbGFzcyBCYXNlU3RyZWFte2dldCBsZW5ndGgoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgZ2V0dGVyIGBsZW5ndGhgIGFjY2Vzc2VkIil9Z2V0IGlzRW1wdHkoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgZ2V0dGVyIGBpc0VtcHR5YCBhY2Nlc3NlZCIpfWdldCBpc0RhdGFMb2FkZWQoKXtyZXR1cm4gc2hhZG93KHRoaXMsImlzRGF0YUxvYWRlZCIsITApfWdldEJ5dGUoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlYCBjYWxsZWQiKX1nZXRCeXRlcyhlKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlc2AgY2FsbGVkIil9YXN5bmMgZ2V0SW1hZ2VEYXRhKGUsdCl7cmV0dXJuIHRoaXMuZ2V0Qnl0ZXMoZSx0KX1hc3luYyBhc3luY0dldEJ5dGVzKCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgYXN5bmNHZXRCeXRlc2AgY2FsbGVkIil9Z2V0IGlzQXN5bmMoKXtyZXR1cm4hMX1nZXQgaXNBc3luY0RlY29kZXIoKXtyZXR1cm4hMX1nZXQgY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIoKXtyZXR1cm4hMX1hc3luYyBnZXRUcmFuc2ZlcmFibGVJbWFnZSgpe3JldHVybiBudWxsfXBlZWtCeXRlKCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKTstMSE9PWUmJnRoaXMucG9zLS07cmV0dXJuIGV9cGVla0J5dGVzKGUpe2NvbnN0IHQ9dGhpcy5nZXRCeXRlcyhlKTt0aGlzLnBvcy09dC5sZW5ndGg7cmV0dXJuIHR9Z2V0VWludDE2KCl7Y29uc3QgZT10aGlzLmdldEJ5dGUoKSx0PXRoaXMuZ2V0Qnl0ZSgpO3JldHVybi0xPT09ZXx8LTE9PT10Py0xOihlPDw4KSt0fWdldEludDMyKCl7cmV0dXJuKHRoaXMuZ2V0Qnl0ZSgpPDwyNCkrKHRoaXMuZ2V0Qnl0ZSgpPDwxNikrKHRoaXMuZ2V0Qnl0ZSgpPDw4KSt0aGlzLmdldEJ5dGUoKX1nZXRCeXRlUmFuZ2UoZSx0KXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRCeXRlUmFuZ2VgIGNhbGxlZCIpfWdldFN0cmluZyhlKXtyZXR1cm4gYnl0ZXNUb1N0cmluZyh0aGlzLmdldEJ5dGVzKGUpKX1za2lwKGUpe3RoaXMucG9zKz1lfHwxfXJlc2V0KCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVzZXRgIGNhbGxlZCIpfW1vdmVTdGFydCgpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYG1vdmVTdGFydGAgY2FsbGVkIil9bWFrZVN1YlN0cmVhbShlLHQsYT1udWxsKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBtYWtlU3ViU3RyZWFtYCBjYWxsZWQiKX1nZXRCYXNlU3RyZWFtcygpe3JldHVybiBudWxsfWdldE9yaWdpbmFsU3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtPy5nZXRPcmlnaW5hbFN0cmVhbSgpfHx0aGlzfX1jb25zdCB1YT0vXlsxLTldXC5cZCQvLGRhPTIqKjMxLTEsZmE9WzEsMCwwLDEsMCwwXSxnYT1bIkNvbG9yU3BhY2UiLCJFeHRHU3RhdGUiLCJGb250IiwiUGF0dGVybiIsIlByb3BlcnRpZXMiLCJTaGFkaW5nIiwiWE9iamVjdCJdLHBhPVsiRXh0R1N0YXRlIiwiRm9udCIsIlByb3BlcnRpZXMiLCJYT2JqZWN0Il07ZnVuY3Rpb24gZ2V0TG9va3VwVGFibGVGYWN0b3J5KGUpe2xldCB0O3JldHVybiBmdW5jdGlvbigpe2lmKGUpe3Q9T2JqZWN0LmNyZWF0ZShudWxsKTtlKHQpO2U9bnVsbH1yZXR1cm4gdH19Y2xhc3MgTWlzc2luZ0RhdGFFeGNlcHRpb24gZXh0ZW5kcyBlYXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGBNaXNzaW5nIGRhdGEgWyR7ZX0sICR7dH0pYCwiTWlzc2luZ0RhdGFFeGNlcHRpb24iKTt0aGlzLmJlZ2luPWU7dGhpcy5lbmQ9dH19Y2xhc3MgUGFyc2VyRU9GRXhjZXB0aW9uIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiUGFyc2VyRU9GRXhjZXB0aW9uIil9fWNsYXNzIFhSZWZFbnRyeUV4Y2VwdGlvbiBleHRlbmRzIGVhe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIlhSZWZFbnRyeUV4Y2VwdGlvbiIpfX1jbGFzcyBYUmVmUGFyc2VFeGNlcHRpb24gZXh0ZW5kcyBlYXtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJYUmVmUGFyc2VFeGNlcHRpb24iKX19ZnVuY3Rpb24gYXJyYXlCdWZmZXJzVG9CeXRlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2lmKDA9PT10KXJldHVybi
101BuZXcgVWludDhBcnJheSgwKTtpZigxPT09dClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZVswXSk7bGV0IGE9MDtmb3IobGV0IHI9MDtyPHQ7cisrKWErPWVbcl0uYnl0ZUxlbmd0aDtjb25zdCByPW5ldyBVaW50OEFycmF5KGEpO2xldCBpPTA7Zm9yKGxldCBhPTA7YTx0O2ErKyl7Y29uc3QgdD1uZXcgVWludDhBcnJheShlW2FdKTtyLnNldCh0LGkpO2krPXQuYnl0ZUxlbmd0aH1yZXR1cm4gcn1hc3luYyBmdW5jdGlvbiBmZXRjaEJpbmFyeURhdGEoZSl7Y29uc3QgdD1hd2FpdCBmZXRjaChlKTtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBmaWxlICIke2V9IiB3aXRoICIke3Quc3RhdHVzVGV4dH0iLmApO3JldHVybiBuZXcgVWludDhBcnJheShhd2FpdCB0LmFycmF5QnVmZmVyKCkpfWZ1bmN0aW9uIGdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6ZSxrZXk6dCxnZXRBcnJheTphPSExLHN0b3BXaGVuRm91bmQ6cj0hMH0pe2xldCBpO2NvbnN0IG49bmV3IFJlZlNldDtmb3IoO2UgaW5zdGFuY2VvZiBEaWN0JiYoIWUub2JqSWR8fCFuLmhhcyhlLm9iaklkKSk7KXtlLm9iaklkJiZuLnB1dChlLm9iaklkKTtjb25zdCBzPWE/ZS5nZXRBcnJheSh0KTplLmdldCh0KTtpZih2b2lkIDAhPT1zKXtpZihyKXJldHVybiBzOyhpfHw9W10pLnB1c2gocyl9ZT1lLmdldCgiUGFyZW50Iil9cmV0dXJuIGl9Y29uc3QgbWE9WyIiLCJDIiwiQ0MiLCJDQ0MiLCJDRCIsIkQiLCJEQyIsIkRDQyIsIkRDQ0MiLCJDTSIsIiIsIlgiLCJYWCIsIlhYWCIsIlhMIiwiTCIsIkxYIiwiTFhYIiwiTFhYWCIsIlhDIiwiIiwiSSIsIklJIiwiSUlJIiwiSVYiLCJWIiwiVkkiLCJWSUkiLCJWSUlJIiwiSVgiXTtmdW5jdGlvbiB0b1JvbWFuTnVtZXJhbHMoZSx0PSExKXthc3NlcnQoTnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wLCJUaGUgbnVtYmVyIHNob3VsZCBiZSBhIHBvc2l0aXZlIGludGVnZXIuIik7Y29uc3QgYT0iTSIucmVwZWF0KGUvMWUzfDApK21hW2UlMWUzLzEwMHwwXSttYVsxMCsoZSUxMDAvMTB8MCldK21hWzIwK2UlMTBdO3JldHVybiB0P2EudG9Mb3dlckNhc2UoKTphfWZ1bmN0aW9uIGxvZzIoZSl7cmV0dXJuIGU+MD9NYXRoLmNlaWwoTWF0aC5sb2cyKGUpKTowfWZ1bmN0aW9uIHJlYWRJbnQ4KGUsdCl7cmV0dXJuIGVbdF08PDI0Pj4yNH1mdW5jdGlvbiByZWFkSW50MTYoZSx0KXtyZXR1cm4oZVt0XTw8MjR8ZVt0KzFdPDwxNik+PjE2fWZ1bmN0aW9uIHJlYWRVaW50MTYoZSx0KXtyZXR1cm4gZVt0XTw8OHxlW3QrMV19ZnVuY3Rpb24gcmVhZFVpbnQzMihlLHQpe3JldHVybihlW3RdPDwyNHxlW3QrMV08PDE2fGVbdCsyXTw8OHxlW3QrM10pPj4+MH1mdW5jdGlvbiBpc1doaXRlU3BhY2UoZSl7cmV0dXJuIDMyPT09ZXx8OT09PWV8fDEzPT09ZXx8MTA9PT1lfWZ1bmN0aW9uIGlzTnVtYmVyQXJyYXkoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8obnVsbD09PXR8fGUubGVuZ3RoPT09dCkmJmUuZXZlcnkoZT0+Im51bWJlciI9PXR5cGVvZiBlKTpBcnJheUJ1ZmZlci5pc1ZpZXcoZSkmJiEoZSBpbnN0YW5jZW9mIEJpZ0ludDY0QXJyYXl8fGUgaW5zdGFuY2VvZiBCaWdVaW50NjRBcnJheSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KX1mdW5jdGlvbiBsb29rdXBNYXRyaXgoZSx0KXtyZXR1cm4gaXNOdW1iZXJBcnJheShlLDYpP2U6dH1mdW5jdGlvbiBsb29rdXBSZWN0KGUsdCl7cmV0dXJuIGlzTnVtYmVyQXJyYXkoZSw0KT9lOnR9ZnVuY3Rpb24gbG9va3VwTm9ybWFsUmVjdChlLHQpe3JldHVybiBpc051bWJlckFycmF5KGUsNCk/VXRpbC5ub3JtYWxpemVSZWN0KGUpOnR9ZnVuY3Rpb24gcGFyc2VYRkFQYXRoKGUpe2NvbnN0IHQ9LyguKylcWyhcZCspXF0kLztyZXR1cm4gZS5zcGxpdCgiLiIpLm1hcChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3tuYW1lOmFbMV0scG9zOnBhcnNlSW50KGFbMl0sMTApfTp7bmFtZTplLHBvczowfX0pfWZ1bmN0aW9uIGVzY2FwZVBERk5hbWUoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7Y29uc3QgaT1lLmNoYXJDb2RlQXQocik7aWYoaTwzM3x8aT4xMjZ8fDM1PT09aXx8NDA9PT1pfHw0MT09PWl8fDYwPT09aXx8NjI9PT1pfHw5MT09PWl8fDkzPT09aXx8MTIzPT09aXx8MTI1PT09aXx8NDc9PT1pfHwzNz09PWkpe2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgIyR7aS50b1N0cmluZygxNil9YCk7YT1yKzF9fWlmKDA9PT10Lmxlbmd0aClyZXR1cm4gZTthPGUubGVuZ3RoJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxlLmxlbmd0aCkpO3JldHVybiB0LmpvaW4oIiIpfWZ1bmN0aW9uIGVzY2FwZVN0cmluZyhlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC8oWygpXFxcblxyXSkvZyxlPT4iXG4iPT09ZT8iXFxuIjoiXHIiPT09ZT8iXFxyIjpgXFwke2V9YCl9ZnVuY3Rpb24gX2NvbGxlY3RKUyhlLHQsYSxyKXtpZighZSlyZXR1cm47bGV0IGk9bnVsbDtpZihlIGluc3RhbmNlb2YgUmVmKXtpZihyLmhhcyhlKSlyZXR1cm47aT1lO3IucHV0KGkpO2U9dC5mZXRjaChlKX1pZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCBpIG9mIGUpX2NvbGxlY3RKUyhpLHQsYSxyKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBEaWN0KXtpZihpc05hbWUoZS5nZXQoIlMiKSwiSmF2YVNjcmlwdCIpKXtjb25zdCB0PWUuZ2V0KCJKUyIpO2xldCByO3QgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP3I9dC5nZXRTdHJpbmcoKToic3RyaW5nIj09dHlwZW9mIHQmJihyPXQpO3ImJj1zdHJpbmdUb1BERlN0cmluZyhyLCEwKS5yZXBsYWNlQWxsKCJcMCIsIiIpO3ImJmEucHVzaChyLnRyaW0oKSl9X2NvbGxlY3RKUyhlLmdldFJhdygiTmV4dCIpLHQsYSxyKX1pJiZyLnJlbW92ZShpKX1mdW5jdGlvbiBjb2xsZWN0QWN0aW9ucyhlLHQsYSl7Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpLGk9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0LGtleToiQUEiLHN0b3BXaGVuRm91bmQ6ITF9KTtpZihpKWZvcihsZXQgdD1pLmxlbmd0aC0xO3Q+PTA7dC0tKXtjb25zdCBuPWlbdF07aWYobiBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0IHQgb2Ygbi5nZXRLZXlzKCkpe2NvbnN0IGk9YVt0XTtpZighaSljb250aW51ZTtjb25zdCBzPVtdO19jb2xsZWN0SlMobi5nZXRSYXcodCksZSxzLG5ldyBSZWZTZXQpO3MubGVuZ3RoPjAmJihyW2ldPXMpfX1pZih0LmhhcygiQSIpKXtjb25zdCBhPVtdO19jb2xsZWN0SlModC5nZXQoIkEiKSxlLGEsbmV3IFJlZlNldCk7YS5sZW5ndGg+MCYmKH
101IuQWN0aW9uPWEpfXJldHVybiBvYmplY3RTaXplKHIpPjA/cjpudWxsfWNvbnN0IGJhPXs2MDoiJmx0OyIsNjI6IiZndDsiLDM4OiImYW1wOyIsMzQ6IiZxdW90OyIsMzk6IiZhcG9zOyJ9O2Z1bmN0aW9uKmNvZGVQb2ludEl0ZXIoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPWUuY29kZVBvaW50QXQodCk7YT41NTI5NSYmKGE8NTczNDR8fGE+NjU1MzMpJiZ0Kys7eWllbGQgYX19ZnVuY3Rpb24gZW5jb2RlVG9YbWxTdHJpbmcoZSl7Y29uc3QgdD1bXTtsZXQgYT0wO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7Y29uc3QgaT1lLmNvZGVQb2ludEF0KHIpO2lmKDMyPD1pJiZpPD0xMjYpe2NvbnN0IG49YmFbaV07aWYobil7YTxyJiZ0LnB1c2goZS5zdWJzdHJpbmcoYSxyKSk7dC5wdXNoKG4pO2E9cisxfX1lbHNle2E8ciYmdC5wdXNoKGUuc3Vic3RyaW5nKGEscikpO3QucHVzaChgJiN4JHtpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfTtgKTtpPjU1Mjk1JiYoaTw1NzM0NHx8aT42NTUzMykmJnIrKzthPXIrMX19aWYoMD09PXQubGVuZ3RoKXJldHVybiBlO2E8ZS5sZW5ndGgmJnQucHVzaChlLnN1YnN0cmluZyhhLGUubGVuZ3RoKSk7cmV0dXJuIHQuam9pbigiIil9ZnVuY3Rpb24gdmFsaWRhdGVGb250TmFtZShlLHQ9ITEpe2NvbnN0IGE9L14oInwnKS4qKCJ8JykkLy5leGVjKGUpO2lmKGEmJmFbMV09PT1hWzJdKXtpZihuZXcgUmVnRXhwKGBbXlxcXFxdJHthWzFdfWApLnRlc3QoZS5zbGljZSgxLC0xKSkpe3QmJndhcm4oYEZvbnRGYW1pbHkgY29udGFpbnMgdW5lc2NhcGVkICR7YVsxXX06ICR7ZX0uYCk7cmV0dXJuITF9fWVsc2UgZm9yKGNvbnN0IGEgb2YgZS5zcGxpdCgvWyBcdF0rLykpaWYoL14oXGR8KC0oXGR8LSkpKS8udGVzdChhKXx8IS9eW1x3LVxcXSskLy50ZXN0KGEpKXt0JiZ3YXJuKGBGb250RmFtaWx5IGNvbnRhaW5zIGludmFsaWQgPGN1c3RvbS1pZGVudD46ICR7ZX0uYCk7cmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdmFsaWRhdGVDU1NGb250KGUpe2NvbnN0IHQ9bmV3IFNldChbIjEwMCIsIjIwMCIsIjMwMCIsIjQwMCIsIjUwMCIsIjYwMCIsIjcwMCIsIjgwMCIsIjkwMCIsIjEwMDAiLCJub3JtYWwiLCJib2xkIiwiYm9sZGVyIiwibGlnaHRlciJdKSx7Zm9udEZhbWlseTphLGZvbnRXZWlnaHQ6cixpdGFsaWNBbmdsZTppfT1lO2lmKCF2YWxpZGF0ZUZvbnROYW1lKGEsITApKXJldHVybiExO2NvbnN0IG49cj9yLnRvU3RyaW5nKCk6IiI7ZS5mb250V2VpZ2h0PXQuaGFzKG4pP246IjQwMCI7Y29uc3Qgcz1wYXJzZUZsb2F0KGkpO2UuaXRhbGljQW5nbGU9aXNOYU4ocyl8fHM8LTkwfHxzPjkwPyIxNCI6aS50b1N0cmluZygpO3JldHVybiEwfWZ1bmN0aW9uIHJlY292ZXJKc1VSTChlKXtjb25zdCB0PW5ldyBSZWdFeHAoIl5cXHMqKCIrWyJhcHAubGF1bmNoVVJMIiwid2luZG93Lm9wZW4iLCJ4ZmEuaG9zdC5nb3RvVVJMIl0uam9pbigifCIpLnJlcGxhY2VBbGwoIi4iLCJcXC4iKSsiKVxcKCg/Oid8XCIpKFteJ1wiXSopKD86J3xcIikoPzosXFxzKihcXHcrKVxcKXxcXCkpIiwiaSIpLmV4ZWMoZSk7cmV0dXJuIHQ/LlsyXT97dXJsOnRbMl0sbmV3V2luZG93OiJhcHAubGF1bmNoVVJMIj09PXRbMV0mJiJ0cnVlIj09PXRbM119Om51bGx9ZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcoZSl7aWYoTnVtYmVyLmlzSW50ZWdlcihlKSlyZXR1cm4gZS50b1N0cmluZygpO2NvbnN0IHQ9TWF0aC5yb3VuZCgxMDAqZSk7cmV0dXJuIHQlMTAwPT0wPyh0LzEwMCkudG9TdHJpbmcoKTp0JTEwPT0wP2UudG9GaXhlZCgxKTplLnRvRml4ZWQoMil9ZnVuY3Rpb24gZ2V0TmV3QW5ub3RhdGlvbnNNYXAoZSl7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1uZXcgTWFwO2Zvcihjb25zdFthLHJdb2YgZSl7aWYoIWEuc3RhcnRzV2l0aChmKSljb250aW51ZTtsZXQgZT10LmdldChyLnBhZ2VJbmRleCk7aWYoIWUpe2U9W107dC5zZXQoci5wYWdlSW5kZXgsZSl9ZS5wdXNoKHIpfXJldHVybiB0LnNpemU+MD90Om51bGx9ZnVuY3Rpb24gc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShlKXtyZXR1cm4gbnVsbD09ZXx8ZnVuY3Rpb24gaXNBc2NpaShlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuITE7cmV0dXJuIWV8fC9eW1x4MDAtXHg3Rl0qJC8udGVzdChlKX0oZSk/ZTpzdHJpbmdUb1VURjE2U3RyaW5nKGUsITApfWZ1bmN0aW9uIHN0cmluZ1RvVVRGMTZIZXhTdHJpbmcoZSl7Y29uc3QgdD1bXTtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KGEpO3QucHVzaCh0YVtyPj44JjI1NV0sdGFbMjU1JnJdKX1yZXR1cm4gdC5qb2luKCIiKX1mdW5jdGlvbiBzdHJpbmdUb1VURjE2U3RyaW5nKGUsdD0hMSl7Y29uc3QgYT1bXTt0JiZhLnB1c2goIsO+w78iKTtmb3IobGV0IHQ9MCxyPWUubGVuZ3RoO3Q8cjt0Kyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KHQpO2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHI+PjgmMjU1KSxTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZyKSl9cmV0dXJuIGEuam9pbigiIil9ZnVuY3Rpb24gZ2V0Um90YXRpb25NYXRyaXgoZSx0LGEpe3N3aXRjaChlKXtjYXNlIDkwOnJldHVyblswLDEsLTEsMCx0LDBdO2Nhc2UgMTgwOnJldHVyblstMSwwLDAsLTEsdCxhXTtjYXNlIDI3MDpyZXR1cm5bMCwtMSwxLDAsMCxhXTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxpZCByb3RhdGlvbiIpfX1mdW5jdGlvbiBnZXRTaXplSW5CeXRlcyhlKXtyZXR1cm4gTWF0aC5jZWlsKE1hdGguY2VpbChNYXRoLmxvZzIoMStlKSkvOCl9Y2xhc3MgUUNNU3tzdGF0aWMjYT1udWxsO3N0YXRpYyBfbWVtb3J5PW51bGw7c3RhdGljIF9tdXN0QWRkQWxwaGE9ITE7c3RhdGljIF9kZXN0QnVmZmVyPW51bGw7c3RhdGljIF9kZXN0T2Zmc2V0PTA7c3RhdGljIF9kZXN0TGVuZ3RoPTA7c3RhdGljIF9jc3NDb2xvcj0iIjtzdGF0aWMgX21ha2VIZXhDb2xvcj1udWxsO3N0YXRpYyBnZXQgX21lbW9yeUFycmF5KCl7Y29uc3QgZT10aGlzLiNhO3JldHVybiBlPy5ieXRlTGVuZ3RoP2U6dGhpcy4jYT1uZXcgVWludDhBcnJheSh0aGlzLl9tZW1vcnkuYnVmZmVyKX19bGV0IHlhO2NvbnN0IHdhPSJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyKCJ1dGYtOCIse2lnbm9yZUJPTTohMCxmYXRhbDohMH0pOntkZWNvZGU6KCk9Pnt0aHJvdyBFcnJvcigiVGV4dERlY29kZXIgbm90IGF2YWlsYWJsZSIpfX07InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2RlciYmd2EuZGVjb2RlKCk7bGV0IHhhPW51bGw7ZnVuY3Rpb24gZ2V0VWludDhBcnJheU1lbW9yeTAoKXtudWxsIT09eGEmJjAhPT14YS5ieXRlTGVuZ3RofHwoeGE9bmV3IFVpbnQ4QXJyYXkoeWEubWVtb3J5LmJ1ZmZlcikpO3JldHVybiB4YX1sZXQgU2E9MDtmdW5jdGlvbiBwYXNzQXJyYXk4VG9XYXNtMChlLHQpe2NvbnN0IGE9dCgxKmUubGVuZ3RoLDEpPj4+MDtnZXRVaW50OEFycmF5TWVtb3J5MCgpLnNldChlLGEvMSk7U2E9ZS5sZW5ndGg7cmV0dXJuIGF9Y29uc3QgQWE9T2JqZWN0LmZyZWV6ZSh7UkdCODowLDA6IlJHQjgiLFJHQkE4OjEsMToiUkdCQTgiLEJHUkE4OjIsMjoiQkdSQTgiLEdyYXk4OjMsMzoiR3JheTgiLEdyYXlBODo0LDQ6IkdyYXlBOCIsQ01ZSzo1LDU6IkNNWUsifSksa2E9T2JqZWN0LmZyZWV6ZSh7UGVyY2VwdHVhbDowLDA6IlBlcmNlcHR1YWwiLFJlbGF0aXZlQ29sb3JpbWV0cmljOjEsMToiUmVsYXRpdmVDb2xvcmltZXRyaWMiLFNhdHVyYXRpb246MiwyOiJTY
101XR1cmF0aW9uIixBYnNvbHV0ZUNvbG9yaW1ldHJpYzozLDM6IkFic29sdXRlQ29sb3JpbWV0cmljIn0pO2Z1bmN0aW9uIF9fd2JnX2dldF9pbXBvcnRzKCl7Y29uc3QgZT17d2JnOnt9fTtlLndiZy5fX3diZ19jb3B5cmVzdWx0X2IwOGVlN2QyNzNmMjk1ZGQ9ZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24gY29weV9yZXN1bHQoZSx0KXtjb25zdHtfbXVzdEFkZEFscGhhOmEsX2Rlc3RCdWZmZXI6cixfZGVzdE9mZnNldDppLF9kZXN0TGVuZ3RoOm4sX21lbW9yeUFycmF5OnN9PVFDTVM7aWYodCE9PW4paWYoYSlmb3IobGV0IGE9ZSxuPWUrdCxvPWk7YTxuO2ErPTMsbys9NCl7cltvXT1zW2FdO3JbbysxXT1zW2ErMV07cltvKzJdPXNbYSsyXTtyW28rM109MjU1fWVsc2UgZm9yKGxldCBhPWUsbj1lK3Qsbz1pO2E8bjthKz0zLG8rPTQpe3Jbb109c1thXTtyW28rMV09c1thKzFdO3JbbysyXT1zW2ErMl19ZWxzZSByLnNldChzLnN1YmFycmF5KGUsZSt0KSxpKX0oZT4+PjAsdD4+PjApfTtlLndiZy5fX3diZ19jb3B5cmdiX2Q2MGNlMTdiYjA1ZDliNjc9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uIGNvcHlfcmdiKGUpe2NvbnN0e19kZXN0QnVmZmVyOnQsX2Rlc3RPZmZzZXQ6YSxfbWVtb3J5QXJyYXk6cn09UUNNUzt0W2FdPXJbZV07dFthKzFdPXJbZSsxXTt0W2ErMl09cltlKzJdfShlPj4+MCl9O2Uud2JnLl9fd2JnX21ha2Vjc3NSR0JfODkzYmYwY2Q5ZmRiMzAyZD1mdW5jdGlvbihlKXshZnVuY3Rpb24gbWFrZV9jc3NSR0IoZSl7Y29uc3R7X21lbW9yeUFycmF5OnR9PVFDTVM7UUNNUy5fY3NzQ29sb3I9UUNNUy5fbWFrZUhleENvbG9yKHRbZV0sdFtlKzFdLHRbZSsyXSl9KGU+Pj4wKX07ZS53YmcuX193YmluZGdlbl9pbml0X2V4dGVybnJlZl90YWJsZT1mdW5jdGlvbigpe2NvbnN0IGU9eWEuX193YmluZGdlbl9leHBvcnRfMCx0PWUuZ3Jvdyg0KTtlLnNldCgwLHZvaWQgMCk7ZS5zZXQodCswLHZvaWQgMCk7ZS5zZXQodCsxLG51bGwpO2Uuc2V0KHQrMiwhMCk7ZS5zZXQodCszLCExKX07ZS53YmcuX193YmluZGdlbl90aHJvdz1mdW5jdGlvbihlLHQpe3Rocm93IG5ldyBFcnJvcihmdW5jdGlvbiBnZXRTdHJpbmdGcm9tV2FzbTAoZSx0KXtlPj4+PTA7cmV0dXJuIHdhLmRlY29kZShnZXRVaW50OEFycmF5TWVtb3J5MCgpLnN1YmFycmF5KGUsZSt0KSl9KGUsdCkpfTtyZXR1cm4gZX1mdW5jdGlvbiBfX3diZ19maW5hbGl6ZV9pbml0KGUsdCl7eWE9ZS5leHBvcnRzO19fd2JnX2luaXQuX193YmluZGdlbl93YXNtX21vZHVsZT10O3hhPW51bGw7eWEuX193YmluZGdlbl9zdGFydCgpO3JldHVybiB5YX1hc3luYyBmdW5jdGlvbiBfX3diZ19pbml0KGUpe2lmKHZvaWQgMCE9PXlhKXJldHVybiB5YTt2b2lkIDAhPT1lJiYoT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09T2JqZWN0LnByb3RvdHlwZT8oe21vZHVsZV9vcl9wYXRoOmV9PWUpOmNvbnNvbGUud2FybigidXNpbmcgZGVwcmVjYXRlZCBwYXJhbWV0ZXJzIGZvciB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb247IHBhc3MgYSBzaW5nbGUgb2JqZWN0IGluc3RlYWQiKSk7Y29uc3QgdD1fX3diZ19nZXRfaW1wb3J0cygpOygic3RyaW5nIj09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBSZXF1ZXN0JiZlIGluc3RhbmNlb2YgUmVxdWVzdHx8ImZ1bmN0aW9uIj09dHlwZW9mIFVSTCYmZSBpbnN0YW5jZW9mIFVSTCkmJihlPWZldGNoKGUpKTtjb25zdHtpbnN0YW5jZTphLG1vZHVsZTpyfT1hd2FpdCBhc3luYyBmdW5jdGlvbiBfX3diZ19sb2FkKGUsdCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFJlc3BvbnNlJiZlIGluc3RhbmNlb2YgUmVzcG9uc2Upe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyl0cnl7cmV0dXJuIGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKGUsdCl9Y2F0Y2godCl7aWYoImFwcGxpY2F0aW9uL3dhc20iPT1lLmhlYWRlcnMuZ2V0KCJDb250ZW50LVR5cGUiKSl0aHJvdyB0O2NvbnNvbGUud2FybigiYFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nYCBmYWlsZWQgYmVjYXVzZSB5b3VyIHNlcnZlciBkb2VzIG5vdCBzZXJ2ZSBXYXNtIHdpdGggYGFwcGxpY2F0aW9uL3dhc21gIE1JTUUgdHlwZS4gRmFsbGluZyBiYWNrIHRvIGBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZWAgd2hpY2ggaXMgc2xvd2VyLiBPcmlnaW5hbCBlcnJvcjpcbiIsdCl9Y29uc3QgYT1hd2FpdCBlLmFycmF5QnVmZmVyKCk7cmV0dXJuIGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGEsdCl9e2NvbnN0IGE9YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoZSx0KTtyZXR1cm4gYSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lkluc3RhbmNlP3tpbnN0YW5jZTphLG1vZHVsZTplfTphfX0oYXdhaXQgZSx0KTtyZXR1cm4gX193YmdfZmluYWxpemVfaW5pdChhLHIpfWNsYXNzIENvbG9yU3BhY2V7c3RhdGljI3I9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5uYW1lPWU7dGhpcy5udW1Db21wcz10fWdldFJnYihlLHQsYT1uZXcgVWludDhDbGFtcGVkQXJyYXkoMykpe3RoaXMuZ2V0UmdiSXRlbShlLHQsYSwwKTtyZXR1cm4gYX1nZXRSZ2JIZXgoZSx0KXtjb25zdCBhPXRoaXMuZ2V0UmdiKGUsdCxDb2xvclNwYWNlLiNyKTtyZXR1cm4gVXRpbC5tYWtlSGV4Q29sb3IoYVswXSxhWzFdLGFbMl0pfWdldFJnYkl0ZW0oZSx0LGEscil7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldFJnYkl0ZW0iKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBDb2xvclNwYWNlLmdldFJnYkJ1ZmZlciIpfWdldE91dHB1dExlbmd0aChlLHQpe3VucmVhY2hhYmxlKCJTaG91bGQgbm90IGNhbGwgQ29sb3JTcGFjZS5nZXRPdXRwdXRMZW5ndGgiKX1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiExfWlzRGVmYXVsdERlY29kZShlLHQpe3JldHVybiBDb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZShlLHRoaXMubnVtQ29tcHMpfWZpbGxSZ2IoZSx0LGEscixpLG4scyxvLGMpe2NvbnN0IGw9dCphO2xldCBoPW51bGw7Y29uc3QgdT0xPDxzLGQ9YSE9PWl8fHQhPT1yO2lmKHRoaXMuaXNQYXNzdGhyb3VnaChzKSloPW87ZWxzZSBpZigxPT09dGhpcy5udW1Db21wcyYmbD51JiYiRGV2aWNlR3JheSIhPT10aGlzLm5hbWUmJiJEZXZpY2VSR0IiIT09dGhpcy5uYW1lKXtjb25zdCB0PXM8PTg/bmV3IFVpbnQ4QXJyYXkodSk6bmV3IFVpbnQxNkFycmF
1015KHUpO2ZvcihsZXQgZT0wO2U8dTtlKyspdFtlXT1lO2NvbnN0IGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqdSk7dGhpcy5nZXRSZ2JCdWZmZXIodCwwLHUsYSwwLHMsMCk7aWYoZCl7aD1uZXcgVWludDhBcnJheSgzKmwpO2xldCBlPTA7Zm9yKGxldCB0PTA7dDxsOysrdCl7Y29uc3Qgcj0zKm9bdF07aFtlKytdPWFbcl07aFtlKytdPWFbcisxXTtoW2UrK109YVtyKzJdfX1lbHNle2xldCB0PTA7Zm9yKGxldCByPTA7cjxsOysrcil7Y29uc3QgaT0zKm9bcl07ZVt0KytdPWFbaV07ZVt0KytdPWFbaSsxXTtlW3QrK109YVtpKzJdO3QrPWN9fX1lbHNlIGlmKGQpe2g9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMqbCk7dGhpcy5nZXRSZ2JCdWZmZXIobywwLGwsaCwwLHMsMCl9ZWxzZSB0aGlzLmdldFJnYkJ1ZmZlcihvLDAscipuLGUsMCxzLGMpO2lmKGgpaWYoZCkhZnVuY3Rpb24gcmVzaXplUmdiSW1hZ2UoZSx0LGEscixpLG4scyl7cz0xIT09cz8wOnM7Y29uc3Qgbz1hL2ksYz1yL247bGV0IGwsaD0wO2NvbnN0IHU9bmV3IFVpbnQxNkFycmF5KGkpLGQ9MyphO2ZvcihsZXQgZT0wO2U8aTtlKyspdVtlXT0zKk1hdGguZmxvb3IoZSpvKTtmb3IobGV0IGE9MDthPG47YSsrKXtjb25zdCByPU1hdGguZmxvb3IoYSpjKSpkO2ZvcihsZXQgYT0wO2E8aTthKyspe2w9cit1W2FdO3RbaCsrXT1lW2wrK107dFtoKytdPWVbbCsrXTt0W2grK109ZVtsKytdO2grPXN9fX0oaCxlLHQsYSxyLGksYyk7ZWxzZXtsZXQgdD0wLGE9MDtmb3IobGV0IGk9MCxzPXIqbjtpPHM7aSsrKXtlW3QrK109aFthKytdO2VbdCsrXT1oW2ErK107ZVt0KytdPWhbYSsrXTt0Kz1jfX19Z2V0IHVzZXNaZXJvVG9PbmVSYW5nZSgpe3JldHVybiBzaGFkb3codGhpcywidXNlc1plcm9Ub09uZVJhbmdlIiwhMCl9c3RhdGljIGlzRGVmYXVsdERlY29kZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiEwO2lmKDIqdCE9PWUubGVuZ3RoKXt3YXJuKCJUaGUgZGVjb2RlIG1hcCBpcyBub3QgdGhlIGNvcnJlY3QgbGVuZ3RoIik7cmV0dXJuITB9Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCs9MilpZigwIT09ZVt0XXx8MSE9PWVbdCsxXSlyZXR1cm4hMTtyZXR1cm4hMH19Y2xhc3MgQWx0ZXJuYXRlQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiQWx0ZXJuYXRlIixlKTt0aGlzLmJhc2U9dDt0aGlzLnRpbnRGbj1hO3RoaXMudG1wQnVmPW5ldyBGbG9hdDMyQXJyYXkodC5udW1Db21wcyl9Z2V0UmdiSXRlbShlLHQsYSxyKXtjb25zdCBpPXRoaXMudG1wQnVmO3RoaXMudGludEZuKGUsdCxpLDApO3RoaXMuYmFzZS5nZXRSZ2JJdGVtKGksMCxhLHIpfWdldFJnYkJ1ZmZlcihlLHQsYSxyLGksbixzKXtjb25zdCBvPXRoaXMudGludEZuLGM9dGhpcy5iYXNlLGw9MS8oKDE8PG4pLTEpLGg9Yy5udW1Db21wcyx1PWMudXNlc1plcm9Ub09uZVJhbmdlLGQ9KGMuaXNQYXNzdGhyb3VnaCg4KXx8IXUpJiYwPT09cztsZXQgZj1kP2k6MDtjb25zdCBnPWQ/cjpuZXcgVWludDhDbGFtcGVkQXJyYXkoaCphKSxwPXRoaXMubnVtQ29tcHMsbT1uZXcgRmxvYXQzMkFycmF5KHApLGI9bmV3IEZsb2F0MzJBcnJheShoKTtsZXQgeSx3O2Zvcih5PTA7eTxhO3krKyl7Zm9yKHc9MDt3PHA7dysrKW1bd109ZVt0KytdKmw7byhtLDAsYiwwKTtpZih1KWZvcih3PTA7dzxoO3crKylnW2YrK109MjU1KmJbd107ZWxzZXtjLmdldFJnYkl0ZW0oYiwwLGcsZik7Zis9aH19ZHx8Yy5nZXRSZ2JCdWZmZXIoZywwLGEscixpLDgscyl9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMvdGhpcy5udW1Db21wcyx0KX19Y2xhc3MgUGF0dGVybkNTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigiUGF0dGVybiIsbnVsbCk7dGhpcy5iYXNlPWV9aXNEZWZhdWx0RGVjb2RlKGUsdCl7dW5yZWFjaGFibGUoIlNob3VsZCBub3QgY2FsbCBQYXR0ZXJuQ1MuaXNEZWZhdWx0RGVjb2RlIil9fWNsYXNzIEluZGV4ZWRDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKCJJbmRleGVkIiwxKTt0aGlzLmJhc2U9ZTt0aGlzLmhpZ2hWYWw9dDtjb25zdCByPWUubnVtQ29tcHMqKHQrMSk7dGhpcy5sb29rdXA9bmV3IFVpbnQ4QXJyYXkocik7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2NvbnN0IGU9YS5nZXRCeXRlcyhyKTt0aGlzLmxvb2t1cC5zZXQoZSl9ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbmRleGVkQ1MgLSB1bnJlY29nbml6ZWQgbG9va3VwIHRhYmxlOiAke2F9YCk7Zm9yKGxldCBlPTA7ZTxyOysrZSl0aGlzLmxvb2t1cFtlXT0yNTUmYS5jaGFyQ29kZUF0KGUpfX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2NvbnN0e2Jhc2U6aSxoaWdoVmFsOm4sbG9va3VwOnN9PXRoaXMsbz1NYXRoQ2xhbXAoTWF0aC5yb3VuZChlW3RdKSwwLG4pKmkubnVtQ29tcHM7aS5nZXRSZ2JCdWZmZXIocyxvLDEsYSxyLDgsMCl9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsaSxuLHMpe2NvbnN0e2Jhc2U6byxoaWdoVmFsOmMsbG9va3VwOmx9PXRoaXMse251bUNvbXBzOmh9PW8sdT1vLmdldE91dHB1dExlbmd0aChoLHMpO2ZvcihsZXQgbj0wO248YTsrK24pe2NvbnN0IGE9TWF0aENsYW1wKE1hdGgucm91bmQoZVt0KytdKSwwLGMpKmg7by5nZXRSZ2JCdWZmZXIobCxhLDEscixpLDgscyk7aSs9dX19Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIHRoaXMuYmFzZS5nZXRPdXRwdXRMZW5ndGgoZSp0aGlzLmJhc2UubnVtQ29tcHMsdCl9aXNEZWZhdWx0RGVjb2RlKGUsdCl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuITA7aWYoMiE9PWUubGVuZ3RoKXt3YXJuKCJEZWNvZGUgbWFwIGxlbmd0aCBpcyBub3QgY29ycmVjdCIpO3JldHVybiEwfWlmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpfHx0PDEpe3dhcm4oIkJpdHMgcGVyIGNvbXBvbmVudCBpcyBub3QgY29ycmVjdCIpO3JldHVybiEwfXJldHVybiAwPT09ZVswXSYmZVsxXT09PSgxPDx0KS0xfX1jbGFzcyBEZXZpY2VHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKCl7c3VwZXIoIkRldmljZUdyYXkiLDEpfWdldFJnYkl0ZW0oZSx0LGEscil7Y29uc3QgaT0yNTUqZVt0XTthW3JdPWFbcisxXT1hW3IrMl09aX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz0yNTUvKCgxPDxuKS0xKTtsZXQgYz10LGw9aTtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtjb25zdCB0PW8qZVtjKytdO3JbbCsrXT10O3JbbCsrXT10O3JbbCsrXT10O2wrPXN9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpfX1jbGFzcyBEZXZpY2VSZ2JDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlUkdCIiwzKX1nZXRSZ2JJdGVtKGUsdCxhLHIpe2Fbcl09MjU1KmVbdF07YVtyKzFdPTI1NSplW3QrMV07YVtyKzJdPTI1NSplW3QrMl19Z2V0UmdiQnVmZmVyKGUsdCxhLHIsaSxuLHMpe2lmKDg9PT1uJiYwPT09cyl7ci5zZXQoZS5zdWJhcnJheSh0LHQrMyphKSxpKTtyZXR1cm59Y29uc3Qgbz0yNTUvKCgxPDxuKS0xKTtsZXQgYz10LGw9aTtmb3IobGV0IHQ9MDt0PGE7Kyt0KXtyW2wrK109byplW2MrK107cltsKytdPW8qZVtjKytdO3JbbCsrXT1vKmVbYysrXTtsKz1zfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KS8zfDB9aXNQYXNzdGhyb3VnaChlKXtyZXR1cm4gOD09PWV9fWNsYXNzIERldmljZVJnYmFDUyBleHRlbmRzIENvbG9yU3BhY2V7Y29uc3RydWN0b3IoKXtzdXBlcigiRGV2aWNlUkdCQSIsNCl9Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIDQqZX1pc1Bhc3N0aHJvdWdoKGUpe3JldHVybiA4PT09ZX1maWxsUmdiKGUsdCxhLHIsaSxuLHMsbyxjKXthIT09aXx8dCE9PXI/ZnVuY3Rpb24gcmVzaXplUmdiYUltYWdlKGUsdCxhLHIsaSxuLHMpe2NvbnN0IG89YS9pLGM9ci9uO2xldCBsPTA7Y29uc3QgaD1uZXcgVWludDE2QXJyYXkoaSk7aWYoMT09PXMpe2ZvcihsZXQgZT0wO2U8aTtlKyspaFtlXT1NYXRoLmZsb29yKGUqbyk7Y29uc3Qgcj1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIpLHM9bmV3IFVpbnQzMkFycmF
1015KHQuYnVmZmVyKSx1PUZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzE2Nzc3MjE1OjQyOTQ5NjcwNDA7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7Y29uc3QgdD1yLnN1YmFycmF5KE1hdGguZmxvb3IoZSpjKSphKTtmb3IobGV0IGU9MDtlPGk7ZSsrKXNbbCsrXXw9dFtoW2VdXSZ1fX1lbHNle2NvbnN0IHI9NCxzPWEqcjtmb3IobGV0IGU9MDtlPGk7ZSsrKWhbZV09TWF0aC5mbG9vcihlKm8pKnI7Zm9yKGxldCBhPTA7YTxuO2ErKyl7Y29uc3Qgcj1lLnN1YmFycmF5KE1hdGguZmxvb3IoYSpjKSpzKTtmb3IobGV0IGU9MDtlPGk7ZSsrKXtjb25zdCBhPWhbZV07dFtsKytdPXJbYV07dFtsKytdPXJbYSsxXTt0W2wrK109clthKzJdfX19fShvLGUsdCxhLHIsaSxjKTpmdW5jdGlvbiBjb3B5UmdiYUltYWdlKGUsdCxhKXtpZigxPT09YSl7Y29uc3QgYT1uZXcgVWludDMyQXJyYXkoZS5idWZmZXIpLHI9bmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyKSxpPUZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuPzE2Nzc3MjE1OjQyOTQ5NjcwNDA7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSsrKXJbZV18PWFbZV0maX1lbHNle2xldCBhPTA7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cis9NCl7dFthKytdPWVbcl07dFthKytdPWVbcisxXTt0W2ErK109ZVtyKzJdfX19KG8sZSxjKX19Y2xhc3MgRGV2aWNlQ215a0NTIGV4dGVuZHMgQ29sb3JTcGFjZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCJEZXZpY2VDTVlLIiw0KX0jaShlLHQsYSxyLGkpe2NvbnN0IG49ZVt0XSphLHM9ZVt0KzFdKmEsbz1lW3QrMl0qYSxjPWVbdCszXSphO3JbaV09MjU1K24qKC00LjM4NzMzMjM4NDYwOTk4OCpuKzU0LjQ4NjE1MTk0MTg5MTc2KnMrMTguODIyOTA1MDIxNjUzMDIqbysyMTIuMjU2NjI0NTE2Mzk1ODUqYy0yODUuMjMzMTAyNjEzNzAwNCkrcyooMS43MTQ5NzYzNDc3MzYyMTM0KnMtNS42MDk2NzM2OTA0MDQ3MzE1Km8rLTE3Ljg3Mzg3MDg2MTQxNTQ0NCpjLTUuNDk3MDA2NDI3MTk2MzY2KStvKigtMi41MjE3MzQwMTMxNjgzMDMzKm8tMjEuMjQ4OTIzMzM3MzUzMDczKmMrMTcuNTExOTI3MDg0MTgxMykrYyooLTIxLjg2MTIyMTQ3NDYzNjA1KmMtMTg5LjQ4MTgwODM1OTIyNzQ3KTtyW2krMV09MjU1K24qKDguODQxMDQxNDIyMDM2MTQ5Km4rNjAuMTE4MDI3MDQ1NTk3MzY2KnMrNi44NzE0MjU1OTIwNDkwMDcqbyszMS4xNTkxMDAxMzAwNTU5MjIqYy03OS4yOTcwODQ0ODE2NTQ4KStzKigtMTUuMzEwMzYxMzA2OTY3ODE3KnMrMTcuNTc1MjUxMjYxMTA5NDgyKm8rMTMxLjM1MjUwOTEyNDkzOTc2KmMtMTkwLjk0NTMzMDI1ODg5NTEpK28qKDQuNDQ0MzM5MTAyODUyNzM5Km8rOS44NjMyODYxNDkzNDA1KmMtMjQuODY3NDE1ODI1NTU4NzgpK2MqKC0yMC43MzczMjU0NzExODEwMzQqYy0xODcuODA0NTM3MDk3MTk1NzgpO3JbaSsyXT0yNTUrbiooLjg4NDI1MjI0MzAwMDMyOTYqbis4LjA3ODY3NzUwMzExMjkyOCpzKzMwLjg5OTc4MzA5NzAzNzI5Km8tLjIzODgzMjM4Njg5MTc4OTM0KmMtMTQuMTgzNTc2Nzk5NjczMjg2
101KStzKigxMC40OTU5MzI3MzQzMjA3MipzKzYzLjAyMzc4NDk0NzU0MDUyKm8rNTAuNjA2OTU3NjU2MzYwNzM0KmMtMTEyLjIzODg0MjUzNzE5MjQ4KStvKiguMDMyOTYwNDExMTQ4NzMyMTcqbysxMTUuNjAzODQ0NDk2NDY2NDEqYy0xOTMuNTgyMDkzNTY4NjE1MDUpK2MqKC0yMi4zMzgxNjgwNzMwOTg4NipjLTE4MC4xMjYxMzk3NDcwODM2Nyl9Z2V0UmdiSXRlbShlLHQsYSxyKXt0aGlzLiNpKGUsdCwxLGEscil9Z2V0UmdiQnVmZmVyKGUsdCxhLHIsaSxuLHMpe2NvbnN0IG89MS8oKDE8PG4pLTEpO2ZvcihsZXQgbj0wO248YTtuKyspe3RoaXMuI2koZSx0LG8scixpKTt0Kz00O2krPTMrc319Z2V0T3V0cHV0TGVuZ3RoKGUsdCl7cmV0dXJuIGUvNCooMyt0KXwwfX1jbGFzcyBDYWxHcmF5Q1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiQ2FsR3JheSIsMSk7aWYoIWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsR3JheSIpO1t0aGlzLlhXLHRoaXMuWVcsdGhpcy5aV109ZTtbdGhpcy5YQix0aGlzLllCLHRoaXMuWkJdPXR8fFswLDAsMF07dGhpcy5HPWF8fDE7aWYodGhpcy5YVzwwfHx0aGlzLlpXPDB8fDEhPT10aGlzLllXKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMgZm9yICR7dGhpcy5uYW1lfSwgbm8gZmFsbGJhY2sgYXZhaWxhYmxlYCk7aWYodGhpcy5YQjwwfHx0aGlzLllCPDB8fHRoaXMuWkI8MCl7aW5mbyhgSW52YWxpZCBCbGFja1BvaW50IGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuWEI9dGhpcy5ZQj10aGlzLlpCPTB9MD09PXRoaXMuWEImJjA9PT10aGlzLllCJiYwPT09dGhpcy5aQnx8d2FybihgJHt0aGlzLm5hbWV9LCBCbGFja1BvaW50OiBYQjogJHt0aGlzLlhCfSwgWUI6ICR7dGhpcy5ZQn0sIFpCOiAke3RoaXMuWkJ9LCBvbmx5IGRlZmF1bHQgdmFsdWVzIGFyZSBzdXBwb3J0ZWQuYCk7aWYodGhpcy5HPDEpe2luZm8oYEludmFsaWQgR2FtbWE6ICR7dGhpcy5HfSBmb3IgJHt0aGlzLm5hbWV9LCBmYWxsaW5nIGJhY2sgdG8gZGVmYXVsdC5gKTt0aGlzLkc9MX19I2koZSx0LGEscixpKXtjb25zdCBuPShlW3RdKmkpKip0aGlzLkcscz10aGlzLllXKm4sbz1NYXRoLm1heCgyOTUuOCpzKiouMzMzMzMzMzMzMzMzMzMzMy00MC44LDApO2Fbcl09bzthW3IrMV09bzthW3IrMl09b31nZXRSZ2JJdGVtKGUsdCxhLHIpe3RoaXMuI2koZSx0LGEsciwxKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz0xLygoMTw8biktMSk7Zm9yKGxldCBuPTA7bjxhOysrbil7dGhpcy4jaShlLHQscixpLG8pO3QrPTE7aSs9MytzfX1nZXRPdXRwdXRMZW5ndGgoZSx0KXtyZXR1cm4gZSooMyt0KX19Y2xhc3MgQ2FsUkdCQ1MgZXh0ZW5kcyBDb2xvclNwYWNle3N0YXRpYyNuPW5ldyBGbG9hdDMyQXJyYXkoWy44OTUxLC4yNjY0LC0uMTYxNCwtLjc1MDIsMS43MTM1LC4wMzY3LC4wMzg5LC0uMDY4NSwxLjAyOTZdKTtzdGF0aWMjcz1uZXcgRmxvYXQzMkFycmF5KFsuOTg2OTkyOSwtLjE0NzA1NDMsLjE1OTk2MjcsLjQzMjMwNTMsLjUxODM2MDMsLjA0OTI5MTIsLS4wMDg1Mjg3LC4wNDAwNDI4LC45Njg0ODY3XSk7c3RhdGljI289bmV3IEZsb2F0MzJBcnJheShbMy4yNDA0NTQyLC0xLjUzNzEzODUsLS40OTg1MzE0LC0uOTY5MjY2LDEuODc2MDEwOCwuMDQxNTU2LC4wNTU2NDM0LC0uMjA0MDI1OSwxLjA1NzIyNTJdKTtzdGF0aWMjYz1uZXcgRmxvYXQzMkFycmF5KFsxLDEsMV0pO3N0YXRpYyNsPW5ldyBGbG9hdDMyQXJyYXkoMyk7c3RhdGljI2g9bmV3IEZsb2F0MzJBcnJheSgzKTtzdGF0aWMjdT1uZXcgRmxvYXQzMkFycmF5KDMpO3N0YXRpYyNkPSgyNC8xMTYpKiozLzg7Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoIkNhbFJHQiIsMyk7aWYoIWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJXaGl0ZVBvaW50IG1pc3NpbmcgLSByZXF1aXJlZCBmb3IgY29sb3Igc3BhY2UgQ2FsUkdCIik7Y29uc3RbaSxuLHNdPXRoaXMud2hpdGVQb2ludD1lLFtvLGMsbF09dGhpcy5ibGFja1BvaW50PXR8fG5ldyBGbG9hdDMyQXJyYXkoMyk7W3RoaXMuR1IsdGhpcy5HRyx0aGlzLkdCXT1hfHxuZXcgRmxvYXQzMkFycmF5KFsxLDEsMV0pO1t0aGlzLk1YQSx0aGlzLk1ZQSx0aGlzLk1aQSx0aGlzLk1YQix0aGlzLk1ZQix0aGlzLk1aQix0aGlzLk1YQyx0aGlzLk1ZQyx0aGlzLk1aQ109cnx8bmV3IEZsb2F0MzJBcnJheShbMSwwLDAsMCwxLDAsMCwwLDFdKTtpZihpPDB8fHM8MHx8MSE9PW4pdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFdoaXRlUG9pbnQgY29tcG9uZW50cyBmb3IgJHt0aGlzLm5hbWV9LCBubyBmYWxsYmFjayBhdmFpbGFibGVgKTtpZihvPDB8fGM8MHx8bDwwKXtpbmZvKGBJbnZhbGlkIEJsYWNrUG9pbnQgZm9yICR7dGhpcy5uYW1lfSBbJHtvfSwgJHtjfSwgJHtsfV0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuYmxhY2tQb2ludD1uZXcgRmxvYXQzMkFycmF5KDMpfWlmKHRoaXMuR1I8MHx8dGhpcy5HRzwwfHx0aGlzLkdCPDApe2luZm8oYEludmFsaWQgR2FtbWEgWyR7dGhpcy5HUn0sICR7dGhpcy5HR30sICR7dGhpcy5HQn1dIGZvciAke3RoaXMubmFtZX0sIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0LmApO3RoaXMuR1I9dGhpcy5HRz10aGlzLkdCPTF9fSNmKGUsdCxhKXthWzBdPWVbMF0qdFswXStlWzFdKnRbMV0rZVsyXSp0WzJdO2FbMV09ZVszXSp0WzBdK2VbNF0qdFsxXStlWzVdKnRbMl07YVsyXT1lWzZdKnRbMF0rZVs3XSp0WzFdK2VbOF0qdFsyXX0jZyhlLHQsYSl7YVswXT0xKnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MSp0WzJdL2VbMl19I3AoZSx0LGEpe2FbMF09Ljk1MDQ3KnRbMF0vZVswXTthWzFdPTEqdFsxXS9lWzFdO2FbMl09MS4wODg4Myp0WzJdL2VbMl19I20oZSl7cmV0dXJuIGU8PS4w
101MDMxMzA4P01hdGhDbGFtcCgxMi45MiplLDAsMSk6ZT49Ljk5NTU0NTI1PzE6TWF0aENsYW1wKDEuMDU1KmUqKigxLzIuNCktLjA1NSwwLDEpfSNiKGUpe3JldHVybiBlPDA/LXRoaXMuI2IoLWUpOmU+OD8oKGUrMTYpLzExNikqKjM6ZSpDYWxSR0JDUy4jZH0jeShlLHQsYSl7aWYoMD09PWVbMF0mJjA9PT1lWzFdJiYwPT09ZVsyXSl7YVswXT10WzBdO2FbMV09dFsxXTthWzJdPXRbMl07cmV0dXJufWNvbnN0IHI9dGhpcy4jYigwKSxpPSgxLXIpLygxLXRoaXMuI2IoZVswXSkpLG49MS1pLHM9KDEtcikvKDEtdGhpcy4jYihlWzFdKSksbz0xLXMsYz0oMS1yKS8oMS10aGlzLiNiKGVbMl0pKSxsPTEtYzthWzBdPXRbMF0qaStuO2FbMV09dFsxXSpzK287YVsyXT10WzJdKmMrbH0jdyhlLHQsYSl7aWYoMT09PWVbMF0mJjE9PT1lWzJdKXthWzBdPXRbMF07YVsxXT10WzFdO2FbMl09dFsyXTtyZXR1cm59Y29uc3Qgcj1hO3RoaXMuI2YoQ2FsUkdCQ1MuI24sdCxyKTtjb25zdCBpPUNhbFJHQkNTLiNsO3RoaXMuI2coZSxyLGkpO3RoaXMuI2YoQ2FsUkdCQ1MuI3MsaSxhKX0jeChlLHQsYSl7Y29uc3Qgcj1hO3RoaXMuI2YoQ2FsUkdCQ1MuI24sdCxyKTtjb25zdCBpPUNhbFJHQkNTLiNsO3RoaXMuI3AoZSxyLGkpO3RoaXMuI2YoQ2FsUkdCQ1MuI3MsaSxhKX0jaShlLHQsYSxyLGkpe2NvbnN0IG49TWF0aENsYW1wKGVbdF0qaSwwLDEpLHM9TWF0aENsYW1wKGVbdCsxXSppLDAsMSksbz1NYXRoQ2xhbXAoZVt0KzJdKmksMCwxKSxjPTE9PT1uPzE6bioqdGhpcy5HUixsPTE9PT1zPzE6cyoqdGhpcy5HRyxoPTE9PT1vPzE6byoqdGhpcy5HQix1PXRoaXMuTVhBKmMrdGhpcy5NWEIqbCt0aGlzLk1YQypoLGQ9dGhpcy5NWUEqYyt0aGlzLk1ZQipsK3RoaXMuTVlDKmgsZj10aGlzLk1aQSpjK3RoaXMuTVpCKmwrdGhpcy5NWkMqaCxnPUNhbFJHQkNTLiNoO2dbMF09dTtnWzFdPWQ7Z1syXT1mO2NvbnN0IHA9Q2FsUkdCQ1MuI3U7dGhpcy4jdyh0aGlzLndoaXRlUG9pbnQsZyxwKTtjb25zdCBtPUNhbFJHQkNTLiNoO3RoaXMuI3kodGhpcy5ibGFja1BvaW50LHAsbSk7Y29uc3QgYj1DYWxSR0JDUy4jdTt0aGlzLiN4KENhbFJHQkNTLiNjLG0sYik7Y29uc3QgeT1DYWxSR0JDUy4jaDt0aGlzLiNmKENhbFJHQkNTLiNvLGIseSk7YVtyXT0yNTUqdGhpcy4jbSh5WzBdKTthW3IrMV09MjU1KnRoaXMuI20oeVsxXSk7YVtyKzJdPTI1NSp0aGlzLiNtKHlbMl0pfWdldFJnYkl0ZW0oZSx0LGEscil7dGhpcy4jaShlLHQsYSxyLDEpfWdldFJnYkJ1ZmZlcihlLHQsYSxyLGksbixzKXtjb25zdCBvPTEvKCgxPDxuKS0xKTtmb3IobGV0IG49MDtuPGE7KytuKXt0aGlzLiNpKGUsdCxyLGksbyk7dCs9MztpKz0zK3N9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpLzN8MH19Y2xhc3MgTGFiQ1MgZXh0ZW5kcyBDb2xvclNwYWNle2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcigiTGFiIiwzKTtpZighZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIldoaXRlUG9pbnQgbWlzc2luZyAtIHJlcXVpcmVkIGZvciBjb2xvciBzcGFjZSBMYWIiKTtbdGhpcy5YVyx0aGlzLllXLHRoaXMuWlddPWU7W3RoaXMuYW1pbix0aGlzLmFtYXgsdGhpcy5ibWluLHRoaXMuYm1heF09YXx8Wy0xMDAsMTAwLC0xMDAsMTAwXTtbdGhpcy5YQix0aGlzLllCLHRoaXMuWkJdPXR8fFswLDAsMF07aWYodGhpcy5YVzwwfHx0aGlzLlpXPDB8fDEhPT10aGlzLllXKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBXaGl0ZVBvaW50IGNvbXBvbmVudHMsIG5vIGZhbGxiYWNrIGF2YWlsYWJsZSIpO2lmKHRoaXMuWEI8MHx8dGhpcy5ZQjwwfHx0aGlzLlpCPDApe2luZm8oIkludmFsaWQgQmxhY2tQb2ludCwgZmFsbGluZyBiYWNrIHRvIGRlZmF1bHQiKTt0aGlzLlhCPXRoaXMuWUI9dGhpcy5aQj0wfWlmKHRoaXMuYW1pbj50aGlzLmFtYXh8fHRoaXMuYm1pbj50aGlzLmJtYXgpe2luZm8oIkludmFsaWQgUmFuZ2UsIGZhbGxpbmcgYmFjayB0byBkZWZhdWx0cyIpO3RoaXMuYW1pbj0tMTAwO3RoaXMuYW1heD0xMDA7dGhpcy5ibWluPS0xMDA7dGhpcy5ibWF4PTEwMH19I1MoZSl7cmV0dXJuIGU+PTYvMjk/ZSoqMzoxMDgvODQxKihlLTQvMjkpfSNBKGUsdCxhLHIpe3JldHVybiBhK2UqKHItYSkvdH0jaShlLHQsYSxyLGkpe2xldCBuPWVbdF0scz1lW3QrMV0sbz1lW3QrMl07aWYoITEhPT1hKXtuPXRoaXMuI0EobixhLDAsMTAwKTtzPXRoaXMuI0EocyxhLHRoaXMuYW1pbix0aGlzLmFtYXgpO289dGhpcy4jQShvLGEsdGhpcy5ibWluLHRoaXMuYm1heCl9cz50aGlzLmFtYXg/cz10aGlzLmFtYXg6czx0aGlzLmFtaW4mJihzPXRoaXMuYW1pbik7bz50aGlzLmJtYXg/bz10aGlzLmJtYXg6bzx0aGlzLmJtaW4mJihvPXRoaXMuYm1pbik7Y29uc3QgYz0obisxNikvMTE2LGw9YytzLzUwMCxoPWMtby8yMDAsdT10aGlzLlhXKnRoaXMuI1MobCksZD10aGlzLllXKnRoaXMuI1MoYyksZj10aGlzLlpXKnRoaXMuI1MoaCk7bGV0IGcscCxtO2lmKHRoaXMuWlc8MSl7Zz0zLjEzMzkqdSstMS42MTcqZCstLjQ5MDYqZjtwPS0uOTc4NSp1KzEuOTE2KmQrLjAzMzMqZjttPS4wNzIqdSstLjIyOSpkKzEuNDA1NypmfWVsc2V7Zz0zLjI0MDYqdSstMS41MzcyKmQrLS40OTg2KmY7cD0tLjk2ODkqdSsxLjg3NTgqZCsuMDQxNSpmO209LjA1NTcqdSstLjIwNCpkKzEuMDU3KmZ9cltpXT0yNTUqTWF0aC5zcXJ0KGcpO3JbaSsxXT0yNTUqTWF0aC5zcXJ0KHApO3JbaSsyXT0yNTUqTWF0aC5zcXJ0KG0pfWdldFJnYkl0ZW0oZSx0LGEscil7dGhpcy4jaShlLHQsITEsYSxyKX1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7Y29uc3Qgbz0oMTw8biktMTtmb3IobGV0IG49MDtuPGE7bisrKXt0aGlzLiNpKGUsdCxvLHIsaSk7dCs9MztpKz0zK3N9fWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlKigzK3QpLzN8MH1pc0RlZmF1bHREZWNvZGUoZSx0KXtyZXR1cm4hMH1nZXQgdXNlc1plcm9Ub09uZVJhbmdlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ1c2VzWmVyb1RvT25lUmFuZ2UiLCExKX19ZnVuY3Rpb24gZmV0Y2hTeW5jKGUpe2NvbnN0IHQ9bmV3IFhNTEh0dHBSZXF1
101ZXN0O3Qub3BlbigiR0VUIixlLCExKTt0LnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiO3Quc2VuZChudWxsKTtyZXR1cm4gdC5yZXNwb25zZX1jbGFzcyBJY2NDb2xvclNwYWNlIGV4dGVuZHMgQ29sb3JTcGFjZXsjazsjQztzdGF0aWMjdj0hMDtzdGF0aWMjRj1udWxsO3N0YXRpYyNJPW51bGw7Y29uc3RydWN0b3IoZSx0LGEpe2lmKCFJY2NDb2xvclNwYWNlLmlzVXNhYmxlKXRocm93IG5ldyBFcnJvcigiTm8gSUNDIGNvbG9yIHNwYWNlIHN1cHBvcnQiKTtzdXBlcih0LGEpO2xldCByO3N3aXRjaChhKXtjYXNlIDE6cj1BYS5HcmF5ODt0aGlzLiNDPShlLHQsYSk9PmZ1bmN0aW9uIHFjbXNfY29udmVydF9vbmUoZSx0LGEpe3lhLnFjbXNfY29udmVydF9vbmUoZSx0LGEpfSh0aGlzLiNrLDI1NSplW3RdLGEpO2JyZWFrO2Nhc2UgMzpyPUFhLlJHQjg7dGhpcy4jQz0oZSx0LGEpPT5mdW5jdGlvbiBxY21zX2NvbnZlcnRfdGhyZWUoZSx0LGEscixpKXt5YS5xY21zX2NvbnZlcnRfdGhyZWUoZSx0LGEscixpKX0odGhpcy4jaywyNTUqZVt0XSwyNTUqZVt0KzFdLDI1NSplW3QrMl0sYSk7YnJlYWs7Y2FzZSA0OnI9QWEuQ01ZSzt0aGlzLiNDPShlLHQsYSk9PmZ1bmN0aW9uIHFjbXNfY29udmVydF9mb3VyKGUsdCxhLHIsaSxuKXt5YS5xY21zX2NvbnZlcnRfZm91cihlLHQsYSxyLGksbil9KHRoaXMuI2ssMjU1KmVbdF0sMjU1KmVbdCsxXSwyNTUqZVt0KzJdLDI1NSplW3QrM10sYSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIG51bWJlciBvZiBjb21wb25lbnRzOiAke2F9YCl9dGhpcy4jaz1mdW5jdGlvbiBxY21zX3RyYW5zZm9ybWVyX2Zyb21fbWVtb3J5KGUsdCxhKXtjb25zdCByPXBhc3NBcnJheThUb1dhc20wKGUseWEuX193YmluZGdlbl9tYWxsb2MpLGk9U2E7cmV0dXJuIHlhLnFjbXNfdHJhbnNmb3JtZXJfZnJvbV9tZW1vcnkocixpLHQsYSk+Pj4wfShlLHIsa2EuUGVyY2VwdHVhbCk7aWYoIXRoaXMuI2spdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIElDQyBjb2xvciBzcGFjZSIpO0ljY0NvbG9yU3BhY2UuI0l8fD1uZXcgRmluYWxpemF0aW9uUmVnaXN0cnkoZT0+eyFmdW5jdGlvbiBxY21zX2Ryb3BfdHJhbnNmb3JtZXIoZSl7eWEucWNtc19kcm9wX3RyYW5zZm9ybWVyKGUpfShlKX0pO0ljY0NvbG9yU3BhY2UuI0kucmVnaXN0ZXIodGhpcyx0aGlzLiNrKX1nZXRSZ2JIZXgoZSx0KXt0aGlzLiNDKGUsdCwhMCk7cmV0dXJuIFFDTVMuX2Nzc0NvbG9yfWdldFJnYkl0ZW0oZSx0LGEscil7UUNNUy5fZGVzdEJ1ZmZlcj1hO1FDTVMuX2Rlc3RPZmZzZXQ9cjtRQ01TLl9kZXN0TGVuZ3RoPTM7dGhpcy4jQyhlLHQsITEpO1FDTVMuX2Rlc3RCdWZmZXI9bnVsbH1nZXRSZ2JCdWZmZXIoZSx0LGEscixpLG4scyl7ZT1lLnN1YmFycmF5KHQsdCthKnRoaXMubnVtQ29tcHMpO2lmKDghPT1uKXtjb25zdCB0PTI1NS8oKDE8PG4pLTEpO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyllW2FdKj10fVFDTVMuX211c3RBZGRBbHBoYT1zJiZyLmJ1ZmZlcj09PWUuYnVmZmVyO1FDTVMuX2Rlc3RCdWZmZXI9cjtRQ01TLl9kZXN0T2Zmc2V0PWk7UUNNUy5fZGVzdExlbmd0aD1hKigzK3MpOyFmdW5jdGlvbiBxY21zX2NvbnZlcnRfYXJyYXkoZSx0KXtjb25zdCBhPXBhc3NBcnJheThUb1dhc20wKHQseWEuX193YmluZGdlbl9tYWxsb2MpLHI9U2E7eWEucWNtc19jb252ZXJ0X2FycmF5KGUsYSxyKX0odGhpcy4jayxlKTtRQ01TLl9tdXN0QWRkQWxwaGE9ITE7UUNNUy5fZGVzdEJ1ZmZlcj1udWxsfWdldE91dHB1dExlbmd0aChlLHQpe3JldHVybiBlL3RoaXMubnVtQ29tcHMqKDMrdCl8MH1zdGF0aWMgc2V0T3B0aW9ucyh7dXNlV2FzbTplLHVzZVdvcmtlckZldGNoOnQsd2FzbVVybDphfSl7aWYodCl7dGhpcy4jdj1lO3RoaXMuI0Y9YX1lbHNlIHRoaXMuI3Y9ITF9c3RhdGljIGdldCBpc1VzYWJsZSgpe2xldCBlPSExO2lmKHRoaXMuI3YpaWYodGhpcy4jRil0cnl7dGhpcy5fbW9kdWxlPWZ1bmN0aW9uIGluaXRTeW5jKGUpe2lmKHZvaWQgMCE9PXlhKXJldHVybiB5YTt2b2lkIDAhPT1lJiYoT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09T2JqZWN0LnByb3RvdHlwZT8oe21vZHVsZTplfT1lKTpjb25zb2xlLndhcm4oInVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVycyBmb3IgYGluaXRTeW5jKClgOyBwYXNzIGEgc2luZ2xlIG9iamVjdCBpbnN0ZWFkIikpO2NvbnN0IHQ9X193YmdfZ2V0X2ltcG9ydHMoKTtlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuTW9kdWxlfHwoZT1uZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGUpKTtyZXR1cm4gX193YmdfZmluYWxpemVfaW5pdChuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UoZSx0KSxlKX0oe21vZHVsZTpmZXRjaFN5bmMoYCR7dGhpcy4jRn1xY21zX2JnLndhc21gKX0pO2U9ISF0aGlzLl9tb2R1bGU7UUNNUy5fbWVtb3J5PXRoaXMuX21vZHVsZS5tZW1vcnk7UUNNUy5fbWFrZUhleENvbG9yPVV0aWwubWFrZUhleENvbG9yfWNhdGNoKGUpe3dhcm4oYElDQ0Jhc2VkIGNvbG9yIHNwYWNlOiAiJHtlfSIuYCl9ZWxzZSB3YXJuKCJObyBJQ0MgY29sb3Igc3BhY2Ugc3VwcG9ydCBkdWUgdG8gbWlzc2luZyBgd2FzbVVybGAgQVBJIG9wdGlvbiIpO3JldHVybiBzaGFkb3codGhpcywiaXNVc2FibGUiLGUpfX1jbGFzcyBDbXlrSUNDQmFzZWRDUyBleHRlbmRzIEljY0NvbG9yU3BhY2V7c3RhdGljI1Q7Y29uc3RydWN0b3IoKXtzdXBlcihuZXcgVWludDhBcnJheShmZXRjaFN5bmMoYCR7Q215a0lDQ0Jhc2VkQ1MuI1R9Q0dBVFMwMDFDb21wYXQtdjItbWljcm8uaWNjYCkpLCJEZXZpY2VDTVlLIiw0KX1zdGF0aWMgc2V0T3B0aW9ucyh7aWNjVXJsOmV9KXt0aGlzLiNUPWV9c3RhdGljIGdldCBpc1VzYWJsZSgpe2xldCBlPSExO0ljY0NvbG9yU3BhY2UuaXNVc2FibGUmJih0aGlzLiNUP2U9ITA6d2FybigiTm8gQ01ZSyBJQ0MgcHJvZmlsZSBzdXBwb3J0IGR1ZSB0byBtaXNzaW5nIGBpY2NVcmxgIEFQSSBvcHRpb24iKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJpc1VzYWJsZSIsZSl9fWNsYXNzIFN0cmVhbSBleHRlbmRzIEJhc2VTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoKTt0aGlzLmJ5dGVzPWUgaW5zdGFuY2VvZiBVaW50OEFycmF5P2U6bmV3IFVpbnQ4QXJyYXkoZSk7dGhpcy5zdGFydD10fHwwO3RoaXMucG9zPXRoaXMuc3RhcnQ7dGhpcy5lbmQ9dCthfHx0aGlzLmJ5dGVzLmxlbmd0aDt0aGlzLmRpY3Q9cn1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kLXRoaXMuc3RhcnR9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMubGVuZ3RofWdldEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnl0ZXNbdGhpcy5wb3MrK119Z2V0Qnl0ZXMoZSl7Y29uc3QgdD10aGlzLmJ5dGVzLGE9dGhpcy5wb3Mscj10aGlzLmVuZDtpZighZSlyZXR1cm4gdC5zdWJhcnJheShhLHIpO2xldCBpPWErZTtpPnImJihpPXIpO3RoaXMucG9zPWk7cmV0dXJuIHQuc3ViYXJyYXkoYSxpKX1nZXRCeXRlUmFuZ2UoZSx0KXtlPDAmJihlPTApO3Q+dGhpcy5lbmQmJih0PXRoaXMuZW5kKTtyZXR1cm4gdGhpcy5ieXRlcy5zdWJhcnJheShlLHQpfXJlc2V0KCl7dGhpcy5wb3M9dGhpcy5zdGFydH1tb3ZlU3RhcnQoKXt0aGlzLnN0YXJ0PXRoaXMucG9zfW1ha2VTdWJTdHJlYW0oZSx0LGE9bnVsbCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsZSx0LGEpfWNsb25lKCl7cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5ieXRlcy5idWZmZXIsdGhpcy5zdGFydCx0aGlzLmVuZC10aGlzLnN0YXJ0LHRoaXMuZGljdC5jbG9uZSgpKX19Y2xhc3MgU3RyaW5nU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKHN0cmluZ1RvQnl0ZXMoZSkpfX1jbGFzcyBOdWxsU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKCl7c3VwZXIobmV3IFVpbnQ4QXJyYXkoMCkpfX1jbGFzcyBDaHVua2VkU3RyZWFtIGV4dGVuZHMgU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcihuZXcgVWludDhBcnJheShlKSwwLGUsbnVsbCk7dGhpcy5jaHVua1NpemU9dDt0aGlzLl9sb2FkZWRDaHVua3M9bmV3IFNldDt0aGlzLm51bUNodW5rcz1NYXRoLmNlaWwoZS90KTt0aGlzLm1hbmFnZXI9YTt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMubGFzdFN1Y2Nlc3NmdWx
101FbnN1cmVCeXRlQ2h1bms9LTF9Z2V0TWlzc2luZ0NodW5rcygpe2NvbnN0IGU9W107Zm9yKGxldCB0PTAsYT10aGlzLm51bUNodW5rczt0PGE7Kyt0KXRoaXMuX2xvYWRlZENodW5rcy5oYXModCl8fGUucHVzaCh0KTtyZXR1cm4gZX1nZXQgbnVtQ2h1bmtzTG9hZGVkKCl7cmV0dXJuIHRoaXMuX2xvYWRlZENodW5rcy5zaXplfWdldCBpc0RhdGFMb2FkZWQoKXtyZXR1cm4gdGhpcy5udW1DaHVua3NMb2FkZWQ9PT10aGlzLm51bUNodW5rc31vblJlY2VpdmVEYXRhKGUsdCl7Y29uc3QgYT10aGlzLmNodW5rU2l6ZTtpZihlJWEhPT0wKXRocm93IG5ldyBFcnJvcihgQmFkIGJlZ2luIG9mZnNldDogJHtlfWApO2NvbnN0IHI9ZSt0LmJ5dGVMZW5ndGg7aWYociVhIT09MCYmciE9PXRoaXMuYnl0ZXMubGVuZ3RoKXRocm93IG5ldyBFcnJvcihgQmFkIGVuZCBvZmZzZXQ6ICR7cn1gKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheSh0KSxlKTtjb25zdCBpPU1hdGguZmxvb3IoZS9hKSxuPU1hdGguZmxvb3IoKHItMSkvYSkrMTtmb3IobGV0IGU9aTtlPG47KytlKXRoaXMuX2xvYWRlZENodW5rcy5hZGQoZSl9b25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKGUpe2xldCB0PXRoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoO2NvbnN0IGE9TWF0aC5mbG9vcih0L3RoaXMuY2h1bmtTaXplKTt0aGlzLmJ5dGVzLnNldChuZXcgVWludDhBcnJheShlKSx0KTt0Kz1lLmJ5dGVMZW5ndGg7dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg9dDtjb25zdCByPXQ+PXRoaXMuZW5kP3RoaXMubnVtQ2h1bmtzOk1hdGguZmxvb3IodC90aGlzLmNodW5rU2l6ZSk7Zm9yKGxldCBlPWE7ZTxyOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuYWRkKGUpfWVuc3VyZUJ5dGUoZSl7aWYoZTx0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgdD1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKCEodD50aGlzLm51bUNodW5rcykmJnQhPT10aGlzLmxhc3RTdWNjZXNzZnVsRW5zdXJlQnl0ZUNodW5rKXtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyh0KSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSxlKzEpO3RoaXMubGFzdFN1Y2Nlc3NmdWxFbnN1cmVCeXRlQ2h1bms9dH19ZW5zdXJlUmFuZ2UoZSx0KXtpZihlPj10KXJldHVybjtpZih0PD10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aClyZXR1cm47Y29uc3QgYT1NYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpO2lmKGE+dGhpcy5udW1DaHVua3MpcmV0dXJuO2NvbnN0IHI9TWF0aC5taW4oTWF0aC5mbG9vcigodC0xKS90aGlzLmNodW5rU2l6ZSkrMSx0aGlzLm51bUNodW5rcyk7Zm9yKGxldCBpPWE7aTxyOysraSlpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhpKSl0aHJvdyBuZXcgTWlzc2luZ0RhdGFFeGNlcHRpb24oZSx0KX1uZXh0RW1wdHlDaHVuayhlKXtjb25zdCB0PXRoaXMubnVtQ2h1bmtzO2ZvcihsZXQgYT0wO2E8dDsrK2Epe2NvbnN0IHI9KGUrYSkldDtpZighdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhyKSlyZXR1cm4gcn1yZXR1cm4gbnVsbH1oYXNDaHVuayhlKXtyZXR1cm4gdGhpcy5fbG9hZGVkQ2h1bmtzLmhhcyhlKX1nZXRCeXRlKCl7Y29uc3QgZT10aGlzLnBvcztpZihlPj10aGlzLmVuZClyZXR1cm4tMTtlPj10aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVCeXRlKGUpO3JldHVybiB0aGlzLmJ5dGVzW3RoaXMucG9zKytdfWdldEJ5dGVzKGUpe2NvbnN0IHQ9dGhpcy5ieXRlcyxhPXRoaXMucG9zLHI9dGhpcy5lbmQ7aWYoIWUpe3I+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoYSxyKTtyZXR1cm4gdC5zdWJhcnJheShhLHIpfWxldCBpPWErZTtpPnImJihpPXIpO2k+dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlUmFuZ2UoYSxpKTt0aGlzLnBvcz1pO3JldHVybiB0LnN1YmFycmF5KGEsaSl9Z2V0Qnl0ZVJhbmdlKGUsdCl7ZTwwJiYoZT0wKTt0PnRoaXMuZW5kJiYodD10aGlzLmVuZCk7dD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLHQpO3JldHVybiB0aGlzLmJ5dGVzLnN1YmFycmF5KGUsdCl9bWFrZVN1YlN0cmVhbShlLHQsYT1udWxsKXt0P2UrdD50aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aCYmdGhpcy5lbnN1cmVSYW5nZShlLGUrdCk6ZT49dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGgmJnRoaXMuZW5zdXJlQnl0ZShlKTtmdW5jdGlvbiBDaHVua2VkU3RyZWFtU3Vic3RyZWFtKCl7fUNodW5rZWRTdHJlYW1TdWJzdHJlYW0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodGhpcyk7Q2h1bmtlZFN0cmVhbVN1YnN0cmVhbS5wcm90b3R5cGUuZ2V0TWlzc2luZ0NodW5rcz1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5jaHVua1NpemUsdD1NYXRoLmZsb29yKHRoaXMuc3RhcnQvZSksYT1NYXRoLmZsb29yKCh0aGlzLmVuZC0xKS9lKSsxLHI9W107Zm9yKGxldCBlPXQ7ZTxhOysrZSl0aGlzLl9sb2FkZWRDaHVua3MuaGFzKGUpfHxyLnB1c2goZSk7cmV0dXJuIHJ9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShDaHVua2VkU3RyZWFtU3Vic3RyZWFtLnByb3RvdHlwZSwiaXNEYXRhTG9hZGVkIix7Z2V0KCl7cmV0dXJuIHRoaXMubnVtQ2h1bmtzTG9hZGVkPT09dGhpcy5udW1DaHVua3N8fDA9PT10aGlzLmdldE1pc3NpbmdDaHVua3MoKS5sZW5ndGh9LGNvbmZpZ3VyYWJsZTohMH0pO2NvbnN0IHI9bmV3IENodW5rZWRTdHJlYW1TdWJzdHJlYW07ci5wb3M9ci5zdGFydD1lO3IuZW5kPWUrdHx8dGhpcy5lbmQ7ci5kaWN0PWE7cmV0dXJuIHJ9Z2V0QmFzZVN0cmVhbXMoKXtyZXR1cm5bdGhpc119fWNsYXNzIENodW5rZWRTdHJlYW1NYW5hZ2Vye2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7dGhpcy5jaHVua1NpemU9dC5yYW5nZUNodW5rU2l6ZTt0aGlzLnN0cmVhbT1uZXcgQ2h1bmtlZFN0cmVhbSh0aGlzLmxlbmd0aCx0aGlzLmNodW5rU2l6ZSx0aGlzKTt0aGlzLnBkZk5ldHdvcmtTdHJlYW09ZTt0aGlzLmRpc2FibGVBdXRvRmV0Y2g9dC5kaXNhYmxlQXV0b0ZldGNoO3RoaXMubXNnSGFuZGxlcj10Lm1zZ0hhbmRsZXI7dGhpcy5jdXJyUmVxdWVzdElkPTA7dGhpcy5fY2h1bmtzTmVlZGVkQnlSZXF1ZXN0PW5ldyBNYXA7dGhpcy5fcmVxdWVzdHNCeUNodW5rPW5ldyBNYXA7dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3Q9bmV3IE1hcDt0aGlzLnByb2dyZXNzaXZlRGF0YUxlbmd0aD0wO3RoaXMuYWJvcnRlZD0hMTt0aGlzLl9sb2FkZWRTdHJlYW1
101DYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpfXNlbmRSZXF1ZXN0KGUsdCl7Y29uc3QgYT10aGlzLnBkZk5ldHdvcmtTdHJlYW0uZ2V0UmFuZ2VSZWFkZXIoZSx0KTthLmlzU3RyZWFtaW5nU3VwcG9ydGVkfHwoYS5vblByb2dyZXNzPXRoaXMub25Qcm9ncmVzcy5iaW5kKHRoaXMpKTtsZXQgcj1bXSxpPTA7cmV0dXJuIG5ldyBQcm9taXNlKChlLHQpPT57Y29uc3QgcmVhZENodW5rPSh7dmFsdWU6bixkb25lOnN9KT0+e3RyeXtpZihzKXtjb25zdCB0PWFycmF5QnVmZmVyc1RvQnl0ZXMocik7cj1udWxsO2UodCk7cmV0dXJufWkrPW4uYnl0ZUxlbmd0aDthLmlzU3RyZWFtaW5nU3VwcG9ydGVkJiZ0aGlzLm9uUHJvZ3Jlc3Moe2xvYWRlZDppfSk7ci5wdXNoKG4pO2EucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfWNhdGNoKGUpe3QoZSl9fTthLnJlYWQoKS50aGVuKHJlYWRDaHVuayx0KX0pLnRoZW4odD0+e3RoaXMuYWJvcnRlZHx8dGhpcy5vblJlY2VpdmVEYXRhKHtjaHVuazp0LGJlZ2luOmV9KX0pfXJlcXVlc3RBbGxDaHVua3MoZT0hMSl7aWYoIWUpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0TWlzc2luZ0NodW5rcygpO3RoaXMuX3JlcXVlc3RDaHVua3MoZSl9cmV0dXJuIHRoaXMuX2xvYWRlZFN0cmVhbUNhcGFiaWxpdHkucHJvbWlzZX1fcmVxdWVzdENodW5rcyhlKXtjb25zdCB0PXRoaXMuY3VyclJlcXVlc3RJZCsrLGE9bmV3IFNldDt0aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3Quc2V0KHQsYSk7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLnN0cmVhbS5oYXNDaHVuayh0KXx8YS5hZGQodCk7aWYoMD09PWEuc2l6ZSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7Y29uc3Qgcj1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLl9wcm9taXNlc0J5UmVxdWVzdC5zZXQodCxyKTtjb25zdCBpPVtdO2Zvcihjb25zdCBlIG9mIGEpe2xldCBhPXRoaXMuX3JlcXVlc3RzQnlDaHVuay5nZXQoZSk7aWYoIWEpe2E9W107dGhpcy5fcmVxdWVzdHNCeUNodW5rLnNldChlLGEpO2kucHVzaChlKX1hLnB1c2godCl9aWYoaS5sZW5ndGg+MCl7Y29uc3QgZT10aGlzLmdyb3VwQ2h1bmtzKGkpO2Zvcihjb25zdCB0IG9mIGUpe2NvbnN0IGU9dC5iZWdpbkNodW5rKnRoaXMuY2h1bmtTaXplLGE9TWF0aC5taW4odC5lbmRDaHVuayp0aGlzLmNodW5rU2l6ZSx0aGlzLmxlbmd0aCk7dGhpcy5zZW5kUmVxdWVzdChlLGEpLmNhdGNoKHIucmVqZWN0KX19cmV0dXJuIHIucHJvbWlzZS5jYXRjaChlPT57aWYoIXRoaXMuYWJvcnRlZCl0aHJvdyBlfSl9Z2V0U3RyZWFtKCl7cmV0dXJuIHRoaXMuc3RyZWFtfXJlcXVlc3RSYW5nZShlLHQpe3Q9TWF0aC5taW4odCx0aGlzLmxlbmd0aCk7Y29uc3QgYT10aGlzLmdldEJlZ2luQ2h1bmsoZSkscj10aGlzLmdldEVuZENodW5rKHQpLGk9W107Zm9yKGxldCBlPWE7ZTxyOysrZSlpLnB1c2goZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RDaHVua3MoaSl9cmVxdWVzdFJhbmdlcyhlPVtdKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IGU9dGhpcy5nZXRCZWdpbkNodW5rKGEuYmVnaW4pLHI9dGhpcy5nZXRFbmRDaHVuayhhLmVuZCk7Zm9yKGxldCBhPWU7YTxyOysrYSl0LmluY2x1ZGVzKGEpfHx0LnB1c2goYSl9dC5zb3J0KChlLHQpPT5lLXQpO3JldHVybiB0aGlzLl9yZXF1ZXN0Q2h1bmtzKHQpfWdyb3VwQ2h1bmtzKGUpe2NvbnN0IHQ9W107bGV0IGE9LTEscj0tMTtmb3IobGV0IGk9MCxuPWUubGVuZ3RoO2k8bjsrK2kpe2NvbnN0IG49ZVtpXTthPDAmJihhPW4pO2lmKHI+PTAmJnIrMSE9PW4pe3QucHVzaCh7YmVnaW5DaHVuazphLGVuZENodW5rOnIrMX0pO2E9bn1pKzE9PT1lLmxlbmd0aCYmdC5wdXNoKHtiZWdpbkNodW5rOmEsZW5kQ2h1bms6bisxfSk7cj1ufXJldHVybiB0fW9uUHJvZ3Jlc3MoZSl7dGhpcy5tc2dIYW5kbGVyLnNlbmQoIkRvY1Byb2dyZXNzIix7bG9hZGVkOnRoaXMuc3RyZWFtLm51bUNodW5rc0xvYWRlZCp0aGlzLmNodW5rU2l6ZStlLmxvYWRlZCx0b3RhbDp0aGlzLmxlbmd0aH0pfW9uUmVjZWl2ZURhdGEoZSl7Y29uc3QgdD1lLmNodW5rLGE9dm9pZCAwPT09ZS5iZWdpbixyPWE/dGhpcy5wcm9ncmVzc2l2ZURhdGFMZW5ndGg6ZS5iZWdpbixpPXIrdC5ieXRlTGVuZ3RoLG49TWF0aC5mbG9vcihyL3RoaXMuY2h1bmtTaXplKSxzPWk8dGhpcy5sZW5ndGg/TWF0aC5mbG9vcihpL3RoaXMuY2h1bmtTaXplKTpNYXRoLmNlaWwoaS90aGlzLmNodW5rU2l6ZSk7aWYoYSl7dGhpcy5zdHJlYW0ub25SZWNlaXZlUHJvZ3Jlc3NpdmVEYXRhKHQpO3RoaXMucHJvZ3Jlc3NpdmVEYXRhTGVuZ3RoPWl9ZWxzZSB0aGlzLnN0cmVhbS5vblJlY2VpdmVEYXRhKHIsdCk7dGhpcy5zdHJlYW0uaXNEYXRhTG9hZGVkJiZ0aGlzLl9sb2FkZWRTdHJlYW1DYXBhYmlsaXR5LnJlc29sdmUodGhpcy5zdHJlYW0pO2NvbnN0IG89W107Zm9yKGxldCBlPW47ZTxzOysrZSl7Y29uc3QgdD10aGlzLl9yZXF1ZXN0c0J5Q2h1bmsuZ2V0KGUpO2lmKHQpe3RoaXMuX3JlcXVlc3RzQnlDaHVuay5kZWxldGUoZSk7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3QgdD10aGlzLl9jaHVua3NOZWVkZWRCeVJlcXVlc3QuZ2V0KGEpO3QuaGFzKGUpJiZ0LmRlbGV0ZShlKTt0LnNpemU+MHx8by5wdXNoKGEpfX19aWYoIXRoaXMuZGlzYWJsZUF1dG9GZXRjaCYmMD09PXRoaXMuX3JlcXVlc3RzQnlDaHVuay5zaXplKXtsZXQgZTtpZigxPT09dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKXtjb25zdCB0PXRoaXMuc3RyZWFtLm51bUNodW5rcy0xO3RoaXMuc3RyZWFtLmhhc0NodW5rKHQpfHwoZT10KX1lbHNlIGU9dGhpcy5zdHJlYW0ubmV4dEVtcHR5Q2h1bmsocyk7TnVtYmVyLmlzSW50ZWdlcihlKSYmdGhpcy5fcmVxdWVzdENodW5rcyhbZV0pfWZvcihjb25zdCBlIG9mIG8pe2NvbnN0IHQ9dGhpcy5fcHJvbWlzZXNCeVJlcXVlc3QuZ2V0KGUpO3RoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LmRlbGV0ZShlKTt0LnJlc29sdmUoKX10aGlzLm1zZ0hhbmRsZXIuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6dGhpcy5zdHJlYW0ubnVtQ2h1bmtzTG9hZGVkKnRoaXMuY2h1bmtTaXplLHRvdGFsOnRoaXMubGVuZ3RofSl9b25FcnJvcihlKXt0aGlzLl9sb2FkZWRTdHJlYW1
101DYXBhYmlsaXR5LnJlamVjdChlKX1nZXRCZWdpbkNodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKGUvdGhpcy5jaHVua1NpemUpfWdldEVuZENodW5rKGUpe3JldHVybiBNYXRoLmZsb29yKChlLTEpL3RoaXMuY2h1bmtTaXplKSsxfWFib3J0KGUpe3RoaXMuYWJvcnRlZD0hMDt0aGlzLnBkZk5ldHdvcmtTdHJlYW0/LmNhbmNlbEFsbFJlcXVlc3RzKGUpO2Zvcihjb25zdCB0IG9mIHRoaXMuX3Byb21pc2VzQnlSZXF1ZXN0LnZhbHVlcygpKXQucmVqZWN0KGUpfX1mdW5jdGlvbiBjb252ZXJ0VG9SR0JBKGUpe3N3aXRjaChlLmtpbmQpe2Nhc2UgRjpyZXR1cm4gY29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoZSk7Y2FzZSBUOnJldHVybiBmdW5jdGlvbiBjb252ZXJ0UkdCVG9SR0JBKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6YSxkZXN0UG9zOnI9MCx3aWR0aDppLGhlaWdodDpufSl7bGV0IHM9MDtjb25zdCBvPWkqbiozLGM9bz4+MixsPW5ldyBVaW50MzJBcnJheShlLmJ1ZmZlcix0LGMpO2lmKEZlYXR1cmVUZXN0LmlzTGl0dGxlRW5kaWFuKXtmb3IoO3M8Yy0yO3MrPTMscis9NCl7Y29uc3QgZT1sW3NdLHQ9bFtzKzFdLGk9bFtzKzJdO2Fbcl09NDI3ODE5MDA4MHxlO2FbcisxXT1lPj4+MjR8dDw8OHw0Mjc4MTkwMDgwO2FbcisyXT10Pj4+MTZ8aTw8MTZ8NDI3ODE5MDA4MDthW3IrM109aT4+Pjh8NDI3ODE5MDA4MH1mb3IobGV0IGk9NCpzLG49dCtvO2k8bjtpKz0zKWFbcisrXT1lW2ldfGVbaSsxXTw8OHxlW2krMl08PDE2fDQyNzgxOTAwODB9ZWxzZXtmb3IoO3M8Yy0yO3MrPTMscis9NCl7Y29uc3QgZT1sW3NdLHQ9bFtzKzFdLGk9bFtzKzJdO2Fbcl09MjU1fGU7YVtyKzFdPWU8PDI0fHQ+Pj44fDI1NTthW3IrMl09dDw8MTZ8aT4+PjE2fDI1NTthW3IrM109aTw8OHwyNTV9Zm9yKGxldCBpPTQqcyxuPXQrbztpPG47aSs9MylhW3IrK109ZVtpXTw8MjR8ZVtpKzFdPDwxNnxlW2krMl08PDh8MjU1fXJldHVybntzcmNQb3M6dCtvLGRlc3RQb3M6cn19KGUpfXJldHVybiBudWxsfWZ1bmN0aW9uIGNvbnZlcnRCbGFja0FuZFdoaXRlVG9SR0JBKHtzcmM6ZSxzcmNQb3M6dD0wLGRlc3Q6YSx3aWR0aDpyLGhlaWdodDppLG5vbkJsYWNrQ29sb3I6bj00Mjk0OTY3Mjk1LGludmVyc2VEZWNvZGU6cz0hMX0pe2NvbnN0IG89RmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4/NDI3ODE5MDA4MDoyNTUsW2MsbF09cz9bbixvXTpbbyxuXSxoPXI+PjMsdT03JnIsZD1lLmxlbmd0aDthPW5ldyBVaW50MzJBcnJheShhLmJ1ZmZlcik7bGV0IGY9MDtmb3IobGV0IHI9MDtyPGk7cisrKXtmb3IoY29uc3Qgcj10K2g7dDxyO3QrKyl7Y29uc3Qgcj10PGQ/ZVt0XToyNTU7YVtmKytdPTEyOCZyP2w6YzthW2YrK109NjQmcj9sOmM7YVtmKytdPTMyJnI/bDpjO2FbZisrXT0xNiZyP2w6YzthW2YrK109OCZyP2w6YzthW2YrK109NCZyP2w6YzthW2YrK109MiZyP2w6YzthW2YrK109MSZyP2w6Y31pZigwPT09dSljb250aW51ZTtjb25zdCByPXQ8ZD9lW3QrK106MjU1O2ZvcihsZXQgZT0wO2U8dTtlKyspYVtmKytdPXImMTw8Ny1lP2w6Y31yZXR1cm57c3JjUG9zOnQsZGVzdFBvczpmfX1jbGFzcyBJbWFnZVJlc2l6ZXJ7c3RhdGljI089MjA0ODtzdGF0aWMjRD1GZWF0dXJlVGVzdC5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZDtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuX2ltZ0RhdGE9ZTt0aGlzLl9pc01hc2s9dH1zdGF0aWMgZ2V0IGNhblVzZUltYWdlRGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiY2FuVXNlSW1hZ2VEZWNvZGVyIix0aGlzLiNEP0ltYWdlRGVjb2Rlci5pc1R5cGVTdXBwb3J0ZWQoImltYWdlL2JtcCIpOlByb21pc2UucmVzb2x2ZSghMSkpfXN0YXRpYyBuZWVkc1RvQmVSZXNpemVkKGUsdCl7aWYoZTw9dGhpcy4jTyYmdDw9dGhpcy4jTylyZXR1cm4hMTtjb25zdHtNQVhfRElNOmF9PXRoaXM7aWYoZT5hfHx0PmEpcmV0dXJuITA7Y29uc3Qgcj1lKnQ7aWYodGhpcy5faGFzTWF4QXJlYSlyZXR1cm4gcj50aGlzLk1BWF9BUkVBO2lmKHI8dGhpcy4jTyoqMilyZXR1cm4hMTtpZih0aGlzLl9hcmVHb29kRGltcyhlLHQpKXt0aGlzLiNPPU1hdGgubWF4KHRoaXMuI08sTWF0aC5mbG9vcihNYXRoLnNxcnQoZSp0KSkpO3JldHVybiExfXRoaXMuI089dGhpcy5fZ3Vlc3NNYXgodGhpcy4jTyxhLDEyOCwwKTtyZXR1cm4gcj4odGhpcy5NQVhfQVJFQT10aGlzLiNPKioyKX1zdGF0aWMgZ2V0UmVkdWNlUG93ZXJGb3JKUFgoZSx0LGEpe2NvbnN0IHI9ZSp0LGk9MioqMzAvKDQqYSk7aWYoIXRoaXMubmVlZHNUb0JlUmVzaXplZChlLHQpKXJldHVybiByPmk/TWF0aC5jZWlsKE1hdGgubG9nMihyL2kpKTowO2NvbnN0e01BWF9ESU06bixNQVhfQVJFQTpzfT10aGlzLG89TWF0aC5tYXgoZS9uLHQvbixNYXRoLnNxcnQoci9NYXRoLm1pbihpLHMpKSk7cmV0dXJuIE1hdGguY2VpbChNYXRoLmxvZzIobykpfXN0YXRpYyBnZXQgTUFYX0RJTSgpe3JldHVybiBzaGFkb3codGhpcywiTUFYX0RJTSIsdGhpcy5fZ3Vlc3NNYXgoMjA0OCw2NTUzNywwLDEpKX1zdGF0aWMgZ2V0IE1BWF9BUkVBKCl7dGhpcy5faGFzTWF4QXJlYT0hMDtyZXR1cm4gc2hhZG93KHRoaXMsIk1BWF9BUkVBIix0aGlzLl9ndWVzc01heCh0aGlzLiNPLHRoaXMuTUFYX0RJTSwxMjgsMCkqKjIpfXN0YXRpYyBzZXQgTUFYX0FSRUEoZSl7aWYoZT49MCl7dGhpcy5faGFzTWF4QXJlYT0hMDtzaGFkb3codGhpcywiTUFYX0FSRUEiLGUpfX1zdGF0aWMgc2V0T3B0aW9ucyh7Y2FudmFzTWF4QXJlYUluQnl0ZXM6ZT0tMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDp0PSExfSl7dGhpcy5faGFzTWF4QXJlYXx8KHRoaXMuTUFYX0FSRUE9ZT4+Mik7dGhpcy4jRD10fXN0YXRpYyBfYXJlR29vZERpbXMoZSx0KXt0cnl7Y29uc3QgYT1uZXcgT2Zmc2NyZWVuQ2FudmFzKGUsdCkscj1hLmdldENvbnRleHQoIjJkIik7ci5maWxsUmVjdCgwLDAsMSwxKTtjb25zdCBpPXIuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGFbM107YS53aWR0aD1hLmhlaWdodD0xO3JldHVybiAwIT09aX1jYXRjaHtyZXR1cm4hMX19c3RhdGljIF9ndWVzc01heChlLHQsYSxyKXtmb3IoO2UrYSsxPHQ7KXtjb25zdCBhPU1hdGguZmxvb3IoKGUrdCkvMiksaT1yfHxhO3RoaXMuX2FyZUdvb2REaW1zKGEsaSk/ZT1hOnQ9YX1yZXR1cm4gZX1zdGF0aWMgYXN
1015bmMgY3JlYXRlSW1hZ2UoZSx0PSExKXtyZXR1cm4gbmV3IEltYWdlUmVzaXplcihlLHQpLl9jcmVhdGVJbWFnZSgpfWFzeW5jIF9jcmVhdGVJbWFnZSgpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse3dpZHRoOnQsaGVpZ2h0OmF9PWU7aWYodCphKjQ+ZGEpe2NvbnN0IGU9dGhpcy4jTSgpO2lmKGUpcmV0dXJuIGV9Y29uc3Qgcj10aGlzLl9lbmNvZGVCTVAoKTtsZXQgaSxuO2lmKGF3YWl0IEltYWdlUmVzaXplci5jYW5Vc2VJbWFnZURlY29kZXIpe2k9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTpyLHR5cGU6ImltYWdlL2JtcCIscHJlZmVyQW5pbWF0aW9uOiExLHRyYW5zZmVyOltyLmJ1ZmZlcl19KTtuPWkuZGVjb2RlKCkuY2F0Y2goZT0+e3dhcm4oYEJNUCBpbWFnZSBkZWNvZGluZyBmYWlsZWQ6ICR7ZX1gKTtyZXR1cm4gY3JlYXRlSW1hZ2VCaXRtYXAobmV3IEJsb2IoW3RoaXMuX2VuY29kZUJNUCgpLmJ1ZmZlcl0se3R5cGU6ImltYWdlL2JtcCJ9KSl9KS5maW5hbGx5KCgpPT57aS5jbG9zZSgpfSl9ZWxzZSBuPWNyZWF0ZUltYWdlQml0bWFwKG5ldyBCbG9iKFtyLmJ1ZmZlcl0se3R5cGU6ImltYWdlL2JtcCJ9KSk7Y29uc3R7TUFYX0FSRUE6cyxNQVhfRElNOm99PUltYWdlUmVzaXplcixjPU1hdGgubWF4KHQvbyxhL28sTWF0aC5zcXJ0KHQqYS9zKSksbD1NYXRoLm1heChjLDIpLGg9TWF0aC5yb3VuZCgxMCooYysxLjI1KSkvMTAvbCx1PU1hdGguZmxvb3IoTWF0aC5sb2cyKGgpKSxkPW5ldyBBcnJheSh1KzIpLmZpbGwoMik7ZFswXT1sO2Quc3BsaWNlKC0xLDEsaC8oMTw8dSkpO2xldCBmPXQsZz1hO2NvbnN0IHA9YXdhaXQgbjtsZXQgbT1wLmltYWdlfHxwO2Zvcihjb25zdCBlIG9mIGQpe2NvbnN0IHQ9ZixhPWc7Zj1NYXRoLmZsb29yKGYvZSktMTtnPU1hdGguZmxvb3IoZy9lKS0xO2NvbnN0IHI9bmV3IE9mZnNjcmVlbkNhbnZhcyhmLGcpO3IuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UobSwwLDAsdCxhLDAsMCxmLGcpO20uY2xvc2UoKTttPXIudHJhbnNmZXJUb0ltYWdlQml0bWFwKCl9ZS5kYXRhPW51bGw7ZS5iaXRtYXA9bTtlLndpZHRoPWY7ZS5oZWlnaHQ9ZztyZXR1cm4gZX0jTSgpe2NvbnN0e19pbWdEYXRhOmV9PXRoaXMse2RhdGE6dCx3aWR0aDphLGhlaWdodDpyLGtpbmQ6aX09ZSxuPWEqcio0LHM9TWF0aC5jZWlsKE1hdGgubG9nMihuL2RhKSksbz1hPj5zLGM9cj4+cztsZXQgbCxoPXI7dHJ5e2w9bmV3IFVpbnQ4QXJyYXkobil9Y2F0Y2h7bGV0IGU9TWF0aC5mbG9vcihNYXRoLmxvZzIobisxKSk7Zm9yKDs7KXRyeXtsPW5ldyBVaW50OEFycmF5KDIqKmUtMSk7YnJlYWt9Y2F0Y2h7ZS09MX1oPU1hdGguZmxvb3IoKDIqKmUtMSkvKDQqYSkpO2NvbnN0IHQ9YSpoKjQ7dDxsLmxlbmd0aCYmKGw9bmV3IFVpbnQ4QXJyYXkodCkpfWNvbnN0IHU9bmV3IFVpbnQzMkFycmF5KGwuYnVmZmVyKSxkPW5ldyBVaW50MzJBcnJheShvKmMpO2xldCBmPTAsZz0wO2NvbnN0IHA9TWF0aC5jZWlsKHIvaCksbT1yJWg9PT0wP3I6ciVoO2ZvcihsZXQgZT0wO2U8cDtlKyspe2NvbnN0IHI9ZTxwLTE/aDptOyh7c3JjUG9zOmZ9PWNvbnZlcnRUb1JHQkEoe2tpbmQ6aSxzcmM6dCxkZXN0OnUsd2lkdGg6YSxoZWlnaHQ6cixpbnZlcnNlRGVjb2RlOnRoaXMuX2lzTWFzayxzcmNQb3M6Zn0pKTtmb3IobGV0IGU9MCx0PXI+PnM7ZTx0O2UrKyl7Y29uc3QgdD11LnN1YmFycmF5KChlPDxzKSphKTtmb3IobGV0IGU9MDtlPG87ZSsrKWRbZysrXT10W2U8PHNdfX1pZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChvLGMpKXtlLmRhdGE9ZDtlLndpZHRoPW87ZS5oZWlnaHQ9YztlLmtpbmQ9TztyZXR1cm4gbnVsbH1jb25zdCBiPW5ldyBPZmZzY3JlZW5DYW52YXMobyxjKTtiLmdldENvbnRleHQoIjJkIix7d2lsbFJlYWRGcmVxdWVudGx5OiEwfSkucHV0SW1hZ2VEYXRhKG5ldyBJbWFnZURhdGEobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGQuYnVmZmVyKSxvLGMpLDAsMCk7ZS5kYXRhPW51bGw7ZS5iaXRtYXA9Yi50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtlLndpZHRoPW87ZS5oZWlnaHQ9YztyZXR1cm4gZX1fZW5jb2RlQk1QKCl7Y29uc3R7d2lkdGg6ZSxoZWlnaHQ6dCxraW5kOmF9PXRoaXMuX2ltZ0RhdGE7bGV0IHIsaT10aGlzLl9pbWdEYXRhLmRhdGEsbj1uZXcgVWludDhBcnJheSgwKSxzPW4sbz0wO3N3aXRjaChhKXtjYXNlIEY6e3I9MTtuPW5ldyBVaW50OEFycmF5KHRoaXMuX2lzTWFzaz9bMjU1LDI1NSwyNTUsMjU1LDAsMCwwLDBdOlswLDAsMCwwLDI1NSwyNTUsMjU1LDI1NV0pO2NvbnN0IGE9ZSs3Pj4zLHM9YSszJi00O2lmKGEhPT1zKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHMqdCk7bGV0IHI9MDtmb3IobGV0IG49MCxvPXQqYTtuPG87bis9YSxyKz1zKWUuc2V0KGkuc3ViYXJyYXkobixuK2EpLHIpO2k9ZX1icmVha31jYXNlIFQ6cj0yNDtpZigzJmUpe2NvbnN0IGE9MyplLHI9YSszJi00LG49ci1hLHM9bmV3IFVpbnQ4QXJyYXkocip0KTtsZXQgbz0wO2ZvcihsZXQgZT0wLHI9dCphO2U8cjtlKz1hKXtjb25zdCB0PWkuc3ViYXJyYXkoZSxlK2EpO2ZvcihsZXQgZT0wO2U8YTtlKz0zKXtzW28rK109dFtlKzJdO3NbbysrXT10W2UrMV07c1tvKytdPXRbZV19bys9bn1pPXN9ZWxzZSBmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKz0zKXtjb25zdCB0PWlbZV07aVtlXT1pW2UrMl07aVtlKzJdPXR9YnJlYWs7Y2FzZSBPOnI9MzI7bz0zO3M9bmV3IFVpbnQ4QXJyYXkoNjgpO2NvbnN0IGE9bmV3IERhdGFWaWV3KHMuYnVmZmVyKTtpZihGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbil7YS5zZXRVaW50MzIoMCwyNTUsITApO2Euc2V0VWludDMyKDQsNjUyODAsITApO2Euc2V0VWludDMyKDgsMTY3MTE2ODAsITApO2Euc2V0VWludDMyKDEyLDQyNzgxOTAwODAsITApfWVsc2V7YS5zZXRVaW50MzIoMCw0Mjc4MTkwMDgwLCEwKTthLnNldFVpbnQzMig0LDE2NzExNjgwLCEwKTthLnNldFVpbnQzMig4LDY1MjgwLCEwKTthLnNldFVpbnQzMigxMiwyNTUsITApfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGZvcm1hdCIpfWxldCBjPTA7Y29uc3QgbD00MCtzLmxlbmd0aCxoPTE0K2wrbi5sZW5ndGgraS5sZW5ndGgsdT1uZXcgVWludDhBcnJheShoKSxkPW5ldyBEYXRhVmlldyh1LmJ1ZmZlcik7ZC5zZXRVaW50MTYoYywxOTc3OCwhMCk7Yys9MjtkLnNldFVpbnQzMihjLGgsITApO2MrPTQ7ZC5zZXRVaW50MzIoYywwLCEwKTtjKz00O2Quc2V0VWludDMyKGMsMTQrbCtuLmxlbmd0aCwhMCk7Yys9NDtkLnNldFVpbnQzMihjLGwsITApO2MrPTQ7ZC5zZXRJbnQzMihjLGUsITApO2MrPTQ7ZC5zZXRJbnQzMihjLC10LCEwKTtjKz00O2Quc2V0VWludDE2KGMsMSwhMCk7Yys9MjtkLnNldFVpbnQxNihjLHIsITApO2MrPTI7ZC5zZXRVaW50MzIoYyxvLCEwKTtjKz00O2Quc2V0VWludDMyKGMsMCwhMCk7Yys9NDtkLnNldEludDMyKGMsMCwhMCk7Yys9NDtkLnNldEludDMyKGMsMCwhMCk7Yys9NDtkLnNldFVpbnQzMihjLG4ubGVuZ3RoLzQsITApO2MrPTQ7ZC5zZXRVaW50MzIoYywwLCEwKTtjKz00O3Uuc2V0KHMsYyk7Yys9cy5sZW5ndGg7dS5zZXQobixjKTtjKz1uLmxlbmd0aDt1LnNldChpLGMpO3JldHVybiB1fX1jb25zdCBDYT1uZXcgVWludDhBcnJheSgwKTtjbGFzcyBEZWNvZGVTdHJlYW0gZXh0ZW5kcyBCYXNlU3RyZWFte2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fcmF3TWluQnVmZmVyTGVuZ3RoPWV8fDA7dGhpcy5wb3M9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wO3RoaXMuZW9mPSExO3RoaXMuYnVmZmVyPUNhO3RoaXMubWluQnVmZmVyTGVuZ3RoPTUxMjtpZihlKWZvcig7dGhpcy5taW5CdWZmZXJMZW5ndGg8ZTspdGhpcy5taW5CdWZmZXJMZW5ndGgqPTJ9Z2V0IGlzRW1wdHkoKXtmb3IoOyF0aGlzLmVvZiYmMD09PXRoaXMuYnVmZmVyTGVuZ3RoOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiAwPT09dGhpcy5idWZmZXJMZW5ndGh9ZW5zdXJlQnVmZmVyKGUpe2NvbnN0IHQ9dGhpcy5idWZmZXI7aWYoZTw9dC5ieXRlTGVuZ3RoKXJldHVybi
101B0O2xldCBhPXRoaXMubWluQnVmZmVyTGVuZ3RoO2Zvcig7YTxlOylhKj0yO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoYSk7ci5zZXQodCk7cmV0dXJuIHRoaXMuYnVmZmVyPXJ9Z2V0Qnl0ZSgpe2NvbnN0IGU9dGhpcy5wb3M7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw9ZTspe2lmKHRoaXMuZW9mKXJldHVybi0xO3RoaXMucmVhZEJsb2NrKCl9cmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zKytdfWdldEJ5dGVzKGUsdD1udWxsKXtjb25zdCBhPXRoaXMucG9zO2xldCByO2lmKGUpe3RoaXMuZW5zdXJlQnVmZmVyKGErZSk7cj1hK2U7Zm9yKDshdGhpcy5lb2YmJnRoaXMuYnVmZmVyTGVuZ3RoPHI7KXRoaXMucmVhZEJsb2NrKHQpO2NvbnN0IGk9dGhpcy5idWZmZXJMZW5ndGg7cj5pJiYocj1pKX1lbHNle2Zvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jayh0KTtyPXRoaXMuYnVmZmVyTGVuZ3RofXRoaXMucG9zPXI7cmV0dXJuIHRoaXMuYnVmZmVyLnN1YmFycmF5KGEscil9YXN5bmMgZ2V0SW1hZ2VEYXRhKGUsdCl7aWYoIXRoaXMuY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXIpcmV0dXJuIHRoaXMuaXNBc3luY0RlY29kZXI/dGhpcy5kZWNvZGVJbWFnZShudWxsLHQpOnRoaXMuZ2V0Qnl0ZXMoZSx0KTtjb25zdCBhPWF3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKTtyZXR1cm4gdGhpcy5kZWNvZGVJbWFnZShhLHQpfXJlc2V0KCl7dGhpcy5wb3M9MH1tYWtlU3ViU3RyZWFtKGUsdCxhPW51bGwpe2lmKHZvaWQgMD09PXQpZm9yKDshdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCk7ZWxzZXtjb25zdCBhPWUrdDtmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPD1hJiYhdGhpcy5lb2Y7KXRoaXMucmVhZEJsb2NrKCl9cmV0dXJuIG5ldyBTdHJlYW0odGhpcy5idWZmZXIsZSx0LGEpfWdldEJhc2VTdHJlYW1zKCl7cmV0dXJuIHRoaXMuc3RyZWFtP3RoaXMuc3RyZWFtLmdldEJhc2VTdHJlYW1zKCk6bnVsbH1jbG9uZSgpe2Zvcig7IXRoaXMuZW9mOyl0aGlzLnJlYWRCbG9jaygpO3JldHVybiBuZXcgU3RyZWFtKHRoaXMuYnVmZmVyLHRoaXMuc3RhcnQsdGhpcy5lbmQtdGhpcy5zdGFydCx0aGlzLmRpY3QuY2xvbmUoKSl9fWNsYXNzIFN0cmVhbXNTZXF1ZW5jZVN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQ9bnVsbCl7ZT1lLmZpbHRlcihlPT5lIGluc3RhbmNlb2YgQmFzZVN0cmVhbSk7bGV0IGE9MDtmb3IoY29uc3QgdCBvZiBlKWErPXQgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0/dC5fcmF3TWluQnVmZmVyTGVuZ3RoOnQubGVuZ3RoO3N1cGVyKGEpO3RoaXMuc3RyZWFtcz1lO3RoaXMuX29uRXJyb3I9dH1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtcztpZigwPT09ZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUuc2hpZnQoKTtsZXQgYTt0cnl7YT10LmdldEJ5dGVzKCl9Y2F0Y2goZSl7aWYodGhpcy5fb25FcnJvcil7dGhpcy5fb25FcnJvcihlLHQuZGljdD8ub2JqSWQpO3JldHVybn10aHJvdyBlfWNvbnN0IHI9dGhpcy5idWZmZXJMZW5ndGgsaT1yK2EubGVuZ3RoO3RoaXMuZW5zdXJlQnVmZmVyKGkpLnNldChhLHIpO3RoaXMuYnVmZmVyTGVuZ3RoPWl9Z2V0QmFzZVN0cmVhbXMoKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHRoaXMuc3RyZWFtcyl7Y29uc3QgYT10LmdldEJhc2VTdHJlYW1zKCk7YSYmZS5wdXNoKC4uLmEpfXJldHVybiBlLmxlbmd0aD4wP2U6bnVsbH19Y2xhc3MgQ29sb3JTcGFjZVV0aWxze3N0YXRpYyBwYXJzZSh7Y3M6ZSx4cmVmOnQscmVzb3VyY2VzOmE9bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6cixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpuLGFzeW5jSWZOb3RDYWNoZWQ6cz0hMX0pe2NvbnN0IG89e3hyZWY6dCxyZXNvdXJjZXM6YSxwZGZGdW5jdGlvbkZhY3Rvcnk6cixnbG9iYWxDb2xvclNwYWNlQ2FjaGU6aSxsb2NhbENvbG9yU3BhY2VDYWNoZTpufTtsZXQgYyxsLGg7aWYoZSBpbnN0YW5jZW9mIFJlZil7bD1lO2NvbnN0IGE9aS5nZXRCeVJlZihsKXx8bi5nZXRCeVJlZihsKTtpZihhKXJldHVybiBhO2U9dC5mZXRjaChlKX1pZihlIGluc3RhbmNlb2YgTmFtZSl7Yz1lLm5hbWU7Y29uc3QgdD1uLmdldEJ5TmFtZShjKTtpZih0KXJldHVybiB0fXRyeXtoPXRoaXMuI1IoZSxvKX1jYXRjaChlKXtpZihzJiYhKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbikpcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO3Rocm93IGV9aWYoY3x8bCl7bi5zZXQoYyxsLGgpO2wmJmkuc2V0KG51bGwsbCxoKX1yZXR1cm4gcz9Qcm9taXNlLnJlc29sdmUoaCk6aH1zdGF0aWMjQihlLHQpe2NvbnN0e2dsb2JhbENvbG9yU3BhY2VDYWNoZTphfT10O2xldCByO2lmKGUgaW5zdGFuY2VvZiBSZWYpe3I9ZTtjb25zdCB0PWEuZ2V0QnlSZWYocik7aWYodClyZXR1cm4gdH1jb25zdCBpPXRoaXMuI1IoZSx0KTtyJiZhLnNldChudWxsLHIsaSk7cmV0dXJuIGl9c3RhdGljI1IoZSx0KXtjb25zdHt4cmVmOmEscmVzb3VyY2VzOnIscGRmRnVuY3Rpb25GYWN0b3J5OmksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOm59PXQ7aWYoKGU9YS5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnJnYjtjYXNlIkRldmljZVJHQkEiOnJldHVybiB0aGlzLnJnYmE7Y2FzZSJDTVlLIjpjYXNlIkRldmljZUNNWUsiOnJldHVybiB0aGlzLmNteWs7Y2FzZSJQYXR0ZXJuIjpyZXR1cm4gbmV3IFBhdHRlcm5DUyhudWxsKTtkZWZhdWx0OmlmKHIgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBhPXIuZ2V0KCJDb2xvclNwYWNlIik7aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHI9YS5nZXQoZS5uYW1lKTtpZihyKXtpZihyIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gdGhpcy4jUihyLHQpO2U9cjticmVha319fXdhcm4oYFVucmVjb2duaXplZCBDb2xvclNwYWNlOiAke2UubmFtZX1gKTtyZXR1cm4gdGhpcy5ncmF5fWlmKEFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IHI9YS5mZXRjaElmUmVmKGVbMF0pLm5hbWU7bGV0IHMsbyxjLGwsaCx1O3N3aXRjaC
101hyKXtjYXNlIkciOmNhc2UiRGV2aWNlR3JheSI6cmV0dXJuIHRoaXMuZ3JheTtjYXNlIlJHQiI6Y2FzZSJEZXZpY2VSR0IiOnJldHVybiB0aGlzLnJnYjtjYXNlIkNNWUsiOmNhc2UiRGV2aWNlQ01ZSyI6cmV0dXJuIHRoaXMuY215aztjYXNlIkNhbEdyYXkiOnM9YS5mZXRjaElmUmVmKGVbMV0pO2w9cy5nZXRBcnJheSgiV2hpdGVQb2ludCIpO2g9cy5nZXRBcnJheSgiQmxhY2tQb2ludCIpO3U9cy5nZXQoIkdhbW1hIik7cmV0dXJuIG5ldyBDYWxHcmF5Q1MobCxoLHUpO2Nhc2UiQ2FsUkdCIjpzPWEuZmV0Y2hJZlJlZihlWzFdKTtsPXMuZ2V0QXJyYXkoIldoaXRlUG9pbnQiKTtoPXMuZ2V0QXJyYXkoIkJsYWNrUG9pbnQiKTt1PXMuZ2V0QXJyYXkoIkdhbW1hIik7Y29uc3QgZD1zLmdldEFycmF5KCJNYXRyaXgiKTtyZXR1cm4gbmV3IENhbFJHQkNTKGwsaCx1LGQpO2Nhc2UiSUNDQmFzZWQiOmNvbnN0IGY9ZVsxXWluc3RhbmNlb2YgUmVmO2lmKGYpe2NvbnN0IHQ9bi5nZXRCeVJlZihlWzFdKTtpZih0KXJldHVybiB0fWNvbnN0IGc9YS5mZXRjaElmUmVmKGVbMV0pLHA9Zy5kaWN0O289cC5nZXQoIk4iKTtpZihJY2NDb2xvclNwYWNlLmlzVXNhYmxlKXRyeXtjb25zdCB0PW5ldyBJY2NDb2xvclNwYWNlKGcuZ2V0Qnl0ZXMoKSwiSUNDQmFzZWQiLG8pO2YmJm4uc2V0KG51bGwsZVsxXSx0KTtyZXR1cm4gdH1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgdDt3YXJuKGBJQ0NCYXNlZCBjb2xvciBzcGFjZSAoJHtlWzFdfSk6ICIke3R9Ii5gKX1jb25zdCBtPXAuZ2V0UmF3KCJBbHRlcm5hdGUiKTtpZihtKXtjb25zdCBlPXRoaXMuI0IobSx0KTtpZihlLm51bUNvbXBzPT09bylyZXR1cm4gZTt3YXJuKCJJQ0NCYXNlZCBjb2xvciBzcGFjZTogSWdub3JpbmcgaW5jb3JyZWN0IC9BbHRlcm5hdGUgZW50cnkuIil9aWYoMT09PW8pcmV0dXJuIHRoaXMuZ3JheTtpZigzPT09bylyZXR1cm4gdGhpcy5yZ2I7aWYoND09PW8pcmV0dXJuIHRoaXMuY215azticmVhaztjYXNlIlBh
101dHRlcm4iOmM9ZVsxXXx8bnVsbDtjJiYoYz10aGlzLiNCKGMsdCkpO3JldHVybiBuZXcgUGF0dGVybkNTKGMpO2Nhc2UiSSI6Y2FzZSJJbmRleGVkIjpjPXRoaXMuI0IoZVsxXSx0KTtjb25zdCBiPU1hdGhDbGFtcChhLmZldGNoSWZSZWYoZVsyXSksMCwyNTUpLHk9YS5mZXRjaElmUmVmKGVbM10pO3JldHVybiBuZXcgSW5kZXhlZENTKGMsYix5KTtjYXNlIlNlcGFyYXRpb24iOmNhc2UiRGV2aWNlTiI6Y29uc3Qgdz1hLmZldGNoSWZSZWYoZVsxXSk7bz1BcnJheS5pc0FycmF5KHcpP3cubGVuZ3RoOjE7Yz10aGlzLiNCKGVbMl0sdCk7Y29uc3QgeD1pLmNyZWF0ZShlWzNdKTtyZXR1cm4gbmV3IEFsdGVybmF0ZUNTKG8sYyx4KTtjYXNlIkxhYiI6cz1hLmZldGNoSWZSZWYoZVsxXSk7bD1zLmdldEFycmF5KCJXaGl0ZVBvaW50Iik7aD1zLmdldEFycmF5KCJCbGFja1BvaW50Iik7Y29uc3QgUz1zLmdldEFycmF5KCJSYW5nZSIpO3JldHVybiBuZXcgTGFiQ1MobCxoLFMpO2RlZmF1bHQ6d2FybihgVW5pbXBsZW1lbnRlZCBDb2xvclNwYWNlIG9iamVjdDogJHtyfWApO3JldHVybiB0aGlzLmdyYXl9fXdhcm4oYFVucmVjb2duaXplZCBDb2xvclNwYWNlIG9iamVjdDogJHtlfWApO3JldHVybiB0aGlzLmdyYXl9c3RhdGljIGdldCBncmF5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJncmF5IixuZXcgRGV2aWNlR3JheUNTKX1zdGF0aWMgZ2V0IHJnYigpe3JldHVybiBzaGFkb3codGhpcywicmdiIixuZXcgRGV2aWNlUmdiQ1MpfXN0YXRpYyBnZXQgcmdiYSgpe3JldHVybiBzaGFkb3codGhpcywicmdiYSIsbmV3IERldmljZVJnYmFDUyl9c3RhdGljIGdldCBjbXlrKCl7aWYoQ215a0lDQ0Jhc2VkQ1MuaXNVc2FibGUpdHJ5e3JldHVybiBzaGFkb3codGhpcywiY215ayIsbmV3IENteWtJQ0NCYXNlZENTKX1jYXRjaHt3YXJuKCJDTVlLIGZhbGxiYWNrOiBEZXZpY2VDTVlLIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJjbXlrIixuZXcgRGV2aWNlQ215a0NTKX19Y2xhc3MgSnBlZ0Vycm9yIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSnBlZ0Vycm9yIil9fWNsYXNzIEROTE1hcmtlckVycm9yIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLCJETkxNYXJrZXJFcnJvciIpO3RoaXMuc2NhbkxpbmVzPXR9fWNsYXNzIEVPSU1hcmtlckVycm9yIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiRU9JTWFya2VyRXJyb3IiKX19Y29uc3QgdmE9bmV3IFVpbnQ4QXJyYXkoWzAsMSw4LDE2LDksMiwzLDEwLDE3LDI0LDMyLDI1LDE4LDExLDQsNSwxMiwxOSwyNiwzMyw0MCw0OCw0MSwzNCwyNywyMCwxMyw2LDcsMTQsMjEsMjgsMzUsNDIsNDksNTYsNTcsNTAsNDMsMzYsMjksMjIsMTUsMjMsMzAsMzcsNDQsNTEsNTgsNTksNTIsNDUsMzgsMzEsMzksNDYsNTMsNjAsNjEsNTQsNDcsNTUsNjIsNjNdKSxGYT00MDE3LElhPTc5OSxUYT0zNDA2LE9hPTIyNzYsRGE9MTU2NyxNYT0zNzg0LFJhPTU3OTMsQmE9Mjg5NjtmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShlLHQpe2xldCBhLHIsaT0wLG49MTY7Zm9yKDtuPjAmJiFlW24tMV07KW4tLTtjb25zdCBzPVt7Y2hpbGRyZW46W10saW5kZXg6MH1dO2xldCBvLGM9c1swXTtmb3IoYT0wO2E8bjthKyspe2ZvcihyPTA7cjxlW2FdO3IrKyl7Yz1zLnBvcCgpO2MuY2hpbGRyZW5bYy5pbmRleF09dFtpXTtmb3IoO2MuaW5kZXg+MDspYz1zLnBvcCgpO2MuaW5kZXgrKztzLnB1c2goYyk7Zm9yKDtzLmxlbmd0aDw9YTspe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b31pKyt9aWYoYSsxPG4pe3MucHVzaChvPXtjaGlsZHJlbjpbXSxpbmRleDowfSk7Yy5jaGlsZHJlbltjLmluZGV4XT1vLmNoaWxkcmVuO2M9b319cmV0dXJuIHNbMF0uY2hpbGRyZW59ZnVuY3Rpb24gZ2V0QmxvY2tCdWZmZXJPZmZzZXQoZSx0LGEpe3JldHVybiA2NCooKGUuYmxvY2tzUGVyTGluZSsxKSp0K2EpfWZ1bmN0aW9uIGRlY29kZVNjYW4oZSx0LGEscixpLG4scyxvLGMsbD0hMSl7Y29uc3QgaD1hLm1jdXNQZXJMaW5lLHU9YS5wcm9ncmVzc2l2ZSxkPXQ7bGV0IGY9MCxnPTA7ZnVuY3Rpb24gcmVhZEJpdCgpe2lmKGc+MCl7Zy0tO3JldHVybiBmPj5nJjF9Zj1lW3QrK107aWYoMjU1PT09Zil7Y29uc3Qgcj1lW3QrK107aWYocil7aWYoMjIwPT09ciYmbCl7Y29uc3Qgcj1yZWFkVWludDE2KGUsdCs9Mik7dCs9MjtpZihyPjAmJnIhPT1hLnNjYW5MaW5lcyl0aHJvdyBuZXcgRE5MTWFya2VyRXJyb3IoIkZvdW5kIEROTCBtYXJrZXIgKDB4RkZEQykgd2hpbGUgcGFyc2luZyBzY2FuIGRhdGEiLHIpfWVsc2UgaWYoMjE3PT09cil7aWYobCl7Y29uc3QgZT15Kig4PT09YS5wcmVjaXNpb24/ODowKTtpZihlPjAmJk1hdGgucm91bmQoYS5zY2FuTGluZXMvZSk+PTUpdGhyb3cgbmV3IEROTE1hcmtlckVycm9yKCJGb3VuZCBFT0kgbWFya2VyICgweEZGRDkpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhLCBwb3NzaWJseSBjYXVzZWQgYnkgaW5jb3JyZWN0IGBzY2FuTGluZXNgIHBhcmFtZXRlciIsZSl9dGhyb3cgbmV3IEVPSU1hcmtlckVycm9yKCJGb3VuZCBFT0kgbWFya2VyICgweEZGRDkpIHdoaWxlIHBhcnNpbmcgc2NhbiBkYXRhIil9dGhyb3cgbmV3IEpwZWdFcnJvcihgdW5leHBlY3RlZCBtYXJrZXIgJHsoZjw8OHxyKS50b1N0cmluZygxNil9YCl9fWc9NztyZXR1cm4gZj4+Pjd9ZnVuY3Rpb24gZGVjb2RlSHVmZm1hbihlKXtsZXQgdD1lO2Zvcig7Oyl7dD10W3JlYWRCaXQoKV07c3dpdGNoKHR5cGVvZiB0KXtjYXNlIm51bWJlciI6cmV0dXJuIHQ7Y2FzZSJvYmplY3QiOmNvbnRpbnVlfXRocm93IG5ldyBKcGVnRXJyb3IoImludmFsaWQgaHVmZm1hbiBzZXF1ZW5jZSIpfX1mdW5jdGlvbiByZWNlaXZlKGUpe2xldCB0PTA7Zm9yKDtlPjA7KXt0PXQ8PDF8cmVhZEJpdCgpO2UtLX1yZXR1cm4gdH1mdW5jdGlvbiByZWNlaXZlQW5kRXh0ZW5kKGUpe2lmKDE9PT1lKXJldHVybiAxPT09cmVhZEJpdCgpPzE6LTE7Y29uc3QgdD1yZWNlaXZlKGUpO3JldHVybiB0Pj0xPDxlLTE/dDp0KygtMTw8ZSkrMX1sZXQgcD0wO2xldCBtLGI9MDtsZXQgeT0wO2Z1bmN0aW9uIGRlY29kZU1jdShlLHQsYSxyLGkpe2NvbnN0IG49YSVoO3k9KGEvaHwwKSplLnYrcjtjb25zdCBzPW4qZS5oK2k7dChlLGdldEJsb2NrQnVmZmVyT2Zmc2V0KGUseSxzKSl9ZnVuY3Rpb24gZGVjb2RlQmxvY2soZSx0LGEpe3k9YS9lLmJsb2Nrc1BlckxpbmV8MDtjb25zdCByPWElZS5ibG9ja3NQZXJMaW5lO3QoZSxnZXRCbG9ja0J1ZmZlck9mZnNldChlLHkscikpfWNvbnN0IHc9ci5sZW5ndGg7bGV0IHgsUyxrLEMsdixGO0Y9dT8wPT09bj8wPT09bz9mdW5jdGlvbiBkZWNvZGVEQ0ZpcnN0KGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpPDxjO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cn06ZnVuY3Rpb24gZGVjb2RlRENTdWNjZXNzaXZlKGUsdCl7ZS5ibG9ja0RhdGFbdF18PXJlYWRCaXQoKTw8Y306MD09PW8/ZnVuY3Rpb24gZGVjb2RlQUNGaXJzdChlLHQpe2lmKHA+MCl7cC0tO3JldHVybn1sZXQgYT1uO2NvbnN0IHI9cztmb3IoO2E8PXI7KXtjb25zdCByPWRlY29kZUh1ZmZtYW4oZS5odWZmbWFuVGFibGVBQyksaT0xNSZyLG49cj4+NDtpZigwPT09aSl7aWYobjwxNSl7cD1yZWNlaXZlKG4pKygxPDxuKS0xO2JyZWFrfWErPTE2O2NvbnRpbnVlfWErPW47Y29uc3Qgcz12YVthXTtlLmJsb2NrRGF0YVt0K3NdPXJlY2VpdmVBbmRFeHRlbmQoaSkqKDE8PGMpO2ErK319OmZ1bmN0aW9uIGRlY29kZUFDU3VjY2Vzc2l2ZShlLHQpe2xldCBhPW47Y29uc3Qgcj1zO2xldCBpLG8sbD0wO2Zvcig7YTw9cjspe2NvbnN0IHI9dCt2YVthXSxuPWUuYmxvY2tEYXRhW3JdPDA/LTE6MTtzd2l0Y2goYil7Y2FzZSAwOm89ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKTtpPTE1Jm87bD1vPj40O2lmKDA9PT1pKWlmKGw8MTUpe3A9cmVjZWl2ZShsKSsoMTw8bCk7Yj00fWVsc2V7bD0xNjtiPTF9ZWxzZXtpZigxIT09aSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJpbnZhbGlkIEFDbiBlbmNvZGluZyIpO209cmVjZWl2ZUFuZEV4dGVuZChpKTtiPWw/MjozfWNvbnRpbnVlO2Nhc2UgMTpjYXNlIDI6aWYoZS5ibG9ja0RhdGFbcl0pZS5ibG9ja0RhdGFbcl0rPW4qKHJlYWRCaXQoKTw8Yyk7ZWxzZXtsLS07MD09PWwmJihiPTI9PT1iPzM6MCl9YnJlYWs7Y2FzZSAzOmlmKGUuYmxvY2tEYXRhW3JdKWUuYmxvY2tEYXRhW3JdKz1uKihyZWFkQml0KCk8PGMpO2Vsc2V7ZS5ibG9ja0RhdGFbcl09bTw8YztiPTB9YnJlYWs7Y2FzZSA0OmUuYmxvY2tEYXRhW3JdJiYoZS5ibG9ja0RhdGFbcl0rPW4qKHJlYWRCaXQoKTw8YykpfWErK31pZig0PT09Yil7cC0tOzA9PT1wJiYoYj0wKX19OmZ1bmN0aW9uIGRlY29kZUJhc2VsaW5lKGUsdCl7Y29uc3QgYT1kZWNvZGVIdWZmbWFuKGUuaHVmZm1hblRhYmxlREMpLHI9MD09PWE/MDpyZWNlaXZlQW5kRXh0ZW5kKGEpO2UuYmxvY2tEYXRhW3RdPWUucHJlZCs9cjtsZXQgaT0xO2Zvcig7aTw2NDspe2NvbnN0IGE9ZGVjb2RlSHVmZm1hbihlLmh1ZmZtYW5UYWJsZUFDKSxyPTE1JmEsbj1hPj40O2lmKDA9PT1yKXtpZihuPDE1KWJyZWFrO2krPTE2O2NvbnRpbnVlfWkrPW47Y29uc3Qgcz12YVtpXTtlLmJsb2NrRGF0YVt0K3NdPXJlY2VpdmVBbmRFeHRlbmQocik7aSsrfX07bGV0IFQsTz0wO2NvbnN0IEQ9MT09PXc/clswXS5ibG9ja3NQZXJMaW5lKnJbMF0uYmxvY2tzUGVyQ29sdW1uOmgqYS5tY3VzUGVyQ29sdW1uO2xldCBNLFI7Zm9yKDtPPD1EOyl7Y29uc3QgYT1pP01hdGgubWluKEQtTyxpKTpEO2lmKGE+MCl7Zm9yK
101FM9MDtTPHc7UysrKXJbU10ucHJlZD0wO3A9MDtpZigxPT09dyl7eD1yWzBdO2Zvcih2PTA7djxhO3YrKyl7ZGVjb2RlQmxvY2soeCxGLE8pO08rK319ZWxzZSBmb3Iodj0wO3Y8YTt2Kyspe2ZvcihTPTA7Uzx3O1MrKyl7eD1yW1NdO009eC5oO1I9eC52O2ZvcihrPTA7azxSO2srKylmb3IoQz0wO0M8TTtDKyspZGVjb2RlTWN1KHgsRixPLGssQyl9TysrfX1nPTA7VD1maW5kTmV4dEZpbGVNYXJrZXIoZSx0KTtpZighVClicmVhaztpZihULmludmFsaWQpe3dhcm4oYGRlY29kZVNjYW4gLSAke2E+MD8idW5leHBlY3RlZCI6ImV4Y2Vzc2l2ZSJ9IE1DVSBkYXRhLCBjdXJyZW50IG1hcmtlciBpczogJHtULmludmFsaWR9YCk7dD1ULm9mZnNldH1pZighKFQubWFya2VyPj02NTQ4OCYmVC5tYXJrZXI8PTY1NDk1KSlicmVhazt0Kz0yfXJldHVybiB0LWR9ZnVuY3Rpb24gcXVhbnRpemVBbmRJbnZlcnNlKGUsdCxhKXtjb25zdCByPWUucXVhbnRpemF0aW9uVGFibGUsaT1lLmJsb2NrRGF0YTtsZXQgbixzLG8sYyxsLGgsdSxkLGYsZyxwLG0sYix5LHcseCxTO2lmKCFyKXRocm93IG5ldyBKcGVnRXJyb3IoIm1pc3NpbmcgcmVxdWlyZWQgUXVhbnRpemF0aW9uIFRhYmxlLiIpO2ZvcihsZXQgZT0wO2U8NjQ7ZSs9OCl7Zj1pW3QrZV07Zz1pW3QrZSsxXTtwPWlbdCtlKzJdO209aVt0K2UrM107Yj1pW3QrZSs0XTt5PWlbdCtlKzVdO3c9aVt0K2UrNl07eD1pW3QrZSs3XTtmKj1yW2VdO2lmKDAhPT0oZ3xwfG18Ynx5fHd8eCkpe2cqPXJbZSsxXTtwKj1yW2UrMl07bSo9cltlKzNdO2IqPXJbZSs0XTt5Kj1yW2UrNV07dyo9cltlKzZdO3gqPXJbZSs3XTtuPVJhKmYrMTI4Pj44O3M9UmEqYisxMjg+Pjg7bz1wO2M9dztsPUJhKihnLXgpKzEyOD4+ODtkPUJhKihnK3gpKzEyOD4+ODtoPW08PDQ7dT15PDw0O249bitzKzE+PjE7cz1uLXM7Uz1vKk1hK2MqRGErMTI4Pj44O289bypEYS1jKk1hKzEyOD4+ODtjPVM7bD1sK3UrMT4+MTt1PWwtdTtkPWQraCsxPj4xO2g9ZC1oO249bitjKzE+PjE7Yz1uLWM7cz1zK28rMT4+MTtvPXMtbztTPWwqT2ErZCpUYSsyMDQ4Pj4xMjtsPWwqVGEtZCpPYSsyMDQ4Pj4xMjtkPVM7Uz1oKklhK3UqRmErMjA0OD4+MTI7aD1oKkZhLXUqSWErMjA0OD4+MTI7dT1TO2FbZV09bitkO2FbZSs3XT1uLWQ7YVtlKzFdPXMrdTthW2UrNl09cy11O2FbZSsyXT1vK2g7YVtlKzVdPW8taDthW2UrM109YytsO2FbZSs0XT1jLWx9ZWxzZXtTPVJhKmYrNTEyPj4xMDthW2VdPVM7YVtlKzFdPVM7YVtlKzJdPVM7YVtlKzNdPVM7YVtlKzRdPVM7YVtlKzVdPVM7YVtlKzZdPVM7YVtlKzddPVN9fWZvcihsZXQgZT0wO2U8ODsrK2Upe2Y9YVtlXTtnPWFbZSs4XTtwPWFbZSsxNl07bT1hW2UrMjRdO2I9YVtlKzMyXTt5PWFbZSs0MF07dz1hW2UrNDhdO3g9YVtlKzU2XTtpZigwIT09KGd8cHxtfGJ8eXx3fHgpKXtuPVJhKmYrMjA0OD4+MTI7cz1SYSpiKzIwNDg+PjEyO289
101cDtjPXc7bD1CYSooZy14KSsyMDQ4Pj4xMjtkPUJhKihnK3gpKzIwNDg+PjEyO2g9bTt1PXk7bj00MTEyKyhuK3MrMT4+MSk7cz1uLXM7Uz1vKk1hK2MqRGErMjA0OD4+MTI7bz1vKkRhLWMqTWErMjA0OD4+MTI7Yz1TO2w9bCt1KzE+PjE7dT1sLXU7ZD1kK2grMT4+MTtoPWQtaDtuPW4rYysxPj4xO2M9bi1jO3M9cytvKzE+PjE7bz1zLW87Uz1sKk9hK2QqVGErMjA0OD4+MTI7bD1sKlRhLWQqT2ErMjA0OD4+MTI7ZD1TO1M9aCpJYSt1KkZhKzIwNDg+PjEyO2g9aCpGYS11KklhKzIwNDg+PjEyO3U9UztmPW4rZDt4PW4tZDtnPXMrdTt3PXMtdTtwPW8raDt5PW8taDttPWMrbDtiPWMtbDtmPDE2P2Y9MDpmPj00MDgwP2Y9MjU1OmY+Pj00O2c8MTY/Zz0wOmc+PTQwODA/Zz0yNTU6Zz4+PTQ7cDwxNj9wPTA6cD49NDA4MD9wPTI1NTpwPj49NDttPDE2P209MDptPj00MDgwP209MjU1Om0+Pj00O2I8MTY/Yj0wOmI+PTQwODA/Yj0yNTU6Yj4+PTQ7eTwxNj95PTA6eT49NDA4MD95PTI1NTp5Pj49NDt3PDE2P3c9MDp3Pj00MDgwP3c9MjU1Onc+Pj00O3g8MTY/eD0wOng+PTQwODA/eD0yNTU6eD4+PTQ7aVt0K2VdPWY7aVt0K2UrOF09ZztpW3QrZSsxNl09cDtpW3QrZSsyNF09bTtpW3QrZSszMl09YjtpW3QrZSs0MF09eTtpW3QrZSs0OF09dztpW3QrZSs1Nl09eH1lbHNle1M9UmEqZis4MTkyPj4xNDtTPVM8LTIwNDA/MDpTPj0yMDI0PzI1NTpTKzIwNTY+PjQ7aVt0K2VdPVM7aVt0K2UrOF09UztpW3QrZSsxNl09UztpW3QrZSsyNF09UztpW3QrZSszMl09UztpW3QrZSs0MF09UztpW3QrZSs0OF09UztpW3QrZSs1Nl09U319fWZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShlLHQpe2NvbnN0IGE9dC5ibG9ja3NQZXJMaW5lLHI9dC5ibG9ja3NQZXJDb2x1bW4saT1uZXcgSW50MTZBcnJheSg2NCk7Zm9yKGxldCBlPTA7ZTxyO2UrKylmb3IobGV0IHI9MDtyPGE7cisrKXtxdWFudGl6ZUFuZEludmVyc2UodCxnZXRCbG9ja0J1ZmZlck9mZnNldCh0LGUsciksaSl9cmV0dXJuIHQuYmxvY2tEYXRhfWZ1bmN0aW9uIGZpbmROZXh0RmlsZU1hcmtlcihlLHQsYT10KXtjb25zdCByPWUubGVuZ3RoLTE7bGV0IGk9YTx0P2E6dDtpZih0Pj1yKXJldHVybiBudWxsO2NvbnN0IG49cmVhZFVpbnQxNihlLHQpO2lmKG4+PTY1NDcyJiZuPD02NTUzNClyZXR1cm57aW52YWxpZDpudWxsLG1hcmtlcjpuLG9mZnNldDp0fTtsZXQgcz1yZWFkVWludDE2KGUsaSk7Zm9yKDshKHM+PTY1NDcyJiZzPD02NTUzNCk7KXtpZigrK2k+PXIpcmV0dXJuIG51bGw7cz1yZWFkVWludDE2KGUsaSl9cmV0dXJue2ludmFsaWQ6bi50b1N0cmluZygxNiksbWFya2VyOnMsb2Zmc2V0Oml9fWZ1bmN0aW9uIHByZXBhcmVDb21wb25lbnRzKGUpe2NvbnN0IHQ9TWF0aC5jZWlsKGUuc2FtcGxlc1BlckxpbmUvOC9lLm1heEgpLGE9TWF0aC5jZWlsKGUuc2NhbkxpbmVzLzgvZS5tYXhWKTtmb3IoY29uc3QgciBvZiBlLmNvbXBvbmVudHMpe2NvbnN0IGk9TWF0aC5jZWlsKE1hdGguY2VpbChlLnNhbXBsZXNQZXJMaW5lLzgpKnIuaC9lLm1heEgpLG49TWF0aC5jZWlsKE1hdGguY2VpbChlLnNjYW5MaW5lcy84KSpyLnYvZS5tYXhWKSxzPXQqci5oLG89NjQqKGEqci52KSoocysxKTtyLmJsb2NrRGF0YT1uZXcgSW50MTZBcnJheShvKTtyLmJsb2Nrc1BlckxpbmU9aTtyLmJsb2Nrc1BlckNvbHVtbj1ufWUubWN1c1BlckxpbmU9dDtlLm1jdXNQZXJDb2x1bW49YX1mdW5jdGlvbiByZWFkRGF0YUJsb2NrKGUsdCl7Y29uc3QgYT1yZWFkVWludDE2KGUsdCk7bGV0IHI9KHQrPTIpK2EtMjtjb25zdCBpPWZpbmROZXh0RmlsZU1hcmtlcihlLHIsdCk7aWYoaT8uaW52YWxpZCl7d2FybigicmVhZERhdGFCbG9jayAtIGluY29ycmVjdCBsZW5ndGgsIGN1cnJlbnQgbWFya2VyIGlzOiAiK2kuaW52YWxpZCk7cj1pLm9mZnNldH1jb25zdCBuPWUuc3ViYXJyYXkodCxyKTtyZXR1cm57YXBwRGF0YTpuLG9sZE9mZnNldDp0LG5ld09mZnNldDp0K24ubGVuZ3RofX1mdW5jdGlvbiBza2lwRGF0YShlLHQpe2NvbnN0IGE9cmVhZFVpbnQxNihlLHQpLHI9KHQrPTIpK2EtMixpPWZpbmROZXh0RmlsZU1hcmtlcihlLHIsdCk7cmV0dXJuIGk/LmludmFsaWQ/aS5vZmZzZXQ6cn1jbGFzcyBKcGVnSW1hZ2V7Y29uc3RydWN0b3Ioe2RlY29kZVRyYW5zZm9ybTplPW51bGwsY29sb3JUcmFuc2Zvcm06dD0tMX09e30pe3RoaXMuX2RlY29kZVRyYW5zZm9ybT1lO3RoaXMuX2NvbG9yVHJhbnNmb3JtPXR9c3RhdGljIGNhblVzZUltYWdlRGVjb2RlcihlLHQ9LTEpe2xldCBhPW51bGwscj0wLGk9bnVsbCxuPXJlYWRVaW50MTYoZSxyKTtyKz0yO2lmKDY1NDk2IT09bil0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7bj1yZWFkVWludDE2KGUscik7cis9MjtlOmZvcig7NjU0OTchPT1uOyl7c3dpdGNoKG4pe2Nhc2UgNjU1MDU6Y29uc3R7YXBwRGF0YTp0LG9sZE9mZnNldDpzLG5ld09mZnNldDpvfT1yZWFkRGF0YUJsb2NrKGUscik7cj1vO2lmKDY5PT09dFswXSYmMTIwPT09dFsxXSYmMTA1PT09dFsyXSYmMTAyPT09dFszXSYmMD09PXRbNF0mJjA9PT10WzVdKXtpZihhKXRocm93IG5ldyBKcGVnRXJyb3IoIkR1cGxpY2F0ZSBFWElGLWJsb2NrcyBmb3VuZC4iKTthPXtleGlmU3RhcnQ6cys2LGV4aWZFbmQ6b319bj1yZWFkVWludDE2KGUscik7cis9Mjtjb250aW51ZTtjYXNlIDY1NDcyOmNhc2UgNjU0NzM6Y2FzZSA2NTQ3NDppPWVbcis3XTticmVhayBlO2Nhc2UgNjU1MzU6MjU1IT09ZVtyXSYmci0tfXI9c2tpcERhdGEoZSxyKTtuPXJlYWRVaW50MTYoZSxyKTtyKz0yfXJldHVybiA0PT09aXx8Mz09PWkmJjA9PT10P251bGw6YXx8e319cGFyc2UoZSx7ZG5sU2NhbkxpbmVzOnQ9bnVsbH09e30pe2xldCBhLHIsaT0wLG49bnVsbCxzPW51bGwsbz0wO2NvbnN0IGM9W10sbD1bXSxoPVtdO2xldCB1PXJlYWRVaW50MTYoZSxpKTtpKz0yO2lmKDY1NDk2IT09dSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJTT0kgbm90IGZvdW5kIik7dT1yZWFkVWludDE2KGUsaSk7aSs9MjtlOmZvcig7NjU0OTchPT11Oyl7bGV0IGQsZixnO3N3aXRjaCh1KXtjYXNlIDY1NTA0OmNhc2UgNjU1MDU6Y2FzZSA2NTUwNj
101pjYXNlIDY1NTA3OmNhc2UgNjU1MDg6Y2FzZSA2NTUwOTpjYXNlIDY1NTEwOmNhc2UgNjU1MTE6Y2FzZSA2NTUxMjpjYXNlIDY1NTEzOmNhc2UgNjU1MTQ6Y2FzZSA2NTUxNTpjYXNlIDY1NTE2OmNhc2UgNjU1MTc6Y2FzZSA2NTUxODpjYXNlIDY1NTE5OmNhc2UgNjU1MzQ6Y29uc3R7YXBwRGF0YTpwLG5ld09mZnNldDptfT1yZWFkRGF0YUJsb2NrKGUsaSk7aT1tOzY1NTA0PT09dSYmNzQ9PT1wWzBdJiY3MD09PXBbMV0mJjczPT09cFsyXSYmNzA9PT1wWzNdJiYwPT09cFs0XSYmKG49e3ZlcnNpb246e21ham9yOnBbNV0sbWlub3I6cFs2XX0sZGVuc2l0eVVuaXRzOnBbN10seERlbnNpdHk6cFs4XTw8OHxwWzldLHlEZW5zaXR5OnBbMTBdPDw4fHBbMTFdLHRodW1iV2lkdGg6cFsxMl0sdGh1bWJIZWlnaHQ6cFsxM10sdGh1bWJEYXRhOnAuc3ViYXJyYXkoMTQsMTQrMypwWzEyXSpwWzEzXSl9KTs2NTUxOD09PXUmJjY1PT09cFswXSYmMTAwPT09cFsxXSYmMTExPT09cFsyXSYmOTg9PT1wWzNdJiYxMDE9PT1wWzRdJiYocz17dmVyc2lvbjpwWzVdPDw4fHBbNl0sZmxhZ3MwOnBbN108PDh8cFs4XSxmbGFnczE6cFs5XTw8OHxwWzEwXSx0cmFuc2Zvcm1Db2RlOnBbMTFdfSk7YnJlYWs7Y2FzZSA2NTQ5OTpjb25zdCBiPXJlYWRVaW50MTYoZSxpKTtpKz0yO2NvbnN0IHk9YitpLTI7bGV0IHc7Zm9yKDtpPHk7KXtjb25zdCB0PWVbaSsrXSxhPW5ldyBVaW50MTZBcnJheSg2NCk7aWYodD4+NCl7aWYodD4+NCE9MSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJEUVQgLSBpbnZhbGlkIHRhYmxlIHNwZWMiKTtmb3IoZj0wO2Y8NjQ7ZisrKXt3PXZhW2ZdO2Fbd109cmVhZFVpbnQxNihlLGkpO2krPTJ9fWVsc2UgZm9yKGY9MDtmPDY0O2YrKyl7dz12YVtmXTthW3ddPWVbaSsrXX1jWzE1JnRdPWF9YnJlYWs7Y2FzZSA2NTQ3MjpjYXNlIDY1NDczOmNhc2UgNjU0NzQ6aWYoYSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJPbmx5IHNpbmdsZSBmcmFtZSBKUEVHcyBzdXBwb3J0ZWQiKTtpKz0yO2E9e307YS5leHRlbmRlZD02NTQ3Mz09PXU7YS5wcm9ncmVzc2l2ZT02NTQ3ND09PXU7YS5wcmVjaXNpb249ZVtpKytdO2NvbnN0IHg9cmVhZFVpbnQxNihlLGkpO2krPTI7YS5zY2FuTGluZXM9dHx8eDthLnNhbXBsZXNQZXJMaW5lPXJlYWRVaW50MTYoZSxpKTtpKz0yO2EuY29tcG9uZW50cz1bXTthLmNvbXBvbmVudElkcz17fTtjb25zdCBTPWVbaSsrXTtsZXQgaz0wLEM9MDtmb3IoZD0wO2Q8UztkKyspe2NvbnN0IHQ9ZVtpXSxyPWVbaSsxXT4+NCxuPTE1JmVbaSsxXTtrPHImJihrPXIpO0M8biYmKEM9bik7Y29uc3Qgcz1lW2krMl07Zz1hLmNvbXBvbmVudHMucHVzaCh7aDpyLHY6bixxdWFudGl6YXRpb25JZDpzLHF1YW50aXphdGlvblRhYmxlOm51bGx9KTthLmNvbXBvbmVudElkc1t0XT1nLTE7aSs9M31hLm1heEg9azthLm1heFY9QztwcmVwYXJlQ29tcG9uZW50cyhhKTticmVhaztjYXNlIDY1NDc2OmNvbnN0IHY9cmVhZFVpbnQxNihlLGkpO2krPTI7Zm9yKGQ9MjtkPHY7KXtjb25zdCB0PWVbaSsrXSxhPW5ldyBVaW50OEFycmF5KDE2KTtsZXQgcj0wO2ZvcihmPTA7ZjwxNjtmKyssaSsrKXIrPWFbZl09ZVtpXTtjb25zdCBuPW5ldyBVaW50OEFycmF5KHIpO2ZvcihmPTA7ZjxyO2YrKyxpKyspbltmXT1lW2ldO2QrPTE3K3I7KHQ+PjQ/bDpoKVsxNSZ0XT1idWlsZEh1ZmZtYW5UYWJsZShhLG4pfWJyZWFrO2Nhc2UgNjU1MDE6aSs9MjtyPXJlYWRVaW50MTYoZSxpKTtpKz0yO2JyZWFrO2Nhc2UgNjU0OTg6Y29uc3QgRj0xPT09KytvJiYhdDtpKz0yO2NvbnN0IFQ9ZVtpKytdLE89W107Zm9yKGQ9MDtkPFQ7ZCsrKXtjb25zdCB0PWVbaSsrXSxyPWEuY29tcG9uZW50SWRzW3RdLG49YS5jb21wb25lbnRzW3JdO24uaW5kZXg9dDtjb25zdCBzPWVbaSsrXTtuLmh1ZmZtYW5UYWJsZURDPWhbcz4+NF07bi5odWZmbWFuVGFibGVBQz1sWzE1JnNdO08ucHVzaChuKX1jb25zdCBEPWVbaSsrXSxNPWVbaSsrXSxSPWVbaSsrXTt0cnl7aSs9ZGVjb2RlU2NhbihlLGksYSxPLHIsRCxNLFI+PjQsMTUmUixGKX1jYXRjaCh0KXtpZih0IGluc3RhbmNlb2YgRE5MTWFya2VyRXJyb3Ipe3dhcm4oYCR7dC5tZXNzYWdlfSAtLSBhdHRlbXB0aW5nIHRvIHJlLXBhcnNlIHRoZSBKUEVHIGltYWdlLmApO3JldHVybiB0aGlzLnBhcnNlKGUse2RubFNjYW5MaW5lczp0LnNjYW5MaW5lc30pfWlmKHQgaW5zdGFuY2VvZiBFT0lNYXJrZXJFcnJvcil7d2FybihgJHt0Lm1lc3NhZ2V9IC0tIGlnbm9yaW5nIHRoZSByZXN0IG9mIHRoZSBpbWFnZSBkYXRhLmApO2JyZWFrIGV9dGhyb3cgdH1icmVhaztjYXNlIDY1NTAwOmkrPTQ7YnJlYWs7Y2FzZSA2NTUzNToyNTUhPT1lW2ldJiZpLS07YnJlYWs7ZGVmYXVsdDpjb25zdCBOPWZpbmROZXh0RmlsZU1hcmtlcihlLGktMixpLTMpO2lmKE4/LmludmFsaWQpe3dhcm4oIkpwZWdJbWFnZS5wYXJzZSAtIHVuZXhwZWN0ZWQgZGF0YSwgY3VycmVudCBtYXJrZXIgaXM6ICIrTi5pbnZhbGlkKTtpPU4ub2Zmc2V0O2JyZWFrfWlmKCFOfHxpPj1lLmxlbmd0aC0xKXt3YXJuKCJKcGVnSW1hZ2UucGFyc2UgLSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGltYWdlIGRhdGEgd2l0aG91dCBmaW5kaW5nIGFuIEVPSSBtYXJrZXIgKDB4RkZEOSkuIik7YnJlYWsgZX10aHJvdyBuZXcgSnBlZ0Vycm9yKCJKcGVnSW1hZ2UucGFyc2UgLSB1bmtub3duIG1hcmtlcjogIit1LnRvU3RyaW5nKDE2KSl9dT1yZWFkVWludDE2KGUsaSk7aSs9Mn1pZighYSl0aHJvdyBuZXcgSnBlZ0Vycm9yKCJKcGVnSW1hZ2UucGFyc2UgLSBubyBmcmFtZSBkYXRhIGZvdW5kLiIpO3RoaXMud2lkdGg9YS5zYW1wbGVzUGVyTGluZTt0aGlzLmhlaWdodD1hLnNjYW5MaW5lczt0aGlzLmpmaWY9bjt0aGlzLmFkb2JlPXM7dGhpcy5jb21wb25lbnRzPVtdO2Zvcihjb25zdCBlIG9mIGEuY29tcG9uZW50cyl7Y29uc3QgdD1jW2UucXVhbnRpemF0aW9uSWRdO3QmJihlLnF1YW50aXphdGlvblRhYmxlPXQpO3RoaXMuY29tcG9uZW50cy5wdXNoKHtpbmRleDplLmluZGV4LG91dHB1dDpidWlsZENvbXBvbmVudERhdGEoMCxlKSxzY2FsZVg6ZS5oL2EubWF4SCxzY2FsZVk6ZS52L2EubWF4VixibG9ja3NQZXJMaW5lOmUuYmxvY2tzUGVyTGluZSxibG9ja3NQZXJDb2x1bW46ZS5ibG9ja3NQZXJDb2x1bW59KX10aGlzLm51bUNvbXBvbmVudHM9dGhpcy5jb21wb25lbnRzLmxlbmd0aH1fZ2V0TGluZWFyaXplZEJsb2NrRGF0YShlLHQsYT0hMSl7Y29uc3Qgcj10aGlzLndpZHRoL2UsaT10aGlzLmhlaWdodC90O2xldCBuLHMsbyxjLGwsaCx1LGQsZixnLHAsbT0wO2NvbnN0IGI9dGhpcy5jb21wb25lbnRzLmxlbmd0aCx5PWUqdCpiLHc9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHkpLHg9bmV3IFVpbnQzMkFycmF
1015KGUpLFM9NDI5NDk2NzI4ODtsZXQgaztmb3IodT0wO3U8Yjt1Kyspe249dGhpcy5jb21wb25lbnRzW3VdO3M9bi5zY2FsZVgqcjtvPW4uc2NhbGVZKmk7bT11O3A9bi5vdXRwdXQ7Yz1uLmJsb2Nrc1BlckxpbmUrMTw8MztpZihzIT09ayl7Zm9yKGw9MDtsPGU7bCsrKXtkPTB8bCpzO3hbbF09KGQmUyk8PDN8NyZkfWs9c31mb3IoaD0wO2g8dDtoKyspe2Q9MHxoKm87Zz1jKihkJlMpfCg3JmQpPDwzO2ZvcihsPTA7bDxlO2wrKyl7d1ttXT1wW2creFtsXV07bSs9Yn19fWxldCBDPXRoaXMuX2RlY29kZVRyYW5zZm9ybTthfHw0IT09Ynx8Q3x8KEM9bmV3IEludDMyQXJyYXkoWy0yNTYsMjU1LC0yNTYsMjU1LC0yNTYsMjU1LC0yNTYsMjU1XSkpO2lmKEMpZm9yKHU9MDt1PHk7KWZvcihkPTAsZj0wO2Q8YjtkKyssdSsrLGYrPTIpd1t1XT0od1t1XSpDW2ZdPj44KStDW2YrMV07cmV0dXJuIHd9Z2V0IF9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZCgpe3JldHVybiB0aGlzLmFkb2JlPyEhdGhpcy5hZG9iZS50cmFuc2Zvcm1Db2RlOjM9PT10aGlzLm51bUNvbXBvbmVudHM/MCE9PXRoaXMuX2NvbG9yVHJhbnNmb3JtJiYoODIhPT10aGlzLmNvbXBvbmVudHNbMF0uaW5kZXh8fDcxIT09dGhpcy5jb21wb25lbnRzWzFdLmluZGV4fHw2NiE9PXRoaXMuY29tcG9uZW50c1syXS5pbmRleCk6MT09PXRoaXMuX2NvbG9yVHJhbnNmb3JtfV9jb252ZXJ0WWNjVG9SZ2IoZSl7bGV0IHQsYSxyO2ZvcihsZXQgaT0wLG49ZS5sZW5ndGg7aTxuO2krPTMpe3Q9ZVtpXTthPWVbaSsxXTtyPWVbaSsyXTtlW2ldPXQtMTc5LjQ1NisxLjQwMipyO2VbaSsxXT10KzEzNS40NTktLjM0NCphLS43MTQqcjtlW2krMl09dC0yMjYuODE2KzEuNzcyKmF9cmV0dXJuIGV9X2NvbnZlcnRZY2NUb1JnYmEoZSx0KXtmb3IobGV0IGE9MCxyPTAsaT1lLmxlbmd0aDthPGk7YSs9MyxyKz00KXtjb25zdCBpPWVbYV0sbj1lW2ErMV0scz1lW2ErMl07dFtyXT1pLTE3OS40NTYrMS40MDIqczt0W3IrMV09aSsxMzUuNDU5LS4zNDQqbi0uNzE0KnM7dFtyKzJdPWktMjI2LjgxNisxLjc3MipuO3RbciszXT0yNTV9cmV0dXJuIHR9X2NvbnZlcnRZY2NrVG9SZ2IoZSl7dGhpcy5fY29udmVydFljY2tUb0NteWsoZSk7cmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2IoZSl9X2NvbnZlcnRZY2NrVG9SZ2JhKGUpe3RoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKGUpO3JldHVybiB0aGlzLl9jb252ZXJ0Q215a1RvUmdiYShlKX1fY29udmVydFljY2tUb0NteWsoZSl7bGV0IHQsYSxyO2ZvcihsZXQgaT0wLG49ZS5sZW5ndGg7aTxuO2krPTQpe3Q9ZVtpXTthPWVbaSsxXTtyPWVbaSsyXTtlW2ldPTQzNC40NTYtdC0xLjQwMipyO2VbaSsxXT0xMTkuNTQxLXQrLjM0NCphKy43MTQqcjtlW2krMl09NDgxLjgxNi10LTEuNzcyKmF9cmV0dXJuIGV9X2NvbnZlcnRDbXlrVG9SZ2IoZSl7Y29uc3QgdD1lLmxlbmd0aC80O0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkJ1ZmZlcihlLDAsdCxlLDAsOCwwKTtyZXR1cm4gZS5zdWJhcnJheSgwLDMqdCl9X2NvbnZlcnRDbXlrVG9SZ2JhKGUpe0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkJ1ZmZlcihlLDAsZS5sZW5ndGgvNCxlLDAsOCwxKTtpZihDb2xvclNwYWNlVXRpbHMuY215ayBpbnN0YW5jZW9mIERldmljZUNteWtDUylmb3IobGV0IHQ9MyxhPWUubGVuZ3RoO3Q8YTt0Kz00KWVbdF09MjU1O3JldHVybiBlfWdldERhdGEoe3dpZHRoOmUsaGVpZ2h0OnQsZm9yY2VSR0JBOmE9ITEsZm9yY2VSR0I6cj0hMSxpc1NvdXJjZVBERjppPSExfSl7aWYodGhpcy5udW1Db21wb25lbnRzPjQpdGhyb3cgbmV3IEpwZWdFcnJvcigiVW5zdXBwb3J0ZWQgY29sb3IgbW9kZSIpO2NvbnN0IG49dGhpcy5fZ2V0TGluZWFyaXplZEJsb2NrRGF0YShlLHQsaSk7aWYoMT09PXRoaXMubnVtQ29tcG9uZW50cyYmKGF8fHIpKXtjb25zdCBlPW4ubGVuZ3RoKihhPzQ6MyksdD1uZXcgVWludDhDbGFtcGVkQXJyYXkoZSk7bGV0IHI9MDtpZihhKSFmdW5jdGlvbiBncmF5VG9SR0JBKGUsdCl7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXRbYV09NjU3OTMqZVthXXw0Mjc4MTkwMDgwO2Vsc2UgZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXRbYV09MTY4NDMwMDgqZVthXXwyNTV9KG4sbmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyKSk7ZWxzZSBmb3IoY29uc3QgZSBvZiBuKXt0W3IrK109ZTt0W3IrK109ZTt0W3IrK109ZX1yZXR1cm4gdH1pZigzPT09dGhpcy5udW1Db21wb25lbnRzJiZ0aGlzLl9pc0NvbG9yQ29udmVyc2lvbk5lZWRlZCl7aWYoYSl7Y29uc3QgZT1uZXcgVWludDhDbGFtcGVkQXJyYXkobi5sZW5ndGgvMyo0KTtyZXR1cm4gdGhpcy5fY29udmVydFljY1RvUmdiYShuLGUpfXJldHVybiB0aGlzLl9jb252ZXJ0WWNjVG9SZ2Iobil9aWYoND09PXRoaXMubnVtQ29tcG9uZW50cyl7aWYodGhpcy5faXNDb2xvckNvbnZlcnNpb25OZWVkZWQpcmV0dXJuIGE/dGhpcy5fY29udmVydFljY2tUb1JnYmEobik6cj90aGlzLl9jb252ZXJ0WWNja1RvUmdiKG4pOnRoaXMuX2NvbnZlcnRZY2NrVG9DbXlrKG4pO2lmKGEpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2JhKG4pO2lmKHIpcmV0dXJuIHRoaXMuX2NvbnZlcnRDbXlrVG9SZ2Iobil9cmV0dXJuIG59fWNsYXNzIEpwZWdTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17c3RhdGljI0Q9RmVhdHVyZVRlc3QuaXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ7Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1zdGF0aWMgZ2V0IGNhblVzZUltYWdlRGVjb2Rlcigpe3JldHVybiBzaGFkb3codGhpcywiY2FuVXNlSW1hZ2VEZWNvZGVyIix0aGlzLiNEP0ltYWdlRGVjb2Rlci5pc1R5cGVTdXBwb3J0ZWQoImltYWdlL2pwZWciKTpQcm9taXNlLnJlc29sdmUoITEpKX1zdGF0aWMgc2V0T3B0aW9ucyh7aXNJbWFnZURlY29kZXJTdXBwb3J0ZWQ6ZT0hMX0pe3RoaXMuI0Q9ZX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXt0aGlzLmRlY29kZUltYWdlKCl9Z2V0IGpwZWdPcHRpb25zKCl7Y29uc3QgZT17ZGVjb2RlVHJhbnNmb3JtOnZvaWQgMCxjb2xvclRyYW5zZm9ybTp2b2lkIDB9LHQ9dGhpcy5kaWN0LmdldEFycmF5KCJEIiwiRGVjb2RlIik7aWYoKHRoaXMuZm9yY2VSR0JBfHx0aGlzLmZvcmNlUkdCKSYmQXJyYXkuaXNBcnJheSh0KSl7Y29uc3QgYT10aGlzLmRpY3QuZ2V0KCJCUEMiLCJCaXRzUGVyQ29tcG9uZW50Iil8fDgscj10Lmxlbmd0aCxpPW5ldyBJbnQzMkFycmF
1015KHIpO2xldCBuPSExO2NvbnN0IHM9KDE8PGEpLTE7Zm9yKGxldCBlPTA7ZTxyO2UrPTIpe2lbZV09MjU2Kih0W2UrMV0tdFtlXSl8MDtpW2UrMV09dFtlXSpzfDA7MjU2PT09aVtlXSYmMD09PWlbZSsxXXx8KG49ITApfW4mJihlLmRlY29kZVRyYW5zZm9ybT1pKX1pZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9dGhpcy5wYXJhbXMuZ2V0KCJDb2xvclRyYW5zZm9ybSIpO051bWJlci5pc0ludGVnZXIodCkmJihlLmNvbG9yVHJhbnNmb3JtPXQpfXJldHVybiBzaGFkb3codGhpcywianBlZ09wdGlvbnMiLGUpfSNOKGUpe2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGgtMTt0PGE7dCsrKWlmKDI1NT09PWVbdF0mJjIxNj09PWVbdCsxXSl7dD4wJiYoZT1lLnN1YmFycmF5KHQpKTticmVha31yZXR1cm4gZX1kZWNvZGVJbWFnZShlKXtpZih0aGlzLmVvZilyZXR1cm4gdGhpcy5idWZmZXI7ZT10aGlzLiNOKGV8fHRoaXMuYnl0ZXMpO2NvbnN0IHQ9bmV3IEpwZWdJbWFnZSh0aGlzLmpwZWdPcHRpb25zKTt0LnBhcnNlKGUpO2NvbnN0IGE9dC5nZXREYXRhKHt3aWR0aDp0aGlzLmRyYXdXaWR0aCxoZWlnaHQ6dGhpcy5kcmF3SGVpZ2h0LGZvcmNlUkdCQTp0aGlzLmZvcmNlUkdCQSxmb3JjZVJHQjp0aGlzLmZvcmNlUkdCLGlzU291cmNlUERGOiEwfSk7dGhpcy5idWZmZXI9YTt0aGlzLmJ1ZmZlckxlbmd0aD1hLmxlbmd0aDt0aGlzLmVvZj0hMDtyZXR1cm4gdGhpcy5idWZmZXJ9Z2V0IGNhbkFzeW5jRGVjb2RlSW1hZ2VGcm9tQnVmZmVyKCl7cmV0dXJuIHRoaXMuc3RyZWFtLmlzQXN5bmN9YXN5bmMgZ2V0VHJhbnNmZXJhYmxlSW1hZ2UoKXtpZighYXdhaXQgSnBlZ1N0cmVhbS5jYW5Vc2VJbWFnZURlY29kZXIpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmpwZWdPcHRpb25zO2lmKGUuZGVjb2RlVHJhbnNmb3JtKXJldHVybi
101BudWxsO2xldCB0O3RyeXtjb25zdCBhPXRoaXMuY2FuQXN5bmNEZWNvZGVJbWFnZUZyb21CdWZmZXImJmF3YWl0IHRoaXMuc3RyZWFtLmFzeW5jR2V0Qnl0ZXMoKXx8dGhpcy5ieXRlcztpZighYSlyZXR1cm4gbnVsbDtsZXQgcj10aGlzLiNOKGEpO2NvbnN0IGk9SnBlZ0ltYWdlLmNhblVzZUltYWdlRGVjb2RlcihyLGUuY29sb3JUcmFuc2Zvcm0pO2lmKCFpKXJldHVybiBudWxsO2lmKGkuZXhpZlN0YXJ0KXtyPXIuc2xpY2UoKTtyLmZpbGwoMCxpLmV4aWZTdGFydCxpLmV4aWZFbmQpfXQ9bmV3IEltYWdlRGVjb2Rlcih7ZGF0YTpyLHR5cGU6ImltYWdlL2pwZWciLHByZWZlckFuaW1hdGlvbjohMX0pO3JldHVybihhd2FpdCB0LmRlY29kZSgpKS5pbWFnZX1jYXRjaChlKXt3YXJuKGBnZXRUcmFuc2ZlcmFibGVJbWFnZSAtIGZhaWxlZDogIiR7ZX0iLmApO3JldHVybiBudWxsfWZpbmFsbHl7dD8uY2xvc2UoKX19fWNvbnN0IE5hPWFzeW5jIGZ1bmN0aW9uIE9wZW5KUEVHKGU9e30pe3ZhciB0PWUsYT0iLi90aGlzLnByb2dyYW0iLHF1aXRfPShlLHQpPT57dGhyb3cgdH0scj1pbXBvcnQubWV0YS51cmw7dHJ5e25ldyBVUkwoIi4iLHIpLmhyZWZ9Y2F0Y2h7fTA7dmFyIGksbixzLG8sYyxsLGgsdSxkPWNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksZj1jb25zb2xlLmVycm9yLmJpbmQoY29uc29sZSksZz0hMSxwPSExO2Z1bmN0aW9uIHVwZGF0ZU1lbW9yeVZpZXdzKCl7dmFyIGU9by5idWZmZXI7Yz1uZXcgSW50OEFycmF5KGUpO25ldyBJbnQxNkFycmF5KGUpO2w9bmV3IFVpbnQ4QXJyYXkoZSk7bmV3IFVpbnQxNkFycmF
1015KGUpO2g9bmV3IEludDMyQXJyYXkoZSk7dT1uZXcgVWludDMyQXJyYXkoZSk7bmV3IEZsb2F0MzJBcnJheShlKTtuZXcgRmxvYXQ2NEFycmF5KGUpO25ldyBCaWdJbnQ2NEFycmF5KGUpO25ldyBCaWdVaW50NjRBcnJheShlKX1jbGFzcyBFeGl0U3RhdHVze25hbWU9IkV4aXRTdGF0dXMiO2NvbnN0cnVjdG9yKGUpe3RoaXMubWVzc2FnZT1gUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgke2V9KWA7dGhpcy5zdGF0dXM9ZX19dmFyIG0sY2FsbFJ1bnRpbWVDYWxsYmFja3M9ZT0+e2Zvcig7ZS5sZW5ndGg+MDspZS5zaGlmdCgpKHQpfSxiPVtdLGFkZE9uUG9zdFJ1bj1lPT5iLnB1c2goZSkseT1bXSxhZGRPblByZVJ1bj1lPT55LnB1c2goZSksdz0hMCx4PTAsUz17fSxoYW5kbGVFeGNlcHRpb249ZT0+e2lmKGUgaW5zdGFuY2VvZiBFeGl0U3RhdHVzfHwidW53aW5kIj09ZSlyZXR1cm4gaTtxdWl0XygwLGUpfSxrZWVwUnVudGltZUFsaXZlPSgpPT53fHx4PjAsX3Byb2NfZXhpdD1lPT57aT1lO2lmKCFrZWVwUnVudGltZUFsaXZlKCkpe3Qub25FeGl0Py4oZSk7Zz0hMH1xdWl0XygwLG5ldyBFeGl0U3RhdHVzKGUpKX0sX2V4aXQ9KGUsdCk9PntpPWU7X3Byb2NfZXhpdChlKX0sY2FsbFVzZXJDYWxsYmFjaz1lPT57aWYoIWcpdHJ5e2UoKTsoKCk9PntpZigha2VlcFJ1bnRpbWVBbGl2ZSgpKXRyeXtfZXhpdChpKX1jYXRjaChlKXtoYW5kbGVFeGNlcHRpb24oZSl9fSkoKX1jYXRjaChlKXtoYW5kbGVFeGNlcHRpb24oZSl9fSxhbGlnbk1lbW9yeT0oZSx0KT0+TWF0aC5jZWlsKGUvdCkqdCxncm93TWVtb3J5PWU9Pnt2YXIgdD0oZS1vLmJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1KS82NTUzNnwwO3RyeXtvLmdyb3codCk7dXBkYXRlTWVtb3J5Vmlld3MoKTtyZXR1cm4gMX1jYXRjaChlKXt9fSxrPXt9LGdldEVudlN0cmluZ3M9KCk9PntpZighZ2V0RW52U3RyaW5ncy5zdHJpbmdzKXt2YXIgZT17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLmxhbmd1YWdlfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzphfHwiLi90aGlzLnByb2dyYW0ifTtmb3IodmFyIHQgaW4gayl2b2lkIDA9PT1rW3RdP2RlbGV0ZSBlW3RdOmVbdF09a1t0XTt2YXIgcj1bXTtmb3IodmFyIHQgaW4gZSlyLnB1c2goYCR7dH09JHtlW3RdfWApO2dldEVudlN0cmluZ3Muc3RyaW5ncz1yfXJldHVybiBnZXRFbnZTd
101HJpbmdzLnN0cmluZ3N9LHN0cmluZ1RvVVRGOD0oZSx0LGEpPT4oKGUsdCxhLHIpPT57aWYoIShyPjApKXJldHVybiAwO2Zvcih2YXIgaT1hLG49YStyLTEscz0wO3M8ZS5sZW5ndGg7KytzKXt2YXIgbz1lLmNvZGVQb2ludEF0KHMpO2lmKG88PTEyNyl7aWYoYT49bilicmVhazt0W2ErK109b31lbHNlIGlmKG88PTIwNDcpe2lmKGErMT49bilicmVhazt0W2ErK109MTkyfG8+PjY7dFthKytdPTEyOHw2MyZvfWVsc2UgaWYobzw9NjU1MzUpe2lmKGErMj49bilicmVhazt0W2ErK109MjI0fG8+PjEyO3RbYSsrXT0xMjh8bz4+NiY2Mzt0W2ErK109MTI4fDYzJm99ZWxzZXtpZihhKzM+PW4pYnJlYWs7dFthKytdPTI0MHxvPj4xODt0W2ErK109MTI4fG8+PjEyJjYzO3RbYSsrXT0xMjh8bz4+NiY2Mzt0W2ErK109MTI4fDYzJm87cysrfX10W2FdPTA7cmV0dXJuIGEtaX0pKGUsbCx0LGEpLGxlbmd0aEJ5dGVzVVRGOD1lPT57Zm9yKHZhciB0PTAsYT0wO2E8ZS5sZW5ndGg7KythKXt2YXIgcj1lLmNoYXJDb2RlQXQoYSk7aWYocjw9MTI3KXQrKztlbHNlIGlmKHI8PTIwNDcpdCs9MjtlbHNlIGlmKHI+PTU1Mjk2JiZyPD01NzM0Myl7dCs9NDsrK2F9ZWxzZSB0Kz0zfXJldHVybiB0fSxDPVtudWxsLFtdLFtdXSx2PSJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyOnZvaWQgMCxVVEY4QXJyYXlUb1N0cmluZz0oZSx0PTAsYSxyKT0+e3ZhciBpPSgoZSx0LGEscik9Pnt2YXIgaT10K2E7aWYocilyZXR1cm4gaTtmb3IoO2VbdF0mJiEodD49aSk7KSsrdDtyZXR1cm4gdH0pKGUsdCxhLHIpO2lmKGktdD4xNiYmZS5idWZmZXImJnYpcmV0dXJuIHYuZGVjb2RlKGUuc3ViYXJyYXkodCxpKSk7Zm9yKHZhciBuPSIiO3Q8aTspe3ZhciBzPWVbdCsrXTtpZigxMjgmcyl7dmFyIG89NjMmZVt0KytdO2lmKDE5MiE9KDIyNCZzKSl7dmFyIGM9NjMmZVt0KytdO2lmKChzPTIyND09KDI0MCZzKT8oMTUmcyk8PDEyfG88PDZ8YzooNyZzKTw8MTh8bzw8MTJ8Yzw8Nnw2MyZlW3QrK10pPDY1NTM2KW4rPVN0cmluZy5mcm9tQ2hhckNvZGUocyk7ZWxzZXt2YXIgbD1zLTY1NTM2O24rPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8bD4+MTAsNTYzMjB8MTAyMyZsKX19ZWxzZSBuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKCgzMSZzKTw8NnxvKX1lbHNlIG4rPVN0cmluZy5mcm9tQ2hhckNvZGUocyl9cmV0dXJuIG59LHByaW50Q2hhcj0oZSx0KT0+e3ZhciBhPUNbZV07aWYoMD09PXR8fDEwPT09dCl7KDE9PT1lP2Q6ZikoVVRGOEFycmF5VG9TdHJpbmcoYSkpO2EubGVuZ3RoPTB9ZWxzZSBhLnB1c2godCl9LFVURjhUb1N0cmluZz0oZSx0LGEpPT5lP1VURjhBcnJheVRvU3RyaW5nKGwsZSx0LGEpOiIiO3Qubm9FeGl0UnVudGltZSYmKHc9dC5ub0V4aXRSdW50aW1lKTt0LnByaW50JiYoZD10LnByaW50KTt0LnByaW50RXJyJiYoZj10LnByaW50RXJyKTt0Lndhc21CaW5hcnkmJnQud2FzbUJpbmFyeTt0LmFyZ3VtZW50cyYmdC5hcmd1bWVudHM7dC50aGlzUHJvZ3JhbSYmKGE9dC50aGlzUHJvZ3JhbSk7aWYodC5wcmVJbml0KXsiZnVuY3Rpb24iPT10eXBlb2YgdC5wcmVJbml0JiYodC5wcmVJbml0PVt0LnByZUluaXRdKTtmb3IoO3QucHJlSW5pdC5sZW5ndGg+MDspdC5wcmVJbml0LnNoaWZ0KCkoKX10LndyaXRlQXJyYXlUb01lbW9yeT0oZSx0KT0+e2Muc2V0KGUsdCl9O3ZhciBGLFQ9e2s6KCk9PmZ1bmN0aW9uIGFib3J0KGUpe3Qub25BYm9ydD8uKGUpO2YoZT0iQWJvcnRlZCgiK2UrIikiKTtnPSEwO2UrPSIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIjt2YXIgYT1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGUpO3M/LihhKTt0aHJvdyBhfSgiIiksajooKT0+e3c9ITE7eD0wfSxsOihlLHQpPT57aWYoU1tlXSl7Y2xlYXJUaW1lb3V0KFNbZV0uaWQpO2RlbGV0ZSBTW2VdfWlmKCF0KXJldHVybiAwO3ZhciBhPXNldFRpbWVvdXQoKCk9PntkZWxldGUgU1tlXTtjYWxsVXNlckNhbGxiYWNrKCgpPT5tKGUscGVyZm9ybWFuY2Uubm93KCkpKX0sdCk7U1tlXT17aWQ6YSx0aW1lb3V0X21zOnR9O3JldHVybiAwfSxmOmZ1bmN0aW9uIF9jb3B5X3BpeGVsc18xKGUsYSl7ZT4+PTI7Y29uc3Qgcj10LmltYWdlRGF0YT1uZXcgVWludDhDbGFtcGVkQXJyYXkoYSksaT1oLnN1YmFycmF5KGUsZSthKTtyLnNldChpKX0sZTpmdW5jdGlvbiBfY29weV9waXhlbHNfMyhlLGEscixpKXtlPj49MjthPj49MjtyPj49Mjtjb25zdCBuPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKmkpLHM9aC5zdWJhcnJheShlLGUraSksbz1oLnN1YmFycmF5KGEsYStpKSxjPWguc3ViYXJyYXkocixyK2kpO2ZvcihsZXQgZT0wO2U8aTtlKyspe25bMyplXT1zW2VdO25bMyplKzFdPW9bZV07blszKmUrMl09Y1tlXX19LGQ6ZnVuY3Rpb24gX2NvcHlfcGl4ZWxzXzQoZSxhLHIsaSxuKXtlPj49MjthPj49MjtyPj49MjtpPj49Mjtjb25zdCBzPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0Km4pLG89aC5zdWJhcnJheShlLGUrbiksYz1oLnN1YmFycmF5KGEsYStuKSxsPWguc3ViYXJyYXkocixyK24pLHU9aC5zdWJhcnJheShpLGkrbik7Zm9yKGxldCBlPTA7ZTxuO2UrKyl7c1s0KmVdPW9bZV07c1s0KmUrMV09Y1tlXTtzWzQqZSsyXT1sW2VdO3NbNCplKzNdPXVbZV19fSxtOmU9Pnt2YXIgdD1sLmxlbmd0aCxhPTIxNDc0ODM2NDg7aWYoKGU+Pj49MCk+YSlyZXR1cm4hMTtmb3IodmFyIHI9MTtyPD00O3IqPTIpe3ZhciBpPXQqKDErLjIvcik7aT1NYXRoLm1pbihpLGUrMTAwNjYzMjk2KTt2YXIgbj1NYXRoLm1pbihhLGFsaWduTWVtb3J5KE1hdGgubWF4KGUsaSksNjU1MzYpKTtpZihncm93TWVtb3J5KG4pKXJldHVybiEwfXJldHVybiExfSxvOihlLHQpPT57dmFyIGE9MCxyPTA7Zm9yKHZhciBpIG9mIGdldEVudlN0cmluZ3MoKSl7dmFyIG49dCthO3VbZStyPj4yXT1uO2ErPXN0cmluZ1RvVVRGOChpLG4sMS8wKSsxO3IrPTR9cmV0dXJuIDB9LHA6KGUsdCk9Pnt2YXIgYT1nZXRFbnZTd
101HJpbmdzKCk7dVtlPj4yXT1hLmxlbmd0aDt2YXIgcj0wO2Zvcih2YXIgaSBvZiBhKXIrPWxlbmd0aEJ5dGVzVVRGOChpKSsxO3VbdD4+Ml09cjtyZXR1cm4gMH0sbjpmdW5jdGlvbiBfZmRfc2VlayhlLHQsYSxyKXt0PShpPXQpPC05MDA3MTk5MjU0NzQwOTkyfHxpPjkwMDcxOTkyNTQ3NDA5OTI/TmFOOk51bWJlcihpKTt2YXIgaTtyZXR1cm4gNzB9LGI6KGUsdCxhLHIpPT57Zm9yKHZhciBpPTAsbj0wO248YTtuKyspe3ZhciBzPXVbdD4+Ml0sbz11W3QrND4+Ml07dCs9ODtmb3IodmFyIGM9MDtjPG87YysrKXByaW50Q2hhcihlLGxbcytjXSk7aSs9b311W3I+PjJdPWk7cmV0dXJuIDB9LHE6ZnVuY3Rpb24gX2dyYXlfdG9fcmdiYShlLGEpe2U+Pj0yO2NvbnN0IHI9dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqYSksaT1oLnN1YmFycmF5KGUsZSthKTtmb3IobGV0IGU9MDtlPGE7ZSsrKXtyWzQqZV09cls0KmUrMV09cls0KmUrMl09aVtlXTtyWzQqZSszXT0yNTV9fSxoOmZ1bmN0aW9uIF9ncmF5YV90b19yZ2JhKGUsYSxyKXtlPj49MjthPj49Mjtjb25zdCBpPXQuaW1hZ2VEYXRhPW5ldyBVaW50OENsYW1wZWRBcnJheSg0KnIpLG49aC5zdWJhcnJheShlLGUrcikscz1oLnN1YmFycmF5KGEsYStyKTtmb3IobGV0IGU9MDtlPHI7ZSsrKXtpWzQqZV09aVs0KmUrMV09aVs0KmUrMl09bltlXTtpWzQqZSszXT1zW2VdfX0sYzpmdW5jdGlvbiBfanNQcmludFdhcm5pbmcoZSl7Y29uc3QgYT1VVEY4VG9TdHJpbmcoZSk7KHQud2Fybnx8Y29uc29sZS53YXJuKShgT3BlbkpQRUc6ICR7YX1gKX0saTpfcHJvY19leGl0LGc6ZnVuY3Rpb24gX3JnYl90b19yZ2JhKGUsYSxyLGkpe2U+Pj0yO2E+Pj0yO3I+Pj0yO2NvbnN0IG49dC5pbWFnZURhdGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDQqaSkscz1oLnN1YmFycmF5KGUsZStpKSxvPWguc3ViYXJyYXkoYSxhK2kpLGM9aC5zdWJhcnJheShyLHIraSk7Zm9yKGxldCBlPTA7ZTxpO2UrKyl7bls0KmVdPXNbZV07bls0KmUrMV09b1tlXTtuWzQqZSsyXT1jW2VdO25bNCplKzNdPTI1NX19LGE6ZnVuY3Rpb24gX3N0b3JlRXJyb3JNZXNzYWdlKGUpe2NvbnN0IGE9VVRGOFRvU3RyaW5nKGUpO3QuZXJyb3JNZXNzYWdlcz90LmVycm9yTWVzc2FnZXMrPSJcbiIrYTp0LmVycm9yTWVzc2FnZXM9YX19O0Y9YXdhaXQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlV2FzbSgpe2Z1bmN0aW9uIHJlY2VpdmVJbnN0YW5jZShlLGEpe0Y9ZS5leHBvcnRzO289Ri5yO3VwZGF0ZU1lbW9yeVZpZXdzKCk7IWZ1bmN0aW9uIGFzc2lnbldhc21FeHBvcnRzKGUpe3QuX21hbGxvYz1lLnQ7dC5fZnJlZT1lLnU7dC5fanAyX2RlY29kZT1lLnY7bT1lLnd9KEYpO3JldHVybiBGfXZhciBlPWZ1bmN0aW9uIGdldFdhc21JbXBvcnRzKCl7cmV0dXJue2E6VH19KCk7cmV0dXJuIG5ldyBQcm9taXNlKChhLHIpPT57dC5pbnN0YW50aWF0ZVdhc20oZSwoZSx0KT0+e2EocmVjZWl2ZUluc3RhbmNlKGUpKX0pfSl9KCk7IWZ1bmN0aW9uIHJ1bigpeyFmdW5jdGlvbiBwcmVSdW4oKXtpZih0LnByZVJ1bil7ImZ1bmN0aW9uIj09dHlwZW9mIHQucHJlUnVuJiYodC5wcmVSdW49W3QucHJlUnVuXSk7Zm9yKDt0LnByZVJ1bi5sZW5ndGg7KWFkZE9uUHJlUnVuKHQucHJlUnVuLnNoaWZ0KCkpfWNhbGxSdW50aW1lQ2FsbGJhY2tzKHkpfSgpO2Z1bmN0aW9uIGRvUnVuKCl7dC5jYWxsZWRSdW49ITA7aWYoIWcpeyFmdW5jdGlvbiBpbml0UnVudGltZSgpe3A9ITA7Ri5zKCl9KCk7bj8uKHQpO3Qub25SdW50aW1lSW5pdGlhbGl6ZWQ/LigpOyFmdW5jdGlvbiBwb3N0UnVuKCl7aWYodC5wb3N0UnVuKXsiZnVuY3Rpb24iPT10eXBlb2YgdC5wb3N0UnVuJiYodC5wb3N0UnVuPVt0LnBvc3RSdW5dKTtmb3IoO3QucG9zdFJ1bi5sZW5ndGg7KWFkZE9uUG9zdFJ1bih0LnBvc3RSdW4uc2hpZnQoKSl9Y2FsbFJ1bnRpbWVDYWxsYmFja3MoYil9KCl9fWlmKHQuc2V0U3RhdHVzKXt0LnNldFN0YXR1cygiUnVubmluZy4uLiIpO3NldFRpbWVvdXQoKCk9PntzZXRUaW1lb3V0KCgpPT50LnNldFN0YXR1cygiIiksMSk7ZG9SdW4oKX0sMSl9ZWxzZSBkb1J1bigpfSgpO3JldHVybiBwP3Q6bmV3IFByb21pc2UoKGUsdCk9PntuPWU7cz10fSl9O2NsYXNzIEpweEVycm9yIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSnB4RXJyb3IiKX19Y2xhc3MgSnB4SW1hZ2V7c3RhdGljI1A9bnVsbDtzdGF0aWMjRT1udWxsO3N0YXRpYyNMPW51bGw7c3RhdGljI3Y9ITA7c3RhdGljI189ITA7c3RhdGljI0Y9bnVsbDtzdGF0aWMgc2V0T3B0aW9ucyh7aGFuZGxlcjplLHVzZVdhc206dCx1c2VXb3JrZXJGZXRjaDphLHdhc21Vcmw6cn0pe3RoaXMuI3Y9dDt0aGlzLiNfPWE7dGhpcy4jRj1yO2F8fCh0aGlzLiNFPWUpfXN0YXRpYyBhc3luYyNVKGUpe2NvbnN0IHQ9YCR7dGhpcy4jRn1vcGVuanBlZ19ub3dhc21fZmFsbGJhY2suanNgO2xldCBhPW51bGw7dHJ5e2E9KGF3YWl0IGltcG9ydCgKLyp3ZWJwYWNrSWdub3JlOiB0cnVlKi8KLypAdml0ZS1pZ25vcmUqLwp0KSkuZGVmYXVsdCgpfWNhdGNoKGUpe3dhcm4oYEpweEltYWdlI2dldEpzTW9kdWxlOiAke2V9YCl9ZShhKX1zdGF0aWMgYXN5bmMjaihlLHQsYSl7Y29uc3Qgcj0ib3BlbmpwZWcud2FzbSI7dHJ5e3RoaXMuI1B8fCh0aGlzLiNfP3RoaXMuI1A9YXdhaXQgZmV0Y2hCaW5hcnlEYXRhKGAke3RoaXMuI0Z9JHtyfWApOnRoaXMuI1A9YXdhaXQgdGhpcy4jRS5zZW5kV2l0aFByb21pc2UoIkZldGNoQmluYXJ5RGF0YSIse3R5cGU6Indhc21GYWN0b3J5IixmaWxlbmFtZTpyfSkpO3JldHVybiBhKChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh0aGlzLiNQLHQpKS5pbnN0YW5jZSl9Y2F0Y2godCl7d2FybihgSnB4SW1hZ2UjaW5zdGFudGlhdGVXYXNtOiAke3R9YCk7dGhpcy4jVShlKTtyZXR1cm4gbnVsbH1maW5hbGx5e3RoaXMuI0U9bnVsbH19c3RhdGljIGFzeW5jIGRlY29kZShlLHtudW1Db21wb25lbnRzOnQ9NCxpc0luZGV4ZWRDb2xvcm1hcDphPSExLHNtYXNrSW5EYXRhOnI9ITEscmVkdWNlUG93ZXI6aT0wfT17fSl7aWYoIXRoaXMuI0wpe2NvbnN0e3Byb21pc2U6ZSxyZXNvbHZlOnR9PVByb21pc2Uud2l0
101aFJlc29sdmVycygpLGE9W2VdO3RoaXMuI3Y/YS5wdXNoKE5hKHt3YXJuLGluc3RhbnRpYXRlV2FzbTp0aGlzLiNqLmJpbmQodGhpcyx0KX0pKTp0aGlzLiNVKHQpO3RoaXMuI0w9UHJvbWlzZS5yYWNlKGEpfWNvbnN0IG49YXdhaXQgdGhpcy4jTDtpZighbil0aHJvdyBuZXcgSnB4RXJyb3IoIk9wZW5KUEVHIGZhaWxlZCB0byBpbml0aWFsaXplIik7bGV0IHM7dHJ5e2NvbnN0IG89ZS5sZW5ndGg7cz1uLl9tYWxsb2Mobyk7bi53cml0ZUFycmF5VG9NZW1vcnkoZSxzKTtpZihuLl9qcDJfZGVjb2RlKHMsbyx0PjA/dDowLCEhYSwhIXIsaSkpe2NvbnN0e2Vycm9yTWVzc2FnZXM6ZX09bjtpZihlKXtkZWxldGUgbi5lcnJvck1lc3NhZ2VzO3Rocm93IG5ldyBKcHhFcnJvcihlKX10aHJvdyBuZXcgSnB4RXJyb3IoIlVua25vd24gZXJyb3IiKX1jb25zdHtpbWFnZURhdGE6Y309bjtuLmltYWdlRGF0YT1udWxsO3JldHVybiBjfWZpbmFsbHl7cyYmbi5fZnJlZShzKX19c3RhdGljIGNsZWFudXAoKXt0aGlzLiNMPW51bGx9c3RhdGljIHBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGUpe2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7dD49MDspe2NvbnN0IGE9dDt0PWUuZ2V0Qnl0ZSgpO2lmKDY1MzYxPT09KGE8PDh8dCkpe2Uuc2tpcCg0KTtjb25zdCB0PWUuZ2V0SW50MzIoKT4+PjAsYT1lLmdldEludDMyKCk+Pj4wLHI9ZS5nZXRJbnQzMigpPj4+MCxpPWUuZ2V0SW50MzIoKT4+PjA7ZS5za2lwKDE2KTtyZXR1cm57d2lkdGg6dC1yLGhlaWdodDphLWksYml0c1BlckNvbXBvbmVudDo4LGNvbXBvbmVudHNDb3VudDplLmdldFVpbnQxNigpfX19dGhyb3cgbmV3IEpweEVycm9yKCJObyBzaXplIG1hcmtlciBmb3VuZCBpbiBKUFggc3RyZWFtIil9fWZ1bmN0aW9uIGFkZFN0YXRlKGUsdCxhLHIsaSl7bGV0IG49ZTtmb3IobGV0IGU9MCxhPXQubGVuZ3RoLTE7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO249blthXXx8PVtdfW5bdC5hdCgtMSldPXtjaGVja0ZuOmEsaXRlcmF0ZUZuOnIscHJvY2Vzc0ZuOml9fWNvbnN0IFBhPVtdO2FkZFN0YXRlKFBhLFt5ZSx4ZSxMdCx3ZV0sbnVsbCxmdW5jdGlvbiBpdGVyYXRlSW5saW5lSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LHI9KHQtKGUuaUN1cnItMykpJTQ7c3dpdGNoKHIpe2Nhc2UgMDpyZXR1cm4gYVt0XT09PXllO2Nhc2UgMTpyZXR1cm4gYVt0XT09PXhlO2Nhc2UgMjpyZXR1cm4gYVt0XT09PUx0O2Nhc2UgMzpyZXR1cm4gYVt0XT09PXdlfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZUlubGluZUltYWdlR3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSxmdW5jdGlvbiBmb3VuZElubGluZUltYWdlR3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxyPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixuPWktMyxzPWktMixvPWktMSxjPU1hdGgubWluKE1hdGguZmxvb3IoKHQtbikvNCksMjAwKTtpZihjPDEwKXJldHVybiB0LSh0LW4pJTQ7bGV0IGw9MDtjb25zdCBoPVtdO2xldCB1PTAsZD0xLGY9MTtmb3IobGV0IGU9MDtlPGM7ZSsrKXtjb25zdCB0PXJbcysoZTw8MildLGE9cltvKyhlPDwyKV1bMF07aWYoZCthLndpZHRoPjFlMyl7bD1NYXRoLm1heChsLGQpO2YrPXUrMjtkPTA7dT0wfWgucHVzaCh7dHJhbnNmb3JtOnQseDpkLHk6Zix3OmEud2lkdGgsaDphLmhlaWdodH0pO2QrPWEud2lkdGgrMjt1PU1hdGgubWF4KHUsYS5oZWlnaHQpfWNvbnN0IGc9TWF0aC5tYXgobCxkKSsxLHA9Zit1KzEsbT1uZXcgVWludDhBcnJheShnKnAqNCksYj1nPDwyO2ZvcihsZXQgZT0wO2U8YztlKyspe2NvbnN0IHQ9cltvKyhlPDwyKV1bMF0uZGF0YSxhPWhbZV0udzw8MjtsZXQgaT0wLG49aFtlXS54K2hbZV0ueSpnPDwyO20uc2V0KHQuc3ViYXJyYXkoMCxhKSxuLWIpO2ZvcihsZXQgcj0wLHM9aFtlXS5oO3I8cztyKyspe20uc2V0KHQuc3ViYXJyYXkoaSxpK2EpLG4pO2krPWE7bis9Yn1tLnNldCh0LnN1YmFycmF5KGktYSxpKSxuKTtmb3IoO24+PTA7KXt0W24tNF09dFtuXTt0W24tM109dFtuKzFdO3Rbbi0yXT10W24rMl07dFtuLTFdPXRbbiszXTt0W24rYV09dFtuK2EtNF07dFtuK2ErMV09dFtuK2EtM107dFtuK2ErMl09dFtuK2EtMl07dFtuK2ErM109dFtuK2EtMV07bi09Yn19Y29uc3QgeT17d2lkdGg6ZyxoZWlnaHQ6cH07aWYoZS5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgZT1uZXcgT2Zmc2NyZWVuQ2FudmFzKGcscCk7ZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKG5ldyBVaW50OENsYW1wZWRBcnJheShtLmJ1ZmZlciksZyxwKSwwLDApO3kuYml0bWFwPWUudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7eS5kYXRhPW51bGx9ZWxzZXt5LmtpbmQ9Tzt5LmRhdGE9bX1hLnNwbGljZShuLDQqYyxfdCk7ci5zcGxpY2Uobiw0KmMsW3ksaF0pO3JldHVybiBuKzF9KTthZGRTdGF0ZShQYSxbeWUseGUsTnQsd2VdLG51bGwsZnVuY3Rpb24gaXRlcmF0ZUltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiBhW3RdPT09eWU7Y2FzZSAxOnJldHVybiBhW3RdPT09eGU7Y2FzZSAyOnJldHVybiBhW3RdPT09TnQ7Y2FzZSAzOnJldHVybiBhW3RdPT09d2V9dGhyb3cgbmV3IEVycm9yKGBpdGVyYXRlSW1hZ2VNYXNrR3JvdXAgLSBpbnZhbGlkIHBvczogJHtyfWApfSxmdW5jdGlvbiBmb3VuZEltYWdlTWFza0dyb3VwKGUsdCl7Y29uc3QgYT1lLmZuQXJyYXkscj1lLmFyZ3NBcnJheSxpPWUuaUN1cnIsbj1pLTMscz1pLTIsbz1pLTE7bGV0IGM9TWF0aC5mbG9vcigodC1uKS80KTtpZihjPDEwKXJldHVybiB0LSh0LW4pJTQ7bGV0IGwsaCx1PSExO2NvbnN0IGQ9cltvXVswXSxmPXJbc11bMF0sZz1yW3NdWzFdLHA9cltzXVsyXSxtPXJbc11bM107aWYoZz09PXApe3U9ITA7bD1zKzQ7bGV0IGU9bys0O2ZvcihsZXQgdD0xO3Q8Yzt0KyssbCs9NCxlKz00KXtoPXJbbF07aWYocltlXVswXSE9PWR8fGhbMF0hPT1mfHxoWzFdIT09Z3x8aFsyXSE9PXB8fGhbM10hPT1tKXt0PDEwP3U9ITE6Yz10O2JyZWFrfX19aWYodSl7Yz1NYXRoLm1pbihjLDFlMyk7Y29uc3QgZT1uZXcgRmxvYXQzMkFycmF
1015KDIqYyk7bD1zO2ZvcihsZXQgdD0wO3Q8Yzt0KyssbCs9NCl7aD1yW2xdO2VbdDw8MV09aFs0XTtlWzErKHQ8PDEpXT1oWzVdfWEuc3BsaWNlKG4sNCpjLGp0KTtyLnNwbGljZShuLDQqYyxbZCxmLGcscCxtLGVdKX1lbHNle2M9TWF0aC5taW4oYywxMDApO2NvbnN0IGU9W107Zm9yKGxldCB0PTA7dDxjO3QrKyl7aD1yW3MrKHQ8PDIpXTtjb25zdCBhPXJbbysodDw8MildWzBdO2UucHVzaCh7ZGF0YTphLmRhdGEsd2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsaW50ZXJwb2xhdGU6YS5pbnRlcnBvbGF0ZSxjb3VudDphLmNvdW50LHRyYW5zZm9ybTpofSl9YS5zcGxpY2Uobiw0KmMsUHQpO3Iuc3BsaWNlKG4sNCpjLFtlXSl9cmV0dXJuIG4rMX0pO2FkZFN0YXRlKFBhLFt5ZSx4ZSxFdCx3ZV0sZnVuY3Rpb24oZSl7Y29uc3QgdD1lLmFyZ3NBcnJheSxhPWUuaUN1cnItMjtyZXR1cm4gMD09PXRbYV1bMV0mJjA9PT10W2FdWzJdfSxmdW5jdGlvbiBpdGVyYXRlSW1hZ2VHcm91cChlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LHI9ZS5hcmdzQXJyYXksaT0odC0oZS5pQ3Vyci0zKSklNDtzd2l0Y2goaSl7Y2FzZSAwOnJldHVybiBhW3RdPT09eWU7Y2FzZSAxOmlmKGFbdF0hPT14ZSlyZXR1cm4hMTtjb25zdCBpPWUuaUN1cnItMixuPXJbaV1bMF0scz1yW2ldWzNdO3JldHVybiByW3RdWzBdPT09biYmMD09PXJbdF1bMV0mJjA9PT1yW3RdWzJdJiZyW3RdWzNdPT09cztjYXNlIDI6aWYoYVt0XSE9PUV0KXJldHVybiExO2NvbnN0IG89cltlLmlDdXJyLTFdWzBdO3JldHVybiByW3RdWzBdPT09bztjYXNlIDM6cmV0dXJuIGFbdF09PT13ZX10aHJvdyBuZXcgRXJyb3IoYGl0ZXJhdGVJbWFnZUdyb3VwIC0gaW52YWxpZCBwb3M6ICR7aX1gKX0sZnVuY3Rpb24oZSx0KXtjb25zdCBhPWUuZm5BcnJheSxyPWUuYXJnc0FycmF5LGk9ZS5pQ3VycixuPWktMyxzPWktMixvPXJbaS0xXVswXSxjPXJbc11bMF0sbD1yW3NdWzNdLGg9TWF0aC5taW4oTWF0aC5mbG9vcigodC1uKS80KSwxZTMpO2lmKGg8MylyZXR1cm4gdC0odC1uKSU0O2NvbnN0IHU9bmV3IEZsb2F0MzJBcnJheSgyKmgpO2xldCBkPXM7Zm9yKGxldCBlPTA7ZTxoO2UrKyxkKz00KXtjb25zdCB0PXJbZF07dVtlPDwxXT10WzRdO3VbMSsoZTw8MSldPXRbNV19Y29uc3QgZj1bbyxjLGwsdV07YS5zcGxpY2Uobiw0KmgsVXQpO3Iuc3BsaWNlKG4sNCpoLGYpO3JldHVybiBuKzF9KTthZGRTdGF0ZShQYSxbVWUsemUsSmUsWmUsamVdLG51bGwsZnVuY3Rpb24gaXRlcmF0ZVNob3dUZXh0R3JvdXAoZSx0KXtjb25zdCBhPWUuZm5BcnJheSxyPWUuYXJnc0FycmF5LGk9KHQtKGUuaUN1cnItNCkpJTU7c3dpdGNoKGkpe2Nhc2UgMDpyZXR1cm4gYVt0XT09PVVlO2Nhc2UgMTpyZXR1cm4gYVt0XT09PXplO2Nhc2UgMjpyZXR1cm4gYVt0XT09PUplO2Nhc2UgMzppZihhW3RdIT09WmUpcmV0dXJuITE7Y29uc3QgaT1lLmlDdXJyLTMsbj1yW2ldWzBdLHM9cltpXVsxXTtyZXR1cm4gclt0XVswXT09PW4mJnJbdF1bMV09PT1zO2Nhc2UgNDpyZXR1cm4gYVt0XT09PWplfXRocm93IG5ldyBFcnJvcihgaXRlcmF0ZVNob3dUZXh0R3JvdXAgLSBpbnZhbGlkIHBvczogJHtpfWApfSxmdW5jdGlvbihlLHQpe2NvbnN0IGE9ZS5mbkFycmF5LHI9ZS5hcmdzQXJyYXksaT1lLmlDdXJyLG49aS00LHM9aS0zLG89aS0yLGM9aS0xLGw9aSxoPXJbc11bMF0sdT1yW3NdWzFdO2xldCBkPU1hdGgubWluKE1hdGguZmxvb3IoKHQtbikvNSksMWUzKTtpZihkPDMpcmV0dXJuIHQtKHQtbiklNTtsZXQgZj1uO2lmKG4+PTQmJmFbbi00XT09PWFbc10mJmFbbi0zXT09PWFbb10mJmFbbi0yXT09PWFbY10mJmFbbi0xXT09PWFbbF0mJnJbbi00XVswXT09PWgmJnJbbi00XVsxXT09PXUpe2QrKztmLT01fWxldCBnPWYrNDtmb3IobGV0IGU9MTtlPGQ7ZSsrKXthLnNwbGljZShnLDMpO3Iuc3BsaWNlKGcsMyk7Zys9Mn1yZXR1cm4gZysxfSk7YWRkU3RhdGUoUGEsW3llLHhlLHF0LHdlXSxlPT57Y29uc3QgdD1lLmFyZ3NBcnJheSxhPXRbZS5pQ3Vyci0xXVswXTtpZihhIT09VGUmJmEhPT1PZSYmYSE9PVJlJiZhIT09QmUmJmEhPT1OZSYmYSE9PVBlKXJldHVybiEwO2NvbnN0IHI9dFtlLmlDdXJyLTJdO3JldHVybiAxPT09clswXSYmMD09PXJbMV0mJjA9PT1yWzJdJiYxPT09clszXX0sKCk9PiExLChlLHQpPT57Y29uc3R7Zm5BcnJheTphLGFyZ3NBcnJheTpyfT1lLGk9ZS5pQ3VycixuPWktMyxzPWktMixvPXJbaS0xXSxjPXJbc10sWyxbbF0saF09bztpZihoKXtVdGlsLnNjYWxlTWluTWF4KGMsaCk7Zm9yKGxldCBlPTAsdD1sLmxlbmd0aDtlPHQ7KXN3aXRjaChsW2UrK10pe2Nhc2UgJHQ6Y2FzZSBHdDpVdGlsLmFwcGx5VHJhbnNmb3JtKGwsYyxlKTtlKz0yO2JyZWFrO2Nhc2UgVnQ6VXRpbC5hcHBseVRyYW5zZm9ybVRvQmV6aWVyKGwsYyxlKTtlKz02fX1hLnNwbGljZShuLDQscXQpO3Iuc3BsaWNlKG4sNCxvKTtyZXR1cm4gbisxfSk7Y2xhc3MgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXt0aGlzLnF1ZXVlPWV9X29wdGltaXplKCl7fXB1c2goZSx0KXt0aGlzLnF1ZXVlLmZuQXJyYXkucHVzaChlKTt0aGlzLnF1ZXVlLmFyZ3NBcnJheS5wdXNoKHQpO3RoaXMuX29wdGltaXplKCl9Zmx1c2goKXt9cmVzZXQoKXt9fWNsYXNzIFF1ZXVlT3B0aW1pemVyIGV4dGVuZHMgTnVsbE9wdGltaXplcntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLnN0YXRlPW51bGw7dGhpcy5jb250ZXh0PXtpQ3VycjowLGZuQXJyYXk6ZS5mbkFycmF5LGFyZ3NBcnJheTplLmFyZ3NBcnJheSxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDpPcGVyYXRvckxpc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR9O3RoaXMubWF0Y2g9bnVsbDt0aGlzLmxhc3RQcm9jZXNzZWQ9MH1fb3B0aW1pemUoKXtjb25zdCBlPXRoaXMucXVldWUuZm5BcnJheTtsZXQgdD10aGlzLmxhc3RQcm9jZXNzZWQsYT1lLmxlbmd0aCxyPXRoaXMuc3RhdGUsaT10aGlzLm1hdGNoO2lmKCFyJiYhaSYmdCsxPT09YSYmIVBhW2VbdF1dKXt0aGlzLmxhc3RQcm9jZXNzZWQ9YTtyZXR1cm59Y29uc3Qgbj10aGlzLmNvbnRleHQ7Zm9yKDt0PGE7KXtpZihpKXtpZigoMCxpLml0ZXJhdGVGbikobix0KSl7dCsrO2NvbnRpbnVlfXQ9KDAsaS5wcm9jZXNzRm4pKG4sdCsxKTthPWUubGVuZ3RoO2k9b
101nVsbDtyPW51bGw7aWYodD49YSlicmVha31yPShyfHxQYSlbZVt0XV07aWYociYmIUFycmF5LmlzQXJyYXkocikpe24uaUN1cnI9dDt0Kys7aWYoIXIuY2hlY2tGbnx8KDAsci5jaGVja0ZuKShuKSl7aT1yO3I9bnVsbH1lbHNlIHI9bnVsbH1lbHNlIHQrK310aGlzLnN0YXRlPXI7dGhpcy5tYXRjaD1pO3RoaXMubGFzdFByb2Nlc3NlZD10fWZsdXNoKCl7Zm9yKDt0aGlzLm1hdGNoOyl7Y29uc3QgZT10aGlzLnF1ZXVlLmZuQXJyYXkubGVuZ3RoO3RoaXMubGFzdFByb2Nlc3NlZD0oMCx0aGlzLm1hdGNoLnByb2Nlc3NGbikodGhpcy5jb250ZXh0LGUpO3RoaXMubWF0Y2g9bnVsbDt0aGlzLnN0YXRlPW51bGw7dGhpcy5fb3B0aW1pemUoKX19cmVzZXQoKXt0aGlzLnN0YXRlPW51bGw7dGhpcy5tYXRjaD1udWxsO3RoaXMubGFzdFByb2Nlc3NlZD0wfX1jbGFzcyBPcGVyYXRvckxpc3R7c3RhdGljIENIVU5LX1NJWkU9MWUzO3N0YXRpYyBDSFVOS19TSVpFX0FCT1VUPXRoaXMuQ0hVTktfU0laRS01O3N0YXRpYyBpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZD0hMTtjb25zdHJ1Y3RvcihlPTAsdCl7dGhpcy5fc3RyZWFtU2luaz10O3RoaXMuZm5BcnJheT1bXTt0aGlzLmFyZ3NBcnJheT1bXTt0aGlzLm9wdGltaXplcj0hdHx8ZSZkP25ldyBOdWxsT3B0aW1pemVyKHRoaXMpOm5ldyBRdWV1ZU9wdGltaXplcih0aGlzKTt0aGlzLmRlcGVuZGVuY2llcz1uZXcgU2V0O3RoaXMuX3RvdGFsTGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLl9yZXNvbHZlZD10P251bGw6UHJvbWlzZS5yZXNvbHZlKCl9c3RhdGljIHNldE9wdGlvbnMoe2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOmV9KXt0aGlzLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWV9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmFyZ3NBcnJheS5sZW5ndGh9Z2V0IHJlYWR5KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVkfHx0aGlzLl9zdHJlYW1TaW5rLnJlYWR5fWdldCB0b3RhbExlbmd0aCgpe3JldHVybiB0aGlzLl90b3RhbExlbmd0aCt0aGlzLmxlbmd0aH1hZGRPcChlLHQpe3RoaXMub3B0aW1pemVyLnB1c2goZSx0KTt0aGlzLndlaWdodCsrO3RoaXMuX3N0cmVhbVNpbmsmJih0aGlzLndlaWdodD49T3BlcmF0b3JMaXN0LkNIVU5LX1NJWkV8fHRoaXMud2VpZ2h0Pj1PcGVyYXRvckxpc3QuQ0hVTktfU0laRV9BQk9VVCYmKGU9PT13ZXx8ZT09PWplKSkmJnRoaXMuZmx1c2goKX1hZGRJbWFnZU9wcyhlLHQsYSxyPSExKXtpZihyKXt0aGlzLmFkZE9wKHllKTt0aGlzLmFkZE9wKGJlLFtbWyJTTWFzayIsITFdXV0pfXZvaWQgMCE9PWEmJnRoaXMuYWRkT3AoQ3QsWyJPQyIsYV0pO3RoaXMuYWRkT3AoZSx0KTt2b2lkIDAhPT1hJiZ0aGlzLmFkZE9wKHZ0LFtdKTtyJiZ0aGlzLmFkZE9wKHdlKX1hZGREZXBlbmRlbmN5KGUpe2lmKCF0aGlzLmRlcGVuZGVuY2llcy5oYXMoZSkpe3RoaXMuZGVwZW5kZW5jaWVzLmFkZChlKTt0aGlzLmFkZE9wKGxlLFtlXSl9fWFkZERlcGVuZGVuY2llcyhlKXtmb3IoY29uc3QgdCBvZiBlKXRoaXMuYWRkRGVwZW5kZW5jeSh0KX1hZGRPcExpc3QoZSl7aWYoZSBpbnN0YW5jZW9mIE9wZXJhdG9yTGlzdCl7Zm9yKGNvbnN0IHQgb2YgZS5kZXBlbmRlbmNpZXMpdGhpcy5kZXBlbmRlbmNpZXMuYWRkKHQpO2ZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrKyl0aGlzLmFkZE9wKGUuZm5BcnJheVt0XSxlLmFyZ3NBcnJheVt0XSl9ZWxzZSB3YXJuKCdhZGRPcExpc3QgLSBpZ25vcmluZyBpbnZhbGlkICJvcExpc3QiIHBhcmFtZXRlci4nKX1nZXRJUigpe3JldHVybntmbkFycmF5OnRoaXMuZm5BcnJheSxhcmdzQXJyYXk6dGhpcy5hcmdzQXJyYXksbGVuZ3RoOnRoaXMubGVuZ3RofX1nZXQgX3RyYW5zZmVycygpe2NvbnN0IGU9W10se2ZuQXJyYXk6dCxhcmdzQXJyYXk6YSxsZW5ndGg6cn09dGhpcztmb3IobGV0IGk9MDtpPHI7aSsrKXN3aXRjaCh0W2ldKXtjYXNlIEx0OmNhc2UgX3Q6Y2FzZSBOdDp7Y29uc3R7Yml0bWFwOnQsZGF0YTpyfT1hW2ldWzBdOyh0fHxyPy5idWZmZXIpJiZlLnB1c2godHx8ci5idWZmZXIpO2JyZWFrfWNhc2UgcXQ6e2NvbnN0WyxbdF0scl09YVtpXTt0JiZlLnB1c2godC5idWZmZXIsci5idWZmZXIpO2JyZWFrfWNhc2UgVHQ6Y29uc3RbdCxyXT1hW2ldO3QmJmUucHVzaCh0LmJ1ZmZlcik7ciYmZS5wdXNoKHIuYnVmZmVyKTticmVhaztjYXNlIEplOmUucHVzaChhW2ldWzBdLmJ1ZmZlcil9cmV0dXJuIGV9Zmx1c2goZT0hMSx0PW51bGwpe3RoaXMub3B0aW1pemVyLmZsdXNoKCk7Y29uc3QgYT10aGlzLmxlbmd0aDt0aGlzLl90b3RhbExlbmd0aCs9YTt0aGlzLl9zdHJlYW1TaW5rLmVucXVldWUoe2ZuQXJyYXk6dGhpcy5mbkFycmF5LGFyZ3NBcnJheTp0aGlzLmFyZ3NBcnJheSxsYXN0Q2h1bms6ZSxzZXBhcmF0ZUFubm90czp0LGxlbmd0aDphfSwxLHRoaXMuX3RyYW5zZmVycyk7dGhpcy5kZXBlbmRlbmNpZXMuY2xlYXIoKTt0aGlzLmZuQXJyYXkubGVuZ3RoPTA7dGhpcy5hcmdzQXJyYXkubGVuZ3RoPTA7dGhpcy53ZWlnaHQ9MDt0aGlzLm9wdGltaXplci5yZXNldCgpfX1mdW5jdGlvbiBoZXhUb0ludChlLHQpe2xldCBhPTA7Zm9yKGxldCByPTA7cjw9dDtyKyspYT1hPDw4fGVbcl07cmV0dXJuIGE+Pj4wfWZ1bmN0aW9uIGhleFRvU3RyKGUsdCl7cmV0dXJuIDE9PT10P1N0cmluZy5mcm9tQ2hhckNvZGUoZVswXSxlWzFdKTozPT09dD9TdHJpbmcuZnJvbUNoYXJDb2RlKGVbMF0sZVsxXSxlWzJdLGVbM10pOlN0cmluZy5mcm9tQ2hhckNvZGUoLi4uZS5zdWJhcnJheSgwLHQrMSkpfWZ1bmN0aW9uIGFkZEhleChlLHQsYSl7bGV0IHI9MDtmb3IobGV0IGk9YTtpPj0wO2ktLSl7cis9ZVtpXSt0W2ldO2VbaV09MjU1JnI7cj4+PTh9fWZ1bmN0aW9uIGluY0hleChlLHQpe2xldCBhPTE7Zm9yKGxldCByPXQ7cj49MCYmYT4wO3ItLSl7YSs9ZVtyXTtlW3JdPTI1NSZhO2E+Pj04fX1jb25zdCBFYT0xNjtjbGFzcyBCaW5hcnlDTWFwU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuYnVmZmVyPWU7dGhpcy5wb3M9MDt0aGlzLmVuZD1lLmxlbmd0aDt0aGlzLnRtcEJ1Zj1uZXcgVWludDhBcnJheSgxOSl9cmVhZEJ5dGUoKXtyZXR1cm4gdGhpcy5wb3M+PXRoaXMuZW5kPy0xOnRoaXMuYnVmZmVyW3RoaXMucG9zKytdfXJlYWROdW1iZXIoKXtsZXQgZSx0PTA7ZG97Y29uc3QgYT10aGlzLnJlYWRCeXRlKCk7aWYoYTwwKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5leHBlY3RlZCBFT0YgaW4gYmNtYXAiKTtlPSEoMTI4JmEpO3Q9dDw8N3wxMjcmYX13aGlsZSghZSk7cmV0dXJuIHR9cmVhZFNpZ25lZCgpe2NvbnN0IGU9dGhpcy5yZWFkTnVtYmVyKCk7cmV0dXJuIDEmZT9+KGU+Pj4xKTplPj4+MX1yZWFkSGV4KGUsdCl7ZS5zZXQodGhpcy5idWZmZXIuc3ViYXJyYXkodGhpcy5wb3MsdGhpcy5wb3MrdCsxKSk7dGhpcy5wb3MrPXQrMX1yZWFkSGV4TnVtYmVyKGUsdCl7bGV0IGE7Y29uc3Qgcj10aGlzLnRtcEJ1ZjtsZXQgaT0wO2Rve2NvbnN0IGU9dGhpcy5yZWFkQnl0ZSgpO2lmKGU8MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuZXhwZWN0ZWQgRU9GIGluIGJjbWFwIik7YT0hKDEyOCZlKTtyW2krK109MTI3JmV9d2hpbGUoIWEpO2xldCBuPXQscz0wLG89MDtmb3IoO24+PTA7KXtmb3IoO288OCYmci5sZW5ndGg+MDspe3N8PXJbLS1pXTw8bztvKz03fWVbbl09MjU1JnM7bi0tO3M+Pj04O28tPTh9fXJlYWRIZXhTaWduZWQoZSx0KXt0aGlzLnJlYWRIZXhOdW1iZXIoZSx0KTtjb25zdCBhPTEmZVt0XT8yNTU6MDtsZXQgcj0wO2ZvcihsZXQgaT0wO2k8PXQ7aSsrKXtyPSgxJnIpPDw4fGVbaV07ZVtpXT1yPj4xXmF9fXJlYWRTdHJpbmcoKXtjb25zdCBlPXRoaXMucmVhZE51bWJlcigpLHQ9bmV3IEFycmF5KGUpO2ZvcihsZXQgYT0wO2E8ZTthKyspdFthXT10aGlzLnJlYWROdW1iZXIoKTtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSguLi50KX19Y2xhc3MgQmluYXJ5Q01hcFJlYWRlcnthc3luYyBwcm9jZXNzKGUsdCxhKXtjb25zdCByPW5ldyBCaW5hcnlDTWFwU3RyZWFtKGUpLGk9ci5yZWFkQnl0ZSgpO3QudmVydGljYWw9ISEoMSZpKTtsZXQgbj1udWxsO2NvbnN0IHM9bmV3IFVpbnQ4QXJyYXkoRWEpLG89bmV3IFVpbnQ4QXJyYXkoRWEpLGM9bmV3IFVpbnQ4QXJyYXkoRWEpLGw9bmV3IFVpbnQ4QXJyYXkoRWEpLGg9bmV3IFVpbnQ4QXJyYXkoRWEpO2xldCB1LGQ7Zm9yKDsoZD1yLnJlYWRCeXRlKCkpPj0wOyl7Y29uc3QgZT1kPj41O2lmKDc9PT1lKXtzd2l0Y2goMzEmZCl7Y2FzZSAwOnIucmVhZFN0cmluZygpO2JyZWFrO2Nhc2UgMTpuPXIucmVhZFN0cmluZygpfWNvbnRpbnVlfWNvbnN0IGE9ISEoMTYmZCksaT0xNSZkO2lmKGkrMT5FYSl0aHJvdyBuZXcgRXJyb3IoIkJpbmFyeUNNYXBSZWFkZXIucHJvY2VzczogSW52YWxpZCBkYXRhU2l6ZS4iKTtjb25zdCBmPTEsZz1yLnJlYWROdW1iZXIoKTtzd2l0Y2goZSl7Y2FzZSAwOnIucmVhZEhleChzLGkpO3IucmVhZEhleE51bWJlcihvLGkpO2FkZEhleChvLHMsaSk7dC5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQocyxpKSxoZXhUb0ludChvLGkpKTtmb3IobGV0IGU9MTtlPGc7ZSsrKXtpbmNIZXgobyxpKTtyLnJlYWRIZXhOdW1iZXIocyxpKTthZGRIZXgocyxvLGkpO3IucmVhZEhleE51bWJlcihvLGkpO2FkZEhleChvLHMsaSk7dC5hZGRDb2Rlc3BhY2VSYW5nZShpKzEsaGV4VG9JbnQocyxpKSxoZXhUb0ludChvLGkpKX1icmVhaztjYXNlIDE6ci5yZWFkSGV4KHMsaSk7ci5yZWFkSGV4TnVtYmVyKG8saSk7YWRkSGV4KG8scyxpKTtyLnJlYWROdW1iZXIoKTtmb3IobGV0IGU9MTtlPGc7ZSsrKXtpbmNIZXgobyxpKTtyLnJlYWRIZXhOdW1iZXIocyxpKTthZGRIZXgocyxvLGkpO3IucmVhZEhleE51bWJlcihvLGkpO2FkZEhleChvLHMsaSk7ci5yZWFkTnVtYmVyKCl9YnJlYWs7Y2FzZSAyOnIucmVhZEhleChjLGkpO3U9ci5yZWFkTnVtYmVyKCk7dC5tYXBPbmUoaGV4VG9JbnQoYyxpKSx1KTtmb3IobGV0IGU9MTtlPGc7ZSsrKXtpbmNIZXgoYyxpKTtpZighYSl7ci5yZWFkSGV4TnVtYmVyKGgsaSk7YWRkSGV4KGMsaCxpKX11PXIucmVhZFNpZ25lZCgpKyh1KzEpO3QubWFwT25lKGhleFRvSW50KGMsaSksdSl9YnJlYWs7Y2FzZSAzOnIucmVhZEhleChzLGkpO3IucmVhZEhleE51bWJlcihvLGkpO2FkZEhleChvLHMsaSk7dT1yLnJlYWROdW1iZXIoKTt0Lm1hcENpZFJhbmdlKGhleFRvSW50KHMsaSksaGV4VG9JbnQobyxpKSx1KTtmb3IobGV0IGU9MTtlPGc7ZSsrKXtpbmNIZXgobyxpKTtpZihhKXMuc2V0KG8pO2Vsc2V7ci5yZWFkSGV4TnVtYmVyKHMsaSk7YWRkSGV4KHMsbyxpKX1yLnJlYWRIZXhOdW1iZXIobyxpKTthZGRIZXgobyxzLGkpO3U9ci5yZWFkTnVtYmVyKCk7dC5tYXBDaWRSYW5nZShoZXhUb0ludChzLGkpLGhleFRvSW50KG8saSksdSl9YnJlYWs7Y2FzZSA0OnIucmVhZEhleChjLGYpO3IucmVhZEhleChsLGkpO3QubWFwT25lKGhleFRvSW50KGMsZiksaGV4VG9TdHIobCxpKSk7Zm9yKGxldCBlPTE7ZTxnO2UrKyl7aW5jSGV4KGMsZik7aWYoIWEpe3IucmVhZEhleE51bWJlcihoLGYpO2FkZEhleChjLGgsZil9aW5jSGV4KGwsaSk7ci5yZWFkSGV4U2lnbmVkKGgsaSk7YWRkSGV4KGwsaCxpKTt0Lm1hcE9uZShoZXhUb0ludChjLGYpLGhleFRvU3RyKGwsaSkpfWJyZWFrO2Nhc2UgNTpyLnJlYWRIZXgocyxmKTtyLnJlYWRIZXhOdW1iZXIobyxmKTthZGRIZXgobyxzLGYpO3IucmVhZEhleChsLGkpO3QubWFwQmZSYW5nZShoZXhUb0ludChzLGYpLGhleFRvSW50KG8sZiksaGV4VG9TdHIobCxpKSk7Zm9yKGxldCBlPTE7ZTxnO2UrKyl7aW5jSGV4KG8sZik7aWYoYSlzLnNldChvKTtlbHNle3IucmVhZEhleE51bWJlcihzLGYpO2FkZEhleChzLG8sZil9ci5yZWFkSGV4TnVtYmVyKG8sZik7YWRkSGV4KG8scyxmKTtyLnJlYWRIZXgobCxpKTt0Lm1hcEJmUmFuZ2UoaGV4VG9JbnQocyxmKSxoZXhUb0ludChvLGYpLGhleFRvU3RyKGwsaSkpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBCaW5hcnlDTWFwUmVhZGVyLnByb2Nlc3MgLSB1bmtub3duIHR5cGU6ICR7ZX1gKX19cmV0dXJuIG4/YShuKTp0fX1jbGFzcyBBc2NpaTg1U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS44KTtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5pbnB1dD1uZXcgVWludDhBcnJheSg1KX1yZWFkQmxvY2soKXtjb25zdCBlPXRoaXMuc3RyZWFtO2xldCB0PWUuZ2V0Qnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNl
101KHQpOyl0PWUuZ2V0Qnl0ZSgpO2lmKC0xPT09dHx8MTI2PT09dCl7dGhpcy5lb2Y9ITA7cmV0dXJufWNvbnN0IGE9dGhpcy5idWZmZXJMZW5ndGg7bGV0IHIsaTtpZigxMjI9PT10KXtyPXRoaXMuZW5zdXJlQnVmZmVyKGErNCk7Zm9yKGk9MDtpPDQ7KytpKXJbYStpXT0wO3RoaXMuYnVmZmVyTGVuZ3RoKz00fWVsc2V7Y29uc3Qgbj10aGlzLmlucHV0O25bMF09dDtmb3IoaT0xO2k8NTsrK2kpe3Q9ZS5nZXRCeXRlKCk7Zm9yKDtpc1doaXRlU3BhY2UodCk7KXQ9ZS5nZXRCeXRlKCk7bltpXT10O2lmKC0xPT09dHx8MTI2PT09dClicmVha31yPXRoaXMuZW5zdXJlQnVmZmVyKGEraS0xKTt0aGlzLmJ1ZmZlckxlbmd0aCs9aS0xO2lmKGk8NSl7Zm9yKDtpPDU7KytpKW5baV09MTE3O3RoaXMuZW9mPSEwfWxldCBzPTA7Zm9yKGk9MDtpPDU7KytpKXM9ODUqcysobltpXS0zMyk7Zm9yKGk9MztpPj0wOy0taSl7clthK2ldPTI1NSZzO3M+Pj04fX19fWNsYXNzIEFzY2lpSGV4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7dCYmKHQqPS41KTtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7dGhpcy5maXJzdERpZ2l0PS0xfXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoOGUzKTtpZighZS5sZW5ndGgpe3RoaXMuZW9mPSEwO3JldHVybn1jb25zdCB0PWUubGVuZ3RoKzE+PjEsYT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCt0KTtsZXQgcj10aGlzLmJ1ZmZlckxlbmd0aCxpPXRoaXMuZmlyc3REaWdpdDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZTtpZih0Pj00OCYmdDw9NTcpZT0xNSZ0O2Vsc2V7aWYoISh0Pj02NSYmdDw9NzB8fHQ+PTk3JiZ0PD0xMDIpKXtpZig2Mj09PXQpe3RoaXMuZW9mPSEwO2JyZWFrfWNvbnRpbnVlfWU9OSsoMTUmdCl9aWYoaTwwKWk9ZTtlbHNle2FbcisrXT1pPDw0fGU7aT0tMX19aWYoaT49MCYmdGhpcy5lb2Ype2FbcisrXT1pPDw0O2k9LTF9dGhpcy5maXJzdERpZ2l0PWk7dGhpcy5idWZmZXJMZW5ndGg9cn19Y29uc3QgTGE9LTEsX2E9W1stMSwtMV0sWy0xLC0xXSxbNyw4XSxbNyw3XSxbNiw2XSxbNiw2XSxbNiw1XSxbNiw1XSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbNCwwXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMywxXSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMyw0XSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMywzXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXSxbMSwyXV0sVWE9W1stMSwtMV0sWzEyLC0yXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTIsMTk4NF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjE3Nl0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQ5Nl0sWzEyLDI1NjBdXSxqYT1bWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbOCwyOV0sWzgsMjldLFs4LDMwXSxbOCwzMF0sWzgsNDVdLFs4LDQ1XSxbOCw0Nl0sWzgsNDZdLFs3LDIyXSxbNywyMl0sWzcsMjJdLFs3LDIyXSxbNywyM10sWzcsMjNdLFs3LDIzXSxbNywyM10sWzgsNDddLFs4LDQ3XSxbOCw0OF0sWzgsNDhdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzYsMTNdLFs2LDEzXSxbNiwxM10sWzcsMjBdLFs3LDIwXSxbNywyMF0sWzcsMjBdLFs4LDMzXSxbOCwzM10sWzgsMzRdLFs4LDM0XSxbOCwzNV0sWzgsMzVdLFs4LDM2XSxbOCwzNl0sWzgsMzddLFs4LDM3XSxbOCwzOF0sWzgsMzhdLFs3LDE5XSxbNywxOV0sWzcsMTldLFs3LDE5XSxbOCwzMV0sWzgsMzFdLFs4LDMyXSxbOCwzMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbNiwxMl0sWzYsMTJdLFs2LDEyXSxbOCw1M10sWzgsNTNdLFs4LDU0XSxbOCw1NF0sWzcsMjZdLFs3LDI2XSxbNywyNl0sWzcsMjZdLFs4LDM5XSxbOCwzOV0sWzgsNDBdLFs4LDQwXSxbOCw0MV0sWzgsNDFdLFs4LDQyXSxbOCw0Ml0sWzgsNDNdLFs4LDQzXSxbOCw0NF0sWzgsNDRdL
101Fs3LDIxXSxbNywyMV0sWzcsMjFdLFs3LDIxXSxbNywyOF0sWzcsMjhdLFs3LDI4XSxbNywyOF0sWzgsNjFdLFs4LDYxXSxbOCw2Ml0sWzgsNjJdLFs4LDYzXSxbOCw2M10sWzgsMF0sWzgsMF0sWzgsMzIwXSxbOCwzMjBdLFs4LDM4NF0sWzgsMzg0XSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTBdLFs1LDEwXSxbNSwxMF0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs1LDExXSxbNSwxMV0sWzUsMTFdLFs3LDI3XSxbNywyN10sWzcsMjddLFs3LDI3XSxbOCw1OV0sWzgsNTldLFs4LDYwXSxbOCw2MF0sWzksMTQ3Ml0sWzksMTUzNl0sWzksMTYwMF0sWzksMTcyOF0sWzcsMThdLFs3LDE4XSxbNywxOF0sWzcsMThdLFs3LDI0XSxbNywyNF0sWzcsMjRdLFs3LDI0XSxbOCw0OV0sWzgsNDldLFs4LDUwXSxbOCw1MF0sWzgsNTFdLFs4LDUxXSxbOCw1Ml0sWzgsNTJdLFs3LDI1XSxbNywyNV0sWzcsMjVdLFs3LDI1XSxbOCw1NV0sWzgsNTVdLFs4LDU2XSxbOCw1Nl0sWzgsNTddLFs4LDU3XSxbOCw1OF0sWzgsNThdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxOTJdLFs2LDE5Ml0sWzYsMTkyXSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbNiwxNjY0XSxbOCw0NDhdLFs4LDQ0OF0sWzgsNTEyXSxbOCw1MTJdLFs5LDcwNF0sWzksNzY4XSxbOCw2NDBdLFs4LDY0MF0sWzgsNTc2XSxbOCw1NzZdLFs5LDgzMl0sWzksODk2XSxbOSw5NjBdLFs5LDEwMjRdLFs5LDEwODhdLFs5LDExNTJdLFs5LDEyMTZdLFs5LDEyODBdLFs5LDEzNDRdLFs5LDE0MDhdLFs3LDI1Nl0sWzcsMjU2XSxbNywyNTZdLFs3LDI1Nl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsMl0sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzQsM10sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSwxMjhdLFs1LDEyOF0sWzUsMTI4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw4XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNSw5XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE2XSxbNiwxNl0sWzYsMTZdLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzYsMTddLFs2LDE3XSxbNiwxN10sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNF0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNF0sWzYsMTRdLFs2LDE0XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs2LDE1XSxbNiwxNV0sWzYsMTVdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNSw2NF0sWzUsNjRdLFs1LDY0XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw2XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XSxbNCw3XV0sWGE9W1stMSwtMV0sWy0xLC0xXSxbMTIsLTJdLFsxMiwtMl0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWy0xLC0xXSxbMTEsMTc5Ml0sWzExLDE3OTJdLFsxMSwxNzkyXSxbMTEsMTc5Ml0sWzEyLDE5ODRdLFsxMiwxOTg0XSxbMTIsMjA0OF0sWzEyLDIwNDhdLFsxMiwyMTEyXSxbMTIsMjExMl0sWzEyLDIxNzZdLFsxMiwyMTc2XSxbMTIsMjI0MF0sWzEyLDIyNDBdLFsxMiwyMzA0XSxbMTIsMjMwNF0sWzExLDE4NTZdLFsx
101MSwxODU2XSxbMTEsMTg1Nl0sWzExLDE4NTZdLFsxMSwxOTIwXSxbMTEsMTkyMF0sWzExLDE5MjBdLFsxMSwxOTIwXSxbMTIsMjM2OF0sWzEyLDIzNjhdLFsxMiwyNDMyXSxbMTIsMjQzMl0sWzEyLDI0OTZdLFsxMiwyNDk2XSxbMTIsMjU2MF0sWzEyLDI1NjBdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTAsMThdLFsxMCwxOF0sWzEwLDE4XSxbMTIsNTJdLFsxMiw1Ml0sWzEzLDY0MF0sWzEzLDcwNF0sWzEzLDc2OF0sWzEzLDgzMl0sWzEyLDU1XSxbMTIsNTVdLFsxMiw1Nl0sWzEyLDU2XSxbMTMsMTI4MF0sWzEzLDEzNDRdLFsxMywxNDA4XSxbMTMsMTQ3Ml0sWzEyLDU5XSxbMTIsNTldLFsxMiw2MF0sWzEyLDYwXSxbMTMsMTUzNl0sWzEzLDE2MDBdLFsxMSwyNF0sWzExLDI0XSxbMTEsMjRdLFsxMSwyNF0sWzExLDI1XSxbMTEsMjVdLFsxMSwyNV0sWzExLDI1XSxbMTMsMTY2NF0sWzEzLDE3MjhdLFsxMiwzMjBdLFsxMiwzMjBdLFsxMiwzODRdLFsxMiwzODRdLFsxMiw0NDhdLFsxMiw0NDhdLFsxMyw1MTJdLFsxMyw1NzZdLFsxMiw1M10sWzEyLDUzXSxbMTIsNTRdLFsxMiw1NF0sWzEzLDg5Nl0sWzEzLDk2MF0sWzEzLDEwMjRdLFsxMywxMDg4XSxbMTMsMTE1Ml0sWzEzLDEyMTZdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XSxbMTAsNjRdLFsxMCw2NF0sWzEwLDY0XV0scWE9W1s4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbOCwxM10sWzgsMTNdLFs4LDEzXSxbMTEsMjNdLFsxMSwyM10sWzEyLDUwXSxbMTIsNTFdLFsxMiw0NF0sWzEyLDQ1XSxbMTIsNDZdLFsxMiw0N10sWzEyLDU3XSxbMTIsNThdLFsxMiw2MV0sWzEyLDI1Nl0sWzEwLDE2XSxbMTAsMTZdLFsxMCwxNl0sWzEwLDE2XSxbMTAsMTddLFsxMCwxN10sWzEwLDE3XSxbMTAsMTddLFsxMiw0OF0sWzEyLDQ5XSxbMTIsNjJdLFsxMiw2M10sWzEyLDMwXSxbMTIsMzFdLFsxMiwzMl0sWzEyLDMzXSxbMTIsNDBdLFsxMiw0MV0sWzExLDIyXSxbMTEsMjJdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbOCwxNF0sWzgsMTRdLFs4LDE0XSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDEwXSxbNywxMF0sWzcsMTBdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzcsMTFdLFs3LDExXSxbNywxMV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbOSwxNV0sWzksMTVdLFs5LDE1XSxbMTIsMTI4XSxbMTIsMTkyXSxbMTIsMjZdLFsxMiwyN10sWzEyLDI4XSxbMTIsMjldLFsxMSwxOV0sWzExLDE5XSxbMTEsMjBdLFsxMSwyMF0sWzEyLDM0XSxbMTIsMzVdLFsxMiwzNl0sWzEyLDM3XSxbMTIsMzhdLFsxMiwzOV0sWzExLDIxXSxbMTEsMjFdLFsxMiw0Ml0sWzEyLDQzXSxbMTAsMF0sWzEwLDBdLFsxMCwwXSxbMTAsMF0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXSxbNywxMl0sWzcsMTJdLFs3LDEyXV0sSGE9W1stMSwtMV0sWy0xLC0xXSxbLTEsLTFdLFstMSwtMV0sWzYsOV0sWzYsOF0sWzUsN10sWzUsN10sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNl0sWzQsNV0sWzQsNV0sWzQsNV0sWzQsNV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsMV0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzMsNF0sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsM10sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl0sWzIsMl1dO2NsYXNzIENDSVRURmF4RGVjb2Rlcntjb25zdHJ1Y3RvcihlLHQ9e30pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlPy5uZXh0KXRocm93IG5ldyBFcnJvcignQ0NJVFRGYXhEZWNvZGVyIC0gaW52YWxpZCAic291cmNlIiBwYXJhbWV0ZXIuJyk7dGhpcy5zb3VyY2U9ZTt0aGlzLmVvZj0hMTt0aGlzLmVuY29kaW5nPXQuS3x8MDt0aGlzLmVvbGluZT10LkVuZE9mTGluZXx8ITE7dGhpcy5ieXRlQWxpZ249dC5FbmNvZGVkQnl0ZUFsaWdufHwhMTt0aGlzLmNvbHVtbnM9dC5Db2x1bW5zfHwxNzI4O3RoaXMucm93cz10LlJvd3N8fDA7dGhpcy5lb2Jsb2NrPXQuRW5kT2ZCbG9jaz8/ITA7dGhpcy5ibGFjaz10LkJsYWNrSXMxfHwhMTt0aGlzLmNvZGluZ0xpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysxKTt0aGlzLnJlZkxpbmU9bmV3IFVpbnQzMkFycmF5KHRoaXMuY29sdW1ucysyKTt0aGlzLmNvZGluZ0xpbmVbMF09dGhpcy5jb2x1bW5zO3RoaXMuY29kaW5nUG9zPTA7dGhpcy5yb3c9MDt0aGlzLm5leHRMaW5lMkQ9dGhpcy5lbmNvZGluZzwwO3RoaXMuaW5wdXRCaXRzPTA7dGhpcy5pbnB1dEJ1Zj0wO3RoaXMub3V0cHV0Qml0cz0wO3RoaXMucm93c0RvbmU9ITE7bGV0IGE7Zm9yKDswPT09KGE9dGhpcy5fbG9va0JpdHMoMTIpKTspdGhpcy5fZWF0Qml0cygxKTsxPT09YSYmdGhpcy5fZWF0Qml0cygxMik7aWYodGhpcy5lbmNvZGluZz4wKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXJlYWROZXh0Q2hhcigpe2lmKHRoaXMuZW9mKXJldHVybi0xO2NvbnN0IGU9dGhpcy5yZWZMaW5lLHQ9dGhpcy5jb2RpbmdMaW5lLGE9dGhpcy5jb2x1bW5zO2xldCByLGksbixzLG87aWYoMD09PXRoaXMub3V0cHV0Qml0cyl7dGhpcy5yb3dzRG9uZSYmKHRoaXMuZW9mPSEwKTtpZih0aGlzLmVvZilyZXR1cm4tMTt0aGlzLmVycj0hMTtsZXQgbixvLGM7aWYodGhpcy5uZXh0TGluZTJEKXtmb3Iocz0wO3Rbc108YTsrK3MpZVtzXT10W3NdO2VbcysrXT1hO2Vbc109YTt0WzBdPTA7dGhpcy5jb2RpbmdQb3M9MDtyPTA7aT0wO2Zvcig7dFt0aGlzLmNvZGluZ1Bvc108YTspe249dGhpcy5fZ2V0VHdvRGltQ29kZSgpO3N3aXRjaC
101huKXtjYXNlIDA6dGhpcy5fYWRkUGl4ZWxzKGVbcisxXSxpKTtlW3IrMV08YSYmKHIrPTIpO2JyZWFrO2Nhc2UgMTpuPW89MDtpZihpKXtkb3tuKz1jPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGM+PTY0KTtkb3tvKz1jPXRoaXMuX2dldFdoaXRlQ29kZSgpfXdoaWxlKGM+PTY0KX1lbHNle2Rve24rPWM9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoYz49NjQpO2Rve28rPWM9dGhpcy5fZ2V0QmxhY2tDb2RlKCl9d2hpbGUoYz49NjQpfXRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStuLGkpO3RbdGhpcy5jb2RpbmdQb3NdPGEmJnRoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStvLDFeaSk7Zm9yKDtlW3JdPD10W3RoaXMuY29kaW5nUG9zXSYmZVtyXTxhOylyKz0yO2JyZWFrO2Nhc2UgNzp0aGlzLl9hZGRQaXhlbHMoZVtyXSszLGkpO2lePTE7aWYodFt0aGlzLmNvZGluZ1Bvc108YSl7KytyO2Zvcig7ZVtyXTw9dFt0aGlzLmNvZGluZ1Bvc10mJmVbcl08YTspcis9Mn1icmVhaztjYXNlIDU6dGhpcy5fYWRkUGl4ZWxzKGVbcl0rMixpKTtpXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysrcjtmb3IoO2Vbcl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW3JdPGE7KXIrPTJ9YnJlYWs7Y2FzZSAzOnRoaXMuX2FkZFBpeGVscyhlW3JdKzEsaSk7aV49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXsrK3I7Zm9yKDtlW3JdPD10W3RoaXMuY29kaW5nUG9zXSYmZVtyXTxhOylyKz0yfWJyZWFrO2Nhc2UgMjp0aGlzLl9hZGRQaXhlbHMoZVtyXSxpKTtpXj0xO2lmKHRbdGhpcy5jb2RpbmdQb3NdPGEpeysrcjtmb3IoO2Vbcl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW3JdPGE7KXIrPTJ9YnJlYWs7Y2FzZSA4OnRoaXMuX2FkZFBpeGVsc05lZyhlW3JdLTMsaSk7aV49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtyPjA/LS1yOisrcjtmb3IoO2Vbcl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW3JdPGE7KXIrPTJ9YnJlYWs7Y2FzZSA2OnRoaXMuX2FkZFBpeGVsc05lZyhlW3JdLTIsaSk7aV49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtyPjA/LS1yOisrcjtmb3IoO2Vbcl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW3JdPGE7KXIrPTJ9YnJlYWs7Y2FzZSA0OnRoaXMuX2FkZFBpeGVsc05lZyhlW3JdLTEsaSk7aV49MTtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXtyPjA/LS1yOisrcjtmb3IoO2Vbcl08PXRbdGhpcy5jb2RpbmdQb3NdJiZlW3JdPGE7KXIrPTJ9YnJlYWs7Y2FzZSBMYTp0aGlzLl9hZGRQaXhlbHMoYSwwKTt0aGlzLmVvZj0hMDticmVhaztkZWZhdWx0OmluZm8oImJhZCAyZCBjb2RlIik7dGhpcy5fYWRkUGl4ZWxzKGEsMCk7dGhpcy5lcnI9ITB9fX1lbHNle3RbMF09MDt0aGlzLmNvZGluZ1Bvcz0wO2k9MDtmb3IoO3RbdGhpcy5jb2RpbmdQb3NdPGE7KXtuPTA7aWYoaSlkb3tuKz1jPXRoaXMuX2dldEJsYWNrQ29kZSgpfXdoaWxlKGM+PTY0KTtlbHNlIGRve24rPWM9dGhpcy5fZ2V0V2hpdGVDb2RlKCl9d2hpbGUoYz49NjQpO3RoaXMuX2FkZFBpeGVscyh0W3RoaXMuY29kaW5nUG9zXStuLGkpO2lePTF9fWxldCBsPSExO3RoaXMuYnl0ZUFsaWduJiYodGhpcy5pbnB1dEJpdHMmPS04KTtpZih0aGlzLmVvYmxvY2t8fHRoaXMucm93IT09dGhpcy5yb3dzLTEpe249dGhpcy5fbG9va0JpdHMoMTIpO2lmKHRoaXMuZW9saW5lKWZvcig7biE9PUxhJiYxIT09bjspe3RoaXMuX2VhdEJpdHMoMSk7bj10aGlzLl9sb29rQml0cygxMil9ZWxzZSBmb3IoOzA9PT1uOyl7dGhpcy5fZWF0Qml0cygxKTtuPXRoaXMuX2xvb2tCaXRzKDEyKX1pZigxPT09bil7dGhpcy5fZWF0Qml0cygxMik7bD0hMH1lbHNlIG49PT1MYSYmKHRoaXMuZW9mPSEwKX1lbHNlIHRoaXMucm93c0RvbmU9ITA7aWYoIXRoaXMuZW9mJiZ0aGlzLmVuY29kaW5nPjAmJiF0aGlzLnJvd3NEb25lKXt0aGlzLm5leHRMaW5lMkQ9IXRoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9aWYodGhpcy5lb2Jsb2NrJiZsJiZ0aGlzLmJ5dGVBbGlnbil7bj10aGlzLl9sb29rQml0cygxMik7aWYoMT09PW4pe3RoaXMuX2VhdEJpdHMoMTIpO2lmKHRoaXMuZW5jb2Rpbmc+MCl7dGhpcy5fbG9va0JpdHMoMSk7dGhpcy5fZWF0Qml0cygxKX1pZih0aGlzLmVuY29kaW5nPj0wKWZvcihzPTA7czw0Oysrcyl7bj10aGlzLl9sb29rQml0cygxMik7MSE9PW4mJmluZm8oImJhZCBydGMgY29kZTogIituKTt0aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2xvb2tCaXRzKDEpO3RoaXMuX2VhdEJpdHMoMSl9fXRoaXMuZW9mPSEwfX1lbHNlIGlmKHRoaXMuZXJyJiZ0aGlzLmVvbGluZSl7Zm9yKDs7KXtuPXRoaXMuX2xvb2tCaXRzKDEzKTtpZihuPT09TGEpe3RoaXMuZW9mPSEwO3JldHVybi0xfWlmKG4+PjE9PTEpYnJlYWs7dGhpcy5fZWF0Qml0cygxKX10aGlzLl9lYXRCaXRzKDEyKTtpZih0aGlzLmVuY29kaW5nPjApe3RoaXMuX2VhdEJpdHMoMSk7dGhpcy5uZXh0TGluZTJEPSEoMSZuKX19dGhpcy5vdXRwdXRCaXRzPXRbMF0+MD90W3RoaXMuY29kaW5nUG9zPTBdOnRbdGhpcy5jb2RpbmdQb3M9MV07dGhpcy5yb3crK31pZih0aGlzLm91dHB1dEJpdHM+PTgpe289MSZ0aGlzLmNvZGluZ1Bvcz8wOjI1NTt0aGlzLm91dHB1dEJpdHMtPTg7aWYoMD09PXRoaXMub3V0cHV0Qml0cyYmd
101Ft0aGlzLmNvZGluZ1Bvc108YSl7dGhpcy5jb2RpbmdQb3MrKzt0aGlzLm91dHB1dEJpdHM9dFt0aGlzLmNvZGluZ1Bvc10tdFt0aGlzLmNvZGluZ1Bvcy0xXX19ZWxzZXtuPTg7bz0wO2Rve2lmKCJudW1iZXIiIT10eXBlb2YgdGhpcy5vdXRwdXRCaXRzKXRocm93IG5ldyBGb3JtYXRFcnJvcignSW52YWxpZCAvQ0NJVFRGYXhEZWNvZGUgZGF0YSwgIm91dHB1dEJpdHMiIG11c3QgYmUgYSBudW1iZXIuJyk7aWYodGhpcy5vdXRwdXRCaXRzPm4pe288PD1uOzEmdGhpcy5jb2RpbmdQb3N8fChvfD0yNTU+Pjgtbik7dGhpcy5vdXRwdXRCaXRzLT1uO249MH1lbHNle288PD10aGlzLm91dHB1dEJpdHM7MSZ0aGlzLmNvZGluZ1Bvc3x8KG98PTI1NT4+OC10aGlzLm91dHB1dEJpdHMpO24tPXRoaXMub3V0cHV0Qml0czt0aGlzLm91dHB1dEJpdHM9MDtpZih0W3RoaXMuY29kaW5nUG9zXTxhKXt0aGlzLmNvZGluZ1BvcysrO3RoaXMub3V0cHV0Qml0cz10W3RoaXMuY29kaW5nUG9zXS10W3RoaXMuY29kaW5nUG9zLTFdfWVsc2UgaWYobj4wKXtvPDw9bjtuPTB9fX13aGlsZShuKX10aGlzLmJsYWNrJiYob149MjU1KTtyZXR1cm4gb31fYWRkUGl4ZWxzKGUsdCl7Y29uc3QgYT10aGlzLmNvZGluZ0xpbmU7bGV0IHI9dGhpcy5jb2RpbmdQb3M7aWYoZT5hW3JdKXtpZihlPnRoaXMuY29sdW1ucyl7aW5mbygicm93IGlzIHdyb25nIGxlbmd0aCIpO3RoaXMuZXJyPSEwO2U9dGhpcy5jb2x1bW5zfTEmcl50JiYrK3I7YVtyXT1lfXRoaXMuY29kaW5nUG9zPXJ9X2FkZFBpeGVsc05lZyhlLHQpe2NvbnN0IGE9dGhpcy5jb2RpbmdMaW5lO2xldCByPXRoaXMuY29kaW5nUG9zO2lmKGU+YVtyXSl7aWYoZT50aGlzLmNvbHVtbnMpe2luZm8oInJvdyBpcyB3cm9uZyBsZW5ndGgiKTt0aGlzLmVycj0hMDtlPXRoaXMuY29sdW1uc30xJnJedCYmKytyO2Fbcl09ZX1lbHNlIGlmKGU8YVtyXSl7aWYoZTwwKXtpbmZvKCJpbnZhbGlkIGNvZGUiKTt0aGlzLmVycj0hMDtlPTB9Zm9yKDtyPjAmJmU8YVtyLTFdOyktLXI7YVtyXT1lfXRoaXMuY29kaW5nUG9zPXJ9X2ZpbmRUYWJsZUNvZGUoZSx0LGEscil7Y29uc3QgaT1yfHwwO2ZvcihsZXQgcj1lO3I8PXQ7KytyKXtsZXQgZT10aGlzLl9sb29rQml0cyhyKTtpZihlPT09TGEpcmV0dXJuWyEwLDEsITFdO3I8dCYmKGU8PD10LXIpO2lmKCFpfHxlPj1pKXtjb25zdCB0PWFbZS1pXTtpZih0WzBdPT09cil7dGhpcy5fZWF0Qml0cyhyKTtyZXR1cm5bITAsdFsxXSwhMF19fX1yZXR1cm5bITEsMCwhMV19X2dldFR3b0RpbUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDcpO2U9X2FbdF07aWYoZT8uWzBdPjApe3RoaXMuX2VhdEJpdHMoZVswXSk7cmV0dXJuIGVbMV19fWVsc2V7Y29uc3QgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsNyxfYSk7aWYoZVswXSYmZVsyXSlyZXR1cm4gZVsxXX1pbmZvKCJCYWQgdHdvIGRpbSBjb2RlIik7cmV0dXJuIExhfV9nZXRXaGl0ZUNvZGUoKXtsZXQgZSx0PTA7aWYodGhpcy5lb2Jsb2NrKXt0PXRoaXMuX2xvb2tCaXRzKDEyKTtpZih0PT09TGEpcmV0dXJuIDE7ZT10Pj41P2phW3Q+PjNdOlVhW3RdO2lmKGVbMF0+MCl7dGhpcy5fZWF0Qml0cyhlWzBdKTtyZXR1cm4gZVsxXX19ZWxzZXtsZXQgZT10aGlzLl9maW5kVGFibGVDb2RlKDEsOSxqYSk7aWYoZVswXSlyZXR1cm4gZVsxXTtlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMTEsMTIsVWEpO2lmKGVbMF0pcmV0dXJuIGVbMV19aW5mbygiYmFkIHdoaXRlIGNvZGUiKTt0aGlzLl9lYXRCaXRzKDEpO3JldHVybiAxfV9nZXRCbGFja0NvZGUoKXtsZXQgZSx0O2lmKHRoaXMuZW9ibG9jayl7ZT10aGlzLl9sb29rQml0cygxMyk7aWYoZT09PUxhKXJldHVybiAxO3Q9ZT4+Nz8hKGU+PjkpJiZlPj43P3FhWyhlPj4xKS02NF06SGFbZT4+N106WGFbZV07aWYodFswXT4wKXt0aGlzLl9lYXRCaXRzKHRbMF0pO3JldHVybiB0WzFdfX1lbHNle2xldCBlPXRoaXMuX2ZpbmRUYWJsZUNvZGUoMiw2LEhhKTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSg3LDEyLHFhLDY0KTtpZihlWzBdKXJldHVybiBlWzFdO2U9dGhpcy5fZmluZFRhYmxlQ29kZSgxMCwxMyxYYSk7aWYoZVswXSlyZXR1cm4gZVsxXX1pbmZvKCJiYWQgYmxhY2sgY29kZSIpO3RoaXMuX2VhdEJpdHMoMSk7cmV0dXJuIDF9X2xvb2tCaXRzKGUpe2xldCB0O2Zvcig7dGhpcy5pbnB1dEJpdHM8ZTspe2lmKC0xPT09KHQ9dGhpcy5zb3VyY2UubmV4dCgpKSlyZXR1cm4gMD09PXRoaXMuaW5wdXRCaXRzP0xhOnRoaXMuaW5wdXRCdWY8PGUtdGhpcy5pbnB1dEJpdHMmNjU1MzU+PjE2LWU7dGhpcy5pbnB1dEJ1Zj10aGlzLmlucHV0QnVmPDw4fHQ7dGhpcy5pbnB1dEJpdHMrPTh9cmV0dXJuIHRoaXMuaW5wdXRCdWY+PnRoaXMuaW5wdXRCaXRzLWUmNjU1MzU+PjE2LWV9X2VhdEJpdHMoZSl7KHRoaXMuaW5wdXRCaXRzLT1lKTwwJiYodGhpcy5pbnB1dEJpdHM9MCl9fWNsYXNzIENDSVRURmF4U3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCxhKXtzdXBlcih0KTt0aGlzLnN0cmVhbT1lO3RoaXMuZGljdD1lLmRpY3Q7YSBpbnN0YW5jZW9mIERpY3R8fChhPURpY3QuZW1wdHkpO2NvbnN0IHI9e25leHQ6KCk9PmUuZ2V0Qnl0ZSgpfTt0aGlzLmNjaXR0RmF4RGVjb2Rlcj1uZXcgQ0NJVFRGYXhEZWNvZGVyKHIse0s6YS5nZXQoIksiKSxFbmRPZkxpbmU6YS5nZXQoIkVuZE9mTGluZSIpLEVuY29kZWRCeXRlQWxpZ246YS5nZXQoIkVuY29kZWRCeXRlQWxpZ24iKSxDb2x1bW5zOmEuZ2V0KCJDb2x1bW5zIiksUm93czphLmdldCgiUm93cyIpLEVuZE9mQmxvY2s6YS5nZXQoIkVuZE9mQmxvY2siKSxCbGFja0lzMTphLmdldCgiQmxhY2tJczEiKX0pfXJlYWRCbG9jaygpe2Zvcig7IXRoaXMuZW9mOyl7Y29uc3QgZT10aGlzLmNjaXR0RmF4RGVjb2Rlci5yZWFkTmV4dENoYXIoKTtpZigtMT09PWUpe3RoaXMuZW9mPSEwO3JldHVybn10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCsxKTt0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lfX19Y29uc3QgV2E9bmV3IEludDMyQXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKSx6YT1uZXcgSW50MzJBcnJheShbMyw0LDUsNiw3LDgsOSwxMCw2NTU0Nyw2NTU0OSw2NTU1MSw2NTU1MywxMzEwOTEsMTMxMDk1LDEzMTA5OSwxMzExMDMsMTk2NjQzLDE5NjY1MSwxOTY2NTksMTk2NjY3LDI2MjIxMSwyNjIyMjcsMjYyMjQzLDI2MjI1OSwzMjc4MTEsMzI3ODQzLDMyNzg3NSwzMjc5MDcsMjU4LDI1OCwyNThdKSwkYT1uZXcgSW50MzJBcnJheShbMSwyLDMsNCw2NTU0MSw2NTU0MywxMzEwODEsMTMxMDg1LDE5NjYyNSwxOTY2MzMsMjYyMTc3LDI2MjE5MywzMjc3NDUsMzI3Nzc3LDM5MzM0NSwzOTM0MDksNDU5MDA5LDQ1OTEzNyw1MjQ4MDEsNTI1MDU3LDU5MDg0OSw1OTEzNjEsNjU3NDA5LDY1ODQzMyw3MjQ5OTMsNzI3MDQxLDc5NDYyNSw3OTg3MjEsODY4MzUzLDg3NjU0NV0pLEdhPVtuZXcgSW50MzJBcnJheShbNDU5MDA4LDUyNDM2OCw1MjQzMDQsNTI0NTY4LDQ1OTAyNCw1MjQ0MDAsNTI0MzM2LDU5MDAxNiw0NTkwMTYsNTI0Mzg0LDUyNDMyMCw1ODk5ODQsNTI0Mjg4LDUyNDQxNiw1MjQzNTIsNTkwMDQ4LDQ1OTAxMiw1MjQzNzYsNTI0MzEyLDU4OTk2OCw0NTkwMjgsNTI0NDA4LDUyNDM0NCw1OTAwMzIsNDU5MDIwLDUyNDM5Miw1MjQzMjgsNTllNCw1MjQyOTYsNTI0NDI0LDUyNDM2MCw1OTAwNjQsNDU5MDEwLDUyNDM3Miw1MjQzMDgsNTI0NTcyLDQ1OTAyNiw1MjQ0MDQsNTI0MzQwLDU5MDAyNCw0NTkwMTgsNTI0Mzg4LDUyNDMyNCw1ODk5OTIsNTI0MjkyLDUyNDQyMCw1MjQzNTYsNTkwMDU2LDQ1OTAxNCw1MjQzODAsNTI0MzE2LDU4OTk3Niw0NTkwMzAsNTI0NDEyLDUyNDM0OCw1OTAwNDAsNDU5MDIyLDUyNDM5Niw1MjQzMzIsNTkwMDA4LDUyNDMwMCw1MjQ0MjgsNTI0MzY0LDU5MDA3Miw0NTkwMDksNTI0MzcwLDUyNDMwNiw1MjQ1NzAsNDU5MDI1LDUyNDQwMiw1MjQzMzgsNTkwMDIwLDQ1OTAxNyw1MjQzODYsNTI0MzIyLDU4OTk4OCw1MjQyOTAsNTI0NDE4LDUyNDM1NCw1OTAwNTIsNDU5MDEzLDUyNDM3OCw1MjQzMTQsNTg5OTcyLDQ1OTAyOSw1MjQ0MTAsNTI0MzQ2LDU5MDAzNiw0NTkwMjEsNTI0Mzk0LDUyNDMzMCw1OTAwMDQsNTI0Mjk4LDUyNDQyNiw1MjQzNjIsNTkwMDY4LDQ1OTAxMSw1MjQzNzQsNTI0MzEwLDUyNDU3NCw0NTkwMjcsNTI0NDA2LDUyNDM0Miw1OTAwMjgsNDU5MDE5LDUyNDM5MCw1MjQzMjYsNTg5OTk2LDUyNDI5NCw1MjQ0MjIsNTI0MzU4LDU5MDA2MCw0NTkwMTUsNTI0MzgyLDUyNDMxO
101Cw1ODk5ODAsNDU5MDMxLDUyNDQxNCw1MjQzNTAsNTkwMDQ0LDQ1OTAyMyw1MjQzOTgsNTI0MzM0LDU5MDAxMiw1MjQzMDIsNTI0NDMwLDUyNDM2Niw1OTAwNzYsNDU5MDA4LDUyNDM2OSw1MjQzMDUsNTI0NTY5LDQ1OTAyNCw1MjQ0MDEsNTI0MzM3LDU5MDAxOCw0NTkwMTYsNTI0Mzg1LDUyNDMyMSw1ODk5ODYsNTI0Mjg5LDUyNDQxNyw1MjQzNTMsNTkwMDUwLDQ1OTAxMiw1MjQzNzcsNTI0MzEzLDU4OTk3MCw0NTkwMjgsNTI0NDA5LDUyNDM0NSw1OTAwMzQsNDU5MDIwLDUyNDM5Myw1MjQzMjksNTkwMDAyLDUyNDI5Nyw1MjQ0MjUsNTI0MzYxLDU5MDA2Niw0NTkwMTAsNTI0MzczLDUyNDMwOSw1MjQ1NzMsNDU5MDI2LDUyNDQwNSw1MjQzNDEsNTkwMDI2LDQ1OTAxOCw1MjQzODksNTI0MzI1LDU4OTk5NCw1MjQyOTMsNTI0NDIxLDUyNDM1Nyw1OTAwNTgsNDU5MDE0LDUyNDM4MSw1MjQzMTcsNTg5OTc4LDQ1OTAzMCw1MjQ0MTMsNTI0MzQ5LDU5MDA0Miw0NTkwMjIsNTI0Mzk3LDUyNDMzMyw1OTAwMTAsNTI0MzAxLDUyNDQyOSw1MjQzNjUsNTkwMDc0LDQ1OTAwOSw1MjQzNzEsNTI0MzA3LDUyNDU3MSw0NTkwMjUsNTI0NDAzLDUyNDMzOSw1OTAwMjIsNDU5MDE3LDUyNDM4Nyw1MjQzMjMsNTg5OTkwLDUyNDI5MSw1MjQ0MTksNTI0MzU1LDU5MDA1NCw0NTkwMTMsNTI0Mzc5LDUyNDMxNSw1ODk5NzQsNDU5MDI5LDUyNDQxMSw1MjQzNDcsNTkwMDM4LDQ1OTAyMSw1MjQzOTUsNTI0MzMxLDU5MDAwNiw1MjQyOTksNTI0NDI3LDUyNDM2Myw1OTAwNzAsNDU5MDExLDUyNDM3NSw1MjQzMTEsNTI0NTc1LDQ1OTAyNyw1MjQ0MDcsNTI0MzQzLDU5MDAzMCw0NTkwMTksNTI0MzkxLDUyNDMyNyw1ODk5OTgsNTI0Mjk1LDUyNDQyMyw1MjQzNTksNTkwMDYyLDQ1OTAxNSw1MjQzODMsNTI0MzE5LDU4OTk4Miw0NTkwMzEsNTI0NDE1LDUyNDM1MSw1OTAwNDYsNDU5MDIzLDUyNDM5OSw1MjQzMzUsNTkwMDE0LDUyNDMwMyw1MjQ0MzEsNTI0MzY3LDU5MDA3OCw0NTkwMDgsNTI0MzY4LDUyNDMwNCw1MjQ1NjgsNDU5MDI0LDUyNDQwMCw1MjQzMzYsNTkwMDE3LDQ1OTAxNiw1MjQzODQsNTI0MzIwLDU4OTk4NSw1MjQyODgsNTI0NDE2LDUyNDM1Miw1OTAwNDksNDU5MDEyLDUyNDM3Niw1MjQzMTIsNTg5OTY5LDQ1OTAyOCw1MjQ0MDgsNTI0MzQ0LDU5MDAzMyw0NTkwMjAsNTI0MzkyLDUyNDMyOCw1OTAwMDEsNTI0Mjk2LDUyNDQyNCw1MjQzNjAsNTkwMDY1LDQ1OTAxMCw1MjQzNzIsNTI0MzA4LDUyNDU3Miw0NTkwMjYsNTI0NDA0LDUyNDM0MCw1OTAwMjUsNDU5MDE4LDUyNDM4OCw1MjQzMjQsNTg5OTkzLDUyNDI5Miw1MjQ0MjAsNTI0MzU2LDU5MDA1Nyw0NTkwMTQsNTI0MzgwLDUyNDMxNiw1ODk5NzcsNDU5MDMwLDUyNDQxMiw1MjQzNDgsNTkwMDQxLDQ1OTAyMiw1MjQzOTYsNTI0MzMyLDU5MDAwOSw1MjQzMDAsNTI0NDI4LDUyNDM2NCw1OTAwNzMsNDU5MDA5LDUyNDM3MCw1MjQzMDYsNTI0NTcwLDQ1OTAyNSw1MjQ0MDIsNTI0MzM4LDU5MDAyMSw0NTkwMTcsNTI0Mzg2LDUyNDMyMiw1ODk5ODksNTI0MjkwLDUyNDQxOCw1MjQzNTQsNTkwMDUzLDQ1OTAxMyw1MjQzNzgsNTI0MzE0LDU4OTk3Myw0NTkwMjksNTI0NDEwLDUyNDM0Niw1OTAwMzcsNDU5MDIxLDUyNDM5NCw1MjQzMzAsNTkwMDA1LDUyNDI5OCw1MjQ0MjYsNTI0MzYyLDU5MDA2OSw0NTkwMTEsNTI0Mzc0LDUyNDMxMCw1MjQ1NzQsNDU5MDI3LDUyNDQwNiw1MjQzNDIsNTkwMDI5LDQ1OTAxOSw1MjQzOTAsNTI0MzI2LDU4OTk5Nyw1MjQyOTQsNTI0NDIyLDUyNDM1OCw1OTAwNjEsNDU5MDE1LDUyNDM4Miw1MjQzMTgsNTg5OTgxLDQ1OTAzMSw1MjQ0MTQsNTI0MzUwLDU5MDA0NSw0NTkwMjMsNTI0Mzk4LDUyNDMzNCw1OTAwMTMsNTI0MzAyLDUyNDQzMCw1MjQzNjYsNTkwMDc3LDQ1OTAwOCw1MjQzNjksNTI0MzA1LDUyNDU2OSw0NTkwMjQsNTI0NDAxLDUyNDMzNyw1OTAwMTksNDU5MDE2LDUyNDM4NSw1MjQzMjEsNTg5OTg3LDUyNDI4OSw1MjQ0MTcsNTI0MzUzLDU5MDA1MSw0NTkwMTIsNTI0Mzc3LDUyNDMxMyw1ODk5NzEsNDU5MDI4LDUyNDQwOSw1MjQzNDUsNTkwMDM1LDQ1OTAyMCw1MjQzOTMsNTI0MzI5LDU5MDAwMyw1MjQyOTcsNTI0NDI1LDUyNDM2MSw1OTAwNjcsNDU5MDEwLDUyNDM3Myw1MjQzMDksNTI0NTczLDQ1OTAyNiw1MjQ0MDUsNTI0MzQxLDU5MDAyNyw0NTkwMTgsNTI0Mzg5LDUyNDMyNSw1ODk5OTUsNTI0MjkzLDUyNDQyMSw1MjQzNTcsNTkwMDU5LDQ1OTAxNCw1MjQzODEsNTI0MzE3LDU4OTk3OSw0NTkwMzAsNTI0NDEzLDUyNDM0OSw1OTAwNDMsNDU5MDIyLDUyNDM5Nyw1MjQzMzMsNTkwMDExLDUyNDMwMSw1MjQ0MjksNTI0MzY1LDU5MDA3NSw0NTkwMDksNTI0MzcxLDUyNDMwNyw1MjQ1NzEsNDU5MDI1LDUyNDQwMyw1MjQzMzksNTkwMDIzLDQ1OTAxNyw1MjQzODcsNTI0MzIzLDU4OTk5MSw1MjQyOTEsNTI0NDE5LDUyNDM1NSw1OTAwNTUsNDU5MDEzLDUyNDM3OSw1MjQzMTUsNTg5OTc1LDQ1OTAyOSw1MjQ0MTEsNTI0MzQ3LDU5MDAzOSw0NTkwMjEsNTI0Mzk1LDUyNDMzMSw1OTAwMDcsNTI0Mjk5LDUyNDQyNyw1MjQzNjMsNTkwMDcxLDQ1OTAxMSw1MjQzNzUsNTI0MzExLDUyNDU3NSw0NTkwMjcsNTI0NDA3LDUyNDM0Myw1OTAwMzEsNDU5MDE5LDUyNDM5MSw1MjQzMjcsNTg5OTk5LDUyNDI5NSw1MjQ0MjMsNTI0MzU5LDU5MDA2Myw0NTkwMTUsNTI0MzgzLDUyNDMxOSw1ODk5ODMsNDU5MDMxLDUyNDQxNSw1MjQzNTEsNTkwMDQ3LDQ1OTAyMyw1MjQzOTksNTI0MzM1LDU5MDAxNSw1MjQzMDMsNTI0NDMxLDUyNDM2Nyw1OTAwNzldKSw5XSxWYT1bbmV3IEludDMyQXJyYXkoWzMyNzY4MCwzMjc2OTYsMzI3Njg4LDMyNzcwNCwzMjc2ODQsMzI3NzAwLDMyNzY5MiwzMjc3MDgsMzI3NjgyLDMyNzY5OCwzMjc2OTAsMzI3NzA2LDMyNzY4NiwzMjc3MDIsMzI3Njk0LDAsMzI3NjgxLDMyNzY5NywzMjc2ODksMzI3NzA1LDMyNzY4NSwzMjc3MDEsMzI3NjkzLDMyNzcwOSwzMjc2ODMsMzI3Njk5LDMyNzY5MSwzMjc3MDcsMzI3Njg3LDMyNzcwMywzMjc2OTUsMF0pLDVdO2NsYXNzIEZsYXRlU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O2NvbnN0IGE9ZS5nZXRCeXRlKCkscj1lLmdldEJ5dGUoKTtpZigtMT09PWF8fC0xPT09cil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgaGVhZGVyIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKDghPSgxNSZhKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKCgoYTw8OCkrciklMzEhPTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCYWQgRkNIRUNLIGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO2lmKDMyJnIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGRElDVCBiaXQgc2V0IGluIGZsYXRlIHN0cmVhbTogJHthfSwgJHtyfWApO3RoaXMuY29kZVNpemU9MDt0aGlzLmNvZGVCdWY9MH1hc3luYyBnZXRJbWFnZURhdGEoZSx0KXtjb25zdCBhPWF3YWl0IHRoaXMuYXN5bmNHZXRCeXRlcygpO3JldHVybiBhP2EubGVuZ3RoPD1lP2E6YS5zdWJhcnJheSgwLGUpOnRoaXMuZ2V0Qnl0ZXMoZSl9YXN5bmMgYXN5bmNHZXRCeXRlcygpe3RoaXMuc3RyZWFtLnJlc2V0KCk7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlcygpO3RyeXtjb25zdHtyZWFkYWJsZTp0LHdyaXRhYmxlOmF9PW5ldyBEZWNvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIikscj1hLmdldFdyaXRlcigpO2F3YWl0IHIucmVhZHk7ci53cml0ZShl
101KS50aGVuKGFzeW5jKCk9Pnthd2FpdCByLnJlYWR5O2F3YWl0IHIuY2xvc2UoKX0pLmNhdGNoKCgpPT57fSk7Y29uc3QgaT1bXTtsZXQgbj0wO2ZvciBhd2FpdChjb25zdCBlIG9mIHQpe2kucHVzaChlKTtuKz1lLmJ5dGVMZW5ndGh9Y29uc3Qgcz1uZXcgVWludDhBcnJheShuKTtsZXQgbz0wO2Zvcihjb25zdCBlIG9mIGkpe3Muc2V0KGUsbyk7bys9ZS5ieXRlTGVuZ3RofXJldHVybiBzfWNhdGNoe3RoaXMuc3RyZWFtPW5ldyBTdHJlYW0oZSwyLGUubGVuZ3RoLHRoaXMuc3RyZWFtLmRpY3QpO3RoaXMucmVzZXQoKTtyZXR1cm4gbnVsbH19Z2V0IGlzQXN5bmMoKXtyZXR1cm4hMH1nZXRCaXRzKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW07bGV0IGEscj10aGlzLmNvZGVTaXplLGk9dGhpcy5jb2RlQnVmO2Zvcig7cjxlOyl7aWYoLTE9PT0oYT10LmdldEJ5dGUoKSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7aXw9YTw8cjtyKz04fWE9aSYoMTw8ZSktMTt0aGlzLmNvZGVCdWY9aT4+ZTt0aGlzLmNvZGVTaXplPXItPWU7cmV0dXJuIGF9Z2V0Q29kZShlKXtjb25zdCB0PXRoaXMuc3RyZWFtLGE9ZVswXSxyPWVbMV07bGV0IGksbj10aGlzLmNvZGVTaXplLHM9dGhpcy5jb2RlQnVmO2Zvcig7bjxyJiYtMSE9PShpPXQuZ2V0Qnl0ZSgpKTspe3N8PWk8PG47bis9OH1jb25zdCBvPWFbcyYoMTw8ciktMV0sYz1vPj4xNixsPTY1NTM1Jm87aWYoYzwxfHxuPGMpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZW5jb2RpbmcgaW4gZmxhdGUgc3RyZWFtIik7dGhpcy5jb2RlQnVmPXM+PmM7dGhpcy5jb2RlU2l6ZT1uLWM7cmV0dXJuIGx9Z2VuZXJhdGVIdWZmbWFuVGFibGUoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYSxyPTA7Zm9yKGE9MDthPHQ7KythKWVbYV0+ciYmKHI9ZVthXSk7Y29uc3QgaT0xPDxyLG49bmV3IEludDMyQXJyYXkoaSk7Zm9yKGxldCBzPTEsbz0wLGM9MjtzPD1yOysrcyxvPDw9MSxjPDw9MSlmb3IobGV0IHI9MDtyPHQ7KytyKWlmKGVbcl09PT1zKXtsZXQgZT0wLHQ9bztmb3IoYT0wO2E8czsrK2Epe2U9ZTw8MXwxJnQ7dD4+PTF9Zm9yKGE9ZTthPGk7YSs9YyluW2FdPXM8PDE2fHI7KytvfXJldHVybltuLHJdfSNYKGUpe2luZm8oZSk7dGhpcy5lb2Y9ITB9cmVhZEJsb2NrKCl7bGV0IGUsdCxhO2NvbnN0IHI9dGhpcy5zdHJlYW07dHJ5e3Q9dGhpcy5nZXRCaXRzKDMpfWNhdGNoKGUpe3RoaXMuI1goZS5tZXNzYWdlKTtyZXR1cm59MSZ0JiYodGhpcy5lb2Y9ITApO3Q+Pj0xO2lmKDA9PT10KXtsZXQgdDtpZigtMT09PSh0PXIuZ2V0Qnl0ZSgpKSl7dGhpcy4jWCgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IGE9dDtpZigtMT09PSh0PXIuZ2V0Qnl0ZSgpKSl7dGhpcy4jWCgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59YXw9dDw8ODtpZigtMT09PSh0PXIuZ2V0Qnl0ZSgpKSl7dGhpcy4jWCgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59bGV0IGk9dDtpZigtMT09PSh0PXIuZ2V0Qnl0ZSgpKSl7dGhpcy4jWCgiQmFkIGJsb2NrIGhlYWRlciBpbiBmbGF0ZSBzdHJlYW0iKTtyZXR1cm59aXw9dDw8ODtpZihpIT09KDY1NTM1Jn5hKSYmKDAhPT1hfHwwIT09aSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgdW5jb21wcmVzc2VkIGJsb2NrIGxlbmd0aCBpbiBmbGF0ZSBzdHJlYW0iKTt0aGlzLmNvZGVCdWY9MDt0aGlzLmNvZGVTaXplPTA7Y29uc3Qgbj10aGlzLmJ1ZmZlckxlbmd0aCxzPW4rYTtlPXRoaXMuZW5zdXJlQnVmZmVyKHMpO3RoaXMuYnVmZmVyTGVuZ3RoPXM7aWYoMD09PWEpLTE9PT1yLnBlZWtCeXRlKCkmJih0aGlzLmVvZj0hMCk7ZWxzZXtjb25zdCB0PXIuZ2V0Qnl0ZXMoYSk7ZS5zZXQodCxuKTt0Lmxlbmd0aDxhJiYodGhpcy5lb2Y9ITApfXJldHVybn1sZXQgaSxuO2lmKDE9PT10KXtpPUdhO249VmF9ZWxzZXtpZigyIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gYmxvY2sgdHlwZSBpbiBmbGF0ZSBzdHJlYW0iKTt7Y29uc3QgZT10aGlzLmdldEJpdHMoNSkrMjU3LHQ9dGhpcy5nZXRCaXRzKDUpKzEscj10aGlzLmdldEJpdHMoNCkrNCxzPW5ldyBVaW50OEFycmF5KFdhLmxlbmd0aCk7bGV0IG87Zm9yKG89MDtvPHI7KytvKXNbV2Fbb11dPXRoaXMuZ2V0Qml0cygzKTtjb25zdCBjPXRoaXMuZ2VuZXJhdGVIdWZmbWFuVGFibGUocyk7YT0wO289MDtjb25zdCBsPWUrdCxoPW5ldyBVaW50OEFycmF5KGwpO2xldCB1LGQsZjtmb3IoO288bDspe2NvbnN0IGU9dGhpcy5nZXRDb2RlKGMpO2lmKDE2PT09ZSl7dT0yO2Q9MztmPWF9ZWxzZSBpZigxNz09PWUpe3U9MztkPTM7Zj1hPTB9ZWxzZXtpZigxOCE9PWUpe2hbbysrXT1hPWU7Y29udGludWV9dT03O2Q9MTE7Zj1hPTB9bGV0IHQ9dGhpcy5nZXRCaXRzKHUpK2Q7Zm9yKDt0LS0gPjA7KWhbbysrXT1mfWk9dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShoLnN1YmFycmF5KDAsZSkpO249dGhpcy5nZW5lcmF0ZUh1ZmZtYW5UYWJsZShoLnN1YmFycmF5KGUsbCkpfX1lPXRoaXMuYnVmZmVyO2xldCBzPWU/ZS5sZW5ndGg6MCxvPXRoaXMuYnVmZmVyTGVuZ3RoO2Zvcig7Oyl7bGV0IHQ9dGhpcy5nZXRDb2RlKGkpO2lmKHQ8MjU2KXtpZihvKzE+PXMpe2U9dGhpcy5lbnN1cmVCdWZmZXIobysxKTtzPWUubGVuZ3RofWVbbysrXT10O2NvbnRpbnVlfWlmKDI1Nj09PXQpe3RoaXMuYnVmZmVyTGVuZ3RoPW87cmV0dXJufXQtPTI1Nzt0PXphW3RdO2xldCByPXQ+PjE2O3I+MCYmKHI9dGhpcy5nZXRCaXRzKHIpKTthPSg2NTUzNSZ0KStyO3Q9dGhpcy5nZXRDb2RlKG4pO3Q9JGFbdF07cj10Pj4xNjtyPjAmJihyPXRoaXMuZ2V0Qml0cyhyKSk7Y29uc3QgYz0oNjU1MzUmdCkrcjtpZihvK2E+PXMpe2U9dGhpcy5lbnN1cmVCdWZmZXIobythKTtzPWUubGVuZ3RofWZvcihsZXQgdD0wO3Q8YTsrK3QsKytvKWVbb109ZVtvLWNdfX19Y29uc3QgS2E9W3txZToyMjAxNyxubXBzOjEsbmxwczoxLHN3aXRjaEZsYWc6MX0se3FlOjEzMzEzLG5tcHM6MixubHBzOjYsc3dpdGNoRmxhZzowfSx7cWU6NjE0NSxubXBzOjMsbmxwczo5LHN3aXRjaEZsYWc6MH0se3FlOjI3NTMsbm1wczo0LG5scHM6MTIsc3dpdGNoRmxhZzowfSx7cWU6MTMxMyxubXBzOjUsbmxwczoyOSxzd2l0Y2hGbGFnOjB9LHtxZTo1NDUsbm1wczozOCxubHBzOjMzLHN3aXRjaEZsYWc6MH0se3FlOjIyMDE3LG5tcHM6NyxubHBzOjYsc3dpdGNoRmxhZzoxfSx7cWU6MjE1MDUsbm1wczo4LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTg0MzMsbm1wczo5LG5scHM6MTQsc3dpdGNoRmxhZzowfSx7cWU6MTQzMzcsbm1wczoxMCxubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjEyMjg5LG5tcHM6MTEsbmxwczoxNyxzd2l0Y2hGbGFnOjB9LHtxZTo5MjE3LG5tcHM6MTIsbmxwczoxOCxzd2l0Y2hGbGFnOjB9LHtxZTo3MTY5LG5tcHM6MTMsbmxwczoyMCxzd2l0Y2hGbGFnOjB9LHtxZTo1NjMzLG5tcHM6MjksbmxwczoyMSxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjE1LG5scHM6MTQsc3dpdGNoRmxhZzoxfSx7cWU6MjE1MDUsbm1wczoxNixubHBzOjE0LHN3aXRjaEZsYWc6MH0se3FlOjIwNzM3LG5tcHM6MTcsbmxwczoxNSxzd2l0Y2hGbGFnOjB9LHtxZToxODQzMyxubXBzOjE4LG5scHM6MTYsc3dpdGNoRmxhZzowfSx7cWU6MTQzMzcsbm1wczoxOSxubHBzOjE3LHN3aXRjaEZsYWc6MH0se3FlOjEzMzEzLG5tcHM6MjAsbmxwczoxOCxzd2l0Y2hGbGFnOjB9LHtxZToxMjI4OSxubXBzOjIxLG5scHM6MTksc3dpdGNoRmxhZzowfSx7cWU6MTAyNDEsbm1wczoyMixubHBzOjE5LHN3aXRjaEZsYWc6MH0se3FlOjkyMTcsbm1wczoyMyxubHBzOjIwLHN3aXRjaEZsYWc6MH0se3FlOjg3MDUsbm1wczoyNCxubHBzOjIxLHN3aXRjaEZsYWc6MH0se3FlOjcxNjksbm1wczoyNSxubHBzOjIyLHN3aXRjaEZsYWc6MH0se3FlOjYxNDUsbm1wczoyNixubHBzOjIzLHN3aXRjaEZsYWc6MH0se3FlOjU2MzMsbm1wczoyNyxubHBzOjI0LHN3aXRjaEZsYWc6MH0se3FlOjUxMjEsbm1wczoyOCxubHBzOjI1LHN3aXRjaEZsYWc6MH0se3FlOjQ2MDksbm1wczoyOSxubHBzOjI2LHN3aXRjaEZsYWc6MH0se3FlOjQzNTMsbm1wczozMCxubHBzOjI3LHN3aXRjaEZsYWc6MH0se3FlOjI3NTMsbm1wczozMSxubHBzOjI4LHN3aXRjaEZsYWc6MH0se3FlOjI0OTcsbm1wczozMixubHBzOjI5LHN3aXRjaEZsYWc6MH0se3FlOjIyMDksbm1wczozMyxubHBzOjMwLHN3aXRjaEZsYWc6MH0se3FlOjEzMTMsbm1wczozNCxubHBzOjMxLHN3aXRjaEZsYWc6MH0se3FlOjEwODksbm1wczozNSxubHBzOjMyLHN3aXRjaEZsYWc6MH0se3FlOjY3MyxubXBzOjM2LG5scHM6MzMsc3dpdGNoRmxhZzowfSx7cWU6NTQ1LG5tcHM6MzcsbmxwczozNCxzd2l0Y2hGbGFnOjB9LHtxZTozMjEsbm1wczozOCxubHBzOjM1LHN3aXRjaEZsYWc6MH0se3FlOjI3MyxubXBzOjM5LG5scHM6MzYsc3d
101pdGNoRmxhZzowfSx7cWU6MTMzLG5tcHM6NDAsbmxwczozNyxzd2l0Y2hGbGFnOjB9LHtxZTo3MyxubXBzOjQxLG5scHM6Mzgsc3dpdGNoRmxhZzowfSx7cWU6Mzcsbm1wczo0MixubHBzOjM5LHN3aXRjaEZsYWc6MH0se3FlOjIxLG5tcHM6NDMsbmxwczo0MCxzd2l0Y2hGbGFnOjB9LHtxZTo5LG5tcHM6NDQsbmxwczo0MSxzd2l0Y2hGbGFnOjB9LHtxZTo1LG5tcHM6NDUsbmxwczo0Mixzd2l0Y2hGbGFnOjB9LHtxZToxLG5tcHM6NDUsbmxwczo0Myxzd2l0Y2hGbGFnOjB9LHtxZToyMjAxNyxubXBzOjQ2LG5scHM6NDYsc3dpdGNoRmxhZzowfV07Y2xhc3MgQXJpdGhtZXRpY0RlY29kZXJ7Y29uc3RydWN0b3IoZSx0LGEpe3RoaXMuZGF0YT1lO3RoaXMuYnA9dDt0aGlzLmRhdGFFbmQ9YTt0aGlzLmNoaWdoPWVbdF07dGhpcy5jbG93PTA7dGhpcy5ieXRlSW4oKTt0aGlzLmNoaWdoPXRoaXMuY2hpZ2g8PDcmNjU1MzV8dGhpcy5jbG93Pj45JjEyNzt0aGlzLmNsb3c9dGhpcy5jbG93PDw3JjY1NTM1O3RoaXMuY3QtPTc7dGhpcy5hPTMyNzY4fWJ5dGVJbigpe2NvbnN0IGU9dGhpcy5kYXRhO2xldCB0PXRoaXMuYnA7aWYoMjU1PT09ZVt0XSlpZihlW3QrMV0+MTQzKXt0aGlzLmNsb3crPTY1MjgwO3RoaXMuY3Q9OH1lbHNle3QrKzt0aGlzLmNsb3crPWVbdF08PDk7dGhpcy5jdD03O3RoaXMuYnA9dH1lbHNle3QrKzt0aGlzLmNsb3crPXQ8dGhpcy5kYXRhRW5kP2VbdF08PDg6NjUyODA7dGhpcy5jdD04O3RoaXMuYnA9dH1pZih0aGlzLmNsb3c+NjU1MzUpe3RoaXMuY2hpZ2grPXRoaXMuY2xvdz4+MTY7dGhpcy5jbG93Jj02NTUzNX19cmVhZEJpdChlLHQpe2xldCBhPWVbdF0+PjEscj0xJmVbdF07Y29uc3QgaT1LYVthXSxuPWkucWU7bGV0IHMsbz10aGlzLmEtbjtpZih0aGlzLmNoaWdoPG4paWYobzxuKXtvPW47cz1yO2E9aS5ubXBzfWVsc2V7bz1uO3M9MV5yOzE9PT1pLnN3aXRjaEZsYWcmJihyPXMpO2E9aS5ubHBzfWVsc2V7dGhpcy5jaGlnaC09bjtpZigzMjc2OCZvKXt0aGlzLmE9bztyZXR1cm4gcn1pZihvPG4pe3M9MV5yOzE9PT1pLnN3aXRjaEZsYWcmJihyPXMpO2E9aS5ubHBzfWVsc2V7cz1yO2E9aS5ubXBzfX1kb3swPT09dGhpcy5jdCYmdGhpcy5ieXRlSW4oKTtvPDw9MTt0aGlzLmNoaWdoPXRoaXMuY2hpZ2g8PDEmNjU1MzV8dGhpcy5jbG93Pj4xNSYxO3RoaXMuY2xvdz10aGlzLmNsb3c8PDEmNjU1MzU7dGhpcy5jdC0tfXdoaWxlKCEoMzI3NjgmbykpO3RoaXMuYT1vO2VbdF09YTw8MXxyO3JldHVybiBzfX1jbGFzcyBKYmlnMkVycm9yIGV4dGVuZHMgZWF7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiSmJpZzJFcnJvciIpfX1jbGFzcyBDb250ZXh0Q2FjaGV7Z2V0Q29udGV4dHMoZSl7cmV0dXJuIGUgaW4gdGhpcz90aGlzW2VdOnRoaXNbZV09bmV3IEludDhBcnJheSg2NTUzNil9fWNsYXNzIERlY29kaW5nQ29udGV4dHtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5kYXRhPWU7dGhpcy5zdGFydD10O3RoaXMuZW5kPWF9Z2V0IGRlY29kZXIoKXtyZXR1cm4gc2hhZG93KHRoaXMsImRlY29kZXIiLG5ldyBBcml0aG1ldGljRGVjb2Rlcih0aGlzLmRhdGEsdGhpcy5zdGFydCx0aGlzLmVuZCkpfWdldCBjb250ZXh0Q2FjaGUoKXtyZXR1cm4gc2hhZG93KHRoaXMsImNvbnRleHRDYWNoZSIsbmV3IENvbnRleHRDYWNoZSl9fWZ1bmN0aW9uIGRlY29kZUludGVnZXIoZSx0LGEpe2NvbnN0IHI9ZS5nZXRDb250ZXh0cyh0KTtsZXQgaT0xO2Z1bmN0aW9uIHJlYWRCaXRzKGUpe2xldCB0PTA7Zm9yKGxldCBuPTA7bjxlO24rKyl7Y29uc3QgZT1hLnJlYWRCaXQocixpKTtpPWk8MjU2P2k8PDF8ZTo1MTEmKGk8PDF8ZSl8MjU2O3Q9dDw8MXxlfXJldHVybiB0Pj4+MH1jb25zdCBuPXJlYWRCaXRzKDEpLHM9cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMSk/cmVhZEJpdHMoMzIpKzQ0MzY6cmVhZEJpdHMoMTIpKzM0MDpyZWFkQml0cyg4KSs4NDpyZWFkQml0cyg2KSsyMDpyZWFkQml0cyg0KSs0OnJlYWRCaXRzKDIpO2xldCBvOzA9PT1uP289czpzPjAmJihvPS1zKTtyZXR1cm4gbz49LTIxNDc0ODM2NDgmJm88PWRhP286bnVsbH1mdW5jdGlvbiBkZWNvZGVJQUlEKGUsdCxhKXtjb25zdCByPWUuZ2V0Q29udGV4dHMoIklBSUQiKTtsZXQgaT0xO2ZvcihsZXQgZT0wO2U8YTtlKyspe2k9aTw8MXx0LnJlYWRCaXQocixpKX1yZXR1cm4gYTwzMT9pJigxPDxhKS0xOjIxNDc0ODM2NDcmaX1jb25zdCBKYT1bIlN5bWJvbERpY3Rpb25hcnkiLG51bGwsbnVsbCxudWxsLCJJbnRlcm1lZGlhdGVUZXh0UmVnaW9uIixudWxsLCJJbW1lZGlhdGVUZXh0UmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIlBhdHRlcm5EaWN0aW9uYXJ5IixudWxsLG51bGwsbnVsbCwiSW50ZXJtZWRpYXRlSGFsZnRvbmVSZWdpb24iLG51bGwsIkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uIiwiSW1tZWRpYXRlTG9zc2xlc3NIYWxmdG9uZVJlZ2lvbiIsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkludGVybWVkaWF0ZUdlbmVyaWNSZWdpb24iLG51bGwsIkltbWVkaWF0ZUdlbmVyaWNSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24iLCJJbnRlcm1lZGlhdGVHZW5lcmljUmVmaW5lbWVudFJlZ2lvbiIsbnVsbCwiSW1tZWRpYXRlR2VuZXJpY1JlZmluZW1lbnRSZWdpb24iLCJJbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWZpbmVtZW50UmVnaW9uIixudWxsLG51bGwsbnVsbCxudWxsLCJQYWdlSW5mb3JtYXRpb24iLCJFbmRPZlBhZ2UiLCJFbmRPZlN0cmlwZSIsIkVuZE9mRmlsZSIsIlByb2ZpbGVzIiwiVGFibGVzIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIkV4dGVuc2lvbiJdLFlhPVtbe3g6LTEseTotMn0se3g6MCx5Oi0yfSx7eDoxLHk6LTJ9LHt4Oi0yLHk6LTF9LHt4Oi0xLHk6LTF9LHt4OjAseTotMX0se3g6MSx5Oi0xfSx7eDoyLHk6LTF9LHt4Oi00LHk6MH0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dLFt7eDotMSx5Oi0yfSx7eDowLHk6LTJ9LHt4OjEseTotMn0se3g6Mix5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6Mix5Oi0xfSx7eDotMyx5OjB9LHt4Oi0yLHk6MH0se3g6LTEseTowfV0sW3t4Oi0xLHk6LTJ9LHt4OjAseTotMn0se3g6MSx5Oi0yfSx7eDotMix5Oi0xfSx7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTIseTowfSx7eDotMSx5OjB9XSxbe3g6LTMseTotMX0se3g6LTIseTotMX0se3g6LTEseTotMX0se3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi00LHk6MH0se3g6LTMseTowfSx7eDotMix5OjB9LHt4Oi0xLHk6MH1dXSxaYT1be2NvZGluZzpbe3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH1dLHJlZmVyZW5jZTpbe3g6MCx5Oi0xfSx7eDoxLHk6LTF9LHt4Oi0xLHk6MH0se3g6MCx5OjB9LHt4OjEseTowfSx7eDotMSx5OjF9LHt4OjAseToxfSx7eDoxLHk6MX1dfSx7Y29kaW5nOlt7eDotMSx5Oi0xfSx7eDowLHk6LTF9LHt4OjEseTotMX0se3g6LTEseTowfV0scmVmZXJlbmNlOlt7eDowLHk6LTF9LHt4Oi0xLHk6MH0se3g6MCx5OjB9LHt4OjEseTowfSx7eDowLHk6MX0se3g6MSx5OjF9XX1dLFFhPVszOTcxNywxOTQxLDIyOSw0MDVdLGVyPVszMiw4XTtmdW5jdGlvbiBkZWNvZGVCaXRtYXAoZSx0LGEscixpLG4scyxvKXtpZihl
101KXtyZXR1cm4gZGVjb2RlTU1SQml0bWFwKG5ldyBSZWFkZXIoby5kYXRhLG8uc3RhcnQsby5lbmQpLHQsYSwhMSl9aWYoMD09PXImJiFuJiYhaSYmND09PXMubGVuZ3RoJiYzPT09c1swXS54JiYtMT09PXNbMF0ueSYmLTM9PT1zWzFdLngmJi0xPT09c1sxXS55JiYyPT09c1syXS54JiYtMj09PXNbMl0ueSYmLTI9PT1zWzNdLngmJi0yPT09c1szXS55KXJldHVybiBmdW5jdGlvbiBkZWNvZGVCaXRtYXBUZW1wbGF0ZTAoZSx0LGEpe2NvbnN0IHI9YS5kZWNvZGVyLGk9YS5jb250ZXh0Q2FjaGUuZ2V0Q29udGV4dHMoIkdCIiksbj1bXTtsZXQgcyxvLGMsbCxoLHUsZDtmb3Iobz0wO288dDtvKyspe2g9bltvXT1uZXcgVWludDhBcnJheShlKTt1PW88MT9oOm5bby0xXTtkPW88Mj9oOm5bby0yXTtzPWRbMF08PDEzfGRbMV08PDEyfGRbMl08PDExfHVbMF08PDd8dVsxXTw8Nnx1WzJdPDw1fHVbM108PDQ7Zm9yKGM9MDtjPGU7YysrKXtoW2NdPWw9ci5yZWFkQml0KGkscyk7cz0oMzE3MzUmcyk8PDF8KGMrMzxlP2RbYyszXTw8MTE6MCl8KGMrNDxlP3VbYys0XTw8NDowKXxsfX1yZXR1cm4gbn0odCxhLG8pO2NvbnN0IGM9ISFuLGw9WWFbcl0uY29uY2F0KHMpO2wuc29ydCgoZSx0KT0+ZS55LXQueXx8ZS54LXQueCk7Y29uc3QgaD1sLmxlbmd0aCx1PW5ldyBJbnQ4QXJyYXkoaCksZD1uZXcgSW50OEFycmF5KGgpLGY9W107bGV0IGcscCxtPTAsYj0wLHk9MCx3PTA7Zm9yKHA9MDtwPGg7cCsrKXt1W3BdPWxbcF0ueDtkW3BdPWxbcF0ueTtiPU1hdGgubWluKGIsbFtwXS54KTt5PU1hdGgubWF4KHksbFtwXS54KTt3PU1hdGgubWluKHcsbFtwXS55KTtwPGgtMSYmbFtwXS55PT09bFtwKzFdLnkmJmxbcF0ueD09PWxbcCsxXS54LTE/bXw9MTw8aC0xLXA6Zi5wdXNoKHApfWNvbnN0IHg9Zi5sZW5ndGgsUz1uZXcgSW50OEFycmF5KHgpLGs9bmV3IEludDhBcnJheSh4KSxDPW5ldyBVaW50MTZBcnJheSh4KTtmb3IoZz0wO2c8eDtnKyspe3A9ZltnXTtTW2ddPWxbcF0ueDtrW2ddPWxbcF0ueTtDW2ddPTE8PGgtMS1wfWNvbnN0IHY9LWIsRj0tdyxUPXQteSxPPVFhW3JdO2xldCBEPW5ldyBVaW50OEFycmF5KHQpO2NvbnN0IE09W10sUj1vLmRlY29kZXIsTj1vLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR0IiKTtsZXQgRSxMLF8sVSxqLFg9MCxxPTA7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7aWYoaSl7WF49Ui5yZWFkQml0KE4sTyk7aWYoWCl7TS5wdXNoKEQpO2NvbnRpbnVlfX1EPW5ldyBVaW50OEFycmF5KEQpO00ucHVzaChEKTtmb3IoRT0wO0U8dDtFKyspe2lmKGMmJm5bZV1bRV0pe0RbRV09MDtjb250aW51ZX1pZihFPj12JiZFPFQmJmU+PUYpe3E9cTw8MSZtO2ZvcihwPTA7cDx4O3ArKyl7TD1lK2tbcF07Xz1FK1NbcF07VT1NW0xdW19dO2lmKFUpe1U9Q1twXTtxfD1VfX19ZWxzZXtxPTA7aj1oLTE7Zm9yKHA9MDtwPGg7cCsrLGotLSl7Xz1FK3VbcF07aWYoXz49MCYmXzx0KXtMPWUrZFtwXTtpZihMPj0wKXtVPU1bTF1bX107VSYmKHF8PVU8PGopfX19fWNvbnN0IGE9Ui5yZWFkQml0KE4scSk7RFtFXT1hfX1yZXR1cm4gTX1mdW5jdGlvbiBkZWNvZGVSZWZpbmVtZW50KGUsdCxhLHIsaSxuLHMsbyxjKXtsZXQgbD1aYVthXS5jb2Rpbmc7MD09PWEmJihsPWwuY29uY2F0KFtvWzBdXSkpO2NvbnN0IGg9bC5sZW5ndGgsdT1uZXcgSW50MzJBcnJheShoKSxkPW5ldyBJbnQzMkFycmF5KGgpO2xldCBmO2ZvcihmPTA7ZjxoO2YrKyl7dVtmXT1sW2ZdLng7ZFtmXT1sW2ZdLnl9bGV0IGc9WmFbYV0ucmVmZXJlbmNlOzA9PT1hJiYoZz1nLmNvbmNhdChbb1sxXV0pKTtjb25zdCBwPWcubGVuZ3RoLG09bmV3IEludDMyQXJyYXkocCksYj1uZXcgSW50MzJBcnJheShwKTtmb3IoZj0wO2Y8cDtmKyspe21bZl09Z1tmXS54O2JbZl09Z1tmXS55fWNvbnN0IHk9clswXS5sZW5ndGgsdz1yLmxlbmd0aCx4PWVyW2FdLFM9W10saz1jLmRlY29kZXIsQz1jLmNvbnRleHRDYWNoZS5nZXRDb250ZXh0cygiR1IiKTtsZXQgdj0wO2ZvcihsZXQgYT0wO2E8dDthKyspe2lmKHMpe3ZePWsucmVhZEJpdChDLHgpO2lmKHYpdGhyb3cgbmV3IEpiaWcyRXJyb3IoInByZWRpY3Rpb24gaXMgbm90IHN1cHBvcnRlZCIpfWNvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoZSk7Uy5wdXNoKHQpO2ZvcihsZXQgcz0wO3M8ZTtzKyspe2xldCBvLGMsbD0wO2ZvcihmPTA7ZjxoO2YrKyl7bz1hK2RbZl07Yz1zK3VbZl07bzwwfHxjPDB8fGM+PWU/bDw8PTE6bD1sPDwxfFNbb11bY119Zm9yKGY9MDtmPHA7ZisrKXtvPWErYltmXS1uO2M9cyttW2ZdLWk7bzwwfHxvPj13fHxjPDB8fGM+PXk/bDw8PTE6bD1sPDwxfHJbb11bY119Y29uc3QgZz1rLnJlYWRCaXQoQyxsKTt0W3NdPWd9fXJldHVybiBTfWZ1bmN0aW9uIGRlY29kZVRleHRSZWdpb24oZSx0LGEscixpLG4scyxvLGMsbCxoLHUsZCxmLGcscCxtLGIseSl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigicmVmaW5lbWVudCB3aXRoIEh1ZmZtYW4gaXMgbm90IHN1cHBvcnRlZCIpO2NvbnN0IHc9W107bGV0IHgsUztmb3IoeD0wO3g8cjt4Kyspe1M9bmV3IFVpbnQ4QXJyYXkoYSk7aSYmUy5maWxsKGkpO3cucHVzaChTKX1jb25zdCBrPW0uZGVjb2RlcixDPW0uY29udGV4dENhY2hlO2xldCB2PWU/LWYudGFibGVEZWx0YVQuZGVjb2RlKHkpOi1kZWNvZGVJbnRlZ2VyKEMsIklBRFQiLGspLEY9MDt4PTA7Zm9yKDt4PG47KXt2Kz1lP2YudGFibGVEZWx0YVQuZGVjb2RlKHkpOmRlY29kZUludGVnZXIoQywiSUFEVCIsayk7Ris9ZT9mLnRhYmxlRmlyc3RTLmRlY29kZSh5KTpkZWNvZGVJbnRlZ2VyKEMsIklBRlMiLGspO2xldCByPUY7Zm9yKDs7KXtsZXQgaT0wO3M+MSYmKGk9ZT95LnJlYWRCaXRzKGIpOmRlY29kZUludGVnZXIoQywiSUFJVCIsaykpO2NvbnN0IG49cyp2K2ksRj1lP2Yuc3ltYm9sSURUYWJsZS5kZWNvZGUoeSk6ZGVjb2RlSUFJRChDLGssYyksVD10JiYoZT95LnJlYWRCaXQoKTpkZWNvZGVJbnRlZ2VyKEMsIklBUkkiLGspKTtsZXQgTz1vW0ZdLEQ9T1swXS5sZW5ndGgsTT1PLmxlbmd0aDtpZihUKXtjb25zdCBlPWRlY29
101kZUludGVnZXIoQywiSUFSRFciLGspLHQ9ZGVjb2RlSW50ZWdlcihDLCJJQVJESCIsayk7RCs9ZTtNKz10O089ZGVjb2RlUmVmaW5lbWVudChELE0sZyxPLChlPj4xKStkZWNvZGVJbnRlZ2VyKEMsIklBUkRYIixrKSwodD4+MSkrZGVjb2RlSW50ZWdlcihDLCJJQVJEWSIsayksITEscCxtKX1sZXQgUj0wO2w/MSZ1P1I9TS0xOnIrPU0tMTp1PjE/cis9RC0xOlI9RC0xO2NvbnN0IE49bi0oMSZ1PzA6TS0xKSxFPXItKDImdT9ELTE6MCk7bGV0IEwsXyxVO2lmKGwpZm9yKEw9MDtMPE07TCsrKXtTPXdbRStMXTtpZighUyljb250aW51ZTtVPU9bTF07Y29uc3QgZT1NYXRoLm1pbihhLU4sRCk7c3dpdGNoKGQpe2Nhc2UgMDpmb3IoXz0wO188ZTtfKyspU1tOK19dfD1VW19dO2JyZWFrO2Nhc2UgMjpmb3IoXz0wO188ZTtfKyspU1tOK19dXj1VW19dO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEpiaWcyRXJyb3IoYG9wZXJhdG9yICR7ZH0gaXMgbm90IHN1cHBvcnRlZGApfX1lbHNlIGZvcihfPTA7XzxNO18rKyl7Uz13W04rX107aWYoUyl7VT1PW19dO3N3aXRjaChkKXtjYXNlIDA6Zm9yKEw9MDtMPEQ7TCsrKVNbRStMXXw9VVtMXTticmVhaztjYXNlIDI6Zm9yKEw9MDtMPEQ7TCsrKVNbRStMXV49VVtMXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke2R9IGlzIG5vdCBzdXBwb3J0ZWRgKX19fXgrKztjb25zdCBqPWU/Zi50YWJsZURlbHRhUy5kZWNvZGUoeSk6ZGVjb2RlSW50ZWdlcihDLCJJQURTIixrKTtpZihudWxsPT09ailicmVhaztyKz1SK2oraH19cmV0dXJuIHd9ZnVuY3Rpb24gcmVhZFNlZ21lbnRIZWFkZXIoZSx0KXtjb25zdCBhPXt9O2EubnVtYmVyPXJlYWRVaW50MzIoZSx0KTtjb25zdCByPWVbdCs0XSxpPTYzJnI7aWYoIUphW2ldKXRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIHNlZ21lbnQgdHlwZTogIitpKTthLnR5cGU9aTthLnR5cGVOYW1lPUphW2ldO2EuZGVmZXJyZWROb25SZXRhaW49ISEoMTI4JnIpO2NvbnN0IG49ISEoNjQmcikscz1lW3QrNV07bGV0IG89cz4+NSY3O2NvbnN0IGM9WzMxJnNdO2xldCBsPXQrNjtpZig3PT09byl7bz01MzY4NzA5MTEmcmVhZFVpbnQzMihlLGwtMSk7bCs9MztsZXQgdD1vKzg+PjM7Y1swXT1lW2wrK107Zm9yKDstLXQ+MDspYy5wdXNoKGVbbCsrXSl9ZWxzZSBpZig1PT09b3x8Nj09PW8pdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgcmVmZXJyZWQtdG8gZmxhZ3MiKTthLnJldGFpbkJpdHM9YztsZXQgaD00O2EubnVtYmVyPD0yNTY/aD0xOmEubnVtYmVyPD02NTUzNiYmKGg9Mik7Y29uc3QgdT1bXTtsZXQgZCxmO2ZvcihkPTA7ZDxvO2QrKyl7bGV0IHQ7dD0xPT09aD9lW2xdOjI9PT1oP3JlYWRVaW50MTYoZSxsKTpyZWFkVWludDMyKGUsbCk7dS5wdXNoKHQpO2wrPWh9YS5yZWZlcnJlZFRvPXU7aWYobil7YS5wYWdlQXNzb2NpYXRpb249cmVhZFVpbnQzMihlLGwpO2wrPTR9ZWxzZSBhLnBhZ2VBc3NvY2lhdGlvbj1lW2wrK107YS5sZW5ndGg9cmVhZFVpbnQzMihlLGwpO2wrPTQ7aWYoNDI5NDk2NzI5NT09PWEubGVuZ3RoKXtpZigzOCE9PWkpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImludmFsaWQgdW5rbm93biBzZWdtZW50IGxlbmd0aCIpO3tjb25zdCB0PXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24oZSxsKSxyPSEhKDEmZVtsK3RyXSksaT02LG49bmV3IFVpbnQ4QXJyYXkoaSk7aWYoIXIpe25bMF09MjU1O25bMV09MTcyfW5bMl09dC5oZWlnaHQ+Pj4yNCYyNTU7blszXT10LmhlaWdodD4+MTYmMjU1O25bNF09dC5oZWlnaHQ+PjgmMjU1O25bNV09MjU1JnQuaGVpZ2h0O2ZvcihkPWwsZj1lLmxlbmd0aDtkPGY7ZCsrKXtsZXQgdD0wO2Zvcig7dDxpJiZuW3RdPT09ZVtkK3RdOyl0Kys7aWYodD09PWkpe2EubGVuZ3RoPWQraTticmVha319aWYoNDI5NDk2NzI5NT09PWEubGVuZ3RoKXRocm93IG5ldyBKYmlnMkVycm9yKCJzZWdtZW50IGVuZCB3YXMgbm90IGZvdW5kIil9fWEuaGVhZGVyRW5kPWw7cmV0dXJuIGF9ZnVuY3Rpb24gcmVhZFNlZ21lbnRzKGUsdCxhLHIpe2NvbnN0IGk9W107bGV0IG49YTtmb3IoO248cjspe2NvbnN0IGE9cmVhZFNlZ21lbnRIZWFkZXIodCxuKTtuPWEuaGVhZGVyRW5kO2NvbnN0IHI9e2hlYWRlcjphLGRhdGE6dH07aWYoIWUucmFuZG9tQWNjZXNzKXtyLnN0YXJ0PW47bis9YS5sZW5ndGg7ci5lbmQ9bn1pLnB1c2gocik7aWYoNTE9PT1hLnR5cGUpYnJlYWt9aWYoZS5yYW5kb21BY2Nlc3MpZm9yKGxldCBlPTAsdD1pLmxlbmd0aDtlPHQ7ZSsrKXtpW2VdLnN0YXJ0PW47bis9aVtlXS5oZWFkZXIubGVuZ3RoO2lbZV0uZW5kPW59cmV0dXJuIGl9ZnVuY3Rpb24gcmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihlLHQpe3JldHVybnt3aWR0aDpyZWFkVWludDMyKGUsdCksaGVpZ2h0OnJlYWRVaW50MzIoZSx0KzQpLHg6cmVhZFVpbnQzMihlLHQrOCkseTpyZWFkVWludDMyKGUsdCsxMiksY29tYmluYXRpb25PcGVyYXRvcjo3JmVbdCsxNl19fWNvbnN0IHRyPTE3O2Z1bmN0aW9uIHByb2Nlc3NTZWdtZW50KGUsdCl7Y29uc3QgYT1lLmhlYWRlcixyPWUuZGF0YSxpPWUuZW5kO2xldCBuLHMsbyxjLGw9ZS5zdGFydDtzd2l0Y2goYS50eXBlKXtjYXNlIDA6Y29uc3QgZT17fSx0PXJlYWRVaW50MTYocixsKTtlLmh1ZmZtYW49ISEoMSZ0KTtlLnJlZmluZW1lbnQ9ISEoMiZ0KTtlLmh1ZmZtYW5ESFNlbGVjdG9yPXQ+PjImMztlLmh1ZmZtYW5EV1NlbGVjdG9yPXQ+PjQmMztlLmJpdG1hcFNpemVTZWxlY3Rvcj10Pj42JjE7ZS5hZ2dyZWdhdGlvbkluc3RhbmNlc1NlbGVjdG9yPXQ+PjcmMTtlLmJpdG1hcENvZGluZ0NvbnRleHRVc2VkPSEhKDI1NiZ0KTtlLmJpdG1hcENvZGluZ0NvbnRleHRSZXRhaW5lZD0hISg1MTImdCk7ZS50ZW1wbGF0ZT10Pj4xMCYzO2UucmVmaW5lbWVudFRlbXBsYXRlPXQ+PjEyJjE7bCs9MjtpZighZS5odWZmbWFuKXtjPTA9PT1lLnRlbXBsYXRlPzQ6MTtzPVtdO2ZvcihvPTA7bzxjO28rKyl7cy5wdXNoKHt4OnJlYWRJbnQ4KHIsbCkseTpyZWFkSW50OChyLGwrMSl9KTtsKz0yfWUuYXQ9c31pZihlLnJlZmluZW1lbnQmJiFlLnJlZmluZW1lbnRUZW1wbGF0ZSl7cz1bXTtmb3Iobz0wO288MjtvKyspe3MucHVzaCh7eDpyZWFkSW50OChyLGwpLHk6cmVhZEludDgocixsKzEpfSk7bCs9Mn1lLnJlZmluZW1lbnRBdD1zfWUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHM9cmVhZFVpbnQzMihyLGwpO2wrPTQ7ZS5udW1iZXJPZk5ld1N5bWJvbHM9cmVhZFVpbnQzMihyLGwpO2wrPTQ7bj1bZSxhLm51bWJlcixhLnJlZmVycmVkVG8scixsLGldO2JyZWFrO2Nhc2UgNjpjYXNlIDc6Y29uc3QgaD17fTtoLmluZm89cmVhZFJlZ2lvblNlZ21lbnRJbmZvcm1hdGlvbihyLGwpO2wrPXRyO2NvbnN0IHU9cmVhZFVpbnQxNihyLGwpO2wrPTI7aC5
101odWZmbWFuPSEhKDEmdSk7aC5yZWZpbmVtZW50PSEhKDImdSk7aC5sb2dTdHJpcFNpemU9dT4+MiYzO2guc3RyaXBTaXplPTE8PGgubG9nU3RyaXBTaXplO2gucmVmZXJlbmNlQ29ybmVyPXU+PjQmMztoLnRyYW5zcG9zZWQ9ISEoNjQmdSk7aC5jb21iaW5hdGlvbk9wZXJhdG9yPXU+PjcmMztoLmRlZmF1bHRQaXhlbFZhbHVlPXU+PjkmMTtoLmRzT2Zmc2V0PXU8PDE3Pj4yNztoLnJlZmluZW1lbnRUZW1wbGF0ZT11Pj4xNSYxO2lmKGguaHVmZm1hbil7Y29uc3QgZT1yZWFkVWludDE2KHIsbCk7bCs9MjtoLmh1ZmZtYW5GUz0zJmU7aC5odWZmbWFuRFM9ZT4+MiYzO2guaHVmZm1hbkRUPWU+PjQmMztoLmh1ZmZtYW5SZWZpbmVtZW50RFc9ZT4+NiYzO2guaHVmZm1hblJlZmluZW1lbnRESD1lPj44JjM7aC5odWZmbWFuUmVmaW5lbWVudERYPWU+PjEwJjM7aC5odWZmbWFuUmVmaW5lbWVudERZPWU+PjEyJjM7aC5odWZmbWFuUmVmaW5lbWVudFNpemVTZWxlY3Rvcj0hISgxNjM4NCZlKX1pZihoLnJlZmluZW1lbnQmJiFoLnJlZmluZW1lbnRUZW1wbGF0ZSl7cz1bXTtmb3Iobz0wO288MjtvKyspe3MucHVzaCh7eDpyZWFkSW50OChyLGwpLHk6cmVhZEludDgocixsKzEpfSk7bCs9Mn1oLnJlZmluZW1lbnRBdD1zfWgubnVtYmVyT2ZTeW1ib2xJbnN0YW5jZXM9cmVhZFVpbnQzMihyLGwpO2wrPTQ7bj1baCxhLnJlZmVycmVkVG8scixsLGldO2JyZWFrO2Nhc2UgMTY6Y29uc3QgZD17fSxmPXJbbCsrXTtkLm1tcj0hISgxJmYpO2QudGVtcGxhdGU9Zj4+MSYzO2QucGF0dGVybldpZHRoPXJbbCsrXTtkLnBhdHRlcm5IZWlnaHQ9cltsKytdO2QubWF4UGF0dGVybkluZGV4PXJlYWRVaW50MzIocixsKTtsKz00O249W2QsYS5udW1iZXIscixsLGldO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyMzpjb25zdCBnPXt9O2cuaW5mbz1yZWFkUmVnaW9uU2VnbWVudEluZm9ybWF0aW9uKHIsbCk7bCs9dHI7Y29uc3QgcD1yW2wrK107Zy5tbXI9ISEoMSZwKTtnLnRlbXBsYXRlPXA+PjEmMztnLmVuYWJsZVNraXA9ISEoOCZwKTtnLmNvbWJpbmF0aW9uT3BlcmF0b3I9cD4+NCY3O2cuZGVmYXVsdFBpeGVsVmFsdWU9cD4+NyYxO2cuZ3JpZFdpZHRoPXJlYWRVaW50MzIocixsKTtsKz00O2cuZ3JpZEhlaWdodD1yZWFkVWludDMyKHIsbCk7bCs9NDtnLmdyaWRPZmZzZXRYPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihyLGwpO2wrPTQ7Zy5ncmlkT2Zmc2V0WT00Mjk0OTY3Mjk1JnJlYWRVaW50MzIocixsKTtsKz00O2cuZ3JpZFZlY3Rvclg9cmVhZFVpbnQxNihyLGwpO2wrPTI7Zy5ncmlkVmVjdG9yWT1yZWFkVWludDE2KHIsbCk7bCs9MjtuPVtnLGEucmVmZXJyZWRUbyxyLGwsaV07YnJlYWs7Y2FzZSAzODpjYXNlIDM5OmNvbnN0IG09e307bS5pbmZvPXJlYWRSZWdpb25TZWdtZW50SW5mb3JtYXRpb24ocixsKTtsKz10cjtjb25zdCBiPXJbbCsrXTttLm1tcj0hISgxJmIpO20udGVtcGxhdGU9Yj4+MSYzO20ucHJlZGljdGlvbj0hISg4JmIpO2lmKCFtLm1tcil7Yz0wPT09bS50ZW1wbGF0ZT80OjE7cz1bXTtmb3Iobz0wO288YztvKyspe3MucHVzaCh7eDpyZWFkSW50OChyLGwpLHk6cmVhZEludDgocixsKzEpfSk7bCs9Mn1tLmF0PXN9bj1bbSxyLGwsaV07YnJlYWs7Y2FzZSA0ODpjb25zdCB5PXt3aWR0aDpyZWFkVWludDMyKHIsbCksaGVpZ2h0OnJlYWRVaW50MzIocixsKzQpLHJlc29sdXRpb25YOnJlYWRVaW50MzIocixsKzgpLHJlc29sdXRpb25ZOnJlYWRVaW50MzIocixsKzEyKX07NDI5NDk2NzI5NT09PXkuaGVpZ2h0JiZkZWxldGUgeS5oZWlnaHQ7Y29uc3Qgdz1yW2wrMTZdO3JlYWRVaW50MTYocixsKzE3KTt5Lmxvc3NsZXNzPSEhKDEmdyk7eS5yZWZpbmVtZW50PSEhKDImdyk7eS5kZWZhdWx0UGl4ZWxWYWx1ZT13Pj4yJjE7eS5jb21iaW5hdGlvbk9wZXJhdG9yPXc+PjMmMzt5LnJlcXVpcmVzQnVmZmVyPSEhKDMyJncpO3kuY29tYmluYXRpb25PcGVyYXRvck92ZXJyaWRlPSEhKDY0JncpO249W3ldO2JyZWFrO2Nhc2UgNDk6Y2FzZSA1MDpjYXNlIDUxOmNhc2UgNjI6YnJlYWs7Y2FzZSA1MzpuPVthLm51bWJlcixyLGwsaV07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcihgc2VnbWVudCB0eXBlICR7YS50eXBlTmFtZX0oJHthLnR5cGV9KSBpcyBub3QgaW1wbGVtZW50ZWRgKX1jb25zdCBoPSJvbiIrYS50eXBlTmFtZTtoIGluIHQmJnRbaF0uYXBwbHkodCxuKX1mdW5jdGlvbiBwcm9jZXNzU2VnbWVudHMoZSx0KXtmb3IobGV0IGE9MCxyPWUubGVuZ3RoO2E8cjthKyspcHJvY2Vzc1NlZ21lbnQoZVthXSx0KX1jbGFzcyBTaW1wbGVTZWdtZW50VmlzaXRvcntvblBhZ2VJbmZvcm1hdGlvbihlKXt0aGlzLmN1cnJlbnRQYWdlSW5mbz1lO2NvbnN0IHQ9ZS53aWR0aCs3Pj4zLGE9bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqZS5oZWlnaHQpO2UuZGVmYXVsdFBpeGVsVmFsdWUmJmEuZmlsbCgyNTUpO3RoaXMuYnVmZmVyPWF9ZHJhd0JpdG1hcChlLHQpe2NvbnN0IGE9dGhpcy5jdXJyZW50UGFnZUluZm8scj1lLndpZHRoLGk9ZS5oZWlnaHQsbj1hLndpZHRoKzc+PjMscz1hLmNvbWJpbmF0aW9uT3BlcmF0b3JPdmVycmlkZT9lLmNvbWJpbmF0aW9uT3BlcmF0b3I6YS5jb21iaW5hdGlvbk9wZXJhdG9yLG89dGhpcy5idWZmZXIsYz0xMjg+Pig3JmUueCk7bGV0IGwsaCx1LGQsZj1lLnkqbisoZS54Pj4zKTtzd2l0Y2gocyl7Y2FzZSAwOmZvcihsPTA7bDxpO2wrKyl7dT1jO2Q9Zjtmb3IoaD0wO2g8cjtoKyspe3RbbF1baF0mJihvW2RdfD11KTt1Pj49MTtpZighdSl7dT0xMjg7ZCsrfX1mKz1ufWJyZWFrO2Nhc2UgMjpmb3IobD0wO2w8aTtsKyspe3U9YztkPWY7Zm9yKGg9MDtoPHI7aCsrKXt0W2xdW2hdJiYob1tkXV49dSk7dT4+PTE7aWYoIXUpe3U9MTI4O2QrK319Zis9bn1icmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBvcGVyYXRvciAke3N9IGlzIG5vdCBzdXBwb3J0ZWRgKX19b25JbW1lZGlhdGVHZW5lcmljUmVnaW9uKGUsdCxhLHIpe2NvbnN0IGk9ZS5pbmZvLG49bmV3IERlY29kaW5nQ29udGV4dCh0LGEscikscz1kZWNvZGVCaXRtYXAoZS5tbXIsaS53aWR0aCxpLmhlaWdodCxlLnRlbXBsYXRlLGUucHJlZGljdGlvbixudWxsLGUuYXQsbik7dGhpcy5kcmF3Qml0bWFwKGkscyl9b25JbW1lZGlhdGVMb3NzbGVzc0dlbmVyaWNSZWdpb24oKXt0aGlzLm9uSW1tZWRpYXRlR2VuZXJpY1JlZ2lvbiguLi5hcmd1bWVudHMpfW9uU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGksbil7bGV0IHMsbztpZihlLmh1ZmZtYW4pe3M9ZnVuY3Rpb24gZ2V0U3ltYm9sRGljdGlvbmFyeUh1ZmZtYW5UYWJsZXMoZSx0LGEpe2xldCByLGksbixzLG89MDtzd2l0Y2goZS5odWZmbWFuREhTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTpyPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuREhTZWxlY3Rvcis0KTticmVhaztjYXNlIDM6cj1nZXRD
101dXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gREggc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFdTZWxlY3Rvcil7Y2FzZSAwOmNhc2UgMTppPWdldFN0YW5kYXJkVGFibGUoZS5odWZmbWFuRFdTZWxlY3RvcisyKTticmVhaztjYXNlIDM6aT1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFcgc2VsZWN0b3IiKX1pZihlLmJpdG1hcFNpemVTZWxlY3Rvcil7bj1nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpO28rK31lbHNlIG49Z2V0U3RhbmRhcmRUYWJsZSgxKTtzPWUuYWdncmVnYXRpb25JbnN0YW5jZXNTZWxlY3Rvcj9nZXRDdXN0b21IdWZmbWFuVGFibGUobyx0LGEpOmdldFN0YW5kYXJkVGFibGUoMSk7cmV0dXJue3RhYmxlRGVsdGFIZWlnaHQ6cix0YWJsZURlbHRhV2lkdGg6aSx0YWJsZUJpdG1hcFNpemU6bix0YWJsZUFnZ3JlZ2F0ZUluc3RhbmNlczpzfX0oZSxhLHRoaXMuY3VzdG9tVGFibGVzKTtvPW5ldyBSZWFkZXIocixpLG4pfWxldCBjPXRoaXMuc3ltYm9scztjfHwodGhpcy5zeW1ib2xzPWM9e30pO2NvbnN0IGw9W107Zm9yKGNvbnN0IGUgb2YgYSl7Y29uc3QgdD1jW2VdO3QmJmwucHVzaCguLi50KX1jb25zdCBoPW5ldyBEZWNvZGluZ0NvbnRleHQocixpLG4pO2NbdF09ZnVuY3Rpb24gZGVjb2RlU3ltYm9sRGljdGlvbmFyeShlLHQsYSxyLGksbixzLG8sYyxsLGgsdSl7aWYoZSYmdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigic3ltYm9sIHJlZmluZW1lbnQgd2l0aCBIdWZmbWFuIGlzIG5vdCBzdXBwb3J0ZWQiKTtjb25zdCBkPVtdO2xldCBmPTAsZz1sb2cyKGEubGVuZ3RoK3IpO2NvbnN0IHA9aC5kZWNvZGVyLG09aC5jb250ZXh0Q2FjaGU7bGV0IGIseTtpZihlKXtiPWdldFN0YW5kYXJkVGFibGUoMSk7eT1bXTtnPU1hdGgubWF4KGcsMSl9Zm9yKDtkLmxlbmd0aDxyOyl7Zis9ZT9uLnRhYmxlRGVsdGFIZWlnaHQuZGVjb2RlKHUpOmRlY29kZUludGVnZXIobSwiSUFESCIscCk7bGV0IHI9MCxpPTA7Y29uc3QgYj1lP3kubGVuZ3RoOjA7Zm9yKDs7KXtjb25zdCBiPWU/bi50YWJsZURlbHRhV2lkdGguZGVjb2RlKHUpOmRlY29kZUludGVnZXIobSwiSUFEVyIscCk7aWYobnVsbD09PWIpYnJlYWs7cis9YjtpKz1yO2xldCB3O2lmKHQpe2NvbnN0IGk9ZGVjb2RlSW50ZWdlcihtLCJJQUFJIixwKTtpZihpPjEpdz1kZWNvZGVUZXh0UmVnaW9uKGUsdCxyLGYsMCxpLDEsYS5jb25jYXQoZCksZywwLDAsMSwwLG4sYyxsLGgsMCx1KTtlbHNle2NvbnN0IGU9ZGVjb2RlSUFJRChtLHAsZyksdD1kZWNvZGVJbnRlZ2VyKG0sIklBUkRYIixwKSxpPWRlY29kZUludGVnZXIobSwiSUFSRFkiLHApO3c9ZGVjb2RlUmVmaW5lbWVudChyLGYsYyxlPGEubGVuZ3RoP2FbZV06ZFtlLWEubGVuZ3RoXSx0LGksITEsbCxoKX1kLnB1c2godyl9ZWxzZSBpZihlKXkucHVzaChyKTtlbHNle3c9ZGVjb2RlQml0bWFwKCExLHIsZixzLCExLG51bGwsbyxoKTtkLnB1c2godyl9fWlmKGUmJiF0KXtjb25zdCBlPW4udGFibGVCaXRtYXBTaXplLmRlY29kZSh1KTt1LmJ5dGVBbGlnbigpO2xldCB0O2lmKDA9PT1lKXQ9cmVhZFVuY29tcHJlc3NlZEJpdG1hcCh1LGksZik7ZWxzZXtjb25zdCBhPXUuZW5kLHI9dS5wb3NpdGlvbitlO3UuZW5kPXI7dD1kZWNvZGVNTVJCaXRtYXAodSxpLGYsITEpO3UuZW5kPWE7dS5wb3NpdGlvbj1yfWNvbnN0IGE9eS5sZW5ndGg7aWYoYj09PWEtMSlkLnB1c2godCk7ZWxzZXtsZXQgZSxyLGksbixzLG89MDtmb3IoZT1iO2U8YTtlKyspe249eVtlXTtpPW8rbjtzPVtdO2ZvcihyPTA7cjxmO3IrKylzLnB1c2godFtyXS5zdWJhcnJheShvLGkpKTtkLnB1c2gocyk7bz1pfX19fWNvbnN0IHc9W10seD1bXTtsZXQgUyxrLEM9ITE7Y29uc3Qgdj1hLmxlbmd0aCtyO2Zvcig7eC5sZW5ndGg8djspe2xldCB0PWU/Yi5kZWNvZGUodSk6ZGVjb2RlSW50ZWdlcihtLCJJQUVYIixwKTtmb3IoO3QtLTspeC5wdXNoKEMpO0M9IUN9Zm9yKFM9MCxrPWEubGVuZ3RoO1M8aztTKyspeFtTXSYmdy5wdXNoKGFbU10pO2ZvcihsZXQgZT0wO2U8cjtTKyssZSsrKXhbU10mJncucHVzaChkW2VdKTtyZXR1cm4gd30oZS5odWZmbWFuLGUucmVmaW5lbWVudCxsLGUubnVtYmVyT2ZOZXdTeW1ib2xzLGUubnVtYmVyT2ZFeHBvcnRlZFN5bWJvbHMscyxlLnRlbXBsYXRlLGUuYXQsZS5yZWZpbmVtZW50VGVtcGxhdGUsZS5yZWZpbmVtZW50QXQsaCxvKX1vbkltbWVkaWF0ZVRleHRSZWdpb24oZSx0LGEscixpKXtjb25zdCBuPWUuaW5mbztsZXQgcyxvO2NvbnN0IGM9dGhpcy5zeW1ib2xzLGw9W107Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD1jW2VdO3QmJmwucHVzaCguLi50KX1jb25zdCBoPWxvZzIobC5sZW5ndGgpO2lmKGUuaHVmZm1hbil7bz1uZXcgUmVhZGVyKGEscixpKTtzPWZ1bmN0aW9uIGdldFRleHRSZWdpb25IdWZmbWFuVGFibGVzKGUsdCxhLHIsaSl7Y29uc3Qgbj1bXTtmb3IobGV0IGU9MDtlPD0zNDtlKyspe2NvbnN0IHQ9aS5yZWFkQml0cyg0KTtuLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtlLHQsMCwwXSkpfWNvbnN0IHM9bmV3IEh1ZmZtYW5UYWJsZShuLCExKTtuLmxlbmd0aD0wO2ZvcihsZXQgZT0wO2U8cjspe2NvbnN0IHQ9cy5kZWNvZGUoaSk7aWYodD49MzIpe2xldCBhLHIscztzd2l0Y2godCl7Y2FzZSAzMjppZigwPT09ZSl0aHJvdyBuZXcgSmJpZzJFcnJvcigibm8gcHJldmlvdXMgdmFsdWUgaW4gc3ltYm9sIElEIHRhYmxlIik7cj1pLnJlYWRCaXRzKDIpKzM7YT1uW2UtMV0ucHJlZml4TGVuZ3RoO2JyZWFrO2Nhc2UgMzM6cj1pLnJlYWRCaXRzKDMpKzM7YT0wO2JyZWFrO2Nhc2UgMzQ6cj1pLnJlYWRCaXRzKDcpKzExO2E9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIGNvZGUgbGVuZ3RoIGluIHN5bWJvbCBJRCB0YWJsZSIpfWZvcihzPTA7czxyO3MrKyl7bi5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSxhLDAsMF0pKTtlKyt9fWVsc2V7bi5wdXNoKG5ldyBIdWZmbWFuTGluZShbZSx0LDAsMF0pKTtlKyt9fWkuYnl0ZUFsaWduKCk7Y29uc3Qgbz1uZXcgSHVmZm1hblRhYmxlKG4sITEpO2xldCBjLGwsaCx1PTA7c3dpdGNoKGUuaHVmZm1hbkZTKXtjYXNlIDA6Y2FzZSAxOmM9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5GUys2KTticmVhaztjYXNlIDM6Yz1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRlMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFMpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmw9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EUys4KTticmVhaztjYXNlIDM6bD1nZXRDdXN0b21IdWZmbWFuVGFibGUodSx0LGEpO3UrKzticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKCJpbnZhbGlkIEh1ZmZtYW4gRFMgc2VsZWN0b3IiKX1zd2l0Y2goZS5odWZmbWFuRFQpe2Nhc2UgMDpjYXNlIDE6Y2FzZSAyOmg9Z2V0U3RhbmRhcmRUYWJsZShlLmh1ZmZtYW5EVCsxMSk7YnJlYWs7Y2FzZSAzOmg9Z2V0Q3VzdG9tSHVmZm1hblRhYmxlKHUsdCxhKTt1Kys7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIERUIHNlbGVjdG9yIil9aWYoZS5yZWZpbmVtZW50KXRocm93IG5ldyBKYmlnMkVycm9yKCJyZWZpbmVtZW50IHdpdGggSHVmZm1hbiBpcyBub3Qgc3VwcG9ydGVkIik7cmV0dXJue3N5bWJvbElEVGFibGU6byx0YWJsZUZpcnN0UzpjLHRhYmxlRGVsdGFTOmwsdGFibGVEZWx0YVQ6aH19KGUsdCx0aGlzLmN1c3RvbVRhYmxlcyxsLmxlbmd0aCxvKX1jb25zdCB1PW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLGkpLGQ9ZGVjb2RlVGV4dFJlZ2lvbihlLmh1ZmZtYW4sZS5yZWZpbmVtZW50LG4ud2lkdGgsbi5oZWlnaHQsZS
1015kZWZhdWx0UGl4ZWxWYWx1ZSxlLm51bWJlck9mU3ltYm9sSW5zdGFuY2VzLGUuc3RyaXBTaXplLGwsaCxlLnRyYW5zcG9zZWQsZS5kc09mZnNldCxlLnJlZmVyZW5jZUNvcm5lcixlLmNvbWJpbmF0aW9uT3BlcmF0b3IscyxlLnJlZmluZW1lbnRUZW1wbGF0ZSxlLnJlZmluZW1lbnRBdCx1LGUubG9nU3RyaXBTaXplLG8pO3RoaXMuZHJhd0JpdG1hcChuLGQpfW9uSW1tZWRpYXRlTG9zc2xlc3NUZXh0UmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZVRleHRSZWdpb24oLi4uYXJndW1lbnRzKX1vblBhdHRlcm5EaWN0aW9uYXJ5KGUsdCxhLHIsaSl7bGV0IG49dGhpcy5wYXR0ZXJucztufHwodGhpcy5wYXR0ZXJucz1uPXt9KTtjb25zdCBzPW5ldyBEZWNvZGluZ0NvbnRleHQoYSxyLGkpO25bdF09ZnVuY3Rpb24gZGVjb2RlUGF0dGVybkRpY3Rpb25hcnkoZSx0LGEscixpLG4pe2NvbnN0IHM9W107aWYoIWUpe3MucHVzaCh7eDotdCx5OjB9KTswPT09aSYmcy5wdXNoKHt4Oi0zLHk6LTF9LHt4OjIseTotMn0se3g6LTIseTotMn0pfWNvbnN0IG89ZGVjb2RlQml0bWFwKGUsKHIrMSkqdCxhLGksITEsbnVsbCxzLG4pLGM9W107Zm9yKGxldCBlPTA7ZTw9cjtlKyspe2NvbnN0IHI9W10saT10KmUsbj1pK3Q7Zm9yKGxldCBlPTA7ZTxhO2UrKylyLnB1c2gob1tlXS5zdWJhcnJheShpLG4pKTtjLnB1c2gocil9cmV0dXJuIGN9KGUubW1yLGUucGF0dGVybldpZHRoLGUucGF0dGVybkhlaWdodCxlLm1heFBhdHRlcm5JbmRleCxlLnRlbXBsYXRlLHMpfW9uSW1tZWRpYXRlSGFsZnRvbmVSZWdpb24oZSx0LGEscixpKXtjb25zdCBuPXRoaXMucGF0dGVybnNbdFswXV0scz1lLmluZm8sbz1uZXcgRGVjb2RpbmdDb250ZXh0KGEscixpKSxjPWZ1bmN0aW9uIGRlY29kZUhhbGZ0b25lUmVnaW9uKGUsdCxhLHIsaSxuLHMsbyxjLGwsaCx1LGQsZixnKXtpZihzKXRocm93IG5ldyBKYmlnMkVycm9yKCJza2lwIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZigwIT09byl0aHJvdyBuZXcgSmJpZzJFcnJvcihgb3BlcmF0b3IgIiR7b30iIGlzIG5vdCBzdXBwb3J0ZWQgaW4gaGFsZnRvbmUgcmVnaW9uYCk7Y29uc3QgcD1bXTtsZXQgbSxiLHk7Zm9yKG09MDttPGk7bSsrKXt5PW5ldyBVaW50OEFycmF5KHIpO24mJnkuZmlsbChuKTtwLnB1c2goeSl9Y29uc3Qgdz10Lmxlbmd0aCx4PXRbMF0sUz14WzBdLmxlbmd0aCxrPXgubGVuZ3RoLEM9bG9nMih3KSx2PVtdO2lmKCFlKXt2LnB1c2goe3g6YTw9MT8zOjIseTotMX0pOzA9PT1hJiZ2LnB1c2goe3g6LTMseTotMX0se3g6Mix5Oi0yfSx7eDotMix5Oi0yfSl9Y29uc3QgRj1bXTtsZXQgVCxPLEQsTSxSLE4sRSxMLF8sVSxqO2UmJihUPW5ldyBSZWFkZXIoZy5kYXRhLGcuc3RhcnQsZy5lbmQpKTtmb3IobT1DLTE7bT49MDttLS0pe089ZT9kZWNvZGVNTVJCaXRtYXAoVCxjLGwsITApOmRlY29kZUJpdG1hcCghMSxjLGwsYSwhMSxudWxsLHYsZyk7RlttXT1PfWZvcihEPTA7RDxsO0QrKylmb3IoTT0wO008YztNKyspe1I9MDtOPTA7Zm9yKGI9Qy0xO2I+PTA7Yi0tKXtSXj1GW2JdW0RdW01dO058PVI8PGJ9RT10W05dO0w9aCtEKmYrTSpkPj44O189dStEKmQtTSpmPj44O2lmKEw+PTAmJkwrUzw9ciYmXz49MCYmXytrPD1pKWZvcihtPTA7bTxrO20rKyl7aj1wW18rbV07VT1FW21dO2ZvcihiPTA7YjxTO2IrKylqW0wrYl18PVVbYl19ZWxzZXtsZXQgZSx0O2ZvcihtPTA7bTxrO20rKyl7dD1fK207aWYoISh0PDB8fHQ+PWkpKXtqPXBbdF07VT1FW21dO2ZvcihiPTA7YjxTO2IrKyl7ZT1MK2I7ZT49MCYmZTxyJiYoaltlXXw9VVtiXSl9fX19fXJldHVybiBwfShlLm1tcixuLGUudGVtcGxhdGUscy53aWR0aCxzLmhlaWdodCxlLmRlZmF1bHRQaXhlbFZhbHVlLGUuZW5hYmxlU2tpcCxlLmNvbWJpbmF0aW9uT3BlcmF0b3IsZS5ncmlkV2lkdGgsZS5ncmlkSGVpZ2h0LGUuZ3JpZE9mZnNldFgsZS5ncmlkT2Zmc2V0WSxlLmdyaWRWZWN0b3JYLGUuZ3JpZFZlY3Rvclksbyk7dGhpcy5kcmF3Qml0bWFwKHMsYyl9b25JbW1lZGlhdGVMb3NzbGVzc0hhbGZ0b25lUmVnaW9uKCl7dGhpcy5vbkltbWVkaWF0ZUhhbGZ0b25lUmVnaW9uKC4uLmFyZ3VtZW50cyl9b25UYWJsZXMoZSx0LGEscil7bGV0IGk9dGhpcy5jdXN0b21UYWJsZXM7aXx8KHRoaXMuY3VzdG9tVGFibGVzPWk9e30pO2lbZV09ZnVuY3Rpb24gZGVjb2RlVGFibGVzU2VnbWVudChlLHQsYSl7Y29uc3Qgcj1lW3RdLGk9NDI5NDk2NzI5NSZyZWFkVWludDMyKGUsdCsxKSxuPTQyOTQ5NjcyOTUmcmVhZFVpbnQzMihlLHQrNSkscz1uZXcgUmVhZGVyKGUsdCs5LGEpLG89MSsocj4+MSY3KSxjPTErKHI+PjQmNyksbD1bXTtsZXQgaCx1LGQ9aTtkb3toPXMucmVhZEJpdHMobyk7dT1zLnJlYWRCaXRzKGMpO2wucHVzaChuZXcgSHVmZm1hbkxpbmUoW2QsaCx1LDBdKSk7ZCs9MTw8dX13aGlsZShkPG4pO2g9cy5yZWFkQml0cyhvKTtsLnB1c2gobmV3IEh1ZmZtYW5MaW5lKFtpLTEsaCwzMiwwLCJsb3dlciJdKSk7aD1zLnJlYWRCaXRzKG8pO2wucHVzaChuZXcgSHVmZm1hbkxpbmUoW24saCwzMiwwXSkpO2lmKDEmcil7aD1zLnJlYWRCaXRzKG8pO2wucHVzaChuZXcgSHVmZm1hbkxpbmUoW2gsMF0pKX1yZXR1cm4gbmV3IEh1ZmZtYW5UYWJsZShsLCExKX0odCxhLHIpfX1jbGFzcyBIdWZmbWFuTGluZXtjb25zdHJ1Y3RvcihlKXtpZigyPT09ZS5sZW5ndGgpe3RoaXMuaXNPT0I9ITA7dGhpcy5yYW5nZUxvdz0wO3RoaXMucHJlZml4TGVuZ3RoPWVbMF07dGhpcy5yYW5nZUxlbmd0aD0wO3RoaXMucHJlZml4Q29kZT1lWzFdO3RoaXMuaXNMb3dlclJhbmdlPSExfWVsc2V7dGhpcy5pc09PQj0hMTt0aGlzLnJhbmdlTG93PWVbMF07dGhpcy5wcmVmaXhMZW5ndGg9ZVsxXTt0aGlzLnJhbmdlTGVuZ3RoPWVbMl07dGhpcy5wcmVmaXhDb2RlPWVbM107dGhpcy5pc0xvd2VyUmFuZ2U9Imxvd2VyIj09PWVbNF19fX1jbGFzcyBIdWZmbWFuVHJlZU5vZGV7Y29uc3RydWN0b3IoZSl7dGhpcy5jaGlsZHJlbj1bXTtpZihlKXt0aGlzLmlzTGVhZj0hMDt0aGlzLnJhbmdlTGVuZ3RoPWUucmFuZ2VMZW5ndGg7dGhpcy5yYW5nZUxvdz1lLnJhbmdlTG93O3RoaXMuaXNMb3dlclJhbmdlPWUuaXNMb3dlclJhbmdlO3RoaXMuaXNPT0I9ZS5pc09PQn1lbHNlIHRoaXMuaXNMZWFmPSExfWJ1aWxkVHJlZShlLHQpe2NvbnN0IGE9ZS5wcmVmaXhDb2RlPj50JjE7aWYodDw9MCl0aGlzLmNoaWxkcmVuW2FdPW5ldyBIdWZmbWFuVHJlZU5vZGUoZSk7ZWxzZXtsZXQgcj10aGlzLmNoaWxkcmVuW2FdO3J8fCh0aGlzLmNoaWxkcmVuW2FdPXI9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKSk7ci5idWlsZFRyZWUoZSx0LTEpfX1kZWNvZGVOb2RlKGUpe2lmKHRoaXMuaXNMZWFmKXtpZih0aGlzLmlzT09CKXJldHVybi
101BudWxsO2NvbnN0IHQ9ZS5yZWFkQml0cyh0aGlzLnJhbmdlTGVuZ3RoKTtyZXR1cm4gdGhpcy5yYW5nZUxvdysodGhpcy5pc0xvd2VyUmFuZ2U/LXQ6dCl9Y29uc3QgdD10aGlzLmNoaWxkcmVuW2UucmVhZEJpdCgpXTtpZighdCl0aHJvdyBuZXcgSmJpZzJFcnJvcigiaW52YWxpZCBIdWZmbWFuIGRhdGEiKTtyZXR1cm4gdC5kZWNvZGVOb2RlKGUpfX1jbGFzcyBIdWZmbWFuVGFibGV7Y29uc3RydWN0b3IoZSx0KXt0fHx0aGlzLmFzc2lnblByZWZpeENvZGVzKGUpO3RoaXMucm9vdE5vZGU9bmV3IEh1ZmZtYW5UcmVlTm9kZShudWxsKTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9ZVt0XTthLnByZWZpeExlbmd0aD4wJiZ0aGlzLnJvb3ROb2RlLmJ1aWxkVHJlZShhLGEucHJlZml4TGVuZ3RoLTEpfX1kZWNvZGUoZSl7cmV0dXJuIHRoaXMucm9vdE5vZGUuZGVjb2RlTm9kZShlKX1hc3NpZ25QcmVmaXhDb2RlcyhlKXtjb25zdCB0PWUubGVuZ3RoO2xldCBhPTA7Zm9yKGxldCByPTA7cjx0O3IrKylhPU1hdGgubWF4KGEsZVtyXS5wcmVmaXhMZW5ndGgpO2NvbnN0IHI9bmV3IFVpbnQzMkFycmF5KGErMSk7Zm9yKGxldCBhPTA7YTx0O2ErKylyW2VbYV0ucHJlZml4TGVuZ3RoXSsrO2xldCBpLG4scyxvPTEsYz0wO3JbMF09MDtmb3IoO288PWE7KXtjPWMrcltvLTFdPDwxO2k9YztuPTA7Zm9yKDtuPHQ7KXtzPWVbbl07aWYocy5wcmVmaXhMZW5ndGg9PT1vKXtzLnByZWZpeENvZGU9aTtpKyt9bisrfW8rK319fWNvbnN0IGFyPXt9O2Z1bmN0aW9uIGdldFN0YW5kYXJkVGFibGUoZSl7bGV0IHQsYT1hcltlXTtpZihhKXJldHVybiBhO3N3aXRjaC
101hlKXtjYXNlIDE6dD1bWzAsMSw0LDBdLFsxNiwyLDgsMl0sWzI3MiwzLDE2LDZdLFs2NTgwOCwzLDMyLDddXTticmVhaztjYXNlIDI6dD1bWzAsMSwwLDBdLFsxLDIsMCwyXSxbMiwzLDAsNl0sWzMsNCwzLDE0XSxbMTEsNSw2LDMwXSxbNzUsNiwzMiw2Ml0sWzYsNjNdXTticmVhaztjYXNlIDM6dD1bWy0yNTYsOCw4LDI1NF0sWzAsMSwwLDBdLFsxLDIsMCwyXSxbMiwzLDAsNl0sWzMsNCwzLDE0XSxbMTEsNSw2LDMwXSxbLTI1Nyw4LDMyLDI1NSwibG93ZXIiXSxbNzUsNywzMiwxMjZdLFs2LDYyXV07YnJlYWs7Y2FzZSA0OnQ9W1sxLDEsMCwwXSxbMiwyLDAsMl0sWzMsMywwLDZdLFs0LDQsMywxNF0sWzEyLDUsNiwzMF0sWzc2LDUsMzIsMzFdXTticmVhaztjYXNlIDU6dD1bWy0yNTUsNyw4LDEyNl0sWzEsMSwwLDBdLFsyLDIsMCwyXSxbMywzLDAsNl0sWzQsNCwzLDE0XSxbMTIsNSw2LDMwXSxbLTI1Niw3LDMyLDEyNywibG93ZXIiXSxbNzYsNiwzMiw2Ml1dO2JyZWFrO2Nhc2UgNjp0PVtbLTIwNDgsNSwxMCwyOF0sWy0xMDI0LDQsOSw4XSxbLTUxMiw0LDgsOV0sWy0yNTYsNCw3LDEwXSxbLTEyOCw1LDYsMjldLFstNjQsNSw1LDMwXSxbLTMyLDQsNSwxMV0sWzAsMiw3LDBdLFsxMjgsMyw3LDJdLFsyNTYsMyw4LDNdLFs1MTIsNCw5LDEyXSxbMTAyNCw0LDEwLDEzXSxbLTIwNDksNiwzMiw2MiwibG93ZXIiXSxbMjA0OCw2LDMyLDYzXV07YnJlYWs7Y2FzZSA3OnQ9W1stMTAyNCw0LDksOF0sWy01MTIsMyw4LDBdLFstMjU2LDQsNyw5XSxbLTEyOCw1LDYsMjZdLFstNjQsNSw1LDI3XSxbLTMyLDQsNSwxMF0sWzAsNCw1LDExXSxbMzIsNSw1LDI4XSxbNjQsNSw2LDI5XSxbMTI4LDQsNywxMl0sWzI1NiwzLDgsMV0sWzUxMiwzLDksMl0sWzEwMjQsMywxMCwzXSxbLTEwMjUsNSwzMiwzMCwibG93ZXIiXSxbMjA0OCw1LDMyLDMxXV07YnJlYWs7Y2FzZSA4OnQ9W1stMTUsOCwzLDI1Ml0sWy03LDksMSw1MDhdLFstNSw4LDEsMjUzXSxbLTMsOSwwLDUwOV0sWy0yLDcsMCwxMjRdLFstMSw0LDAsMTBdLFswLDIsMSwwXSxbMiw1LDAsMjZdLFszLDYsMCw1OF0sWzQsMyw0LDRdLFsyMCw2LDEsNTldLFsyMiw0LDQsMTFdLFszOCw0LDUsMTJdLFs3MCw1LDYsMjddLFsxMzQsNSw3LDI4XSxbMjYyLDYsNyw2MF0sWzM5MCw3LDgsMTI1XSxbNjQ2LDYsMTAsNjFdLFstMTYsOSwzMiw1MTAsImxvd2VyIl0sWzE2NzAsOSwzMiw1MTFdLFsyLDFdXTticmVhaztjYXNlIDk6dD1bWy0zMSw4LDQsMjUyXSxbLTE1LDksMiw1MDhdLFstMTEsOCwyLDI1M10sWy03LDksMSw1MDldLFstNSw3LDEsMTI0XSxbLTMsNCwxLDEwXSxbLTEsMywxLDJdLFsxLDMsMSwzXSxbMyw1LDEsMjZdLFs1LDYsMSw1OF0sWzcsMyw1LDRdLFszOSw2LDIsNTldLFs0Myw0LDUsMTFdLFs3NSw0LDYsMTJdLFsxMzksNSw3LDI3XSxbMjY3LDUsOCwyOF0sWzUyMyw2LDgsNjBdLFs3NzksNyw5LDEyNV0sWzEyOTEsNiwxMSw2MV0sWy0zMiw5LDMyLDUxMCwibG93ZXIiXSxbMzMzOSw5LDMyLDUxMV0sWzIsMF1dO2JyZWFrO2Nhc2UgMTA6dD1bWy0yMSw3LDQsMTIyXSxbLTUsOCwwLDI1Ml0sWy00LDcsMCwxMjNdLFstMyw1LDAsMjRdLFstMiwyLDIsMF0sWzIsNSwwLDI1XSxbMyw2LDAsNTRdLFs0LDcsMCwxMjRdLFs1LDgsMCwyNTNdLFs2LDIsNiwxXSxbNzAsNSw1LDI2XSxbMTAyLDYsNSw1NV0sWzEzNCw2LDYsNTZdLFsxOTgsNiw3LDU3XSxbMzI2LDYsOCw1OF0sWzU4Miw2LDksNTldLFsxMDk0LDYsMTAsNjBdLFsyMTE4LDcsMTEsMTI1XSxbLTIyLDgsMzIsMjU0LCJsb3dlciJdLFs0MTY2LDgsMzIsMjU1XSxbMiwyXV07YnJlYWs7Y2FzZSAxMTp0PVtbMSwxLDAsMF0sWzIsMiwxLDJdLFs0LDQsMCwxMl0sWzUsNCwxLDEzXSxbNyw1LDEsMjhdLFs5LDUsMiwyOV0sWzEzLDYsMiw2MF0sWzE3LDcsMiwxMjJdLFsyMSw3LDMsMTIzXSxbMjksNyw0LDEyNF0sWzQ1LDcsNSwxMjVdLFs3Nyw3LDYsMTI2XSxbMTQxLDcsMzIsMTI3XV07YnJlYWs7Y2FzZSAxMjp0PVtbMSwxLDAsMF0sWzIsMiwwLDJdLFszLDMsMSw2XSxbNSw1LDAsMjhdLFs2LDUsMSwyOV0sWzgsNiwxLDYwXSxbMTAsNywwLDEyMl0sWzExLDcsMSwxMjNdLFsxMyw3LDIsMTI0XSxbMTcsNywzLDEyNV0sWzI1LDcsNCwxMjZdLFs0MSw4LDUsMjU0XSxbNzMsOCwzMiwyNTVdXTticmVhaztjYXNlIDEzOnQ9W1sxLDEsMCwwXSxbMiwzLDAsNF0sWzMsNCwwLDEyXSxbNCw1LDAsMjhdLFs1LDQsMSwxM10sWzcsMywzLDVdLFsxNSw2LDEsNThdLFsxNyw2LDIsNTldLFsyMSw2LDMsNjBdLFsyOSw2LDQsNjFdLFs0NSw2LDUsNjJdLFs3Nyw3LDYsMTI2XSxbMTQxLDcsMzIsMTI3XV07YnJlYWs7Y2FzZSAxNDp0PVtbLTIsMywwLDRdLFstMSwzLDAsNV0sWzAsMSwwLDBdLFsxLDMsMCw2XSxbMiwzLDAsN11dO2JyZWFrO2Nhc2UgMTU6dD1bWy0yNCw3LDQsMTI0XSxbLTgsNiwyLDYwXSxbLTQsNSwxLDI4XSxbLTIsNCwwLDEyXSxbLTEsMywwLDRdLFswLDEsMCwwXSxbMSwzLDAsNV0sWzIsNCwwLDEzXSxbMyw1LDEsMjldLFs1LDYsMiw2MV0sWzksNyw0LDEyNV0sWy0yNSw3LDMyLDEyNiwibG93ZXIiXSxbMjUsNywzMiwxMjddXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBKYmlnMkVycm9yKGBzdGFuZGFyZCB0YWJsZSBCLiR7ZX0gZG9lcyBub3QgZXhpc3RgKX1mb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTtlKyspdFtlXT1uZXcgSHVmZm1hbkxpbmUodFtlXSk7YT1uZXcgSHVmZm1hblRhYmxlKHQsITApO2FyW2VdPWE7cmV0dXJuIGF9Y2xhc3MgUmVhZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRhdGE9ZTt0aGlzLnN0YXJ0PXQ7dGhpcy5lbmQ9YTt0aGlzLnBvc2l0aW9uPXQ7dGhpcy5zaGlmdD0tMTt0aGlzLmN1cnJlbnRCeXRlPTB9cmVhZEJpdCgpe2lmKHRoaXMuc2hpZnQ8MCl7aWYodGhpcy5wb3NpdGlvbj49dGhpcy5lbmQpdGhyb3cgbmV3IEpiaWcyRXJyb3IoImVuZCBvZiBkYXRhIHdoaWxlIHJlYWRpbmcgYml0Iik7dGhpcy5jdXJyZW50Qnl0ZT10aGlzLmRhdGFbdGhpcy5wb3NpdGlvbisrXTt0aGlzLnNoaWZ0PTd9Y29uc3QgZT10aGlzLmN1cnJlbnRCeXRlPj50aGlzLnNoaWZ0JjE7dGhpcy5zaGlmdC0tO3JldHVybiBlfXJlYWRCaXRzKGUpe2xldCB0LGE9MDtmb3IodD1lLTE7dD49MDt0LS0pYXw9dGhpcy5yZWFkQml0KCk8PHQ7cmV0dXJuIGF9Ynl0ZUFsaWduKCl7dGhpcy5zaGlmdD0tMX1uZXh0KCl7cmV0dXJuIHRoaXMucG9zaXRpb24+PXRoaXMuZW5kPy0xOnRoaXMuZGF0YVt0aGlzLnBvc2l0aW9uKytdfX1mdW5jdGlvbiBnZXRDdXN0b21IdWZmbWFuVGFibGUoZSx0LGEpe2xldCByPTA7Zm9yKGxldCBpPTAsbj10Lmxlbmd0aDtpPG47aSsrKXtjb25zdCBuPWFbdFtpXV07aWYobil7aWYoZT09PXIpcmV0dXJuIG47cisrfX10aHJvdyBuZXcgSmJpZzJFcnJvcigiY2FuJ3QgZmluZCBjdXN0b20gSHVmZm1hbiB0YWJsZSIpfWZ1bmN0aW9uIHJlYWRVbmNvbXByZXNzZWRCaXRtYXAoZSx0LGEpe2NvbnN0IHI9W107Zm9yKGxldCBpPTA7aTxhO2krKyl7Y29uc3QgYT1uZXcgVWludDhBcnJheSh0KTtyLnB1c2goYSk7Zm9yKGxldCByPTA7cjx0O3IrKylhW3JdPWUucmVhZEJpdCgpO2UuYnl0ZUFsaWduKCl9cmV0dXJuIHJ9ZnVuY3Rpb24gZGVjb2RlTU1SQml0bWFwKGUsdCxhLHIpe2NvbnN0IGk9bmV3IENDSVRURmF4RGVjb2RlcihlLHtLOi0xLENvbHVtbnM6dCxSb3dzOmEsQmxhY2tJczE6ITAsRW5kT2ZCbG9jazpyfSksbj1bXTt
101sZXQgcyxvPSExO2ZvcihsZXQgZT0wO2U8YTtlKyspe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkodCk7bi5wdXNoKGUpO2xldCBhPS0xO2ZvcihsZXQgcj0wO3I8dDtyKyspe2lmKGE8MCl7cz1pLnJlYWROZXh0Q2hhcigpO2lmKC0xPT09cyl7cz0wO289ITB9YT03fWVbcl09cz4+YSYxO2EtLX19aWYociYmIW8pe2NvbnN0IGU9NTtmb3IobGV0IHQ9MDt0PGUmJi0xIT09aS5yZWFkTmV4dENoYXIoKTt0KyspO31yZXR1cm4gbn1jbGFzcyBKYmlnMkltYWdle3BhcnNlQ2h1bmtzKGUpe3JldHVybiBmdW5jdGlvbiBwYXJzZUpiaWcyQ2h1bmtzKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZVNlZ21lbnRWaXNpdG9yO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lW2FdO3Byb2Nlc3NTZWdtZW50cyhyZWFkU2VnbWVudHMoe30sci5kYXRhLHIuc3RhcnQsci5lbmQpLHQpfXJldHVybiB0LmJ1ZmZlcn0oZSl9cGFyc2UoZSl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQ6IEpiaWcySW1hZ2UucGFyc2UiKX19Y2xhc3MgSmJpZzJTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soKXt0aGlzLmRlY29kZUltYWdlKCl9ZGVjb2RlSW1hZ2UoZSl7aWYodGhpcy5lb2YpcmV0dXJuIHRoaXMuYnVmZmVyO2V8fD10aGlzLmJ5dGVzO2NvbnN0IHQ9bmV3IEpiaWcySW1hZ2UsYT1bXTtpZih0aGlzLnBhcmFtcyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dGhpcy5wYXJhbXMuZ2V0KCJKQklHMkdsb2JhbHMiKTtpZihlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSl7Y29uc3QgdD1lLmdldEJ5dGVzKCk7YS5wdXNoKHtkYXRhOnQsc3RhcnQ6MCxlbmQ6dC5sZW5ndGh9KX19YS5wdXNoKHtkYXRhOmUsc3RhcnQ6MCxlbmQ6ZS5sZW5ndGh9KTtjb25zdCByPXQucGFyc2VDaHVua3MoYSksaT1yLmxlbmd0aDtmb3IobGV0IGU9MDtlPGk7ZSsrKXJbZV1ePTI1NTt0aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPWk7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfX1jbGFzcyBKcHhTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLm1heWJlTGVuZ3RoPXQ7dGhpcy5wYXJhbXM9YX1nZXQgYnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsImJ5dGVzIix0aGlzLnN0cmVhbS5nZXRCeXRlcyh0aGlzLm1heWJlTGVuZ3RoKSl9ZW5zdXJlQnVmZmVyKGUpe31yZWFkQmxvY2soZSl7dW5yZWFjaGFibGUoIkpweFN0cmVhbS5yZWFkQmxvY2siKX1nZXQgaXNBc3luY0RlY29kZXIoKXtyZXR1cm4hMH1hc3luYyBkZWNvZGVJbWFnZShlLHQpe2lmKHRoaXMuZW9mKXJldHVybiB0aGlzLmJ1ZmZlcjtlfHw9dGhpcy5ieXRlczt0aGlzLmJ1ZmZlcj1hd2FpdCBKcHhJbWFnZS5kZWNvZGUoZSx0KTt0aGlzLmJ1ZmZlckxlbmd0aD10aGlzLmJ1ZmZlci5sZW5ndGg7dGhpcy5lb2Y9ITA7cmV0dXJuIHRoaXMuYnVmZmVyfWdldCBjYW5Bc3luY0RlY29kZUltYWdlRnJvbUJ1ZmZlcigpe3JldHVybiB0aGlzLnN0cmVhbS5pc0FzeW5jfX1jbGFzcyBMWldTdHJlYW0gZXh0ZW5kcyBEZWNvZGVTdHJlYW17Y29uc3RydWN0b3IoZSx0LGEpe3N1cGVyKHQpO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDt0aGlzLmNhY2hlZERhdGE9MDt0aGlzLmJpdHNDYWNoZWQ9MDtjb25zdCByPTQwOTYsaT17ZWFybHlDaGFuZ2U6YSxjb2RlTGVuZ3RoOjksbmV4dENvZGU6MjU4LGRpY3Rpb25hcnlWYWx1ZXM6bmV3IFVpbnQ4QXJyYXkociksZGljdGlvbmFyeUxlbmd0aHM6bmV3IFVpbnQxNkFycmF
1015KHIpLGRpY3Rpb25hcnlQcmV2Q29kZXM6bmV3IFVpbnQxNkFycmF5KHIpLGN1cnJlbnRTZXF1ZW5jZTpuZXcgVWludDhBcnJheShyKSxjdXJyZW50U2VxdWVuY2VMZW5ndGg6MH07Zm9yKGxldCBlPTA7ZTwyNTY7KytlKXtpLmRpY3Rpb25hcnlWYWx1ZXNbZV09ZTtpLmRpY3Rpb25hcnlMZW5ndGhzW2VdPTF9dGhpcy5sendTdGF0ZT1pfXJlYWRCaXRzKGUpe2xldCB0PXRoaXMuYml0c0NhY2hlZCxhPXRoaXMuY2FjaGVkRGF0YTtmb3IoO3Q8ZTspe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpO2lmKC0xPT09ZSl7dGhpcy5lb2Y9ITA7cmV0dXJuIG51bGx9YT1hPDw4fGU7dCs9OH10aGlzLmJpdHNDYWNoZWQ9dC09ZTt0aGlzLmNhY2hlZERhdGE9YTt0aGlzLmxhc3RDb2RlPW51bGw7cmV0dXJuIGE+Pj50JigxPDxlKS0xfXJlYWRCbG9jaygpe2xldCBlLHQsYSxyPTEwMjQ7Y29uc3QgaT10aGlzLmx6d1N0YXRlO2lmKCFpKXJldHVybjtjb25zdCBuPWkuZWFybHlDaGFuZ2U7bGV0IHM9aS5uZXh0Q29kZTtjb25zdCBvPWkuZGljdGlvbmFyeVZhbHVlcyxjPWkuZGljdGlvbmFyeUxlbmd0aHMsbD1pLmRpY3Rpb25hcnlQcmV2Q29kZXM7bGV0IGg9aS5jb2RlTGVuZ3RoLHU9aS5wcmV2Q29kZTtjb25zdCBkPWkuY3VycmVudFNlcXVlbmNlO2xldCBmPWkuY3VycmVudFNlcXVlbmNlTGVuZ3RoLGc9MCxwPXRoaXMuYnVmZmVyTGVuZ3RoLG09dGhpcy5lbnN1cmVCdWZmZXIodGhpcy5idWZmZXJMZW5ndGgrcik7Zm9yKGU9MDtlPDUxMjtlKyspe2NvbnN0IGU9dGhpcy5yZWFkQml0cyhoKSxpPWY+MDtpZihlPDI1Nil7ZFswXT1lO2Y9MX1lbHNle2lmKCEoZT49MjU4KSl7aWYoMjU2PT09ZSl7aD05O3M9MjU4O2Y9MDtjb250aW51ZX10aGlzLmVvZj0hMDtkZWxldGUgdGhpcy5sendTdGF0ZTticmVha31pZihlPHMpe2Y9Y1tlXTtmb3IodD1mLTEsYT1lO3Q+PTA7dC0tKXtkW3RdPW9bYV07YT1sW2FdfX1lbHNlIGRbZisrXT1kWzBdfWlmKGkpe2xbc109dTtjW3NdPWNbdV0rMTtvW3NdPWRbMF07cysrO2g9cytuJnMrbi0xP2g6MHxNYXRoLm1pbihNYXRoLmxvZyhzK24pLy42OTMxNDcxODA1NTk5NDUzKzEsMTIpfXU9ZTtnKz1mO2lmKHI8Zyl7ZG97cis9NTEyfXdoaWxlKHI8Zyk7bT10aGlzLmVuc3VyZUJ1ZmZlcih0aGlzLmJ1ZmZlckxlbmd0aCtyKX1mb3IodD0wO3Q8Zjt0KyspbVtwKytdPWRbdF19aS5uZXh0Q29kZT1zO2kuY29kZUxlbmd0aD1oO2kucHJldkNvZGU9dTtpLmN1cnJlbnRTZXF1ZW5jZUxlbmd0aD1mO3RoaXMuYnVmZmVyTGVuZ3RoPXB9fWNsYXNzIFByZWRpY3RvclN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIGU7Y29uc3Qgcj10aGlzLnByZWRpY3Rvcj1hLmdldCgiUHJlZGljdG9yIil8fDE7aWYocjw9MSlyZXR1cm4gZTtpZigyIT09ciYmKHI8MTB8fHI+MTUpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5zdXBwb3J0ZWQgcHJlZGljdG9yOiAke3J9YCk7dGhpcy5yZWFkQmxvY2s9Mj09PXI/dGhpcy5yZWFkQmxvY2tUaWZmOnRoaXMucmVhZEJsb2NrUG5nO3RoaXMuc3RyZWFtPWU7dGhpcy5kaWN0PWUuZGljdDtjb25zdCBpPXRoaXMuY29sb3JzPWEuZ2V0KCJDb2xvcnMiKXx8MSxuPXRoaXMuYml0cz1hLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpfHw4LHM9dGhpcy5jb2x1bW5zPWEuZ2V0KCJDb2x1bW5zIil8fDE7dGhpcy5waXhCeXRlcz1pKm4rNz4+Mzt0aGlzLnJvd0J5dGVzPXMqaSpuKzc+PjM7cmV0dXJuIHRoaXN9cmVhZEJsb2NrVGlmZigpe2NvbnN0IGU9dGhpcy5yb3dCeXRlcyx0PXRoaXMuYnVmZmVyTGVuZ3RoLGE9dGhpcy5lbnN1cmVCdWZmZXIodCtlKSxyPXRoaXMuYml0cyxpPXRoaXMuY29sb3JzLG49dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoZSk7dGhpcy5lb2Y9IW4ubGVuZ3RoO2lmKHRoaXMuZW9mKXJldHVybjtsZXQgcyxvPTAsYz0wLGw9MCxoPTAsdT10O2lmKDE9PT1yJiYxPT09aSlmb3Iocz0wO3M8ZTsrK3Mpe2xldCBlPW5bc11ebztlXj1lPj4xO2VePWU+PjI7ZV49ZT4+NDtvPSgxJmUpPDw3O2FbdSsrXT1lfWVsc2UgaWYoOD09PXIpe2ZvcihzPTA7czxpOysrcylhW3UrK109bltzXTtmb3IoO3M8ZTsrK3Mpe2FbdV09YVt1LWldK25bc107dSsrfX1lbHNlIGlmKDE2PT09cil7Y29uc3QgdD0yKmk7Zm9yKHM9MDtzPHQ7KytzKWFbdSsrXT1uW3NdO2Zvcig7czxlO3MrPTIpe2NvbnN0IGU9KCgyNTUmbltzXSk8PDgpKygyNTUmbltzKzFdKSsoKDI1NSZhW3UtdF0pPDw4KSsoMjU1JmFbdS10KzFdKTthW3UrK109ZT4+OCYyNTU7YVt1KytdPTI1NSZlfX1lbHNle2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoaSsxKSx1PSgxPDxyKS0xO2xldCBkPTAsZj10O2NvbnN0IGc9dGhpcy5jb2x1bW5zO2ZvcihzPTA7czxnOysrcylmb3IobGV0IHQ9MDt0PGk7Kyt0KXtpZihsPHIpe289bzw8OHwyNTUmbltkKytdO2wrPTh9ZVt0XT1lW3RdKyhvPj5sLXIpJnU7bC09cjtjPWM8PHJ8ZVt0XTtoKz1yO2lmKGg+PTgpe2FbZisrXT1jPj5oLTgmMjU1O2gtPTh9fWg+MCYmKGFbZisrXT0oYzw8OC1oKSsobyYoMTw8OC1oKS0xKSl9dGhpcy5idWZmZXJMZW5ndGgrPWV9cmVhZEJsb2NrUG5nKCl7Y29uc3QgZT10aGlzLnJvd0J5dGVzLHQ9dGhpcy5waXhCeXRlcyxhPXRoaXMuc3RyZWFtLmdldEJ5dGUoKSxyPXRoaXMuc3RyZWFtLmdldEJ5dGVzKGUpO3RoaXMuZW9mPSFyLmxlbmd0aDtpZih0aGlzLmVvZilyZXR1cm47Y29uc3QgaT10aGlzLmJ1ZmZlckxlbmd0aCxuPXRoaXMuZW5zdXJlQnVmZmVyKGkrZSk7bGV0IHM9bi5zdWJhcnJheShpLWUsaSk7MD09PXMubGVuZ3RoJiYocz1uZXcgVWludDhBcnJheShlKSk7bGV0IG8sYyxsLGg9aTtzd2l0Y2goYSl7Y2FzZSAwOmZvcihvPTA7bzxlOysrbyluW2grK109cltvXTticmVhaztjYXNlIDE6Zm9yKG89MDtvPHQ7KytvKW5baCsrXT1yW29dO2Zvcig7bzxlOysrbyl7bltoXT1uW2gtdF0rcltvXSYyNTU7aCsrfWJyZWFrO2Nhc2UgMjpmb3Iobz0wO288ZTsrK28pbltoKytdPXNbb10rcltvXSYyNTU7YnJlYWs7Y2FzZSAzOmZvcihvPTA7bzx0OysrbyluW2grK109KHNbb10+PjEpK3Jbb107Zm9yKDtvPGU7KytvKXtuW2hdPShzW29dK25baC10XT4+MSkrcltvXSYyNTU7aCsrfWJyZWFrO2Nhc2UgNDpmb3Iobz0wO288dDsrK28pe2M9c1tvXTtsP
101XJbb107bltoKytdPWMrbH1mb3IoO288ZTsrK28pe2M9c1tvXTtjb25zdCBlPXNbby10XSxhPW5baC10XSxpPWErYy1lO2xldCB1PWktYTt1PDAmJih1PS11KTtsZXQgZD1pLWM7ZDwwJiYoZD0tZCk7bGV0IGY9aS1lO2Y8MCYmKGY9LWYpO2w9cltvXTtuW2grK109dTw9ZCYmdTw9Zj9hK2w6ZDw9Zj9jK2w6ZStsfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbnN1cHBvcnRlZCBwcmVkaWN0b3I6ICR7YX1gKX10aGlzLmJ1ZmZlckxlbmd0aCs9ZX19Y2xhc3MgUnVuTGVuZ3RoU3RyZWFtIGV4dGVuZHMgRGVjb2RlU3RyZWFte2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0fXJlYWRCbG9jaygpe2NvbnN0IGU9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoMik7aWYoIWV8fGUubGVuZ3RoPDJ8fDEyOD09PWVbMF0pe3RoaXMuZW9mPSEwO3JldHVybn1sZXQgdCxhPXRoaXMuYnVmZmVyTGVuZ3RoLHI9ZVswXTtpZihyPDEyOCl7dD10aGlzLmVuc3VyZUJ1ZmZlcihhK3IrMSk7dFthKytdPWVbMV07aWYocj4wKXtjb25zdCBlPXRoaXMuc3RyZWFtLmdldEJ5dGVzKHIpO3Quc2V0KGUsYSk7YSs9cn19ZWxzZXtyPTI1Ny1yO3Q9dGhpcy5lbnN1cmVCdWZmZXIoYStyKzEpO3QuZmlsbChlWzFdLGEsYStyKTthKz1yfXRoaXMuYnVmZmVyTGVuZ3RoPWF9fWNsYXNzIFBhcnNlcntjb25zdHJ1Y3Rvcih7bGV4ZXI6ZSx4cmVmOnQsYWxsb3dTdHJlYW1zOmE9ITEscmVjb3ZlcnlNb2RlOnI9ITF9KXt0aGlzLmxleGVyPWU7dGhpcy54cmVmPXQ7dGhpcy5hbGxvd1N0cmVhbXM9YTt0aGlzLnJlY292ZXJ5TW9kZT1yO3RoaXMuaW1hZ2VDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2ltYWdlSWQ9MDt0aGlzLnJlZmlsbCgpfXJlZmlsbCgpe3RoaXMuYnVmMT10aGlzLmxleGVyLmdldE9iaigpO3RoaXMuYnVmMj10aGlzLmxleGVyLmdldE9iaigpfXNoaWZ0KCl7aWYodGhpcy5idWYyIGluc3RhbmNlb2YgQ21kJiYiSUQiPT09dGhpcy5idWYyLmNtZCl7dGhpcy5idWYxPXRoaXMuYnVmMjt0aGlzLmJ1ZjI9bnVsbH1lbHNle3RoaXMuYnVmMT10aGlzLmJ1ZjI7dGhpcy5idWYyPXRoaXMubGV4ZXIuZ2V0T2JqKCl9fXRyeVNoaWZ0KCl7dHJ5e3RoaXMuc2hpZnQoKTtyZXR1cm4hMH1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtyZXR1cm4hMX19Z2V0T2JqKGU9bnVsbCl7Y29uc3QgdD10aGlzLmJ1ZjE7dGhpcy5zaGlmdCgpO2lmKHQgaW5zdGFuY2VvZiBDbWQpc3dpdGNoKHQuY21kKXtjYXNlIkJJIjpyZXR1cm4gdGhpcy5tYWtlSW5saW5lSW1hZ2UoZSk7Y2FzZSJbIjpjb25zdCBhPVtdO2Zvcig7IWlzQ21kKHRoaXMuYnVmMSwiXSIpJiZ0aGlzLmJ1ZjEhPT1zYTspYS5wdXNoKHRoaXMuZ2V0T2JqKGUpKTtpZih0aGlzLmJ1ZjE9PT1zYSl7aWYodGhpcy5yZWNvdmVyeU1vZGUpcmV0dXJuIGE7dGhyb3cgbmV3IFBhcnNlckVPRkV4Y2VwdGlvbigiRW5kIG9mIGZpbGUgaW5zaWRlIGFycmF5LiIpfXRoaXMuc2hpZnQoKTtyZXR1cm4gYTtjYXNlIjw8Ijpjb25zdCByPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKDshaXNDbWQodGhpcy5idWYxLCI+PiIpJiZ0aGlzLmJ1ZjEhPT1zYTspe2lmKCEodGhpcy5idWYxIGluc3RhbmNlb2YgTmFtZSkpe2luZm8oIk1hbGZvcm1lZCBkaWN0aW9uYXJ5OiBrZXkgbXVzdCBiZSBhIG5hbWUgb2JqZWN0Iik7dGhpcy5zaGlmdCgpO2NvbnRpbnVlfWNvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PXNhKWJyZWFrO3Iuc2V0KHQsdGhpcy5nZXRPYmooZSkpfWlmKHRoaXMuYnVmMT09PXNhKXtpZih0aGlzLnJlY292ZXJ5TW9kZSlyZXR1cm4gcjt0aHJvdyBuZXcgUGFyc2VyRU9GRXhjZXB0aW9uKCJFbmQgb2YgZmlsZSBpbnNpZGUgZGljdGlvbmFyeS4iKX1pZihpc0NtZCh0aGlzLmJ1ZjIsInN0cmVhbSIpKXJldHVybiB0aGlzLmFsbG93U3RyZWFtcz90aGlzLm1ha2VTdHJlYW0ocixlKTpyO3RoaXMuc2hpZnQoKTtyZXR1cm4gcjtkZWZhdWx0OnJldHVybiB0fWlmKE51bWJlci5pc0ludGVnZXIodCkpe2lmKE51bWJlci5pc0ludGVnZXIodGhpcy5idWYxKSYmaXNDbWQodGhpcy5idWYyLCJSIikpe2NvbnN0IGU9UmVmLmdldCh0LHRoaXMuYnVmMSk7dGhpcy5zaGlmdCgpO3RoaXMuc2hpZnQoKTtyZXR1cm4gZX1yZXR1cm4gdH1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQmJmU/ZS5kZWNyeXB0U3RyaW5nKHQpOnR9ZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3R7a25vd25Db21tYW5kczp0fT10aGlzLmxleGVyLGE9ZS5wb3M7bGV0IHIsaSxuPTA7Zm9yKDstMSE9PShyPWUuZ2V0Qnl0ZSgpKTspaWYoMD09PW4pbj02OT09PXI/MTowO2Vsc2UgaWYoMT09PW4pbj03Mz09PXI/MjowO2Vsc2UgaWYoMzI9PT1yfHwxMD09PXJ8fDEzPT09cil7aT1lLnBvcztjb25zdCBhPWUucGVla0J5dGVzKDE1KSxzPWEubGVuZ3RoO2lmKDA9PT1zKWJyZWFrO2ZvcihsZXQgZT0wO2U8cztlKyspe3I9YVtlXTtpZigoMCE9PXJ8fDA9PT1hW2UrMV0pJiYoMTAhPT1yJiYxMyE9PXImJihyPDMyfHxyPjEyNykpKXtuPTA7YnJlYWt9fWlmKDIhPT1uKWNvbnRpbnVlO2lmKCF0KXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZCAtIGBsZXhlci5rbm93bkNvbW1hbmRzYCBpcyB1bmRlZmluZWQuIik7Y29udGludWV9Y29uc3Qgbz1uZXcgTGV4ZXIobmV3IFN0cmVhbShlLnBlZWtCeXRlcyg3NSkpLHQpO28uX2hleFN0cmluZ1dhcm49KCk9Pnt9O2xldCBjPTA7Zm9yKDs7KXtjb25zdCBlPW8uZ2V0T2JqKCk7aWYoZT09PXNhKXtuPTA7YnJlYWt9aWYoZSBpbnN0YW5jZW9mIENtZCl7Y29uc3QgYT10W2UuY21kXTtpZighYSl7bj0wO2JyZWFrfWlmKGEudmFyaWFibGVBcmdzP2M8PWEubnVtQXJnczpjPT09YS5udW1BcmdzKWJyZWFrO2M9MDtjb250aW51ZX1jKyt9aWYoMj09PW4pYnJlYWt9ZWxzZSBuPTA7aWYoLTE9PT1yKXt3YXJuKCJmaW5kRGVmYXVsdElubGluZVN0cmVhbUVuZDogUmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gd2l0aG91dCBmaW5kaW5nIGEgdmFsaWQgRUkgbWFya2VyIik7aWYoaSl7d2FybignLi4uIHRyeWluZyB0byByZWNvdmVyIGJ5IHVzaW5nIHRoZSBsYXN0ICJFSSIgb2NjdXJyZW5jZS4nKTtlLnNraXAoLShlLnBvcy1pKSl9fWxldCBzPTQ7ZS5za2lwKC1zKTtyPWUucGVla0J5dGUoKTtlLnNraXAocyk7aXNXaGl0ZVNwYWNl
101KHIpfHxzLS07cmV0dXJuIGUucG9zLXMtYX1maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGUpe2NvbnN0IHQ9ZS5wb3M7bGV0IGEscixpPSExO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSk7KWlmKDI1NT09PWEpe3N3aXRjaChlLmdldEJ5dGUoKSl7Y2FzZSAwOmJyZWFrO2Nhc2UgMjU1OmUuc2tpcCgtMSk7YnJlYWs7Y2FzZSAyMTc6aT0hMDticmVhaztjYXNlIDE5MjpjYXNlIDE5MzpjYXNlIDE5NDpjYXNlIDE5NTpjYXNlIDE5NzpjYXNlIDE5ODpjYXNlIDE5OTpjYXNlIDIwMTpjYXNlIDIwMjpjYXNlIDIwMzpjYXNlIDIwNTpjYXNlIDIwNjpjYXNlIDIwNzpjYXNlIDE5NjpjYXNlIDIwNDpjYXNlIDIxODpjYXNlIDIxOTpjYXNlIDIyMDpjYXNlIDIyMTpjYXNlIDIyMjpjYXNlIDIyMzpjYXNlIDIyNDpjYXNlIDIyNTpjYXNlIDIyNjpjYXNlIDIyNzpjYXNlIDIyODpjYXNlIDIyOTpjYXNlIDIzMDpjYXNlIDIzMTpjYXNlIDIzMjpjYXNlIDIzMzpjYXNlIDIzNDpjYXNlIDIzNTpjYXNlIDIzNjpjYXNlIDIzNzpjYXNlIDIzODpjYXNlIDIzOTpjYXNlIDI1NDpyPWUuZ2V0VWludDE2KCk7cj4yP2Uuc2tpcChyLTIpOmUuc2tpcCgtMil9aWYoaSlicmVha31jb25zdCBuPWUucG9zLXQ7aWYoLTE9PT1hKXt3YXJuKCJJbmxpbmUgRENURGVjb2RlIGltYWdlIHN0cmVhbTogRU9JIG1hcmtlciBub3QgZm91bmQsIHNlYXJjaGluZyBmb3IgL0VJLyBpbnN0ZWFkLiIpO2Uuc2tpcCgtbik7cmV0dXJuIHRoaXMuZmluZERlZmF1bHRJbmxpbmVTdHJlYW1FbmQoZSl9dGhpcy5pbmxpbmVTdHJlYW1Ta2lwRUkoZSk7cmV0dXJuIG59ZmluZEFTQ0lJODVEZWNvZGVJbmxpbmVTdHJlYW1FbmQoZSl7Y29uc3QgdD1lLnBvcztsZXQgYTtmb3IoOy0xIT09KGE9ZS5nZXRCeXRlKCkpOylpZigxMjY9PT1hKXtjb25zdCB0PWUucG9zO2E9ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKGEpOyl7ZS5za2lwKCk7YT1lLnBlZWtCeXRlKCl9aWYoNjI9PT1hKXtlLnNraXAoKTticmVha31pZihlLnBvcz50KXtjb25zdCB0PWUucGVla0J5dGVzKDIpO2lmKDY5PT09dFswXSYmNzM9PT10WzFdKWJyZWFrfX1jb25zdCByPWUucG9zLXQ7aWYoLTE9PT1hKXt3YXJuKCJJbmxpbmUgQVNDSUk4NURlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLXIpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiByfWZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChlKXtjb25zdCB0PWUucG9zO2xldCBhO2Zvcig7LTEhPT0oYT1lLmdldEJ5dGUoKSkmJjYyIT09YTspO2NvbnN0IHI9ZS5wb3MtdDtpZigtMT09PWEpe3dhcm4oIklubGluZSBBU0NJSUhleERlY29kZSBpbWFnZSBzdHJlYW06IEVPRCBtYXJrZXIgbm90IGZvdW5kLCBzZWFyY2hpbmcgZm9yIC9FSS8gaW5zdGVhZC4iKTtlLnNraXAoLXIpO3JldHVybiB0aGlzLmZpbmREZWZhdWx0SW5saW5lU3RyZWFtRW5kKGUpfXRoaXMuaW5saW5lU3RyZWFtU2tpcEVJKGUpO3JldHVybiByfWlubGluZVN0cmVhbVNraXBFSShlKXtsZXQgdCxhPTA7Zm9yKDstMSE9PSh0PWUuZ2V0Qnl0ZSgpKTspaWYoMD09PWEpYT02OT09PXQ/MTowO2Vsc2UgaWYoMT09PWEpYT03Mz09PXQ/MjowO2Vsc2UgaWYoMj09PWEpYnJlYWt9bWFrZUlubGluZUltYWdlKGUpe2NvbnN0IHQ9dGhpcy5sZXhlcixhPXQuc3RyZWFtLHI9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgaTtmb3IoOyFpc0NtZCh0aGlzLmJ1ZjEsIklEIikmJnRoaXMuYnVmMSE9PXNhOyl7aWYoISh0aGlzLmJ1ZjEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRpY3Rpb25hcnkga2V5IG11c3QgYmUgYSBuYW1lIG9iamVjdCIpO2NvbnN0IHQ9dGhpcy5idWYxLm5hbWU7dGhpcy5zaGlmdCgpO2lmKHRoaXMuYnVmMT09PXNhKWJyZWFrO3JbdF09dGhpcy5nZXRPYmooZSl9LTEhPT10LmJlZ2luSW5saW5lSW1hZ2VQb3MmJihpPWEucG9zLXQuYmVnaW5JbmxpbmVJbWFnZVBvcyk7Y29uc3Qgbj10aGlzLnhyZWYuZmV0Y2hJZlJlZihyLkZ8fHIuRmlsdGVyKTtsZXQgcztpZihuIGluc3RhbmNlb2YgTmFtZSlzPW4ubmFtZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkobikpe2NvbnN0IGU9dGhpcy54cmVmLmZldGNoSWZSZWYoblswXSk7ZSBpbnN0YW5jZW9mIE5hbWUmJihzPWUubmFtZSl9Y29uc3Qgbz1hLnBvcztsZXQgYyxsO3N3aXRjaChzKXtjYXNlIkRDVCI6Y2FzZSJEQ1REZWNvZGUiOmM9dGhpcy5maW5kRENURGVjb2RlSW5saW5lU3RyZWFtRW5kKGEpO2JyZWFrO2Nhc2UiQTg1IjpjYXNlIkFTQ0lJODVEZWNvZGUiOmM9dGhpcy5maW5kQVNDSUk4NURlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6Yz10aGlzLmZpbmRBU0NJSUhleERlY29kZUlubGluZVN0cmVhbUVuZChhKTticmVhaztkZWZhdWx0OmM9dGhpcy5maW5kRGVmYXVsdElubGluZVN0cmVhbUVuZChhKX1pZihjPDFlMyYmaT4wKXtjb25zdCBlPWEucG9zO2EucG9zPXQuYmVnaW5JbmxpbmVJbWFnZVBvcztsPWZ1bmN0aW9uIGdldElubGluZUltYWdlQ2FjaGVLZXkoZSl7Y29uc3QgdD1bXSxhPWUubGVuZ3RoO2xldCByPTA7Zm9yKDtyPGEtMTspdC5wdXNoKGVbcisrXTw8OHxlW3IrK10pO3I8YSYmdC5wdXNoKGVbcl0pO3JldHVybiBhKyJfIitTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsdCl9KGEuZ2V0Qnl0ZXMoaStjKSk7YS5wb3M9ZTtjb25zdCByPXRoaXMuaW1hZ2VDYWNoZVtsXTtpZih2b2lkIDAhPT1yKXt0aGlzLmJ1ZjI9Q21kLmdldCgiRUkiKTt0aGlzLnNoaWZ0KCk7ci5yZXNldCgpO3JldHVybiByfX1jb25zdCBoPW5ldyBEaWN0KHRoaXMueHJlZik7Zm9yKGNvbnN0IGUgaW4gciloLnNldChlLHJbZV0pO2xldCB1PWEubWFrZVN1YlN0cmVhbShvLGMsaCk7ZSYmKHU9ZS5jcmVhdGVTdHJlYW0odSxjKSk7dT10aGlzLmZpbHRlcih1LGgsYyk7dS5kaWN0PWg7aWYodm9pZCAwIT09bCl7dS5jYWNoZUtleT0iaW5saW5lX2ltZ18iKyArK3RoaXMuX2ltYWdlSWQ7dGhpcy5pbWFnZUNhY2hlW2xdPXV9dGhpcy5idWYyPUNtZC5nZXQoIkVJIik7dGhpcy5zaGlmdCgpO3JldHVybiB1fSNxKGUpe2NvbnN0e3N0cmVhbTp0fT10aGlzLmxleGVyO3QucG9zPWU7Y29uc3QgYT1uZXcgVWludDhBcnJheShbMTAxLDExMCwxMDBdKSxyPWEubGVuZ3RoLGk9W25ldyBVaW50OEFycmF5KFsxMTUsMTE2LDExNCwxMDEsOTcsMTA5XSksbmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsMTAxLDk3LDEwOV0pLG5ldyBVaW50OEFycmF5KFsxMTUsMTE2LDExNCwxMDEsOTddKV0sbj05LXI7Zm9yKDt0LnBvczx0LmVuZDspe2NvbnN0IHM9dC5wZWVrQnl0ZXMoMjA0OCksbz1zLmxlbmd0aC05O2lmKG88PTApYnJlYWs7bGV0IGM9MDtmb3IoO2M8bzspe2xldCBvPTA7Zm9yKDtvPHImJnNbYytvXT09PWFbb107KW8rKztpZihvPj1yKXtsZXQgcj0hMTtmb3IoY29uc3QgZSBvZiBpKXtjb25zdCB0PWUubGVuZ3RoO2xldCBpPTA7Zm9yKDtpPHQmJnNbYytvK2ldPT09ZVtpXTspaSsrO2lmKGk+PW4pe3I9ITA7YnJlYWt9aWYoaT49dCl7aWYoaXNXaGl0ZVNwYWNl
101KHNbYytvK2ldKSl7aW5mbyhgRm91bmQgIiR7Ynl0ZXNUb1N0cmluZyhbLi4uYSwuLi5lXSl9IiB3aGVuIHNlYXJjaGluZyBmb3IgZW5kc3RyZWFtIGNvbW1hbmQuYCk7cj0hMH1icmVha319aWYocil7dC5wb3MrPWM7cmV0dXJuIHQucG9zLWV9fWMrK310LnBvcys9b31yZXR1cm4tMX1tYWtlU3RyZWFtKGUsdCl7Y29uc3QgYT10aGlzLmxleGVyO2xldCByPWEuc3RyZWFtO2Euc2tpcFRvTmV4dExpbmUoKTtjb25zdCBpPXIucG9zLTE7bGV0IG49ZS5nZXQoIkxlbmd0aCIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXtpbmZvKGBCYWQgbGVuZ3RoICIke24mJm4udG9TdHJpbmcoKX0iIGluIHN0cmVhbS5gKTtuPTB9ci5wb3M9aStuO2EubmV4dENoYXIoKTtpZih0aGlzLnRyeVNoaWZ0KCkmJmlzQ21kKHRoaXMuYnVmMiwiZW5kc3RyZWFtIikpdGhpcy5zaGlmdCgpO2Vsc2V7bj10aGlzLiNxKGkpO2lmKG48MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1pc3NpbmcgZW5kc3RyZWFtIGNvbW1hbmQuIik7YS5uZXh0Q2hhcigpO3RoaXMuc2hpZnQoKTt0aGlzLnNoaWZ0KCl9dGhpcy5zaGlmdCgpO3I9ci5tYWtlU3ViU3RyZWFtKGksbixlKTt0JiYocj10LmNyZWF0ZVN0cmVhbShyLG4pKTtyPXRoaXMuZmlsdGVyKHIsZSxuKTtyLmRpY3Q9ZTtyZXR1cm4gcn1maWx0ZXIoZSx0LGEpe2xldCByPXQuZ2V0KCJGIiwiRmlsdGVyIiksaT10LmdldCgiRFAiLCJEZWNvZGVQYXJtcyIpO2lmKHIgaW5zdGFuY2VvZiBOYW1lKXtBcnJheS5pc0FycmF5KGkpJiZ3YXJuKCIvRGVjb2RlUGFybXMgc2hvdWxkIG5vdCBiZSBhbiBBcnJheSwgd2hlbiAvRmlsdGVyIGlzIGEgTmFtZS4iKTtyZXR1cm4gdGhpcy5tYWtlRmlsdGVyKGUsci5uYW1lLGEsaSl9bGV0IG49YTtpZihBcnJheS5pc0FycmF5KHIpKXtjb25zdCB0PXIsYT1pO2ZvcihsZXQgcz0wLG89dC5sZW5ndGg7czxvOysrcyl7cj10aGlzLnhyZWYuZmV0Y2hJZlJlZih0W3NdKTtpZighKHIgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEJhZCBmaWx0ZXIgbmFtZSAiJHtyfSJgKTtpPW51bGw7QXJyYXkuaXNBcnJheShhKSYmcyBpbiBhJiYoaT10aGlzLnhyZWYuZmV0Y2hJZlJlZihhW3NdKSk7ZT10aGlzLm1ha2VGaWx0ZXIoZSxyLm5hbWUsbixpKTtuPW51bGx9fXJldHVybiBlfW1ha2VGaWx0ZXIoZSx0LGEscil7aWYoMD09PWEpe3dhcm4oYEVtcHR5ICIke3R9IiBzdHJlYW0uYCk7cmV0dXJuIG5ldyBOdWxsU3RyZWFtfXRyeXtzd2l0Y2godCl7Y2FzZSJGbCI6Y2FzZSJGbGF0ZURlY29kZSI6cmV0dXJuIHI/bmV3IFByZWRpY3RvclN0cmVhbShuZXcgRmxhdGVTdHJlYW0oZSxhKSxhLHIpOm5ldyBGbGF0ZVN0cmVhbShlLGEpO2Nhc2UiTFpXIjpjYXNlIkxaV0RlY29kZSI6bGV0IHQ9MTtpZihyKXtyLmhhcygiRWFybHlDaGFuZ2UiKSYmKHQ9ci5nZXQoIkVhcmx5Q2hhbmdlIikpO3JldHVybiBuZXcgUHJlZGljdG9yU3RyZWFtKG5ldyBMWldTdHJlYW0oZSxhLHQpLGEscil9cmV0dXJuIG5ldyBMWldTdHJlYW0oZSxhLHQpO2Nhc2UiRENUIjpjYXNlIkRDVERlY29kZSI6cmV0dXJuIG5ldyBKcGVnU3RyZWFtKGUsYSxyKTtjYXNlIkpQWCI6Y2FzZSJKUFhEZWNvZGUiOnJldHVybiBuZXcgSnB4U3RyZWFtKGUsYSxyKTtjYXNlIkE4NSI6Y2FzZSJBU0NJSTg1RGVjb2RlIjpyZXR1cm4gbmV3IEFzY2lpODVTdHJlYW0oZSxhKTtjYXNlIkFIeCI6Y2FzZSJBU0NJSUhleERlY29kZSI6cmV0dXJuIG5ldyBBc2NpaUhleFN0cmVhbShlLGEpO2Nhc2UiQ0NGIjpjYXNlIkNDSVRURmF4RGVjb2RlIjpyZXR1cm4gbmV3IENDSVRURmF4U3RyZWFtKGUsYSxyKTtjYXNlIlJMIjpjYXNlIlJ1bkxlbmd0aERlY29kZSI6cmV0dXJuIG5ldyBSdW5MZW5ndGhTdHJlYW0oZSxhKTtjYXNlIkpCSUcyRGVjb2RlIjpyZXR1cm4gbmV3IEpiaWcyU3RyZWFtKGUsYSxyKX13YXJuKGBGaWx0ZXIgIiR7dH0iIGlzIG5vdCBzdXBwb3J0ZWQuYCk7cmV0dXJuIGV9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgSW52YWxpZCBzdHJlYW06ICIke2V9ImApO3JldHVybiBuZXcgTnVsbFN0cmVhbX19fWNvbnN0IHJyPVsxLDAsMCwwLDAsMCwwLDAsMCwxLDEsMCwxLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDIsMCwwLDIsMiwwLDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXTtmdW5jdGlvbiB0b0hleERpZ2l0KGUpe3JldHVybiBlPj00OCYmZTw9NTc/MTUmZTplPj02NSYmZTw9NzB8fGU+PTk3JiZlPD0xMDI/OSsoMTUmZSk6LTF9Y2xhc3MgTGV4ZXJ7Y29uc3RydWN0b3IoZSx0PW51bGwpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdO3RoaXMua25vd25Db21tYW5kcz10O3RoaXMuX2hleFN0cmluZ051bVdhcm49MDt0aGlzLmJlZ2luSW5saW5lSW1hZ2VQb3M9LTF9bmV4dENoYXIoKXtyZXR1cm4gdGhpcy5jdXJyZW50Q2hhcj10aGlzLnN0cmVhbS5nZXRCeXRlKCl9cGVla0NoYXIoKXtyZXR1cm4gdGhpcy5zdHJlYW0ucGVla0J5dGUoKX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyLHQ9ITEsYT0wLHI9MTtpZig0NT09PWUpe3I9LTE7ZT10aGlzLm5leHRDaGFyKCk7NDU9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpfWVsc2UgNDM9PT1lJiYoZT10aGlzLm5leHRDaGFyKCkpO2lmKDEwPT09ZXx8MTM9PT1lKWRve2U9dGhpcy5uZXh0Q2hhcigpfXdoaWxlKDEwPT09ZXx8MTM9PT1lKTtpZig0Nj09PWUpe2E9MTA7ZT10aGlzLm5leHRDaGFyKCl9aWYoZTw0OHx8ZT41Nyl7Y29uc3QgdD1gSW52YWxpZCBudW1iZXI6ICR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0gKGNoYXJDb2RlICR7ZX0pYDtpZihpc1doaXRlU3BhY2UoZSl8fDQwPT09ZXx8NjA9PT1lfHwtMT09PWUpe2luZm8oYExleGVyLmdldE51bWJlciAtICIke3R9Ii5gKTtyZXR1cm4gMH10aHJvdyBuZXcgRm9ybWF0RXJyb3IodCl9bGV0IGk9ZS00OCxuPTAscz0xO2Zvcig7KGU9dGhpcy5uZXh0Q2hhcigpKT49MDspaWYoZT49NDgmJmU8PTU3KXtjb25zdCByPWUtNDg7aWYodCluPTEwKm4rcjtlbHNlezAhPT1hJiYoYSo9MTApO2k9MTAqaStyfX1lbHNlIGlmKDQ2PT09ZSl7aWYoMCE9PWEpYnJlYWs7YT0xfWVsc2UgaWYoNDU9PT1lKXdhcm4oIkJhZGx5IGZvcm1hdHRlZCBudW1iZXI6IG1pbnVzIHNpZ24gaW4gdGhlIG1pZGRsZSIpO2Vsc2V7aWYoNjkhPT1lJiYxMDEhPT1l
101KWJyZWFrO2U9dGhpcy5wZWVrQ2hhcigpO2lmKDQzPT09ZXx8NDU9PT1lKXtzPTQ1PT09ZT8tMToxO3RoaXMubmV4dENoYXIoKX1lbHNlIGlmKGU8NDh8fGU+NTcpYnJlYWs7dD0hMH0wIT09YSYmKGkvPWEpO3QmJihpKj0xMCoqKHMqbikpO3JldHVybiByKml9Z2V0U3RyaW5nKCl7bGV0IGU9MSx0PSExO2NvbnN0IGE9dGhpcy5zdHJCdWY7YS5sZW5ndGg9MDtsZXQgcj10aGlzLm5leHRDaGFyKCk7Zm9yKDs7KXtsZXQgaT0hMTtzd2l0Y2goMHxyKXtjYXNlLTE6d2FybigiVW50ZXJtaW5hdGVkIHN0cmluZyIpO3Q9ITA7YnJlYWs7Y2FzZSA0MDorK2U7YS5wdXNoKCIoIik7YnJlYWs7Y2FzZSA0MTppZigwPT09LS1lKXt0aGlzLm5leHRDaGFyKCk7dD0hMH1lbHNlIGEucHVzaCgiKSIpO2JyZWFrO2Nhc2UgOTI6cj10aGlzLm5leHRDaGFyKCk7c3dpdGNoKHIpe2Nhc2UtMTp3YXJuKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIik7dD0hMDticmVhaztjYXNlIDExMDphLnB1c2goIlxuIik7YnJlYWs7Y2FzZSAxMTQ6YS5wdXNoKCJcciIpO2JyZWFrO2Nhc2UgMTE2OmEucHVzaCgiXHQiKTticmVhaztjYXNlIDk4OmEucHVzaCgiXGIiKTticmVhaztjYXNlIDEwMjphLnB1c2goIlxmIik7YnJlYWs7Y2FzZSA5MjpjYXNlIDQwOmNhc2UgNDE6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocikpO2JyZWFrO2Nhc2UgNDg6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgNTE6Y2FzZSA1MjpjYXNlIDUzOmNhc2UgNTQ6Y2FzZSA1NTpsZXQgZT0xNSZyO3I9dGhpcy5uZXh0Q2hhcigpO2k9ITA7aWYocj49NDgmJnI8PTU1KXtlPShlPDwzKSsoMTUmcik7cj10aGlzLm5leHRDaGFyKCk7aWYocj49NDgmJnI8PTU1KXtpPSExO2U9KGU8PDMpKygxNSZyKX19YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZSkpO2JyZWFrO2Nhc2UgMTM6MTA9PT10aGlzLnBlZWtDaGFyKCkmJnRoaXMubmV4dENoYXIoKTticmVhaztjYXNlIDEwOmJyZWFrO2RlZmF1bHQ6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocikpfWJyZWFrO2RlZmF1bHQ6YS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocikpfWlmKHQpYnJlYWs7aXx8KHI9dGhpcy5uZXh0Q2hhcigpKX1yZXR1cm4gYS5qb2luKCIiKX1nZXROYW1lKCl7bGV0IGUsdDtjb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYhcnJbZV07KWlmKDM1PT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7aWYocnJbZV0pe3dhcm4oIkxleGVyX2dldE5hbWU6IE5VTUJFUiBTSUdOICgjKSBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYSBoZXhhZGVjaW1hbCBudW1iZXIuIik7YS5wdXNoKCIjIik7YnJlYWt9Y29uc3Qgcj10b0hleERpZ2l0KGUpO2lmKC0xIT09cil7dD1lO2U9dGhpcy5uZXh0Q2hhcigpO2NvbnN0IGk9dG9IZXhEaWdpdChlKTtpZigtMT09PWkpe3dhcm4oYExleGVyX2dldE5hbWU6IElsbGVnYWwgZGlnaXQgKCR7U3RyaW5nLmZyb21DaGFyQ29kZShlKX0pIGluIGhleGFkZWNpbWFsIG51bWJlci5gKTthLnB1c2goIiMiLFN0cmluZy5mcm9tQ2hhckNvZGUodCkpO2lmKHJyW2VdKWJyZWFrO2EucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb250aW51ZX1hLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShyPDw0fGkpKX1lbHNlIGEucHVzaCgiIyIsU3RyaW5nLmZyb21DaGFyQ29kZShlKSl9ZWxzZSBhLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShlKSk7YS5sZW5ndGg+MTI3JiZ3YXJuKGBOYW1lIHRva2VuIGlzIGxvbmdlciB0aGFuIGFsbG93ZWQgYnkgdGhlIHNwZWM6ICR7YS5sZW5ndGh9YCk7cmV0dXJuIE5hbWUuZ2V0KGEuam9pbigiIikpfV9oZXhTdHJpbmdXYXJuKGUpezUhPT10aGlzLl9oZXhTdHJpbmdOdW1XYXJuKys/dGhpcy5faGV4U3RyaW5nTnVtV2Fybj41fHx3YXJuKGBnZXRIZXhTdHJpbmcgLSBpZ25vcmluZyBpbnZhbGlkIGNoYXJhY3RlcjogJHtlfWApOndhcm4oImdldEhleFN0cmluZyAtIGlnbm9yaW5nIGFkZGl0aW9uYWwgaW52YWxpZCBjaGFyYWN0ZXJzLiIpfWdldEhleFN0cmluZygpe2NvbnN0IGU9dGhpcy5zdHJCdWY7ZS5sZW5ndGg9MDtsZXQgdD10aGlzLmN1cnJlbnRDaGFyLGE9LTEscj0tMTt0aGlzLl9oZXhTdHJpbmdOdW1XYXJuPTA7
101Zm9yKDs7KXtpZih0PDApe3dhcm4oIlVudGVybWluYXRlZCBoZXggc3RyaW5nIik7YnJlYWt9aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMSE9PXJyW3RdKXtyPXRvSGV4RGlnaXQodCk7aWYoLTE9PT1yKXRoaXMuX2hleFN0cmluZ1dhcm4odCk7ZWxzZSBpZigtMT09PWEpYT1yO2Vsc2V7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYTw8NHxyKSk7YT0tMX10PXRoaXMubmV4dENoYXIoKX1lbHNlIHQ9dGhpcy5uZXh0Q2hhcigpfS0xIT09YSYmZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYTw8NCkpO3JldHVybiBlLmpvaW4oIiIpfWdldE9iaigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKHQ8MClyZXR1cm4gc2E7aWYoZSkxMCE9PXQmJjEzIT09dHx8KGU9ITEpO2Vsc2UgaWYoMzc9PT10KWU9ITA7ZWxzZSBpZigxIT09cnJbdF0pYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gdGhpcy5nZXROdW1iZXIoKTtjYXNlIDQwOnJldHVybiB0aGlzLmdldFN0cmluZygpO2Nhc2UgNDc6cmV0dXJuIHRoaXMuZ2V0TmFtZSgpO2Nhc2UgOTE6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCJbIik7Y2FzZSA5Mzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIl0iKTtjYXNlIDYwOnQ9dGhpcy5uZXh0Q2hhcigpO2lmKDYwPT09dCl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KCI8PCIpfXJldHVybiB0aGlzLmdldEhleFN0cmluZygpO2Nhc2UgNjI6dD10aGlzLm5leHRDaGFyKCk7aWYoNjI9PT10KXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIj4+Iil9cmV0dXJuIENtZC5nZXQoIj4iKTtjYXNlIDEyMzp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoInsiKTtjYXNlIDEyNTp0aGlzLm5leHRDaGFyKCk7cmV0dXJuIENtZC5nZXQoIn0iKTtjYXNlIDQxOnRoaXMubmV4dENoYXIoKTt0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYElsbGVnYWwgY2hhcmFjdGVyOiAke3R9YCl9bGV0IGE9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZih0PDMyfHx0PjEyNyl7Y29uc3QgZT10aGlzLnBlZWtDaGFyKCk7aWYoZT49MzImJmU8PTEyNyl7dGhpcy5uZXh0Q2hhcigpO3JldHVybiBDbWQuZ2V0KGEpfX1jb25zdCByPXRoaXMua25vd25Db21tYW5kcztsZXQgaT12b2lkIDAhPT1yPy5bYV07Zm9yKDsodD10aGlzLm5leHRDaGFyKCkpPj0wJiYhcnJbdF07KXtjb25zdCBlPWErU3RyaW5nLmZyb21DaGFyQ29kZSh0KTtpZihpJiZ2b2lkIDA9PT1yW2VdKWJyZWFrO2lmKDEyOD09PWEubGVuZ3RoKXRocm93IG5ldyBGb3JtYXRFcnJvcihgQ29tbWFuZCB0b2tlbiB0b28gbG9uZzogJHthLmxlbmd0aH1gKTthPWU7aT12b2lkIDAhPT1yPy5bYV19aWYoInRydWUiPT09YSlyZXR1cm4hMDtpZigiZmFsc2UiPT09YSlyZXR1cm4hMTtpZigibnVsbCI9PT1hKXJldHVybiBudWxsOyJCSSI9PT1hJiYodGhpcy5iZWdpbklubGluZUltYWdlUG9zPXRoaXMuc3RyZWFtLnBvcyk7cmV0dXJuIENtZC5nZXQoYSl9c2tpcFRvTmV4dExpbmUoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2Zvcig7ZT49MDspe2lmKDEzPT09ZSl7ZT10aGlzLm5leHRDaGFyKCk7MTA9PT1lJiZ0aGlzLm5leHRDaGFyKCk7YnJlYWt9aWYoMTA9PT1lKXt0aGlzLm5leHRDaGFyKCk7YnJlYWt9ZT10aGlzLm5leHRDaGFyKCl9fX1jbGFzcyBMaW5lYXJpemF0aW9ue3N0YXRpYyBjcmVhdGUoZSl7ZnVuY3Rpb24gZ2V0SW50KGUsdCxhPSExKXtjb25zdCByPWUuZ2V0KHQpO2lmKE51bWJlci5pc0ludGVnZXIocikmJihhP3I+PTA6cj4wKSlyZXR1cm4gcjt0aHJvdyBuZXcgRXJyb3IoYFRoZSAiJHt0fSIgcGFyYW1ldGVyIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1jb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihlKSx4cmVmOm51bGx9KSxhPXQuZ2V0T2JqKCkscj10LmdldE9iaigpLGk9dC5nZXRPYmooKSxuPXQuZ2V0T2JqKCk7bGV0IHMsbztpZighKE51bWJlci5pc0ludGVnZXIoYSkmJk51bWJlci5pc0ludGVnZXIocikmJmlzQ21kKGksIm9iaiIpJiZuIGluc3RhbmNlb2YgRGljdCYmIm51bWJlciI9PXR5cGVvZihzPW4uZ2V0KCJMaW5lYXJpemVkIikpJiZzPjApKXJldHVybiBudWxsO2lmKChvPWdldEludChuLCJMIikpIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdUaGUgIkwiIHBhcmFtZXRlciBpbiB0aGUgbGluZWFyaXphdGlvbiBkaWN0aW9uYXJ5IGRvZXMgbm90IGVxdWFsIHRoZSBzdHJlYW0gbGVuZ3RoLicpO3JldHVybntsZW5ndGg6byxoaW50czpmdW5jdGlvbiBnZXRIaW50cyhlKXtjb25zdCB0PWUuZ2V0KCJIIik7bGV0IGE7aWYoQXJyYXkuaXNBcnJheSh0KSYmKDI9PT0oYT10Lmxlbmd0aCl8fDQ9PT1hKSl7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgYT10W2VdO2lmKCEoTnVtYmVyLmlzSW50ZWdlcihhKSYmYT4wKSl0aHJvdyBuZXcgRXJyb3IoYEhpbnQgKCR7ZX0pIGluIHRoZSBsaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC5gKX1yZXR1cm4gdH10aHJvdyBuZXcgRXJyb3IoIkhpbnQgYXJyYXkgaW4gdGhlIGxpbmVhcml6YXRpb24gZGljdGlvbmFyeSBpcyBpbnZhbGlkLiIpfShuKSxvYmplY3ROdW1iZXJGaXJzdDpnZXRJbnQobiwiTyIpLGVuZEZpcnN0OmdldEludChuLCJFIiksbnVtUGFnZXM6Z2V0SW50KG4sIk4iKSxtYWluWFJlZkVudHJpZXNPZmZzZXQ6Z2V0SW50KG4sIlQiKSxwYWdlRmlyc3Q6bi5oYXMoIlAiKT9nZXRJbnQobiwiUCIsITApOjB9fX1jb25zdCBpcj1bIkFkb2JlLUdCMS1VQ1MyIiwiQWRvYmUtQ05TMS1VQ1MyIiwiQWRvYmUtSmFwYW4xLVVDUzIiLCJBZG9iZS1Lb3JlYTEtVUNTMiIsIjc4LUVVQy1IIiwiNzgtRVVDLVYiLCI3OC1IIiwiNzgtUktTSi1IIiwiNzgtUktTSi1WIiwiNzgtViIsIjc4bXMtUktTSi1IIiwiNzhtcy1SS1NKLVYiLCI4M3B2LVJLU0otSCIsIjkwbXMtUktTSi1IIiwiOTBtcy1SS1NKLVYiLCI5MG1zcC1SS1NKLUgiLCI5MG1zcC1SS1NKLVYiLCI5MHB2LVJLU0otSCIsIjkwcHYtUktTSi1WIiwiQWRkLUgiLCJBZGQtUktTSi1IIiwiQWRkLVJLU0otViIsIkFkZC1WIiwiQWRvYmUtQ05TMS0wIiwiQWRvYmUtQ05TMS0xIiwiQWRvYmUtQ05TMS0yIiwiQWRvYmUtQ05TMS0zIiwiQWRvYmUtQ05TMS00IiwiQWRvYmUtQ05TMS01IiwiQWRvYmUtQ05TMS02IiwiQWRvYmUtR0IxLTAiLCJBZG9iZS1HQjEtMSIsIkFkb2JlLUdCMS0yIiwiQWRvYmUtR0IxLTMiLCJBZG9iZS1HQjEtNCIsIkFkb2JlLUdCMS01IiwiQWRvYmUtSmFwYW4xLTAiLCJBZG9iZS1KYXBhbjEtMSIsIkFkb2JlLUphcGFuMS0yIiwiQWRvYmUtSmFwYW4xLTMiLCJBZG9iZS1KYXBhbjEtNCIsIkFkb2JlLUphcGFuMS01IiwiQWRvYmUtSmFwYW4xLTYiLCJBZG9iZS1Lb3JlYTEtMCIsIkFkb2JlLUtvcmVhMS0xIiwiQWRvYmUtS29yZWExLTIiLCJCNS1IIiwiQjUtViIsIkI1cGMtSCIsIkI1cGMtViIsIkNOUy1FVUMtSCIsIkNOUy1FVUMtViIsIkNOUzEtSCIsIkNOUzEtViIsIkNOUzItSCIsIkNOUzItViIsIkVUSEstQjUtSCIsIkVUSEstQjUtViIsIkVUZW4tQjUtSCIsIkVUZW4tQjUtViIsIkVUZW5tcy1CNS1IIiwiRVRlbm1zLUI1LVYiLCJFVUMtSCIsIkVVQy1WIiwiRXh0LUgiLCJFeHQtUktTSi1IIiwiRXh0LVJLU0otViIsIkV4dC1WIiwiR0ItRVVDLUgiLCJHQi1FVUMtViIsIkdCLUgiLCJHQi1WIiwiR0JLLUVVQy1IIiwiR0JLLUVVQy1WIiwiR0JLMkstSCIsIkdCSzJLLVYiLCJH
101QktwLUVVQy1IIiwiR0JLcC1FVUMtViIsIkdCVC1FVUMtSCIsIkdCVC1FVUMtViIsIkdCVC1IIiwiR0JULVYiLCJHQlRwYy1FVUMtSCIsIkdCVHBjLUVVQy1WIiwiR0JwYy1FVUMtSCIsIkdCcGMtRVVDLVYiLCJIIiwiSEtkbGEtQjUtSCIsIkhLZGxhLUI1LVYiLCJIS2RsYi1CNS1IIiwiSEtkbGItQjUtViIsIkhLZ2Njcy1CNS1IIiwiSEtnY2NzLUI1LVYiLCJIS20zMTQtQjUtSCIsIkhLbTMxNC1CNS1WIiwiSEttNDcxLUI1LUgiLCJIS200NzEtQjUtViIsIkhLc2NzLUI1LUgiLCJIS3Njcy1CNS1WIiwiSGFua2FrdSIsIkhpcmFnYW5hIiwiS1NDLUVVQy1IIiwiS1NDLUVVQy1WIiwiS1NDLUgiLCJLU0MtSm9oYWItSCIsIktTQy1Kb2hhYi1WIiwiS1NDLVYiLCJLU0Ntcy1VSEMtSCIsIktTQ21zLVVIQy1IVy1IIiwiS1NDbXMtVUhDLUhXLVYiLCJLU0Ntcy1VSEMtViIsIktTQ3BjLUVVQy1IIiwiS1NDcGMtRVVDLVYiLCJLYXRha2FuYSIsIk5XUC1IIiwiTldQLVYiLCJSS1NKLUgiLCJSS1NKLVYiLCJSb21hbiIsIlVuaUNOUy1VQ1MyLUgiLCJVbmlDTlMtVUNTMi1WIiwiVW5pQ05TLVVURjE2LUgiLCJVbmlDTlMtVVRGMTYtViIsIlVuaUNOUy1VVEYzMi1IIiwiVW5pQ05TLVVURjMyLVYiLCJVbmlDTlMtVVRGOC1IIiwiVW5pQ05TLVVURjgtViIsIlVuaUdCLVVDUzItSCIsIlVuaUdCLVVDUzItViIsIlVuaUdCLVVURjE2LUgiLCJVbmlHQi1VVEYxNi1WIiwiVW5pR0ItVVRGMzItSCIsIlVuaUdCLVVURjMyLVYiLCJVbmlHQi1VVEY4LUgiLCJVbmlHQi1VVEY4LVYiLCJVbmlKSVMtVUNTMi1IIiwiVW5pSklTLVVDUzItSFctSCIsIlVuaUpJUy1VQ1MyLUhXLVYiLCJVbmlKSVMtVUNTMi1WIiwiVW5pSklTLVVURjE2LUgiLCJVbmlKSVMtVVRGMTYtViIsIlVuaUpJUy1VVEYzMi1IIiwiVW5pSklTLVVURjMyLVYiLCJVbmlKSVMtVVRGOC1IIiwiVW5pSklTLVVURjgtViIsIlVuaUpJUzIwMDQtVVRGMTYtSCIsIlVuaUpJUzIwMDQtVVRGMTYtViIsIlVuaUpJUzIwMDQtVVRGMzItSCIsIlVuaUpJUzIwMDQtVVRGMzItViIsIlVuaUpJUzIwMDQtVVRGOC1IIiwiVW5pSklTMjAwNC1VVEY4LVYiLCJVbmlKSVNQcm8tVUNTMi1IVy1WIiwiVW5pSklTUHJvLVVDUzItViIsIlVuaUpJU1Byby1VVEY4LVYiLCJVbmlKSVNYMDIxMy1VVEYzMi1IIiwiVW5pSklTWDAyMTMtVVRGMzItViIsIlVuaUpJU1gwMjEzMjAwNC1VVEYzMi1IIiwiVW5pSklTWDAyMTMyMDA0LVVURjMyLVYiLCJVbmlLUy1VQ1MyLUgiLCJVbmlLUy1VQ1MyLVYiLCJVbmlLUy1VVEYxNi1IIiwiVW5pS1MtVVRGMTYtViIsIlVuaUtTLVVURjMyLUgiLCJVbmlLUy1VVEYzMi1WIiwiVW5pS1MtVVRGOC1IIiwiVW5pS1MtVVRGOC1WIiwiViIsIldQLVN5bWJvbCJdLG5yPTIqKjI0LTE7Y2xhc3MgQ01hcHtjb25zdHJ1Y3RvcihlPSExKXt0aGlzLmNvZGVzcGFjZVJhbmdlcz1bW10sW10sW10sW11dO3RoaXMubnVtQ29kZXNwYWNlUmFuZ2VzPTA7dGhpcy5fbWFwPVtdO3RoaXMubmFtZT0iIjt0aGlzLnZlcnRpY2FsPSExO3RoaXMudXNlQ01hcD1udWxsO3RoaXMuYnVpbHRJbkNNYXA9ZX1hZGRDb2Rlc3BhY2VSYW5nZShlLHQsYSl7dGhpcy5jb2Rlc3BhY2VSYW5nZXNbZS0xXS5wdXNoKHQsYSk7dGhpcy5udW1Db2Rlc3BhY2VSYW5nZXMrK31tYXBDaWRSYW5nZShlLHQsYSl7aWYodC1lPm5yKXRocm93IG5ldyBFcnJvcigibWFwQ2lkUmFuZ2UgLSBpZ25vcmluZyBkYXRhIGFib3ZlIE1BWF9NQVBfUkFOR0UuIik7Zm9yKDtlPD10Oyl0aGlzLl9tYXBbZSsrXT1hKyt9bWFwQmZSYW5nZShlLHQsYSl7aWYodC1lPm5yKXRocm93IG5ldyBFcnJvcigibWFwQmZSYW5nZSAtIGlnbm9yaW5nIGRhdGEgYWJvdmUgTUFYX01BUF9SQU5HRS4iKTtjb25zdCByPWEubGVuZ3RoLTE7Zm9yKDtlPD10Oyl7dGhpcy5fbWFwW2UrK109YTtjb25zdCB0PWEuY2hhckNvZGVBdChyKSsxO3Q+MjU1P2E9YS5zdWJzdHJpbmcoMCxyLTEpK1N0cmluZy5mcm9tQ2hhckNvZGUoYS5jaGFyQ29kZUF0KHItMSkrMSkrIlwwIjphPWEuc3Vic3RyaW5nKDAscikrU3RyaW5nLmZyb21DaGFyQ29kZSh0KX19bWFwQmZSYW5nZVRvQXJyYXkoZSx0LGEpe2lmKHQtZT5ucil0aHJvdyBuZXcgRXJyb3IoIm1hcEJmUmFuZ2VUb0FycmF5IC0gaWdub3JpbmcgZGF0YSBhYm92ZSBNQVhfTUFQX1JBTkdFLiIpO2NvbnN0IHI9YS5sZW5ndGg7bGV0IGk9MDtmb3IoO2U8PXQmJmk8cjspe3RoaXMuX21hcFtlXT1hW2krK107KytlfX1tYXBPbmUoZSx0KXt0aGlzLl9tYXBbZV09dH1sb29rdXAoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jb250YWlucyhlKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fbWFwW2VdfWZvckVhY2goZSl7Y29uc3QgdD10aGlzLl9tYXAsYT10Lmxlbmd0aDtpZihhPD02NTUzNilmb3IobGV0IHI9MDtyPGE7cisrKXZvaWQgMCE9PXRbcl0mJmUocix0W3JdKTtlbHNlIGZvcihjb25zdCBhIGluIHQpZShhLHRbYV0pfWNoYXJDb2RlT2YoZSl7Y29uc3QgdD10aGlzLl9tYXA7aWYodC5sZW5ndGg8PTY1NTM2KXJldHVybiB0LmluZGV4T2YoZSk7Zm9yKGNvbnN0IGEgaW4gdClpZih0W2FdPT09ZSlyZXR1cm4gMHxhO3JldHVybi0xfWdldE1hcCgpe3JldHVybiB0aGlzLl9tYXB9cmVhZENoYXJDb2RlKGUsdCxhKXtsZXQgcj0wO2NvbnN0IGk9dGhpcy5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBuPTAscz1pLmxlbmd0aDtuPHM7bisrKXtyPShyPDw4fGUuY2hhckNvZGVBdCh0K24pKT4+PjA7Y29uc3Qgcz1pW25dO2ZvcihsZXQgZT0wLHQ9cy5sZW5ndGg7ZTx0Oyl7Y29uc3QgdD1zW2UrK10saT1zW2UrK107aWYocj49dCYmcjw9aSl7YS5jaGFyY29kZT1yO2EubGVuZ3RoPW4rMTtyZXR1cm59fX1hLmNoYXJjb2RlPTA7YS5sZW5ndGg9MX1nZXRDaGFyQ29kZUxlbmd0aChlKXtjb25zdCB0PXRoaXMuY29kZXNwYWNlUmFuZ2VzO2ZvcihsZXQgYT0wLHI9dC5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj10W2FdO2ZvcihsZXQgdD0wLGk9ci5sZW5ndGg7dDxpOyl7Y29uc3QgaT1yW3QrK10sbj1yW3QrK107aWYoZT49aSYmZTw9bilyZXR1cm4gYSsxfX1yZXR1cm4gMX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX21hcC5sZW5ndGh9Z2V0IGlzSWRlbnRpdHlDTWFwKCl7aWYoIklkZW50aXR5LUgiIT09dGhpcy5uYW1lJiYiSWRlbnRpdHktViIhPT10aGlzLm5hbWUpcmV0dXJuITE7aWYoNjU1MzYhPT10aGlzLl9tYXAubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8NjU1MzY7ZSsrKWlmKHRoaXMuX21hcFtlXSE9PWUpcmV0dXJuITE7cmV0dXJuITB9fWNsYXNzIElkZW50aXR5Q01hcCBleHRlbmRzIENNYXB7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigpO3RoaXMudmVydGljYWw9ZTt0aGlzLmFkZENvZGVzcGFj
101ZVJhbmdlKHQsMCw2NTUzNSl9bWFwQ2lkUmFuZ2UoZSx0LGEpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkUmFuZ2UiKX1tYXBCZlJhbmdlKGUsdCxhKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBjYWxsIG1hcEJmUmFuZ2UiKX1tYXBCZlJhbmdlVG9BcnJheShlLHQsYSl7dW5yZWFjaGFibGUoInNob3VsZCBub3QgY2FsbCBtYXBCZlJhbmdlVG9BcnJheSIpfW1hcE9uZShlLHQpe3VucmVhY2hhYmxlKCJzaG91bGQgbm90IGNhbGwgbWFwQ2lkT25lIil9bG9va3VwKGUpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPD02NTUzNT9lOnZvaWQgMH1jb250YWlucyhlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZTw9NjU1MzV9Zm9yRWFjaChlKXtmb3IobGV0IHQ9MDt0PD02NTUzNTt0KyspZSh0LHQpfWNoYXJDb2RlT2YoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSkmJmU8PTY1NTM1P2U6LTF9Z2V0TWFwKCl7Y29uc3QgZT1uZXcgQXJyYXkoNjU1MzYpO2ZvcihsZXQgdD0wO3Q8PTY1NTM1O3QrKyllW3RdPXQ7cmV0dXJuIGV9Z2V0IGxlbmd0aCgpe3JldHVybiA2NTUzNn1nZXQgaXNJZGVudGl0eUNNYXAoKXt1bnJlYWNoYWJsZSgic2hvdWxkIG5vdCBhY2Nlc3MgLmlzSWRlbnRpdHlDTWFwIil9fWZ1bmN0aW9uIHN0clRvSW50KGUpe2xldCB0PTA7Zm9yKGxldCBhPTA7YTxlLmxlbmd0aDthKyspdD10PDw4fGUuY2hhckNvZGVBdChhKTtyZXR1cm4gdD4+PjB9ZnVuY3Rpb24gZXhwZWN0U3RyaW5nKGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1hbGZvcm1lZCBDTWFwOiBleHBlY3RlZCBzdHJpbmcuIil9ZnVuY3Rpb24gZXhwZWN0SW50KGUpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWFsZm9ybWVkIENNYXA6IGV4cGVjdGVkIGludC4iKX1mdW5jdGlvbiBwYXJzZUJmQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09c2EpYnJlYWs7aWYoaXNDbWQoYSwiZW5kYmZjaGFyIikpcmV0dXJuO2V4cGVjdFN0cmluZyhhKTtjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtleHBlY3RTdHJpbmcoYSk7Y29uc3QgaT1hO2UubWFwT25lKHIsaSl9fWZ1bmN0aW9uIHBhcnNlQmZSYW5nZShlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09c2EpYnJlYWs7aWYoaXNDbWQoYSwiZW5kYmZyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IGk9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2lmKE51bWJlci5pc0ludGVnZXIoYSl8fCJzdHJpbmciPT10eXBlb2YgYSl7Y29uc3QgdD1OdW1iZXIuaXNJbnRlZ2VyKGEpP1N0cmluZy5mcm9tQ2hhckNvZGUoYSk6YTtlLm1hcEJmUmFuZ2UocixpLHQpfWVsc2V7aWYoIWlzQ21kKGEsIlsiKSlicmVhazt7YT10LmdldE9iaigpO2NvbnN0IG49W107Zm9yKDshaXNDbWQoYSwiXSIpJiZhIT09c2E7KXtuLnB1c2goYSk7YT10LmdldE9iaigpfWUubWFwQmZSYW5nZVRvQXJyYXkocixpLG4pfX19dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGJmIHJhbmdlLiIpfWZ1bmN0aW9uIHBhcnNlQ2lkQ2hhcihlLHQpe2Zvcig7Oyl7bGV0IGE9dC5nZXRPYmooKTtpZihhPT09c2EpYnJlYWs7aWYoaXNDbWQoYSwiZW5kY2lkY2hhciIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0SW50KGEpO2NvbnN0IGk9YTtlLm1hcE9uZShyLGkpfX1mdW5jdGlvbiBwYXJzZUNpZFJhbmdlKGUsdCl7Zm9yKDs7KXtsZXQgYT10LmdldE9iaigpO2lmKGE9PT1zYSlicmVhaztpZihpc0NtZChhLCJlbmRjaWRyYW5nZSIpKXJldHVybjtleHBlY3RTdHJpbmcoYSk7Y29uc3Qgcj1zdHJUb0ludChhKTthPXQuZ2V0T2JqKCk7ZXhwZWN0U3RyaW5nKGEpO2NvbnN0IGk9c3RyVG9JbnQoYSk7YT10LmdldE9iaigpO2V4cGVjdEludChhKTtjb25zdCBuPWE7ZS5tYXBDaWRSYW5nZShyLGksbil9fWZ1bmN0aW9uIHBhcnNlQ29kZXNwYWNlUmFuZ2UoZSx0KXtmb3IoOzspe2xldCBhPXQuZ2V0T2JqKCk7aWYoYT09PXNhKWJyZWFrO2lmKGlzQ21kKGEsImVuZGNvZGVzcGFjZXJhbmdlIikpcmV0dXJuO2lmKCJzdHJpbmciIT10eXBlb2YgYSlicmVhaztjb25zdCByPXN0clRvSW50KGEpO2E9dC5nZXRPYmooKTtpZigic3RyaW5nIiE9dHlwZW9mIGEpYnJlYWs7Y29uc3QgaT1zdHJUb0ludChhKTtlLmFkZENvZGVzcGFjZVJhbmdlKGEubGVuZ3RoLHIsaSl9dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGNvZGVzcGFjZSByYW5nZS4iKX1mdW5jdGlvbiBwYXJzZVdNb2RlKGUsdCl7Y29uc3QgYT10LmdldE9iaigpO051bWJlci5pc0ludGVnZXIoYSkmJihlLnZlcnRpY2FsPSEhYSl9ZnVuY3Rpb24gcGFyc2VDTWFwTmFtZShlLHQpe2NvbnN0IGE9dC5nZXRPYmooKTthIGluc3RhbmNlb2YgTmFtZSYmKGUubmFtZT1hLm5hbWUpfWFzeW5jIGZ1bmN0aW9uIHBhcnNlQ01hcChlLHQsYSxyKXtsZXQgaSxuO2U6Zm9yKDs7KXRyeXtjb25zdCBhPXQuZ2V0T2JqKCk7aWYoYT09PXNhKWJyZWFrO2lmKGEgaW5zdGFuY2VvZiBOYW1lKXsiV01vZGUiPT09YS5uYW1lP3BhcnNlV01vZGUoZSx0KToiQ01hcE5hbWUiPT09YS5uYW1lJiZwYXJzZUNNYXBOYW1lKGUsdCk7aT1hfWVsc2UgaWYoYSBpbnN0YW5jZW9mIENtZClzd2l0Y2goYS5jbWQpe2Nhc2UiZW5kY21hcCI6YnJlYWsgZTtjYXNlInVzZWNtYXAiOmkgaW5zdGFuY2VvZiBOYW1lJiYobj1pLm5hbWUpO2JyZWFrO2Nhc2UiYmVnaW5jb2Rlc3BhY2VyYW5nZSI6cGFyc2VDb2Rlc3BhY2VSYW5nZShlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZmNoYXIiOnBhcnNlQmZDaGFyKGUsdCk7YnJlYWs7Y2FzZSJiZWdpbmNpZGNoYXIiOnBhcnNlQ2lkQ2hhcihlLHQpO2JyZWFrO2Nhc2UiYmVnaW5iZnJhbmdlIjpwYXJzZUJmUmFuZ2UoZSx0KTticmVhaztjYXNlImJlZ2luY2lkcmFuZ2UiOnBhcnNlQ2lkUmFuZ2UoZSx0KX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiSW52YWxpZCBjTWFwIGRhdGE6ICIrZSk7Y29udGludWV9IXImJm4mJihyPW4pO3JldHVybiByP2V4dGVuZENNYXAoZSxhLHIpOmV9YXN5bmMgZnVuY3Rpb24gZXh0ZW5kQ01hcChlLHQsYSl7ZS
10151c2VDTWFwPWF3YWl0IGNyZWF0ZUJ1aWx0SW5DTWFwKGEsdCk7aWYoMD09PWUubnVtQ29kZXNwYWNlUmFuZ2VzKXtjb25zdCB0PWUudXNlQ01hcC5jb2Rlc3BhY2VSYW5nZXM7Zm9yKGxldCBhPTA7YTx0Lmxlbmd0aDthKyspZS5jb2Rlc3BhY2VSYW5nZXNbYV09dFthXS5zbGljZSgpO2UubnVtQ29kZXNwYWNlUmFuZ2VzPWUudXNlQ01hcC5udW1Db2Rlc3BhY2VSYW5nZXN9ZS51c2VDTWFwLmZvckVhY2goZnVuY3Rpb24odCxhKXtlLmNvbnRhaW5zKHQpfHxlLm1hcE9uZSh0LGEpfSk7cmV0dXJuIGV9YXN5bmMgZnVuY3Rpb24gY3JlYXRlQnVpbHRJbkNNYXAoZSx0KXtpZigiSWRlbnRpdHktSCI9PT1lKXJldHVybiBuZXcgSWRlbnRpdHlDTWFwKCExLDIpO2lmKCJJZGVudGl0eS1WIj09PWUpcmV0dXJuIG5ldyBJZGVudGl0eUNNYXAoITAsMik7aWYoIWlyLmluY2x1ZGVzKGUpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBDTWFwIG5hbWU6ICIrZSk7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJCdWlsdC1pbiBDTWFwIHBhcmFtZXRlcnMgYXJlIG5vdCBwcm92aWRlZC4iKTtjb25zdHtjTWFwRGF0YTphLGlzQ29tcHJlc3NlZDpyfT1hd2FpdCB0KGUpLGk9bmV3IENNYXAoITApO2lmKHIpcmV0dXJuKG5ldyBCaW5hcnlDTWFwUmVhZGVyKS5wcm9jZXNzKGEsaSxlPT5leHRlbmRDTWFwKGksdCxlKSk7Y29uc3Qgbj1uZXcgTGV4ZXIobmV3IFN0cmVhbShhKSk7cmV0dXJuIHBhcnNlQ01hcChpLG4sdCxudWxsKX1jbGFzcyBDTWFwRmFjdG9yeXtzdGF0aWMgYXN5bmMgY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dCx1c2VDTWFwOmF9KXtpZihlIGluc3RhbmNlb2YgTmFtZSlyZXR1cm4gY3JlYXRlQnVpbHRJbkNNYXAoZS5uYW1lLHQpO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCByPWF3YWl0IHBhcnNlQ01hcChuZXcgQ01hcCxuZXcgTGV4ZXIoZSksdCxhKTtyZXR1cm4gci5pc0lkZW50aXR5Q01hcD9jcmVhdGVCdWlsdEluQ01hcChyLm5hbWUsdCk6cn10aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nIHJlcXVpcmVkLiIpfX1jb25zdCBzcj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtc21hbGwiLCJIdW5nYXJ1bWxhdXRzbWFsbCIsIiIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJhbXBlcnNhbmRzbWFsbCIsIkFjdXRlc21hbGwiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwicXVlc3Rpb25zbWFsbCIsIiIsImFzdXBlcmlvciIsImJzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsImRzdXBlcmlvciIsImVzdXBlcmlvciIsIiIsIiIsIiIsImlzdXBlcmlvciIsIiIsIiIsImxzdXBlcmlvciIsIm1zdXBlcmlvciIsIm5zdXBlcmlvciIsIm9zdXBlcmlvciIsIiIsIiIsInJzdXBlcmlvciIsInNzdXBlcmlvciIsInRzdXBlcmlvciIsIiIsImZmIiwiZmkiLCJmbCIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwiIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIiIsIiIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCIiLCJEb3RhY2NlbnRzbWFsbCIsIiIsIiIsIk1hY3JvbnNtYWxsIiwiIiwiIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiIiwiIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCIiLCIiLCIiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d290aGlyZHMiLCIiLCIiLCJ6ZXJvc3VwZXJpb3IiLCJvbmVzdXBlcmlvciIsInR3b3N1cGVyaW9yIiwidGhyZWVzdXBlcmlvciIsImZvdXJzdXBlcmlvciIsImZpdmVzdXBlcmlvciIsInNpeHN1cGVyaW9yIiwic2V2ZW5zdXBlcmlvciIsImVpZ2h0c3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvaW5mZXJpb3IiLCJvbmVpbmZlcmlvciIsInR3b2luZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsImZvdXJpbmZlcmlvciIsImZpdmVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwic2V2ZW5pbmZlcmlvciIsImVpZ2h0aW5mZXJpb3IiLCJuaW5laW5mZXJpb3IiLCJjZW50aW5mZXJpb3IiLCJkb2xsYXJpbmZlcmlvciIsInBlcmlvZGluZmVyaW9yIiwiY29tbWFpbmZlcmlvciIsIkFncmF2ZXNtYWxsIiwiQWFjdXRlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQXRpbGRlc21hbGwiLCJBZGllcmVzaXNzbWFsbCIsIkFyaW5nc21hbGwiLCJBRXNtYWxsIiwiQ2NlZGlsbGFzbWFsbCIsIkVncmF2ZXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFY2lyY3VtZmxleHNtYWxsIiwiRWRpZXJlc2lzc21hbGwiLCJJZ3JhdmVzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWNpcmN1bWZsZXhzbWFsbCIsIklkaWVyZXNpc3NtYWxsIiwiRXRoc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9ncmF2ZXNtYWxsIiwiT2FjdXRlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT3RpbGRlc21hbGwiLCJPZGllcmVzaXNzbWFsbCIsIk9Fc21hbGwiLCJPc2xhc2hzbWFsbCIsIlVncmF2ZXNtYWxsIiwiVWFjdXRlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCJZYWN1dGVzbWFsbCIsIlRob3Juc21hbGwiLCJZZGllcmVzaXNzbWFsbCJdLG9yPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleG
101NsYW1zbWFsbCIsIkh1bmdhcnVtbGF1dHNtYWxsIiwiY2VudG9sZHN0eWxlIiwiZG9sbGFyb2xkc3R5bGUiLCJkb2xsYXJzdXBlcmlvciIsImFtcGVyc2FuZHNtYWxsIiwiQWN1dGVzbWFsbCIsInBhcmVubGVmdHN1cGVyaW9yIiwicGFyZW5yaWdodHN1cGVyaW9yIiwidHdvZG90ZW5sZWFkZXIiLCJvbmVkb3RlbmxlYWRlciIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwiZnJhY3Rpb24iLCJ6ZXJvb2xkc3R5bGUiLCJvbmVvbGRzdHlsZSIsInR3b29sZHN0eWxlIiwidGhyZWVvbGRzdHlsZSIsImZvdXJvbGRzdHlsZSIsImZpdmVvbGRzdHlsZSIsInNpeG9sZHN0eWxlIiwic2V2ZW5vbGRzdHlsZSIsImVpZ2h0b2xkc3R5bGUiLCJuaW5lb2xkc3R5bGUiLCJjb2xvbiIsInNlbWljb2xvbiIsIiIsInRocmVlcXVhcnRlcnNlbWRhc2giLCIiLCJxdWVzdGlvbnNtYWxsIiwiIiwiIiwiIiwiIiwiRXRoc21hbGwiLCIiLCIiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiIiwiIiwiIiwiIiwiIiwiIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCIiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJDaXJjdW1mbGV4c21hbGwiLCJoeXBoZW5pbmZlcmlvciIsIkdyYXZlc21hbGwiLCJBc21hbGwiLCJCc21hbGwiLCJDc21hbGwiLCJEc21hbGwiLCJFc21hbGwiLCJGc21hbGwiLCJHc21hbGwiLCJIc21hbGwiLCJJc21hbGwiLCJKc21hbGwiLCJLc21hbGwiLCJMc21hbGwiLCJNc21hbGwiLCJOc21hbGwiLCJPc21hbGwiLCJQc21hbGwiLCJRc21hbGwiLCJSc21hbGwiLCJTc21hbGwiLCJUc21hbGwiLCJVc21hbGwiLCJWc21hbGwiLCJXc21hbGwiLCJYc21hbGwiLCJZc21hbGwiLCJac21hbGwiLCJjb2xvbm1vbmV0YXJ5Iiwib25lZml0dGVkIiwicnVwaWFoIiwiVGlsZGVzbWFsbCIsIiIsIiIsImFzdXBlcmlvciIsImNlbnRzdXBlcmlvciIsIiIsIiIsIiIsIiIsIkFhY3V0ZXNtYWxsIiwiQWdyYXZlc21hbGwiLCJBY2lyY3VtZmxleHNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBdGlsZGVzbWFsbCIsIkFyaW5nc21hbGwiLCJDY2VkaWxsYXNtYWxsIiwiRWFjdXRlc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVjaXJjdW1mbGV4c21hbGwiLCJFZGllcmVzaXNzbWFsbCIsIklhY3V0ZXNtYWxsIiwiSWdyYXZlc21hbGwiLCJJY2lyY3VtZmxleHNtYWxsIiwiSWRpZXJlc2lzc21hbGwiLCJOdGlsZGVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2dyYXZlc21hbGwiLCJPY2lyY3VtZmxleHNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPdGlsZGVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWdyYXZlc21hbGwiLCJVY2lyY3VtZmxleHNtYWxsIiwiVWRpZXJlc2lzc21hbGwiLCIiLCJlaWdodHN1cGVyaW9yIiwiZm91cmluZmVyaW9yIiwidGhyZWVpbmZlcmlvciIsInNpeGluZmVyaW9yIiwiZWlnaHRpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJTY2Fyb25zbWFsbCIsIiIsImNlbnRpbmZlcmlvciIsInR3b2luZmVyaW9yIiwiIiwiRGllcmVzaXNzbWFsbCIsIiIsIkNhcm9uc21hbGwiLCJvc3VwZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCIiLCJjb21tYWluZmVyaW9yIiwicGVyaW9kaW5mZXJpb3IiLCJZYWN1dGVzbWFsbCIsIiIsImRvbGxhcmluZmVyaW9yIiwiIiwiIiwiVGhvcm5zbWFsbCIsIiIsIm5pbmVpbmZlcmlvciIsInplcm9pbmZlcmlvciIsIlpjYXJvbnNtYWxsIiwiQUVzbWFsbCIsIk9zbGFzaHNtYWxsIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVpbmZlcmlvciIsIkxzbGFzaHNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiIiwiQ2VkaWxsYXNtYWxsIiwiIiwiIiwiIiwiIiwiIiwiT0VzbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5zdXBlcmlvciIsIiIsIiIsIiIsIiIsImV4Y2xhbWRvd25zbWFsbCIsIiIsIllkaWVyZXNpc3NtYWxsIiwiIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJuaW5lc3VwZXJpb3IiLCJ6ZXJvc3VwZXJpb3IiLCIiLCJlc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCIiLCIiLCJpc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJkc3VwZXJpb3IiLCIiLCIiLCIiLCIiLCIiLCJsc3VwZXJpb3IiLCJPZ29uZWtzbWFsbCIsIkJyZXZlc21hbGwiLCJNYWNyb25zbWFsbCIsImJzdXBlcmlvciIsIm5zdXBlcmlvciIsIm1zdXBlcmlvciIsImNvbW1hc3VwZXJpb3IiLCJwZXJpb2RzdXBlcmlvciIsIkRvdGFjY2VudHNtYWxsIiwiUmluZ3NtYWxsIiwiIiwiIiwiIiwiIl0sY3I9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIk50aWxkZSIsIk9kaWVyZXNpcyIsIlVkaWVyZXNpcyIsImFhY3V0ZSIsImFncmF2ZSIsImFjaXJjdW1mbGV4IiwiYWRpZXJlc2lzIiwiYXRpbGRlIiwiYXJpbmciLCJjY2VkaWxsYSIsImVhY3V0ZSIsImVncmF2ZSIsImVjaXJjdW1mbGV4IiwiZWRpZXJlc2lzIiwiaWFjdXRlIiwiaWdyYXZlIiwiaWNpcmN1bWZsZXgiLCJpZGllcmVzaXMiLCJudGlsZGUiLCJvYWN1dGUiLCJvZ3JhdmUiLCJvY2lyY3VtZmxleCIsIm9kaWVyZXNpcyIsIm90aWxkZSIsInVhY3V0ZSIsInVncmF2ZSIsInVjaXJjdW1mbGV4IiwidWRpZXJlc2lzIiwiZGFnZ2VyIiwi
101ZGVncmVlIiwiY2VudCIsInN0ZXJsaW5nIiwic2VjdGlvbiIsImJ1bGxldCIsInBhcmFncmFwaCIsImdlcm1hbmRibHMiLCJyZWdpc3RlcmVkIiwiY29weXJpZ2h0IiwidHJhZGVtYXJrIiwiYWN1dGUiLCJkaWVyZXNpcyIsIm5vdGVxdWFsIiwiQUUiLCJPc2xhc2giLCJpbmZpbml0eSIsInBsdXNtaW51cyIsImxlc3NlcXVhbCIsImdyZWF0ZXJlcXVhbCIsInllbiIsIm11IiwicGFydGlhbGRpZmYiLCJzdW1tYXRpb24iLCJwcm9kdWN0IiwicGkiLCJpbnRlZ3JhbCIsIm9yZGZlbWluaW5lIiwib3JkbWFzY3VsaW5lIiwiT21lZ2EiLCJhZSIsIm9zbGFzaCIsInF1ZXN0aW9uZG93biIsImV4Y2xhbWRvd24iLCJsb2dpY2Fsbm90IiwicmFkaWNhbCIsImZsb3JpbiIsImFwcHJveGVxdWFsIiwiRGVsdGEiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInNwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iXSxscj1bIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsInNwYWNlIiwiZXhjbGFtIiwicXVvdGVkYmwiLCJudW1iZXJzaWduIiwiZG9sbGFyIiwicGVyY2VudCIsImFtcGVyc2FuZCIsInF1b3RlcmlnaHQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsInF1b3RlbGVmdCIsImEiLCJiIiwiYyIsImQiLCJlIiwiZiIsImciLCJoIiwiaSIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJxIiwiciIsInMiLCJ0IiwidSIsInYiLCJ3IiwieCIsInkiLCJ6IiwiYnJhY2VsZWZ0IiwiYmFyIiwiYnJhY2VyaWdodCIsImFzY2lpdGlsZGUiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJleGNsYW1kb3duIiwiY2VudCIsInN0ZXJsaW5nIiwiZnJhY3Rpb24iLCJ5ZW4iLCJmbG9yaW4iLCJzZWN0aW9uIiwiY3VycmVuY3kiLCJxdW90ZXNpbmdsZSIsInF1b3RlZGJsbGVmdCIsImd1aWxsZW1vdGxlZnQiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiIiwiZW5kYXNoIiwiZGFnZ2VyIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCIiLCJwYXJhZ3JhcGgiLCJidWxsZXQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInF1b3RlZGJscmlnaHQiLCJndWlsbGVtb3RyaWdodCIsImVsbGlwc2lzIiwicGVydGhvdXNhbmQiLCIiLCJxdWVzdGlvbmRvd24iLCIiLCJncmF2ZSIsImFjdXRlIiwiY2lyY3VtZmxleCIsInRpbGRlIiwibWFjcm9uIiwiYnJldmUiLCJkb3RhY2NlbnQiLCJkaWVyZXNpcyIsIiIsInJpbmciLCJjZWRpbGxhIiwiIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJlbWRhc2giLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJBRSIsIiIsIm9yZGZlbWluaW5lIiwiIiwiIiwiIiwiIiwiTHNsYXNoIiwiT3NsYXNoIiwiT0UiLCJvcmRtYXNjdWxpbmUiLCIiLCIiLCIiLCIiLCIiLCJhZSIsIiIsIiIsIiIsImRvdGxlc3NpIiwiIiwiIiwibHNsYXNoIiwib3NsYXNoIiwib2UiLCJnZXJtYW5kYmxzIiwiIiwiIiwiIiwiIl0saHI9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXNpbmdsZSIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwiZ3JhdmUiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiYnVsbGV0IiwiRXVybyIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwiZmxvcmluIiwicXVvdGVkYmxiYXNlIiwiZWxsaXBzaXMiLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJjaXJjdW1mbGV4IiwicGVydGhvdXNhbmQiLCJTY2Fyb24iLCJndWlsc2luZ2xsZWZ0IiwiT0UiLCJidWxsZXQiLCJaY2Fyb24iLCJidWxsZXQiLCJidWxsZXQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwicXVvdGVkYmxsZWZ0IiwicXVvdGVkYmxyaWdodCIsImJ1bGxldCIsImVuZGFzaCIsImVtZGFzaCIsInRpbGRlIiwidHJhZGVtYXJrIiwic2Nhcm9uIiwiZ3VpbHNpbmdscmlnaHQiLCJvZSIsImJ1bGxldCIsInpjYXJvbiIsIllkaWVyZXNpcyIsInNwYWNlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImN1cnJlbmN5IiwieWVuIiwiYnJva2VuYmFyIiwic2VjdGlvbiIsImRpZXJlc2lzIiwiY29weXJpZ2h0Iiwib3JkZmVtaW5pbmUiLCJndWlsbGVtb3RsZWZ0IiwibG9naWNhbG5vdCIsImh5cGhlbiIsInJlZ2lzdGVyZWQiLCJtYWNyb24iLCJkZWdyZWUiLCJwbHVzbWludXMiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJhY3V0ZSIsIm11IiwicGFyYWdyYXBoIiwicGVyaW9kY2VudGVyZWQiLCJjZWRpbGx
101hIiwib25lc3VwZXJpb3IiLCJvcmRtYXNjdWxpbmUiLCJndWlsbGVtb3RyaWdodCIsIm9uZXF1YXJ0ZXIiLCJvbmVoYWxmIiwidGhyZWVxdWFydGVycyIsInF1ZXN0aW9uZG93biIsIkFncmF2ZSIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQXRpbGRlIiwiQWRpZXJlc2lzIiwiQXJpbmciLCJBRSIsIkNjZWRpbGxhIiwiRWdyYXZlIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJJZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIkV0aCIsIk50aWxkZSIsIk9ncmF2ZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT3RpbGRlIiwiT2RpZXJlc2lzIiwibXVsdGlwbHkiLCJPc2xhc2giLCJVZ3JhdmUiLCJVYWN1dGUiLCJVY2lyY3VtZmxleCIsIlVkaWVyZXNpcyIsIllhY3V0ZSIsIlRob3JuIiwiZ2VybWFuZGJscyIsImFncmF2ZSIsImFhY3V0ZSIsImFjaXJjdW1mbGV4IiwiYXRpbGRlIiwiYWRpZXJlc2lzIiwiYXJpbmciLCJhZSIsImNjZWRpbGxhIiwiZWdyYXZlIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJpZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImV0aCIsIm50aWxkZSIsIm9ncmF2ZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib3RpbGRlIiwib2RpZXJlc2lzIiwiZGl2aWRlIiwib3NsYXNoIiwidWdyYXZlIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ5YWN1dGUiLCJ0aG9ybiIsInlkaWVyZXNpcyJdLHVyPVsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwic3BhY2UiLCJleGNsYW0iLCJ1bml2ZXJzYWwiLCJudW1iZXJzaWduIiwiZXhpc3RlbnRpYWwiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwic3VjaHRoYXQiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2ttYXRoIiwicGx1cyIsImNvbW1hIiwibWludXMiLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImNvbmdydWVudCIsIkFscGhhIiwiQmV0YSIsIkNoaSIsIkRlbHRhIiwiRXBzaWxvbiIsIlBoaSIsIkdhbW1hIiwiRXRhIiwiSW90YSIsInRoZXRhMSIsIkthcHBhIiwiTGFtYmRhIiwiTXUiLCJOdSIsIk9taWNyb24iLCJQaSIsIlRoZXRhIiwiUmhvIiwiU2lnbWEiLCJUYXUiLCJVcHNpbG9uIiwic2lnbWExIiwiT21lZ2EiLCJYaSIsIlBzaSIsIlpldGEiLCJicmFja2V0bGVmdCIsInRoZXJlZm9yZSIsImJyYWNrZXRyaWdodCIsInBlcnBlbmRpY3VsYXIiLCJ1bmRlcnNjb3JlIiwicmFkaWNhbGV4IiwiYWxwaGEiLCJiZXRhIiwiY2hpIiwiZGVsdGEiLCJlcHNpbG9uIiwicGhpIiwiZ2FtbWEiLCJldGEiLCJpb3RhIiwicGhpMSIsImthcHBhIiwibGFtYmRhIiwibXUiLCJudSIsIm9taWNyb24iLCJwaSIsInRoZXRhIiwicmhvIiwic2lnbWEiLCJ0YXUiLCJ1cHNpbG9uIiwib21lZ2ExIiwib21lZ2EiLCJ4aSIsInBzaSIsInpldGEiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0Iiwic2ltaWxhciIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIiIsIkV1cm8iLCJVcHNpbG9uMSIsIm1pbnV0ZSIsImxlc3NlcXVhbCIsImZyYWN0aW9uIiwiaW5maW5pdHkiLCJmbG9yaW4iLCJjbHViIiwiZGlhbW9uZCIsImhlYXJ0Iiwic3BhZGUiLCJhcnJvd2JvdGgiLCJhcnJvd2xlZnQiLCJhcnJvd3VwIiwiYXJyb3dyaWdodCIsImFycm93ZG93biIsImRlZ3JlZSIsInBsdXNtaW51cyIsInNlY29uZCIsImdyZWF0ZXJlcXVhbCIsIm11bHRpcGx5IiwicHJvcG9ydGlvbmFsIiwicGFydGlhbGRpZmYiLCJidWxsZXQiLCJkaXZpZGUiLCJub3RlcXVhbCIsImVxdWl2YWxlbmNlIiwiYXBwcm94ZXF1YWwiLCJlbGxpcHNpcyIsImFycm93dmVydGV4IiwiYXJyb3dob3JpemV4IiwiY2FycmlhZ2VyZXR1cm4iLCJhbGVwaCIsIklmcmFrdHVyIiwiUmZyYWt0dXIiLCJ3ZWllcnN0cmFzcyIsImNpcmNsZW11bHRpcGx5IiwiY2lyY2xlcGx1cyIsImVtcHR5c2V0IiwiaW50ZXJzZWN0aW9uIiwidW5pb24iLCJwcm9wZXJzdXBlcnNldCIsInJlZmxleHN1cGVyc2V0Iiwibm90c3Vic2V0IiwicHJvcGVyc3Vic2V0IiwicmVmbGV4c3Vic2V0IiwiZWxlbWVudCIsIm5vdGVsZW1lbnQiLCJhbmdsZSIsImdyYWRpZW50IiwicmVnaXN0ZXJzZXJpZiIsImNvcHlyaWdodHNlcmlmIiwidHJhZGVtYXJrc2VyaWYiLCJwcm9kdWN0IiwicmFkaWNhbCIsImRvdG1hdGgiLCJsb2dpY2Fsbm90IiwibG9naWNhbGFuZCIsImxvZ2ljYWxvciIsImFycm93ZGJsYm90aCIsImFycm93ZGJsbGVmdCIsImFycm93ZGJsdXAiLCJhcnJvd2RibHJpZ2h0IiwiYXJyb3dkYmxkb3duIiwibG96ZW5nZSIsImFuZ2xlbGVmdCIsInJlZ2lzdGVyc2FucyIsImNvcHlyaWdodHNhbnMiLCJ0cmFkZW1hcmtzYW5zIiwic3VtbWF0aW9uIiwicGFyZW5sZWZ0dHAiLCJwYXJlbmxlZnRleCIsInBhcmVubGVmdGJ0IiwiYnJhY2tldGxlZnR0cCIsImJyYWNrZXRsZWZ0ZXgiLCJicmFja2V0bGVmdGJ0IiwiYnJhY2VsZWZ0dHAiLCJicmFjZWxlZnRtaWQiLCJicmFjZWxlZnRidCIsImJyYWNlZXgiLCIiLCJhbmdsZXJpZ2h0IiwiaW50ZWdyYWwiLCJpbnRlZ3JhbHRwIiwiaW50ZWdyYWxleCIsImludGVncmFsYnQiLCJwYXJlbnJpZ2h0dHAiLCJwYXJlbnJpZ2h0ZXgiLCJwYXJlbnJpZ2h0YnQiLCJicmFja2V0cmlnaHR0cCIsImJyYWNrZXRyaWdodGV4IiwiYnJhY2tldHJpZ2h0YnQiLCJicmFjZXJpZ2h0dHAiLCJicmFjZXJpZ2h0bWlkIiwiYnJhY2VyaWdodGJ0IiwiIl0sZHI9WyIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJzcGFjZSIsImExIiwiYTIiLCJhMjAyIiwiYTMiLCJhNCIsImE1IiwiYTExOSIsImExMTgiLCJhMTE3IiwiYTExIiwiYTEyIiwiYTEzIiwiYTE0IiwiYTE1IiwiYTE2IiwiYTEwNSIsImExNyIsImExOCIsImExOSIsImEyMCIsImEyMSIsImEyMiIsImEyMyIsImEyNCIsImEyNSIsImEyNiIsImEyNyIsImEyOCIsImE2IiwiYTciLCJhOCIsImE5IiwiYTEwIiwiYTI5IiwiYTMwIiwiYTMxIiwiYTMyIiwiYTMzIiwiYTM0IiwiYTM1IiwiYTM2IiwiYTM3IiwiYTM4IiwiYTM5IiwiYTQwIiwiYTQxIiwiYTQyIiwiYTQzIiwiYTQ0IiwiYTQ1IiwiYTQ2IiwiYTQ3IiwiYTQ4IiwiYTQ5IiwiYTUwIiwiYTUxIiwiYTUyIiwiYTUzIiwiYTU0IiwiYTU1IiwiYTU2IiwiYTU3IiwiYTU4IiwiYTU5IiwiYTYwIiwiYTYxIiwiYTYyIiwiYTYzIiwiYTY0IiwiYTY1IiwiYTY2IiwiYTY3IiwiYTY4IiwiYTY5IiwiYTcwIiwiYTcxIiwiYTcyIiwiYTczIiwiYTc0IiwiYTIwMyIsImE3NSIsImEyMDQiLCJhNzYiLCJhNzciLCJhNzgiLCJhNzkiLCJhODEiLCJhODIiLCJhODMiLCJhODQiLCJhOTciLCJhOTgiLCJhOTkiLCJhMTAwIiwiIiwiYTg5IiwiYTkwIiwiYTkzIiwiYTk0IiwiYTkxIiwiYTkyIiwiYTIwNSIsImE4NSIsImEyMDYiLCJhODYiLCJhODciLCJhODgiLCJhOTUiLCJhOTYiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCIiLCJhMTAxIiwiYTEwMiIsImExMDMiLCJhMTA0IiwiYTEwNiIsImExMDciLCJhMTA4IiwiYTExMiIsImExMTEiLCJhMTEwIiwiYTEwOSIsImExMjAiLCJhMTIxIiwiYTEyMiIsImExMjMiLCJhMTI0IiwiYTEyNSIsImExMjYiLCJhMTI3IiwiYTEyOCIsImExMjkiLCJhMTMwIiwiYTEzMSIsImExMzIiLCJhMTMzIiwiYTEzNCIsImExMzUiLCJhMTM2IiwiYTEzNyIsImExMzgiLCJhMTM5IiwiYTE0MCIsImExNDEiLCJhMTQyIiwiYTE0MyIsImExNDQiLCJhMTQ1IiwiYTE0NiIsImExNDciLCJhMTQ4IiwiYTE0OSIsImExNTAiLCJhMTUxIiwiYTE1MiIsImExNTMiLCJhMTU0IiwiYTE1NSIsImExNTYiLCJhMTU3IiwiYTE1OCIsImExNTkiLCJhMTYwIiwiYTE2MSIsImExNjMiLCJhMTY0IiwiYTE5NiIsImExNjUiLCJhMTkyIiwiYTE2NiIsImExNjciLCJhMTY4IiwiYTE2OSIsImExNzAiLCJhMTcxIiwiYTE3MiIsImExNzMiLCJhMTYyIiwiYTE3NCIsImExNzUiLCJhMTc2IiwiYTE3NyIsImExNzgiLCJhMTc5IiwiYTE5MyIsImExODAiLCJhMTk5IiwiYTE4MSIsImEyMDAiLCJhMTgyIiwiIiwiYTIwMSIsImExODMiLCJhMTg0IiwiYTE5NyIsImExODUiLCJhMTk0IiwiYTE5OCIsImExODYiLCJhMTk1IiwiYTE4NyIsImExODgiLCJhMTg5IiwiYTE5MCIsImExOTEiLCIiXTtmdW5jdGlvbiBnZXRFbmNvZGluZyhlKXtzd2l0Y2goZSl7Y2FzZSJXaW5BbnNpRW5jb2RpbmciOnJldHVybi
101BocjtjYXNlIlN0YW5kYXJkRW5jb2RpbmciOnJldHVybiBscjtjYXNlIk1hY1JvbWFuRW5jb2RpbmciOnJldHVybiBjcjtjYXNlIlN5bWJvbFNldEVuY29kaW5nIjpyZXR1cm4gdXI7Y2FzZSJaYXBmRGluZ2JhdHNFbmNvZGluZyI6cmV0dXJuIGRyO2Nhc2UiRXhwZXJ0RW5jb2RpbmciOnJldHVybiBzcjtjYXNlIk1hY0V4cGVydEVuY29kaW5nIjpyZXR1cm4gb3I7ZGVmYXVsdDpyZXR1cm4gbnVsbH19Y29uc3QgZnI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuQT02NTtlLkFFPTE5ODtlLkFFYWN1dGU9NTA4O2UuQUVtYWNyb249NDgyO2UuQUVzbWFsbD02MzQ2MjtlLkFhY3V0ZT0xOTM7ZS5BYWN1dGVzbWFsbD02MzQ1NztlLkFicmV2ZT0yNTg7ZS5BYnJldmVhY3V0ZT03ODU0O2UuQWJyZXZlY3lyaWxsaWM9MTIzMjtlLkFicmV2ZWRvdGJlbG93PTc4NjI7ZS5BYnJldmVncmF2ZT03ODU2O2UuQWJyZXZlaG9va2Fib3ZlPTc4NTg7ZS5BYnJldmV0aWxkZT03ODYwO2UuQWNhcm9uPTQ2MTtlLkFjaXJjbGU9OTM5ODtlLkFjaXJjdW1mbGV4PTE5NDtlLkFjaXJjdW1mbGV4YWN1dGU9Nzg0NDtlLkFjaXJjdW1mbGV4ZG90YmVsb3c9Nzg1MjtlLkFjaXJjdW1mbGV4Z3JhdmU9Nzg0NjtlLkFjaXJjdW1mbGV4aG9va2Fib3ZlPTc4NDg7ZS5BY2lyY3VtZmxleHNtYWxsPTYzNDU4O2UuQWNpcmN1bWZsZXh0aWxkZT03ODUwO2UuQWN1dGU9NjMxNzc7ZS5BY3V0ZXNtYWxsPTYzNDEyO2UuQWN5cmlsbGljPTEwNDA7ZS5BZGJsZ3JhdmU9NTEyO2UuQWRpZXJlc2lzPTE5NjtlLkFkaWVyZXNpc2N5cmlsbGljPTEyMzQ7ZS5BZGllcmVzaXNtYWNyb249NDc4O2UuQWRpZXJlc2lzc21hbGw9NjM0NjA7ZS5BZG90YmVsb3c9Nzg0MDtlLkFkb3RtYWNyb249NDgwO2UuQWdyYXZlPTE5MjtlLkFncmF2ZXNtYWxsPTYzNDU2O2UuQWhvb2thYm92ZT03ODQyO2UuQWllY3lyaWxsaWM9MTIzNjtlLkFpbnZlcnRlZGJyZXZlPTUxNDtlLkFscGhhPTkxMztlLkFscGhhdG9ub3M9OTAyO2UuQW1hY3Jvbj0yNTY7ZS5BbW9ub3NwYWNlPTY1MzEzO2UuQW9nb25laz0yNjA7ZS5BcmluZz0xOTc7ZS5BcmluZ2FjdXRlPTUwNjtlLkFyaW5nYmVsb3c9NzY4MDtlLkFyaW5nc21hbGw9NjM0NjE7ZS5Bc21hbGw9NjMzMjk7ZS5BdGlsZGU9MTk1O2UuQXRpbGRlc21hbGw9NjM0NTk7ZS5BeWJhcm1lbmlhbj0xMzI5O2UuQj02NjtlLkJjaXJjbGU9OTM5OTtlLkJkb3RhY2NlbnQ9NzY4MjtlLkJkb3RiZWxvdz03Njg0O2UuQmVjeXJpbGxpYz0xMDQxO2UuQmVuYXJtZW5pYW49MTMzMDtlLkJldGE9OTE0O2UuQmhvb2s9Mzg1O2UuQmxpbmViZWxvdz03Njg2O2UuQm1vbm9zcGFjZT02NTMxNDtlLkJyZXZlc21hbGw9NjMyMjA7ZS5Cc21hbGw9NjMzMzA7ZS5CdG9wYmFyPTM4NjtlLkM9Njc7ZS5DYWFybWVuaWFuPTEzNDI7ZS5DYWN1dGU9MjYyO2UuQ2Fyb249NjMxNzg7ZS5DYXJvbnNtYWxsPTYzMjIxO2UuQ2Nhcm9uPTI2ODtlLkNjZWRpbGxhPTE5OTtlLkNjZWRpbGxhYWN1dGU9NzY4ODtlLkNjZWRpbGxhc21hbGw9NjM0NjM7ZS5DY2lyY2xlPTk0MDA7ZS5DY2lyY3VtZmxleD0yNjQ7ZS5DZG90PTI2NjtlLkNkb3RhY2NlbnQ9MjY2O2UuQ2VkaWxsYXNtYWxsPTYzNDE2O2UuQ2hhYXJtZW5pYW49MTM1MztlLkNoZWFia2hhc2lhbmN5cmlsbGljPTEyMTI7ZS5DaGVjeXJpbGxpYz0xMDYzO2UuQ2hlZGVzY2VuZGVyYWJraGFzaWFuY3lyaWxsaWM9MTIxNDtlLkNoZWRlc2NlbmRlcmN5cmlsbGljPTEyMDY7ZS5DaGVkaWVyZXNpc2N5cmlsbGljPTEyNjg7ZS5DaGVoYXJtZW5pYW49MTM0NztlLkNoZWtoYWthc3NpYW5jeXJpbGxpYz0xMjI3O2UuQ2hldmVydGljYWxzdHJva2VjeXJpbGxpYz0xMjA4O2UuQ2hpPTkzNTtlLkNob29rPTM5MTtlLkNpcmN1bWZsZXhzbWFsbD02MzIyMjtlLkNtb25vc3BhY2U9NjUzMTU7ZS5Db2FybWVuaWFuPTEzNjE7ZS5Dc21hbGw9NjMzMzE7ZS5EPTY4O2UuRFo9NDk3O2UuRFpjYXJvbj00NTI7ZS5EYWFybWVuaWFuPTEzMzI7ZS5EYWZyaWNhbj0zOTM7ZS5EY2Fyb249MjcwO2UuRGNlZGlsbGE9NzY5NjtlLkRjaXJjbGU9OTQwMTtlLkRjaXJjdW1mbGV4YmVsb3c9NzY5ODtlLkRjcm9hdD0yNzI7ZS5EZG90YWNjZW50PTc2OTA7ZS5EZG90YmVsb3c9NzY5MjtlLkRlY3lyaWxsaWM9MTA0NDtlLkRlaWNvcHRpYz0xMDA2O2UuRGVsdGE9ODcxMDtlLkRlbHRhZ3JlZWs9OTE2O2UuRGhvb2s9Mzk0O2UuRGllcmVzaXM9NjMxNzk7ZS5EaWVyZXNpc0FjdXRlPTYzMTgwO2UuRGllcmVzaXNHcmF2ZT02MzE4MTtlLkRpZXJlc2lzc21hbGw9NjM0MDA7ZS5EaWdhbW1hZ3JlZWs9OTg4O2UuRGplY3lyaWxsaWM9MTAyNjtlLkRsaW5lYmVsb3c9NzY5NDtlLkRtb25vc3BhY2U9NjUzMTY7ZS5Eb3RhY2NlbnRzbWFsbD02MzIyMztlLkRzbGFzaD0yNzI7ZS5Ec21hbGw9NjMzMzI7ZS5EdG9wYmFyPTM5NTtlLkR6PTQ5ODtlLkR6Y2Fyb249NDUzO2UuRHplYWJraGFzaWFuY3lyaWxsaWM9MTI0ODtlLkR6ZWN5cmlsbGljPTEwMjk7ZS5EemhlY3lyaWxsaWM9MTAzOTtlLkU9Njk7ZS5FYWN1dGU9MjAxO2UuRWFjdXRlc21hbGw9NjM0NjU7ZS5FYnJldmU9Mjc2O2UuRWNhcm9uPTI4MjtlLkVjZWRpbGxhYnJldmU9NzcwODtlLkVjaGFybWVuaWFuPTEzMzM7ZS5FY2lyY2xlPTk0MDI7ZS5FY2lyY3VtZmxleD0yMDI7ZS5FY2lyY3VtZmxleGFjdXRlPTc4NzA7ZS5FY2lyY3VtZmxleGJlbG93PTc3MDQ7ZS5FY2lyY3VtZmxleGRvdGJlbG93PTc4Nzg7ZS5FY2lyY3VtZmxleGdyYXZlPTc4NzI7ZS5FY2lyY3VtZmxleGhvb2thYm92ZT03ODc0O2UuRWNpcmN1bWZsZXhzbWFsbD02MzQ2NjtlLkVjaXJjdW1mbGV4dGlsZGU9Nzg3NjtlLkVjeXJpbGxpYz0xMDI4O2UuRWRibGdyYXZlPTUxNjtlLkVkaWVyZXNpcz0yMDM7ZS5FZGllcmVzaXNzbWFsbD02MzQ2NztlLkVkb3Q9Mjc4O2UuRWRvdGFjY2VudD0yNzg7ZS5FZG90YmVsb3c9Nzg2NDtlLkVmY3lyaWxsaWM9MTA2MDtlLkVncmF2ZT0yMDA7ZS5FZ3JhdmVzbWFsbD02MzQ2NDtlLkVoYXJtZW5pYW49MTMzNTtlLkVob29rYWJvdmU9Nzg2NjtlLkVpZ2h0cm9tYW49ODU1MTtlLkVpbnZlcnRlZGJyZXZlPTUxODtlLkVpb3RpZmllZGN5cmlsbGljPTExMjQ7ZS5FbGN5cmlsbGljPTEwNTE7ZS5FbGV2ZW5yb21hbj04NTU0O2UuRW1hY3Jvbj0yNzQ7ZS5FbWFjcm9uYWN1dGU9NzcwMjtlLkVtYWNyb25ncmF2ZT03NzAwO2UuRW1jeXJpbGxpYz0xMDUyO2UuRW1vbm9zcGFjZT02NTMxNztlLkVuY3lyaWxsaWM9MTA1MztlLkVuZGVzY2VuZGVyY3lyaWxsaWM9MTE4NjtlLkVuZz0zMzA7ZS5FbmdoZWN5cmlsbGljPTExODg7ZS5Fbmhvb2tjeXJpbGxpYz0xMjIzO2UuRW9nb25laz0yODA7ZS5Fb3Blbj00MDA7ZS5FcHNpbG9uPTkxNztlLkVwc2lsb250b25vcz05MDQ7ZS5FcmN5cmlsbGljPTEwNTY7ZS5FcmV2ZXJzZWQ9Mzk4O2UuRXJldmVyc2VkY3lyaWxsaWM9MTA2OTtlLkVzY3lyaWxsaWM9MTA1NztlLkVzZGVzY2VuZGVyY3lyaWxsaWM9MTE5NDtlLkVzaD00MjU7ZS5Fc21hbGw9NjMzMzM7ZS5FdGE9OTE5O2UuRXRhcm1lbmlhbj0xMzM2O2UuRXRhdG9ub3M9OTA1O2UuRXRoPTIwODtlLkV0aHNtYWxsPTYzNDcyO2UuRXRpbGRlPTc4Njg7ZS5FdGlsZGViZWxvdz03
101NzA2O2UuRXVybz04MzY0O2UuRXpoPTQzOTtlLkV6aGNhcm9uPTQ5NDtlLkV6aHJldmVyc2VkPTQ0MDtlLkY9NzA7ZS5GY2lyY2xlPTk0MDM7ZS5GZG90YWNjZW50PTc3MTA7ZS5GZWhhcm1lbmlhbj0xMzY2O2UuRmVpY29wdGljPTk5NjtlLkZob29rPTQwMTtlLkZpdGFjeXJpbGxpYz0xMTM4O2UuRml2ZXJvbWFuPTg1NDg7ZS5GbW9ub3NwYWNlPTY1MzE4O2UuRm91cnJvbWFuPTg1NDc7ZS5Gc21hbGw9NjMzMzQ7ZS5HPTcxO2UuR0JzcXVhcmU9MTMxOTE7ZS5HYWN1dGU9NTAwO2UuR2FtbWE9OTE1O2UuR2FtbWFhZnJpY2FuPTQwNDtlLkdhbmdpYWNvcHRpYz0xMDAyO2UuR2JyZXZlPTI4NjtlLkdjYXJvbj00ODY7ZS5HY2VkaWxsYT0yOTA7ZS5HY2lyY2xlPTk0MDQ7ZS5HY2lyY3VtZmxleD0yODQ7ZS5HY29tbWFhY2NlbnQ9MjkwO2UuR2RvdD0yODg7ZS5HZG90YWNjZW50PTI4ODtlLkdlY3lyaWxsaWM9MTA0MztlLkdoYWRhcm1lbmlhbj0xMzQ2O2UuR2hlbWlkZGxlaG9va2N5cmlsbGljPTExNzI7ZS5HaGVzdHJva2VjeXJpbGxpYz0xMTcwO2UuR2hldXB0dXJuY3lyaWxsaWM9MTE2ODtlLkdob29rPTQwMztlLkdpbWFybWVuaWFuPTEzMzE7ZS5HamVjeXJpbGxpYz0xMDI3O2UuR21hY3Jvbj03NzEyO2UuR21vbm9zcGFjZT02NTMxOTtlLkdyYXZlPTYzMTgyO2UuR3JhdmVzbWFsbD02MzMyODtlLkdzbWFsbD02MzMzNTtlLkdzbWFsbGhvb2s9NjY3O2UuR3N0cm9rZT00ODQ7ZS5IPTcyO2UuSDE4NTMzPTk2Nzk7ZS5IMTg1NDM9OTY0MjtlLkgxODU1MT05NjQzO2UuSDIyMDczPTk2MzM7ZS5IUHNxdWFyZT0xMzI1OTtlLkhhYWJraGFzaWFuY3lyaWxsaWM9MTE5MjtlLkhhZGVzY2VuZGVyY3lyaWxsaWM9MTIwMjtlLk
101hhcmRzaWduY3lyaWxsaWM9MTA2NjtlLkhiYXI9Mjk0O2UuSGJyZXZlYmVsb3c9NzcyMjtlLkhjZWRpbGxhPTc3MjA7ZS5IY2lyY2xlPTk0MDU7ZS5IY2lyY3VtZmxleD0yOTI7ZS5IZGllcmVzaXM9NzcxODtlLkhkb3RhY2NlbnQ9NzcxNDtlLkhkb3RiZWxvdz03NzE2O2UuSG1vbm9zcGFjZT02NTMyMDtlLkhvYXJtZW5pYW49MTM0NDtlLkhvcmljb3B0aWM9MWUzO2UuSHNtYWxsPTYzMzM2O2UuSHVuZ2FydW1sYXV0PTYzMTgzO2UuSHVuZ2FydW1sYXV0c21hbGw9NjMyMjQ7ZS5IenNxdWFyZT0xMzIwMDtlLkk9NzM7ZS5JQWN5cmlsbGljPTEwNzE7ZS5JSj0zMDY7ZS5JVWN5cmlsbGljPTEwNzA7ZS5JYWN1dGU9MjA1O2UuSWFjdXRlc21hbGw9NjM0Njk7ZS5JYnJldmU9MzAwO2UuSWNhcm9uPTQ2MztlLkljaXJjbGU9OTQwNjtlLkljaXJjdW1mbGV4PTIwNjtlLkljaXJjdW1mbGV4c21hbGw9NjM0NzA7ZS5JY3lyaWxsaWM9MTAzMDtlLklkYmxncmF2ZT01MjA7ZS5JZGllcmVzaXM9MjA3O2UuSWRpZXJlc2lzYWN1dGU9NzcyNjtlLklkaWVyZXNpc2N5cmlsbGljPTEyNTI7ZS5JZGllcmVzaXNzbWFsbD02MzQ3MTtlLklkb3Q9MzA0O2UuSWRvdGFjY2VudD0zMDQ7ZS5JZG90YmVsb3c9Nzg4MjtlLkllYnJldmVjeXJpbGxpYz0xMjM4O2UuSWVjeXJpbGxpYz0xMDQ1O2UuSWZyYWt0dXI9ODQ2NTtlLklncmF2ZT0yMDQ7ZS5JZ3JhdmVzbWFsbD02MzQ2ODtlLklob29rYWJvdmU9Nzg4MDtlLklpY3lyaWxsaWM9MTA0ODtlLklpbnZlcnRlZGJyZXZlPTUyMjtlLklpc2hvcnRjeXJpbGxpYz0xMDQ5O2UuSW1hY3Jvbj0yOTg7ZS5JbWFjcm9uY3lyaWxsaWM9MTI1MDtlLkltb25vc3BhY2U9NjUzMjE7ZS5Jbmlhcm1lbmlhbj0xMzM5O2UuSW9jeXJpbGxpYz0xMDI1O2UuSW9nb25laz0zMDI7ZS5Jb3RhPTkyMTtlLklvdGFhZnJpY2FuPTQwNjtlLklvdGFkaWVyZXNpcz05Mzg7ZS5Jb3RhdG9ub3M9OTA2O2UuSXNtYWxsPTYzMzM3O2UuSXN0cm9rZT00MDc7ZS5JdGlsZGU9Mjk2O2UuSXRpbGRlYmVsb3c9NzcyNDtlLkl6aGl0c2FjeXJpbGxpYz0xMTQwO2UuSXpoaXRzYWRibGdyYXZlY3lyaWxsaWM9MTE0MjtlLko9NzQ7ZS5KYWFybWVuaWFuPTEzNDU7ZS5KY2lyY2xlPTk0MDc7ZS5KY2lyY3VtZmxleD0zMDg7ZS5KZWN5cmlsbGljPTEwMzI7ZS5KaGVoYXJtZW5pYW49MTM1NTtlLkptb25vc3BhY2U9NjUzMjI7ZS5Kc21hbGw9NjMzMzg7ZS5LPTc1O2UuS0JzcXVhcmU9MTMxODk7ZS5LS3NxdWFyZT0xMzI2MTtlLkthYmFzaGtpcmN5cmlsbGljPTExODQ7ZS5LYWN1dGU9NzcyODtlLkthY3lyaWxsaWM9MTA1MDtlLkthZGVzY2VuZGVyY3lyaWxsaWM9MTE3ODtlLkthaG9va2N5cmlsbGljPTEyMTk7ZS5LYXBwYT05MjI7ZS5LYXN0cm9rZWN5cmlsbGljPTExODI7ZS5LYXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTE4MDtlLktjYXJvbj00ODg7ZS5LY2VkaWxsYT0zMTA7ZS5LY2lyY2xlPTk0MDg7ZS5LY29tbWFhY2NlbnQ9MzEwO2UuS2RvdGJlbG93PTc3MzA7ZS5LZWhhcm1lbmlhbj0xMzY0O2UuS2VuYXJtZW5pYW49MTM0MztlLktoYWN5cmlsbGljPTEwNjE7ZS5LaGVpY29wdGljPTk5ODtlLktob29rPTQwODtlLktqZWN5cmlsbGljPTEwMzY7ZS5LbGluZWJlbG93PTc3MzI7ZS5LbW9ub3NwYWNlPTY1MzIzO2UuS29wcGFjeXJpbGxpYz0xMTUyO2UuS29wcGFncmVlaz05OTA7ZS5Lc2ljeXJpbGxpYz0xMTM0O2UuS3NtYWxsPTYzMzM5O2UuTD03NjtlLkxKPTQ1NTtlLkxMPTYzMTY3O2UuTGFjdXRlPTMxMztlLkxhbWJkYT05MjM7ZS5MY2Fyb249MzE3O2UuTGNlZGlsbGE9MzE1O2UuTGNpcmNsZT05NDA5O2UuTGNpcmN1bWZsZXhiZWxvdz03NzQwO2UuTGNvbW1hYWNjZW50PTMxNTtlLkxkb3Q9MzE5O2UuTGRvdGFjY2VudD0zMTk7ZS5MZG90YmVsb3c9NzczNDtlLkxkb3RiZWxvd21hY3Jvbj03NzM2O2UuTGl3bmFybWVuaWFuPTEzNDA7ZS5Maj00NTY7ZS5MamVjeXJpbGxpYz0xMDMzO2UuTGxpbmViZWxvdz03NzM4O2UuTG1vbm9zcGFjZT02NTMyNDtlLkxzbGFzaD0zMjE7ZS5Mc2xhc2hzbWFsbD02MzIyNTtlLkxzbWFsbD02MzM0MDtlLk09Nzc7ZS5NQnNxdWFyZT0xMzE5MDtlLk1hY3Jvbj02MzE4NDtlLk1hY3JvbnNtYWxsPTYzNDA3O2UuTWFjdXRlPTc3NDI7ZS5NY2lyY2xlPTk0MTA7ZS5NZG90YWNjZW50PTc3NDQ7ZS5NZG90YmVsb3c9Nzc0NjtlLk1lbmFybWVuaWFuPTEzNDg7ZS5NbW9ub3NwYWNlPTY1MzI1O2UuTXNtYWxsPTYzMzQxO2UuTXR1cm5lZD00MTI7ZS5NdT05MjQ7ZS5OPTc4O2UuTko9NDU4O2UuTmFjdXRlPTMyMztlLk5jYXJvbj0zMjc7ZS5OY2VkaWxsYT0zMjU7ZS5OY2lyY2xlPTk0MTE7ZS5OY2lyY3VtZmxleGJlbG93PTc3NTQ7ZS5OY29tbWFhY2NlbnQ9MzI1O2UuTmRvdGFjY2VudD03NzQ4O2UuTmRvdGJlbG93PTc3NTA7ZS5OaG9va2xlZnQ9NDEzO2UuTmluZXJvbWFuPTg1NTI7ZS5Oaj00NTk7ZS5OamVjeXJpbGxpYz0xMDM0O2UuTmxpbmViZWxvdz03NzUyO2UuTm1vbm9zcGFjZT02NTMyNjtlLk5vd2FybWVuaWFuPTEzNTA7ZS5Oc21hbGw9NjMzNDI7ZS5OdGlsZGU9MjA5O2UuTnRpbGRlc21hbGw9NjM0NzM7ZS5OdT05MjU7ZS5PPTc5O2UuT0U9MzM4O2UuT0VzbWFsbD02MzIyNjtlLk9hY3V0ZT0yMTE7ZS5PYWN1dGVzbWFsbD02MzQ3NTtlLk9iYXJyZWRjeXJpbGxpYz0xMjU2O2UuT2JhcnJlZGRpZXJlc2lzY3lyaWxsaWM9MTI1ODtlLk9icmV2ZT0zMzQ7ZS5PY2Fyb249NDY1O2UuT2NlbnRlcmVkdGlsZGU9NDE1O2UuT2NpcmNsZT05NDEyO2UuT2NpcmN1bWZsZXg9MjEyO2UuT2NpcmN1bWZsZXhhY3V0ZT03ODg4O2UuT2NpcmN1bWZsZXhkb3RiZWxvdz03ODk2O2UuT2NpcmN1bWZsZXhncmF2ZT03ODkwO2UuT2NpcmN1bWZsZXhob29rYWJvdmU9Nzg5MjtlLk9jaXJjdW1mbGV4c21hbGw9NjM0NzY7ZS5PY2lyY3VtZmxleHRpbGRlPTc4OTQ7ZS5PY3lyaWxsaWM9MTA1NDtlLk9kYmxhY3V0ZT0zMzY7ZS5PZGJsZ3JhdmU9NTI0O2UuT2RpZXJlc2lzPTIxNDtlLk9kaWVyZXNpc2N5cmlsbGljPTEyNTQ7ZS5PZGllcmVzaXNzbWFsbD02MzQ3ODtlLk9kb3RiZWxvdz03ODg0O2UuT2dvbmVrc21hbGw9NjMyMjc7ZS5PZ3JhdmU9MjEwO2UuT2dyYXZlc21hbGw9NjM0NzQ7ZS5PaGFybWVuaWFuPTEzNjU7ZS5PaG09ODQ4NjtlLk9ob29rYWJvdmU9Nzg4NjtlLk9ob3JuPTQxNjtlLk9ob3JuYWN1dGU9Nzg5ODtlLk9ob3JuZG90YmVsb3c9NzkwNjtlLk9ob3JuZ3JhdmU9NzkwMDtlLk9ob3JuaG9va2Fib3ZlPTc5MDI7ZS5PaG9ybnRpbGRlPTc5MDQ7ZS5PaHVuZ2FydW1sYXV0PTMzNjtlLk9pPTQxODtlLk9pbnZlcnRlZGJyZXZlPTUyNjtlLk9tYWNyb249MzMyO2UuT21hY3JvbmFjdXRlPTc3NjI7ZS5PbWFjcm9uZ3JhdmU9Nzc2MDtlLk9tZWdhPTg0ODY7ZS5PbWVnYWN5cmlsbGljPTExMjA7ZS5PbWVnYWdyZWVrPTkzNztlLk9tZWdhcm91bmRjeXJpbGxpYz0xMTQ2O2UuT21lZ2F0aXRsb2N5cmlsbGljPTExNDg7ZS5PbWVnYXRvbm9zPTkxMTtlLk9taWNyb249OTI3O2UuT21pY3JvbnRvbm9zPTkwODtlLk9tb25vc3BhY2U9NjUzMjc7ZS5PbmVyb21hbj04NTQ0O2UuT29nb25laz00OTA7ZS5Pb2dvbmVrbWFjcm9uPTQ5MjtlLk9v
101cGVuPTM5MDtlLk9zbGFzaD0yMTY7ZS5Pc2xhc2hhY3V0ZT01MTA7ZS5Pc2xhc2hzbWFsbD02MzQ4MDtlLk9zbWFsbD02MzM0MztlLk9zdHJva2VhY3V0ZT01MTA7ZS5PdGN5cmlsbGljPTExNTA7ZS5PdGlsZGU9MjEzO2UuT3RpbGRlYWN1dGU9Nzc1NjtlLk90aWxkZWRpZXJlc2lzPTc3NTg7ZS5PdGlsZGVzbWFsbD02MzQ3NztlLlA9ODA7ZS5QYWN1dGU9Nzc2NDtlLlBjaXJjbGU9OTQxMztlLlBkb3RhY2NlbnQ9Nzc2NjtlLlBlY3lyaWxsaWM9MTA1NTtlLlBlaGFybWVuaWFuPTEzNTQ7ZS5QZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkwO2UuUGhpPTkzNDtlLlBob29rPTQyMDtlLlBpPTkyODtlLlBpd3Jhcm1lbmlhbj0xMzYzO2UuUG1vbm9zcGFjZT02NTMyODtlLlBzaT05MzY7ZS5Qc2ljeXJpbGxpYz0xMTM2O2UuUHNtYWxsPTYzMzQ0O2UuUT04MTtlLlFjaXJjbGU9OTQxNDtlLlFtb25vc3BhY2U9NjUzMjk7ZS5Rc21hbGw9NjMzNDU7ZS5SPTgyO2UuUmFhcm1lbmlhbj0xMzU2O2UuUmFjdXRlPTM0MDtlLlJjYXJvbj0zNDQ7ZS5SY2VkaWxsYT0zNDI7ZS5SY2lyY2xlPTk0MTU7ZS5SY29tbWFhY2NlbnQ9MzQyO2UuUmRibGdyYXZlPTUyODtlLlJkb3RhY2NlbnQ9Nzc2ODtlLlJkb3RiZWxvdz03NzcwO2UuUmRvdGJlbG93bWFjcm9uPTc3NzI7ZS5SZWhhcm1lbmlhbj0xMzYwO2UuUmZyYWt0dXI9ODQ3NjtlLlJobz05Mjk7ZS5SaW5nc21hbGw9NjMyMjg7ZS5SaW52ZXJ0ZWRicmV2ZT01MzA7ZS5SbGluZWJlbG93PTc3NzQ7ZS5SbW9ub3NwYWNlPTY1MzMwO2UuUnNtYWxsPTYzMzQ2O2UuUnNtYWxsaW52ZXJ0ZWQ9NjQxO2UuUnNtYWxsaW52ZXJ0ZWRzdXBlcmlvcj02OTQ7ZS5TPTgzO2UuU0YwMTAwMDA9OTQ4NDtlLlNGMDIwMDAwPTk0OTI7ZS5TRjAzMDAwMD05NDg4O2UuU0YwNDAwMDA9OTQ5NjtlLlNGMDUwMDAwPTk1MzI7ZS5TRjA2MDAwMD05NTE2O2UuU0YwNzAwMDA9OTUyNDtlLlNGMDgwMDAwPTk1MDA7ZS5TRjA5MDAwMD05NTA4O2UuU0YxMDAwMDA9OTQ3MjtlLlNGMTEwMDAwPTk0NzQ7ZS5TRjE5MDAwMD05NTY5O2UuU0YyMDAwMDA9OTU3MDtlLlNGMjEwMDAwPTk1NTg7ZS5TRjIyMDAwMD05NTU3O2UuU0YyMzAwMDA9OTU3MTtlLlNGMjQwMDAwPTk1NTM7ZS5TRjI1MDAwMD05NTU5O2UuU0YyNjAwMDA9OTU2NTtlLlNGMjcwMDAwPTk1NjQ7ZS5TRjI4MDAwMD05NTYzO2UuU0YzNjAwMDA9OTU2NjtlLlNGMzcwMDAwPTk1Njc7ZS5TRjM4MDAwMD05NTYyO2UuU0YzOTAwMDA9OTU1NjtlLlNGNDAwMDAwPTk1Nzc7ZS5TRjQxMDAwMD05NTc0O2UuU0Y0MjAwMDA9OTU2ODtlLlNGNDMwMDAwPTk1NTI7ZS5TRjQ0MDAwMD05NTgwO2UuU0Y0NTAwMDA9OTU3NTtlLlNGNDYwMDAwPTk1NzY7ZS5TRjQ3MDAwMD05NTcyO2UuU0Y0ODAwMDA9OTU3MztlLlNGNDkwMDAwPTk1NjE7ZS5TRjUwMDAwMD05NTYwO2UuU0Y1MTAwMDA9OTU1NDtlLlNGNTIwMDAwPTk1NTU7ZS5TRjUzMDAwMD05NTc5O2UuU0Y1NDAwMDA9OTU3ODtlLlNhY3V0ZT0zNDY7ZS5TYWN1dGVkb3RhY2NlbnQ9Nzc4MDtlLlNhbXBpZ3JlZWs9OTkyO2UuU2Nhcm9uPTM1MjtlLlNjYXJvbmRvdGFjY2VudD03NzgyO2UuU2Nhcm9uc21hbGw9NjMyMjk7ZS5TY2VkaWxsYT0zNTA7ZS5TY2h3YT0zOTk7ZS5TY2h3YWN5cmlsbGljPTEyNDA7ZS5TY2h3YWRpZXJlc2lzY3lyaWxsaWM9MTI0MjtlLlNjaXJjbGU9OTQxNjtlLlNjaXJjdW1mbGV4PTM0ODtlLlNjb21tYWFjY2VudD01MzY7ZS5TZG90YWNjZW50PTc3NzY7ZS5TZG90YmVsb3c9Nzc3ODtlLlNkb3RiZWxvd2RvdGFjY2VudD03Nzg0O2UuU2VoYXJtZW5pYW49MTM1NztlLlNldmVucm9tYW49ODU1MDtlLlNoYWFybWVuaWFuPTEzNTE7ZS5TaGFjeXJpbGxpYz0xMDY0O2UuU2hjaGFjeXJpbGxpYz0xMDY1O2UuU2hlaWNvcHRpYz05OTQ7ZS5TaGhhY3lyaWxsaWM9MTIxMDtlLlNoaW1hY29wdGljPTEwMDQ7ZS5TaWdtYT05MzE7ZS5TaXhyb21hbj04NTQ5O2UuU21vbm9zcGFjZT02NTMzMTtlLlNvZnRzaWduY3lyaWxsaWM9MTA2ODtlLlNzbWFsbD02MzM0NztlLlN0aWdtYWdyZWVrPTk4NjtlLlQ9ODQ7ZS5UYXU9OTMyO2UuVGJhcj0zNTg7ZS5UY2Fyb249MzU2O2UuVGNlZGlsbGE9MzU0O2UuVGNpcmNsZT05NDE3O2UuVGNpcmN1bWZsZXhiZWxvdz03NzkyO2UuVGNvbW1hYWNjZW50PTM1NDtlLlRkb3RhY2NlbnQ9Nzc4NjtlLlRkb3RiZWxvdz03Nzg4O2UuVGVjeXJpbGxpYz0xMDU4O2UuVGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk2O2UuVGVucm9tYW49ODU1MztlLlRldHNlY3lyaWxsaWM9MTIwNDtlLlRoZXRhPTkyMDtlLlRob29rPTQyODtlLlRob3JuPTIyMjtlLlRob3Juc21hbGw9NjM0ODY7ZS5UaHJlZXJvbWFuPTg1NDY7ZS5UaWxkZXNtYWxsPTYzMjMwO2UuVGl3bmFybWVuaWFuPTEzNTk7ZS5UbGluZWJlbG93PTc3OTA7ZS5UbW9ub3NwYWNlPTY1MzMyO2UuVG9hcm1lbmlhbj0xMzM3O2UuVG9uZWZpdmU9NDQ0O2UuVG9uZXNpeD0zODg7ZS5Ub25ldHdvPTQyMztlLlRyZXRyb2ZsZXhob29rPTQzMDtlLlRzZWN5cmlsbGljPTEwNjI7ZS5Uc2hlY3lyaWxsaWM9MTAzNTtlLlRzbWFsbD02MzM0ODtlLlR3ZWx2ZXJvbWFuPTg1NTU7ZS5Ud29yb21hbj04NTQ1O2UuVT04NTtlLlVhY3
101V0ZT0yMTg7ZS5VYWN1dGVzbWFsbD02MzQ4MjtlLlVicmV2ZT0zNjQ7ZS5VY2Fyb249NDY3O2UuVWNpcmNsZT05NDE4O2UuVWNpcmN1bWZsZXg9MjE5O2UuVWNpcmN1bWZsZXhiZWxvdz03Nzk4O2UuVWNpcmN1bWZsZXhzbWFsbD02MzQ4MztlLlVjeXJpbGxpYz0xMDU5O2UuVWRibGFjdXRlPTM2ODtlLlVkYmxncmF2ZT01MzI7ZS5VZGllcmVzaXM9MjIwO2UuVWRpZXJlc2lzYWN1dGU9NDcxO2UuVWRpZXJlc2lzYmVsb3c9Nzc5NDtlLlVkaWVyZXNpc2Nhcm9uPTQ3MztlLlVkaWVyZXNpc2N5cmlsbGljPTEyNjQ7ZS5VZGllcmVzaXNncmF2ZT00NzU7ZS5VZGllcmVzaXNtYWNyb249NDY5O2UuVWRpZXJlc2lzc21hbGw9NjM0ODQ7ZS5VZG90YmVsb3c9NzkwODtlLlVncmF2ZT0yMTc7ZS5VZ3JhdmVzbWFsbD02MzQ4MTtlLlVob29rYWJvdmU9NzkxMDtlLlVob3JuPTQzMTtlLlVob3JuYWN1dGU9NzkxMjtlLlVob3JuZG90YmVsb3c9NzkyMDtlLlVob3JuZ3JhdmU9NzkxNDtlLlVob3JuaG9va2Fib3ZlPTc5MTY7ZS5VaG9ybnRpbGRlPTc5MTg7ZS5VaHVuZ2FydW1sYXV0PTM2ODtlLlVodW5nYXJ1bWxhdXRjeXJpbGxpYz0xMjY2O2UuVWludmVydGVkYnJldmU9NTM0O2UuVWtjeXJpbGxpYz0xMTQ0O2UuVW1hY3Jvbj0zNjI7ZS5VbWFjcm9uY3lyaWxsaWM9MTI2MjtlLlVtYWNyb25kaWVyZXNpcz03ODAyO2UuVW1vbm9zcGFjZT02NTMzMztlLlVvZ29uZWs9MzcwO2UuVXBzaWxvbj05MzM7ZS5VcHNpbG9uMT05Nzg7ZS5VcHNpbG9uYWN1dGVob29rc3ltYm9sZ3JlZWs9OTc5O2UuVXBzaWxvbmFmcmljYW49NDMzO2UuVXBzaWxvbmRpZXJlc2lzPTkzOTtlLlVwc2lsb25kaWVyZXNpc2hvb2tzeW1ib2xncmVlaz05ODA7ZS5VcHNpbG9uaG9va3N5bWJvbD05Nzg7ZS5VcHNpbG9udG9ub3M9OTEwO2UuVXJpbmc9MzY2O2UuVXNob3J0Y3lyaWxsaWM9MTAzODtlLlVzbWFsbD02MzM0OTtlLlVzdHJhaWdodGN5cmlsbGljPTExOTg7ZS5Vc3RyYWlnaHRzdHJva2VjeXJpbGxpYz0xMjAwO2UuVXRpbGRlPTM2MDtlLlV0aWxkZWFjdXRlPTc4MDA7ZS5VdGlsZGViZWxvdz03Nzk2O2UuVj04NjtlLlZjaXJjbGU9OTQxOTtlLlZkb3RiZWxvdz03ODA2O2UuVmVjeXJpbGxpYz0xMDQyO2UuVmV3YXJtZW5pYW49MTM1ODtlLlZob29rPTQzNDtlLlZtb25vc3BhY2U9NjUzMzQ7ZS5Wb2FybWVuaWFuPTEzNTI7ZS5Wc21hbGw9NjMzNTA7ZS5WdGlsZGU9NzgwNDtlLlc9ODc7ZS5XYWN1dGU9NzgxMDtlLldjaXJjbGU9OTQyMDtlLldjaXJjdW1mbGV4PTM3MjtlLldkaWVyZXNpcz03ODEyO2UuV2RvdGFjY2VudD03ODE0O2UuV2RvdGJlbG93PTc4MTY7ZS5XZ3JhdmU9NzgwODtlLldtb25vc3BhY2U9NjUzMzU7ZS5Xc21hbGw9NjMzNTE7ZS5YPTg4O2UuWGNpcmNsZT05NDIxO2UuWGRpZXJlc2lzPTc4MjA7ZS5YZG90YWNjZW50PTc4MTg7ZS5YZWhhcm1lbmlhbj0xMzQxO2UuWGk9OTI2O2UuWG1vbm9zcGFjZT02NTMzNjtlLlhzbWFsbD02MzM1MjtlLlk9ODk7ZS5ZYWN1dGU9MjIxO2UuWWFjdXRlc21hbGw9NjM0ODU7ZS5ZYXRjeXJpbGxpYz0xMTIyO2UuWWNpcmNsZT05NDIyO2UuWWNpcmN1bWZsZXg9Mzc0O2UuWWRpZXJlc2lzPTM3NjtlLllkaWVyZXNpc3NtYWxsPTYzNDg3O2UuWWRvdGFjY2VudD03ODIyO2UuWWRvdGJlbG93PTc5MjQ7ZS5ZZXJpY3lyaWxsaWM9MTA2NztlLlllcnVkaWVyZXNpc2N5cmlsbGljPTEyNzI7ZS5ZZ3JhdmU9NzkyMjtlLllob29rPTQzNTtlLllob29rYWJvdmU9NzkyNjtlLllpYXJtZW5pYW49MTM0OTtlLllpY3lyaWxsaWM9MTAzMTtlLllpd25hcm1lbmlhbj0xMzYyO2UuWW1vbm9zcGFjZT02NTMzNztlLllzbWFsbD02MzM1MztlLll0aWxkZT03OTI4O2UuWXVzYmlnY3lyaWxsaWM9MTEzMDtlLll1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMjtlLll1c2xpdHRsZWN5cmlsbGljPTExMjY7ZS5ZdXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjg7ZS5aPTkwO2UuWmFhcm1lbmlhbj0xMzM0O2UuWmFjdXRlPTM3NztlLlpjYXJvbj0zODE7ZS5aY2Fyb25zbWFsbD02MzIzMTtlLlpjaXJjbGU9OTQyMztlLlpjaXJjdW1mbGV4PTc4MjQ7ZS5aZG90PTM3OTtlLlpkb3RhY2NlbnQ9Mzc5O2UuWmRvdGJlbG93PTc4MjY7ZS5aZWN5cmlsbGljPTEwNDc7ZS5aZWRlc2NlbmRlcmN5cmlsbGljPTExNzY7ZS5aZWRpZXJlc2lzY3lyaWxsaWM9MTI0NjtlLlpldGE9OTE4O2UuWmhlYXJtZW5pYW49MTMzODtlLlpoZWJyZXZlY3lyaWxsaWM9MTIxNztlLlpoZWN5cmlsbGljPTEwNDY7ZS5aaGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc0O2UuWmhlZGllcmVzaXNjeXJpbGxpYz0xMjQ0O2UuWmxpbmViZWxvdz03ODI4O2UuWm1vbm9zcGFjZT02NTMzODtlLlpzbWFsbD02MzM1NDtlLlpzdHJva2U9NDM3O2UuYT05NztlLmFhYmVuZ2FsaT0yNDM4O2UuYWFjdXRlPTIyNTtlLmFhZGV2YT0yMzEwO2UuYWFndWphcmF0aT0yNjk0O2UuYWFndXJtdWtoaT0yNTY2O2UuYWFtYXRyYWd1cm11a2hpPTI2MjI7ZS5hYXJ1c3F1YXJlPTEzMDU5O2UuYWF2b3dlbHNpZ25iZW5nYWxpPTI0OTQ7ZS5hYXZvd2Vsc2lnbmRldmE9MjM2NjtlLmFhdm93ZWxzaWduZ3VqYXJhdGk9Mjc1MDtlLmFiYnJldmlhdGlvbm1hcmthcm1lbmlhbj0xMzc1O2UuYWJicmV2aWF0aW9uc2lnbmRldmE9MjQxNjtlLmFiZW5nYWxpPTI0Mzc7ZS5hYm9wb21vZm89MTI1NzA7ZS5hYnJldmU9MjU5O2UuYWJyZXZlYWN1dGU9Nzg1NTtlLmFicmV2ZWN5cmlsbGljPTEyMzM7ZS5hYnJldmVkb3RiZWxvdz03ODYzO2UuYWJyZXZlZ3JhdmU9Nzg1NztlLmFicmV2ZWhvb2thYm92ZT03ODU5O2UuYWJyZXZldGlsZGU9Nzg2MTtlLmFjYXJvbj00NjI7ZS5hY2lyY2xlPTk0MjQ7ZS5hY2lyY3VtZmxleD0yMjY7ZS5hY2lyY3VtZmxleGFjdXRlPTc4NDU7ZS5hY2lyY3VtZmxleGRvdGJlbG93PTc4NTM7ZS5hY2lyY3VtZmxleGdyYXZlPTc4NDc7ZS5hY2lyY3VtZmxleGhvb2thYm92ZT03ODQ5O2UuYWNpcmN1bWZsZXh0aWxkZT03ODUxO2UuYWN1dGU9MTgwO2UuYWN1dGViZWxvd2NtYj03OTE7ZS5hY3V0ZWNtYj03Njk7ZS5hY3V0ZWNvbWI9NzY5O2UuYWN1dGVkZXZhPTIzODg7ZS5hY3V0ZWxvd21vZD03MTk7ZS5hY3V0ZXRvbmVjbWI9ODMzO2UuYWN5cmlsbGljPTEwNzI7ZS5hZGJsZ3JhdmU9NTEzO2UuYWRkYWtndXJtdWtoaT0yNjczO2UuYWRldmE9MjMwOTtlLmFkaWVyZXNpcz0yMjg7ZS5hZGllcmVzaXNjeXJpbGxpYz0xMjM1O2UuYWRpZXJlc2lzbWFjcm9uPTQ3OTtlLmFkb3RiZWxvdz03ODQxO2UuYWRvdG1hY3Jvbj00ODE7ZS5hZT0yMzA7ZS5hZWFjdXRlPTUwOTtlLmFla29yZWFuPTEyNjI0O2UuYWVtYWNyb249NDgzO2UuYWZpaTAwMjA4PTgyMTM7ZS5hZmlpMDg5NDE9ODM1NjtlLmFmaWkxMDAxNz0xMDQwO2UuYWZpaTEwMDE4PTEwNDE7ZS5hZmlpMTAwMTk9MTA0MjtlLmFmaWkxMDA
101yMD0xMDQzO2UuYWZpaTEwMDIxPTEwNDQ7ZS5hZmlpMTAwMjI9MTA0NTtlLmFmaWkxMDAyMz0xMDI1O2UuYWZpaTEwMDI0PTEwNDY7ZS5hZmlpMTAwMjU9MTA0NztlLmFmaWkxMDAyNj0xMDQ4O2UuYWZpaTEwMDI3PTEwNDk7ZS5hZmlpMTAwMjg9MTA1MDtlLmFmaWkxMDAyOT0xMDUxO2UuYWZpaTEwMDMwPTEwNTI7ZS5hZmlpMTAwMzE9MTA1MztlLmFmaWkxMDAzMj0xMDU0O2UuYWZpaTEwMDMzPTEwNTU7ZS5hZmlpMTAwMzQ9MTA1NjtlLmFmaWkxMDAzNT0xMDU3O2UuYWZpaTEwMDM2PTEwNTg7ZS5hZmlpMTAwMzc9MTA1OTtlLmFmaWkxMDAzOD0xMDYwO2UuYWZpaTEwMDM5PTEwNjE7ZS5hZmlpMTAwNDA9MTA2MjtlLmFmaWkxMDA0MT0xMDYzO2UuYWZpaTEwMDQyPTEwNjQ7ZS5hZmlpMTAwNDM9MTA2NTtlLmFmaWkxMDA0ND0xMDY2O2UuYWZpaTEwMDQ1PTEwNjc7ZS5hZmlpMTAwNDY9MTA2ODtlLmFmaWkxMDA0Nz0xMDY5O2UuYWZpaTEwMDQ4PTEwNzA7ZS5hZmlpMTAwNDk9MTA3MTtlLmFmaWkxMDA1MD0xMTY4O2UuYWZpaTEwMDUxPTEwMjY7ZS5hZmlpMTAwNTI9MTAyNztlLmFmaWkxMDA1Mz0xMDI4O2UuYWZpaTEwMDU0PTEwMjk7ZS5hZmlpMTAwNTU9MTAzMDtlLmFmaWkxMDA1Nj0xMDMxO2UuYWZpaTEwMDU3PTEwMzI7ZS5hZmlpMTAwNTg9MTAzMztlLmFmaWkxMDA1OT0xMDM0O2UuYWZpaTEwMDYwPTEwMzU7ZS5hZmlpMTAwNjE9MTAzNjtlLmFmaWkxMDA2Mj0xMDM4O2UuYWZpaTEwMDYzPTYzMTcyO2UuYWZpaTEwMDY0PTYzMTczO2UuYWZpaTEwMDY1PTEwNzI7ZS5hZmlpMTAwNjY9MTA3MztlLmFmaWkxMDA2Nz0xMDc0O2UuYWZpaTEwMDY4PTEwNzU7ZS5hZmlpMTAwNjk9MTA3NjtlLmFmaWkxMDA3MD0xMDc3O2UuYWZpaTEwMDcxPTExMDU7ZS5hZmlpMTAwNzI9MTA3ODtlLmFmaWkxMDA3Mz0xMDc5O2UuYWZpaTEwMDc0PTEwODA7ZS5hZmlpMTAwNzU9MTA4MTtlLmFmaWkxMDA3Nj0xMDgyO2UuYWZpaTEwMDc3PTEwODM7ZS5hZmlpMTAwNzg9MTA4NDtlLmFmaWkxMDA3OT0xMDg1O2UuYWZpaTEwMDgwPTEwODY7ZS5hZmlpMTAwODE9MTA4NztlLmFmaWkxMDA4Mj0xMDg4O2UuYWZpaTEwMDgzPTEwODk7ZS5hZmlpMTAwODQ9MTA5MDtlLmFmaWkxMDA4NT0xMDkxO2UuYWZpaTEwMDg2PTEwOTI7ZS5hZmlpMTAwODc9MTA5MztlLmFmaWkxMDA4OD0xMDk0O2UuYWZpaTEwMDg5PTEwOTU7ZS5hZmlpMTAwOTA9MTA5NjtlLmFmaWkxMDA5MT0xMDk3O2UuYWZpaTEwMDkyPTEwOTg7ZS5hZmlpMTAwOTM9MTA5OTtlLmFmaWkxMDA5ND0xMTAwO2UuYWZpaTEwMDk1PTExMDE7ZS5hZmlpMTAwOTY9MTEwMjtlLmFmaWkxMDA5Nz0xMTAzO2UuYWZpaTEwMDk4PTExNjk7ZS5hZmlpMTAwOTk9MTEwNjtlLmFmaWkxMDEwMD0xMTA3O2UuYWZpaTEwMTAxPTExMDg7ZS5hZmlpMTAxMDI9MTEwOTtlLmFmaWkxMDEwMz0xMTEwO2UuYWZpaTEwMTA0PTExMTE7ZS5hZmlpMTAxMDU9MTExMjtlLmFmaWkxMDEwNj0xMTEzO2UuYWZpaTEwMTA3PTExMTQ7ZS5hZmlpMTAxMDg9MTExNTtlLmFmaWkxMDEwOT0xMTE2O2UuYWZpaTEwMTEwPTExMTg7ZS5hZmlpMTAxNDU9MTAzOTtlLmFmaWkxMDE0Nj0xMTIyO2UuYWZpaTEwMTQ3PTExMzg7ZS5hZmlpMTAxNDg9MTE0MDtlLmFmaWkxMDE5Mj02MzE3NDtlLmFmaWkxMDE5Mz0xMTE5O2UuYWZpaTEwMTk0PTExMjM7ZS5hZmlpMTAxOTU9MTEzOTtlLmFmaWkxMDE5Nj0xMTQxO2UuYWZpaTEwODMxPTYzMTc1O2UuYWZpaTEwODMyPTYzMTc2O2UuYWZpaTEwODQ2PTEyNDE7ZS5hZmlpMjk5PTgyMDY7ZS5hZmlpMzAwPTgyMDc7ZS5hZmlpMzAxPTgyMDU7ZS5hZmlpNTczODE9MTY0MjtlLmFmaWk1NzM4OD0xNTQ4O2UuYWZpaTU3MzkyPTE2MzI7ZS5hZmlpNTczOTM9MTYzMztlLmFmaWk1NzM5ND0xNjM0O2UuYWZpaTU3Mzk1PTE2MzU7ZS5hZmlpNTczOTY9MTYzNjtlLmFmaWk1NzM5Nz0xNjM3O2UuYWZpaTU3Mzk4PTE2Mzg7ZS5hZmlpNTczOTk9MTYzOTtlLmFmaWk1NzQwMD0xNjQwO2UuYWZpaTU3NDAxPTE2NDE7ZS5hZmlpNTc0MDM9MTU2MztlLmFmaWk1NzQwNz0xNTY3O2UuYWZpaTU3NDA5PTE1Njk7ZS5hZmlpNTc0MTA9MTU3MDtlLmFmaWk1NzQxMT0xNTcxO2UuYWZpaTU3NDEyPTE1NzI7ZS5hZmlpNTc0MTM9MTU3MztlLmFmaWk1NzQxND0xNTc0O2UuYWZpaTU3NDE1PTE1NzU7ZS5hZmlpNTc0MTY9MTU3NjtlLmFmaWk1NzQxNz0xNTc3O2UuYWZpaTU3NDE4PTE1Nzg7ZS5hZmlpNTc0MTk9MTU3OTtlLmFmaWk1NzQyMD0xNTgwO2UuYWZpaTU3NDIxPTE1ODE7ZS5hZmlpNTc0MjI9MTU4MjtlLmFmaWk1NzQyMz0xNTgzO2UuYWZpaTU3NDI0PTE1ODQ7ZS5hZmlpNTc0MjU9MTU4NTtlLmFmaWk1NzQyNj0xNTg2O2UuYWZpaTU3NDI3PTE1ODc7ZS5hZmlpNTc0Mjg9MTU4ODtlLmFmaWk1NzQyOT0xNTg5O2UuYWZpaTU3NDMwPTE1OTA7ZS5hZmlpNTc0MzE9MTU5MTtlLmFmaWk1NzQzMj0xNTkyO2UuYWZpaTU3NDMzPTE1OTM7ZS5hZmlpNTc0MzQ9MTU5NDtlLmFmaWk1NzQ0MD0xNjAwO2UuYWZpaTU3NDQxPTE2MDE7ZS5hZmlpNTc0NDI9MTYwMjtlLmFmaWk1NzQ0Mz0xNjAzO2UuYWZpaTU3NDQ0PTE2MDQ7ZS5hZmlpNTc0NDU9MTYwNTtlLmFmaWk1NzQ0Nj0xNjA2O2UuYWZpaTU3NDQ4PTE2MDg7ZS5hZmlpNTc0NDk9MTYwOTtlLmFmaWk1NzQ1MD0xNjEwO2UuYWZpaTU3NDUxPTE2MTE7ZS5hZmlpNTc0NTI9MTYxMjtlLmFmaWk1NzQ1Mz0xNjEzO2UuYWZpaTU3NDU0PTE2MTQ7ZS5hZmlpNTc0NTU9MTYxNTtlLmFmaWk1NzQ1Nj0xNjE2O2UuYWZpaTU3NDU3PTE2MTc7ZS5hZmlpNTc0NTg9MTYxODtlLmFmaWk1NzQ3MD0xNjA3O2UuYWZpaTU3NTA1PTE3MDA7ZS5hZmlpNTc1MDY9MTY2MjtlLmFmaWk1NzUwNz0xNjcwO2UuYWZpaTU3NTA4PTE2ODg7ZS5hZmlpNTc1MDk9MTcxMTtlLmFmaWk1NzUxMT0xNjU3O2UuYWZpaTU3NTEyPTE2NzI7ZS5hZmlpNTc1MTM9MTY4MTtlLmFmaWk1NzUxND0xNzIyO2UuYWZpaTU3NTE5PTE3NDY7ZS5hZmlpNTc1MzQ9MTc0OTtlLmFmaWk1NzYzNj04MzYyO2UuYWZpaTU3NjQ1PTE0NzA7ZS5hZmlpNTc2NTg9MTQ3NTtlLmFmaWk1NzY2ND0xNDg4O2UuYWZpaTU3NjY1PTE0ODk7ZS5hZmlpNTc2NjY9MTQ5MDtlLmFmaWk1NzY2Nz0xNDkxO2UuYWZpaTU3NjY4PTE0OTI7ZS5hZmlpNTc2Njk9MTQ5MztlLmFmaWk1NzY3MD0xNDk0O2UuYWZpaTU3NjcxPTE0OTU7ZS5hZmlpNTc2NzI9MTQ5NjtlLmFmaWk1NzY3Mz0xNDk3O2UuYWZpaTU3Njc0PTE0OTg7ZS5hZmlpNTc2NzU9MTQ5OTtlLmFmaWk1NzY3Nj0xNTAwO2UuYWZpaTU3Njc3PTE1MDE7ZS5hZmlpNTc2Nzg9MTUwMjtlLmFmaWk1NzY3OT0xNTAzO2UuYWZpaTU3NjgwPTE1MDQ7ZS5hZmlpNTc2ODE9MTUwNTtlLmFmaWk1NzY4Mj0xNTA2O2UuYWZpaTU3NjgzPTE1MDc7ZS5hZmlpNTc2ODQ9MTUwODtlLmFmaWk1NzY4NT0xNTA5O2UuYWZpaTU3Njg2PTE1MTA7ZS5hZmlpNTc2ODc9MTUxMTtlLmFmaWk1NzY4OD0xNTEyO2UuYWZpaTU3Njg5PTE1MTM7ZS5hZmlpNTc2OTA9MTUxNDtlLmFmaWk1NzY5ND02NDI5ODtlLmFmaWk1NzY5NT02NDI5OTtlLmFmaWk1NzcwMD02NDMzMTtlLmFmaWk1NzcwNT02NDI4NztlLmFmaWk1NzcxNj0xNTIwO2UuYWZpaTU3NzE3PTE1MjE7ZS5hZmlpNTc3MTg9MTUyMjtlLmFmaWk1NzcyMz02NDMwOTtlLmFmaWk1Nzc5Mz0xNDYwO2UuYWZpaTU3Nzk0PTE0NjE7ZS5hZmlpNTc3OTU9MTQ2MjtlLmFmaWk1Nzc5Nj0xNDY3O2UuYWZpaTU3Nzk3PTE0NjQ7ZS5hZmlpNTc3OTg9MTQ2MztlLmFmaWk1Nzc5OT0xNDU2O2UuYWZpaTU3ODAwPTE0NTg7ZS5hZmlpNTc4MDE9MTQ1NztlLmFmaWk1NzgwMj0xNDU5O2UuYWZpaTU3ODAzPTE0NzQ7ZS5hZmlpNTc4MDQ9MTQ3MztlLmFmaWk1NzgwNj0xNDY1O2UuYWZpaTU3ODA3PTE0Njg7ZS5hZmlpNTc4Mzk9MTQ2OTtlLmFmaWk1Nzg0MT0xNDcxO2UuYWZpaTU3ODQyPTE0NzI7ZS5hZmlpNTc5Mjk9NzAwO2UuYWZpaTYxMjQ4PTg0NTM7ZS5hZmlpNjEyODk9ODQ2NztlLmFmaWk2MTM1Mj04NDcwO2UuYWZpaTYxNTczPTgyMzY7ZS5hZmlpNjE1NzQ9ODIzNztlLmFmaWk2MTU3NT04MjM4O2UuYWZpaTYxNjY0PTgyMDQ7ZS5hZmlpNjMxNjc9MTY0NTtlLmFmaWk2NDkzNz03MDE7ZS5hZ3JhdmU9MjI0O2UuYWd1amFyYXRpPTI2OTM7ZS5hZ3VybXVraGk9MjU2NTtlLmFoaXJhZ2FuYT0xMjM1NDtlLmFob29rYWJvdmU9Nzg0MztlLmFpYmVuZ2FsaT0yNDQ4O2UuYWlib3BvbW9mbz0xMjU3NDtlLmFpZGV2YT0yMzIwO2UuYWllY3lyaWxsaWM9MTIzNztlLmFpZ3VqYXJhdGk9MjcwNDtlLmFpZ3VybXVraGk9MjU3NjtlLmFpbWF0cmFndXJtdWtoaT0yNjMyO2UuYWluYXJhYmljPTE1OTM7ZS5haW5maW5hbGFyYWJpYz02NTIyNjtlLmFpbmluaXRpYWxhcmFiaWM9NjUyMjc7ZS5haW5tZWRpYWxhcmFiaWM9NjUyMjg7ZS5haW52ZXJ0ZWRicmV2ZT01MTU7ZS5haXZvd2Vsc2lnbmJlbmdhbGk9MjUwNDtlLmFpdm93ZWxzaWduZGV2YT0yMzc2O2UuYWl2b3dlbHNpZ25ndWphcmF0aT0yNzYwO2UuYWthdGFrYW5hPTEyNDUwO2UuYWthdGFrYW5haGFsZndpZHRoPTY1MzkzO2UuYWtvcmVhbj0xMjYyMztlLmFsZWY9MTQ4ODtlLmFsZWZhcmFiaWM9MTU3NTtlLmFsZWZkYWdlc2hoZWJyZXc9NjQzMDQ7ZS5hbGVmZmluYWxhcmFiaWM9NjUxNjY7ZS5hbGVmaGFtemFhYm92ZWFyYWJpYz0xNTcxO2UuYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE1NjtlLmFsZWZoYW16YWJlbG93YXJhYmljPTE1NzM7ZS5hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1MTYwO2UuYWxlZmhlYnJldz0xNDg4O2UuYWxlZmxhbWVkaGVicmV3PTY0MzM1O2UuYWxlZm1hZGRhYWJvdmVhcmFiaWM9MTU3MDtlLmFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUxNTQ7ZS5hbGVmbWFrc3VyYWFyYWJpYz0xNjA5O2UuYWxlZm1ha3N1cmFmaW5hbGFyYWJpYz02NTI2NDtlLmFsZWZtYWtzdXJhaW5pdGlhbGFyYWJpYz02NTI2NztlLmFsZWZtYWtzdXJhbWVkaWFsYXJhYmljPTY1MjY4O2UuYWxlZnBhdGFoaGVicmV3PTY0MzAyO2UuYWxlZnFhbWF0c2hlYnJldz02NDMwMztlLmFsZXBoPTg1MDE7ZS5hbGxlcXVhbD04NzgwO2UuYWxwaGE9OTQ1O2UuYWxwaGF0b25vcz05NDA7ZS
1015hbWFjcm9uPTI1NztlLmFtb25vc3BhY2U9NjUzNDU7ZS5hbXBlcnNhbmQ9Mzg7ZS5hbXBlcnNhbmRtb25vc3BhY2U9NjUyODY7ZS5hbXBlcnNhbmRzbWFsbD02MzI3MDtlLmFtc3F1YXJlPTEzMjUwO2UuYW5ib3BvbW9mbz0xMjU3ODtlLmFuZ2JvcG9tb2ZvPTEyNTgwO2UuYW5nYnJhY2tldGxlZnQ9MTIyOTY7ZS5hbmdicmFja2V0cmlnaHQ9MTIyOTc7ZS5hbmdraGFua2h1dGhhaT0zNjc0O2UuYW5nbGU9ODczNjtlLmFuZ2xlYnJhY2tldGxlZnQ9MTIyOTY7ZS5hbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODc7ZS5hbmdsZWJyYWNrZXRyaWdodD0xMjI5NztlLmFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODg7ZS5hbmdsZWxlZnQ9OTAwMTtlLmFuZ2xlcmlnaHQ9OTAwMjtlLmFuZ3N0cm9tPTg0OTE7ZS5hbm90ZWxlaWE9OTAzO2UuYW51ZGF0dGFkZXZhPTIzODY7ZS5hbnVzdmFyYWJlbmdhbGk9MjQzNDtlLmFudXN2YXJhZGV2YT0yMzA2O2UuYW51c3ZhcmFndWphcmF0aT0yNjkwO2UuYW9nb25laz0yNjE7ZS5hcGFhdG9zcXVhcmU9MTMwNTY7ZS5hcGFyZW49OTM3MjtlLmFwb3N0cm9waGVhcm1lbmlhbj0xMzcwO2UuYXBvc3Ryb3BoZW1vZD03MDA7ZS5hcHBsZT02Mzc0MztlLmFwcHJvYWNoZXM9ODc4NDtlLmFwcHJveGVxdWFsPTg3NzY7ZS5hcHByb3hlcXVhbG9yaW1hZ2U9ODc4NjtlLmFwcHJveGltYXRlbHllcXVhbD04NzczO2UuYXJhZWFla29yZWFuPTEyNjg2O2UuYXJhZWFrb3JlYW49MTI2ODU7ZS5hcmM9ODk3ODtlLmFyaWdodGhhbGZyaW5nPTc4MzQ7ZS5hcmluZz0yMjk7ZS5hcmluZ2FjdXRlPTUwNztlLmFyaW5nYmVsb3c9NzY4MTtlLmFycm93Ym90aD04NTk2O2UuYXJyb3dkYXNoZG93bj04Njc1O2UuYXJyb3dkYXNobGVmdD04NjcyO2UuYXJyb3dkYXNocmlnaHQ9ODY3NDtlLmFycm93ZGFzaHVwPTg2NzM7ZS5hcnJvd2RibGJvdGg9ODY2MDtlLmFycm93ZGJsZG93bj04NjU5O2UuYXJyb3dkYmxsZWZ0PTg2NTY7ZS5hcnJvd2RibHJpZ2h0PTg2NTg7ZS5hcnJvd2RibHVwPTg2NTc7ZS5hcnJvd2Rvd249ODU5NTtlLmFycm93ZG93bmxlZnQ9ODYwMTtlLmFycm93ZG93bnJpZ2h0PTg2MDA7ZS5hcnJvd2Rvd253aGl0ZT04NjgxO2UuYXJyb3doZWFkZG93bm1vZD03MDk7ZS5hcnJvd2hlYWRsZWZ0bW9kPTcwNjtlLmFycm93aGVhZHJpZ2h0bW9kPTcwNztlLmFycm93aGVhZHVwbW9kPTcwODtlLmFycm93aG9yaXpleD02MzcxOTtlLmFycm93bGVmdD04NTkyO2UuYXJyb3dsZWZ0ZGJsPTg2NTY7ZS5hcnJvd2xlZnRkYmxzdHJva2U9ODY1MztlLmFycm93bGVmdG92ZXJyaWdodD04NjQ2O2UuYXJyb3dsZWZ0d2hpdGU9ODY3ODtlLmFycm93cmlnaHQ9ODU5NDtlLmFycm93cmlnaHRkYmxzdHJva2U9ODY1NTtlLmFycm93cmlnaHRoZWF2eT0xMDE0MjtlLmFycm93cmlnaHRvdmVybGVmdD04NjQ0O2UuYXJyb3dyaWdodHdoaXRlPTg2ODA7ZS5hcnJvd3RhYmxlZnQ9ODY3NjtlLmFycm93dGFicmlnaHQ9ODY3NztlLmFycm93dXA9ODU5MztlLmFycm93dXBkbj04NTk3O2UuYXJyb3d1cGRuYnNlPTg2MTY7ZS5hcnJvd3VwZG93bmJhc2U9ODYxNjtlLmFycm93dXBsZWZ0PTg1OTg7ZS5hcnJvd3VwbGVmdG9mZG93bj04NjQ1O2UuYXJyb3d1cHJpZ2h0PTg1OTk7ZS5hcnJvd3Vwd2hpdGU9ODY3OTtlLmFycm93dmVydGV4PTYzNzE4O2UuYXNjaWljaXJjdW09OTQ7ZS5hc2NpaWNpcmN1bW1vbm9zcGFjZT02NTM0MjtlLmFzY2lpdGlsZGU9MTI2O2UuYXNjaWl0aWxkZW1vbm9zcGFjZT02NTM3NDtlLmFzY3JpcHQ9NTkzO2UuYXNjcmlwdHR1cm5lZD01OTQ7ZS5hc21hbGxoaXJhZ2FuYT0xMjM1MztlLmFzbWFsbGthdGFrYW5hPTEyNDQ5O2UuYXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODM7ZS5hc3Rlcmlzaz00MjtlLmFzdGVyaXNrYWx0b25lYXJhYmljPTE2NDU7ZS5hc3Rlcmlza2FyYWJpYz0xNjQ1O2UuYXN0ZXJpc2ttYXRoPTg3Mjc7ZS5hc3Rlcmlza21vbm9zcGFjZT02NTI5MDtlLmFzdGVyaXNrc21hbGw9NjUxMjE7ZS5hc3RlcmlzbT04MjU4O2UuYXN1cGVyaW9yPTYzMjA5O2UuYXN5bXB0b3RpY2FsbHllcXVhbD04NzcxO2UuYXQ9NjQ7ZS5hdGlsZGU9MjI3O2UuYXRtb25vc3BhY2U9NjUzMTI7ZS5hdHNtYWxsPTY1MTMxO2UuYXR1cm5lZD01OTI7ZS5hdWJlbmdhbGk9MjQ1MjtlLmF1Ym9wb21vZm89MTI1NzY7ZS5hdWRldmE9MjMyNDtlLmF1Z3VqYXJhdGk9MjcwODtlLmF1Z3VybXVraGk9MjU4MDtlLmF1bGVuZ3RobWFya2JlbmdhbGk9MjUxOTtlLmF1bWF0cmFndXJtdWtoaT0yNjM2O2UuYXV2b3dlbHNpZ25iZW5nYWxpPTI1MDg7ZS5hdXZvd2Vsc2lnbmRldmE9MjM4MDtlLmF1dm93ZWxzaWduZ3VqYXJhdGk9Mjc2NDtlLmF2YWdyYWhhZGV2YT0yMzY1O2UuYXliYXJtZW5pYW49MTM3NztlLmF5aW49MTUwNjtlLmF5aW5hbHRvbmVoZWJyZXc9NjQyODg7ZS5heWluaGVicmV3PTE1MDY7ZS5iPTk4O2UuYmFiZW5nYWxpPTI0NzY7ZS5iYWNrc2xhc2g9OTI7ZS5iYWNrc2xhc2htb25vc3BhY2U9NjUzNDA7ZS5iYWRldmE9MjM0ODtlLmJhZ3VqYXJhdGk9MjczMjtlLmJhZ3VybXVraGk9MjYwNDtlLmJhaGlyYWdhbmE9MTI0MDA7ZS5iYWh0dGhhaT0zNjQ3O2UuYmFrYXRha2FuYT0xMjQ5NjtlLmJhcj0xMjQ7ZS5iYXJtb25vc3BhY2U9NjUzNzI7ZS5iYm9wb21vZm89MTI1NDk7ZS5iY2lyY2xlPTk0MjU7ZS5iZG90YWNjZW50PTc2ODM7ZS5iZG90YmVsb3c9NzY4NTtlLmJlYW1lZHNpeHRlZW50aG5vdGVzPTk4MzY7ZS5iZWNhdXNlPTg3NTc7ZS5iZWN5cmlsbGljPTEwNzM7ZS5iZWhhcmFiaWM9MTU3NjtlLmJlaGZpbmFsYXJhYmljPTY1MTY4O2UuYmVoaW5pdGlhbGFyYWJpYz02NTE2OTtlLmJlaGlyYWdhbmE9MTI0MDk7ZS5iZWhtZWRpYWxhcmFiaWM9NjUxNzA7ZS5iZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3MTtlLmJlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyMDtlLmJlaG5vb25maW5hbGFyYWJpYz02NDYyMTtlLmJla2F0YWthbmE9MTI1MDU7ZS5iZW5hcm1lbmlhbj0xMzc4O2UuYmV0PTE0ODk7ZS5iZXRhPTk0NjtlLmJldGFzeW1ib2xncmVlaz05NzY7ZS5iZXRkYWdlc2g9NjQzMDU7ZS5iZXRkYWdlc2hoZWJyZXc9NjQzMDU7ZS5iZXRoZWJyZXc9MTQ4OTtlLmJldHJhZmVoZWJyZXc9NjQzMzI7ZS5iaGFiZW5nYWxpPTI0Nzc7ZS5iaGFkZXZhPTIzNDk7ZS5iaGFndWphcmF0aT0yNzMzO2UuYmhhZ3VybXVraGk9MjYwNTtlLmJob29rPTU5NTtlLmJpaGlyYWdhbmE9MTI0MDM7ZS5iaWthdGFrYW5hPTEyNDk5O2UuYmlsYWJpYWxjbGljaz02NjQ7ZS5iaW5kaWd1cm11a2hpPTI1NjI7ZS5iaXJ1c3F1YXJlPTEzMTA1O2UuYmxhY2tjaXJjbGU9OTY3OTtlLmJsYWNrZGlhbW9uZD05NjcwO2UuYmxhY2tkb3ducG9pbnRpbmd0cmlhbmdsZT05NjYwO2UuYmxhY2tsZWZ0cG9pbnRpbmdwb2ludGVyPTk2Njg7ZS5ibGFja2xlZnRwb2ludGluZ3RyaWFuZ2xlPTk2NjQ7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0bGVmdD0xMjMwNDtlLmJsYWNrbGVudGljdWxhcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODM7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHQ9MTIzMDU7ZS5ibGFja2xlbnRpY3VsYXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA4NDtlLmJsYWNrbG93ZXJsZWZ0dHJpYW5nbGU9OTY5OTtlLmJsYWNrbG93ZXJyaWdodHRyaWFuZ2xlPTk2OTg7ZS5ibGFja3JlY3RhbmdsZT05NjQ0O2UuYmxhY2tyaWdodHBvaW50aW5ncG9pbnRlcj05NjU4O2UuYmxhY2tyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NDtlLmJsYWNrc21hbGxzcXVhcmU9OTY0MjtlLmJsYWNrc21pbGluZ2ZhY2U9OTc4NztlLmJsYWNrc3F1YXJlPTk2MzI7ZS5ibGFja3N0YXI9OTczMztlLmJsYWNrdXBwZXJsZWZ0dHJpYW5nbGU9OTcwMDtlLmJsYWNrdXBwZXJyaWdodHRyaWFuZ2xlPTk3MDE7ZS5ibGFja3VwcG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NTI7ZS5ibGFja3VwcG9pbnRpbmd0cmlhbmdsZT05NjUwO2UuYmxhbms9OTI1MTtlLmJsaW5lYmVsb3c9NzY4NztlLmJsb2NrPTk2MDg7ZS5ibW9ub3NwYWNlPTY1MzQ2O2UuYm9iYWltYWl0aGFpPTM2MTA7ZS5ib2hpcmFnYW5hPTEyNDEyO2UuYm9rYXRha2FuYT0xMjUwODtlLmJwYXJlbj05MzczO2UuYnFzcXVhcmU9MTMyNTE7ZS5icmFjZWV4PTYzNzMyO2UuYnJhY2VsZWZ0PTEyMztlLmJyYWNlbGVmdGJ0PTYzNzMxO2UuYnJhY2VsZWZ0bWlkPTYzNzMwO2UuYnJhY2VsZWZ0bW9ub3NwYWNlPTY1MzcxO2UuYnJhY2VsZWZ0c21hbGw9NjUxMTU7ZS5icmFjZWxlZnR0cD02MzcyOTtlLmJyYWNlbGVmdHZlcnRpY2FsPTY1MDc5O2UuYnJhY2VyaWdodD0xMjU7ZS5icmFjZXJpZ2h0YnQ9NjM3NDI7ZS5icmFjZXJpZ2h0bWlkPTYzNzQxO2UuYnJhY2VyaWdodG1vbm9zcGFjZT02NTM3MztlLmJyYWNlcmlnaHRzbWFsbD02NTExNjtlLmJyYWNlcmlnaHR0cD02Mzc0MDtlLmJyYWNlcmlnaHR2ZXJ0aWNhbD02NTA4MDtlLmJyYWNrZXRsZWZ0PTkxO2UuYnJhY2tldGxlZnRidD02MzcyODtlLmJyYWNrZXRsZWZ0ZXg9NjM3Mjc7ZS5icmFja2V0bGVmdG1vbm9zcGFjZT02NTMzOTtlLmJyYWNrZXRsZWZ0dHA9NjM3MjY7ZS5icmFja2V0cmlnaHQ9OTM7ZS5icmFja2V0cmlnaHRidD02MzczOTtlLmJyYWNrZXRyaWdodGV4PTYzNzM4O2UuYnJhY2tldHJpZ2h0bW9ub3NwYWNlPTY1MzQxO2UuYnJhY2tldHJpZ2h0dHA9NjM3Mzc7ZS5icmV2ZT03Mjg7ZS5icmV2ZWJlbG93Y21iPTgxNDtlLmJyZXZlY21iPTc3NDtlLmJyZXZlaW52ZXJ0ZWRiZWxvd2NtYj04MTU7ZS5icmV2ZWludmVydGVkY21iPTc4NTtlLmJyZXZlaW52ZXJ0ZWRkb3VibGVjbWI9ODY1O2UuYnJpZGdlYmVsb3djbWI9ODEwO2UuYnJpZGdlaW52ZXJ0ZWRiZWxvd2NtYj04MjY7ZS
1015icm9rZW5iYXI9MTY2O2UuYnN0cm9rZT0zODQ7ZS5ic3VwZXJpb3I9NjMyMTA7ZS5idG9wYmFyPTM4NztlLmJ1aGlyYWdhbmE9MTI0MDY7ZS5idWthdGFrYW5hPTEyNTAyO2UuYnVsbGV0PTgyMjY7ZS5idWxsZXRpbnZlcnNlPTk2ODg7ZS5idWxsZXRvcGVyYXRvcj04NzI5O2UuYnVsbHNleWU9OTY3ODtlLmM9OTk7ZS5jYWFybWVuaWFuPTEzOTA7ZS5jYWJlbmdhbGk9MjQ1ODtlLmNhY3V0ZT0yNjM7ZS5jYWRldmE9MjMzMDtlLmNhZ3VqYXJhdGk9MjcxNDtlLmNhZ3VybXVraGk9MjU4NjtlLmNhbHNxdWFyZT0xMzE5MjtlLmNhbmRyYWJpbmR1YmVuZ2FsaT0yNDMzO2UuY2FuZHJhYmluZHVjbWI9Nzg0O2UuY2FuZHJhYmluZHVkZXZhPTIzMDU7ZS5jYW5kcmFiaW5kdWd1amFyYXRpPTI2ODk7ZS5jYXBzbG9jaz04NjgyO2UuY2FyZW9mPTg0NTM7ZS5jYXJvbj03MTE7ZS5jYXJvbmJlbG93Y21iPTgxMjtlLmNhcm9uY21iPTc4MDtlLmNhcnJpYWdlcmV0dXJuPTg2Mjk7ZS5jYm9wb21vZm89MTI1Njg7ZS5jY2Fyb249MjY5O2UuY2NlZGlsbGE9MjMxO2UuY2NlZGlsbGFhY3V0ZT03Njg5O2UuY2NpcmNsZT05NDI2O2UuY2NpcmN1bWZsZXg9MjY1O2UuY2N1cmw9NTk3O2UuY2RvdD0yNjc7ZS5jZG90YWNjZW50PTI2NztlLmNkc3F1YXJlPTEzMjUzO2UuY2VkaWxsYT0xODQ7ZS5jZWRpbGxhY21iPTgwNztlLmNlbnQ9MTYyO2UuY2VudGlncmFkZT04NDUxO2UuY2VudGluZmVyaW9yPTYzMTk5O2UuY2VudG1vbm9zcGFjZT02NTUwNDtlLmNlbnRvbGRzdHlsZT02MzM5NDtlLmNlbnRzdXBlcmlvcj02MzIwMDtlLmNoYWFybWVuaWFuPTE0MDE7ZS5jaGFiZW5nYWxpPTI0NTk7ZS5jaGFkZXZhPTIzMzE7ZS5jaGFndWphcmF0aT0yNzE1O2UuY2hhZ3VybXVraGk9MjU4NztlLmNoYm9wb21vZm89MTI1NjQ7ZS5jaGVhYmtoYXNpYW5jeXJpbGxpYz0xMjEzO2UuY2hlY2ttYXJrPTEwMDAzO2UuY2hlY3lyaWxsaWM9MTA5NTtlLmNoZWRlc2NlbmRlcmFia2hhc2lhbmN5cmlsbGljPTEyMTU7ZS5jaGVkZXNjZW5kZXJjeXJpbGxpYz0xMjA3O2UuY2hlZGllcmVzaXNjeXJpbGxpYz0xMjY5O2UuY2hlaGFybWVuaWFuPTEzOTU7ZS5jaGVraGFrYXNzaWFuY3lyaWxsaWM9MTIyODtlLmNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWM9MTIwOTtlLmNoaT05Njc7ZS5jaGlldWNoYWNpcmNsZWtvcmVhbj0xMjkxOTtlLmNoaWV1Y2hhcGFyZW5rb3JlYW49MTI4MjM7ZS5jaGlldWNoY2lyY2xla29yZWFuPTEyOTA1O2UuY2hpZXVjaGtvcmVhbj0xMjYxODtlLmNoaWV1Y2hwYXJlbmtvcmVhbj0xMjgwOTtlLmNob2NoYW5ndGhhaT0zNTk0O2UuY2hvY2hhbnRoYWk9MzU5MjtlLmNob2NoaW5ndGhhaT0zNTkzO2UuY2hvY2hvZXRoYWk9MzU5NjtlLmNob29rPTM5MjtlLmNpZXVjYWNpcmNsZWtvcmVhbj0xMjkxODtlLmNpZXVjYXBhcmVua29yZWFuPTEyODIyO2UuY2lldWNjaXJjbGVrb3JlYW49MTI5MDQ7ZS5jaWV1Y2tvcmVhbj0xMjYxNjtlLmNpZXVjcGFyZW5rb3JlYW49MTI4MDg7ZS5jaWV1Y3VwYXJlbmtvcmVhbj0xMjgyODtlLmNpcmNsZT05Njc1O2UuY2lyY2xlY29weXJ0PTE2OTtlLmNpcmNsZW11bHRpcGx5PTg4NTU7ZS5jaXJjbGVvdD04ODU3O2UuY2lyY2xlcGx1cz04ODUzO2UuY2lyY2xlcG9zdGFsbWFyaz0xMjM0MjtlLmNpcmNsZXdpdGhsZWZ0aGFsZmJsYWNrPTk2ODA7ZS5jaXJjbGV3aXRocmlnaHRoYWxmYmxhY2s9OTY4MTtlLmNpcmN1bWZsZXg9NzEwO2UuY2lyY3VtZmxleGJlbG93Y21iPTgxMztlLmNpcmN1bWZsZXhjbWI9NzcwO2UuY2xlYXI9ODk5OTtlLmNsaWNrYWx2ZW9sYXI9NDUwO2UuY2xpY2tkZW50YWw9NDQ4O2UuY2xpY2tsYXRlcmFsPTQ0OTtlLmNsaWNrcmV0cm9mbGV4PTQ1MTtlLmNsdWI9OTgyNztlLmNsdWJzdWl0YmxhY2s9OTgyNztlLmNsdWJzdWl0d2hpdGU9OTgzMTtlLmNtY3ViZWRzcXVhcmU9MTMyMjA7ZS5jbW9ub3NwYWNlPTY1MzQ3O2UuY21zcXVhcmVkc3F1YXJlPTEzMjE2O2UuY29hcm1lbmlhbj0xNDA5O2UuY29sb249NTg7ZS5jb2xvbm1vbmV0YXJ5PTgzNTM7ZS5jb2xvbm1vbm9zcGFjZT02NTMwNjtlLmNvbG9uc2lnbj04MzUzO2UuY29sb25zbWFsbD02NTEwOTtlLmNvbG9udHJpYW5ndWxhcmhhbGZtb2Q9NzIxO2UuY29sb250cmlhbmd1bGFybW9kPTcyMDtlLmNvbW1hPTQ0O2UuY29tbWFhYm92ZWNtYj03ODc7ZS5jb21tYWFib3ZlcmlnaHRjbWI9Nzg5O2UuY29tbWFhY2NlbnQ9NjMxNzE7ZS5jb21tYWFyYWJpYz0xNTQ4O2UuY29tbWFhcm1lbmlhbj0xMzczO2UuY29tbWFpbmZlcmlvcj02MzIwMTtlLmNvbW1hbW9ub3NwYWNlPTY1MjkyO2UuY29tbWFyZXZlcnNlZGFib3ZlY21iPTc4ODtlLmNvbW1hcmV2ZXJzZWRtb2Q9NzAxO2UuY29tbWFzbWFsbD02NTEwNDtlLmNvbW1hc3VwZXJpb3I9NjMyMDI7ZS5jb21tYXR1cm5lZGFib3ZlY21iPTc4NjtlLm
101NvbW1hdHVybmVkbW9kPTY5OTtlLmNvbXBhc3M9OTc4ODtlLmNvbmdydWVudD04NzczO2UuY29udG91cmludGVncmFsPTg3NTA7ZS5jb250cm9sPTg5NjM7ZS5jb250cm9sQUNLPTY7ZS5jb250cm9sQkVMPTc7ZS5jb250cm9sQlM9ODtlLmNvbnRyb2xDQU49MjQ7ZS5jb250cm9sQ1I9MTM7ZS5jb250cm9sREMxPTE3O2UuY29udHJvbERDMj0xODtlLmNvbnRyb2xEQzM9MTk7ZS5jb250cm9sREM0PTIwO2UuY29udHJvbERFTD0xMjc7ZS5jb250cm9sRExFPTE2O2UuY29udHJvbEVNPTI1O2UuY29udHJvbEVOUT01O2UuY29udHJvbEVPVD00O2UuY29udHJvbEVTQz0yNztlLmNvbnRyb2xFVEI9MjM7ZS5jb250cm9sRVRYPTM7ZS5jb250cm9sRkY9MTI7ZS5jb250cm9sRlM9Mjg7ZS5jb250cm9sR1M9Mjk7ZS5jb250cm9sSFQ9OTtlLmNvbnRyb2xMRj0xMDtlLmNvbnRyb2xOQUs9MjE7ZS5jb250cm9sTlVMTD0wO2UuY29udHJvbFJTPTMwO2UuY29udHJvbFNJPTE1O2UuY29udHJvbFNPPTE0O2UuY29udHJvbFNPVD0yO2UuY29udHJvbFNUWD0xO2UuY29udHJvbFNVQj0yNjtlLmNvbnRyb2xTWU49MjI7ZS5jb250cm9sVVM9MzE7ZS5jb250cm9sVlQ9MTE7ZS5jb3B5cmlnaHQ9MTY5O2UuY29weXJpZ2h0c2Fucz02MzcyMTtlLmNvcHlyaWdodHNlcmlmPTYzMTkzO2UuY29ybmVyYnJhY2tldGxlZnQ9MTIzMDA7ZS5jb3JuZXJicmFja2V0bGVmdGhhbGZ3aWR0aD02NTM3ODtlLmNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODk7ZS5jb3JuZXJicmFja2V0cmlnaHQ9MTIzMDE7ZS5jb3JuZXJicmFja2V0cmlnaHRoYWxmd2lkdGg9NjUzNzk7ZS5jb3JuZXJicmFja2V0cmlnaHR2ZXJ0aWNhbD02NTA5MDtlLmNvcnBvcmF0aW9uc3F1YXJlPTEzMTgzO2UuY29zcXVhcmU9MTMyNTU7ZS5jb3Zlcmtnc3F1YXJlPTEzMjU0O2UuY3BhcmVuPTkzNzQ7ZS5jcnV6ZWlybz04MzU0O2UuY3N0cmV0Y2hlZD02NjM7ZS5jdXJseWFuZD04OTExO2UuY3VybHlvcj04OTEwO2UuY3VycmVuY3k9MTY0O2UuY3lyQnJldmU9NjMxODU7ZS5jeXJGbGV4PTYzMTg2O2UuY3lyYnJldmU9NjMxODg7ZS5jeXJmbGV4PTYzMTg5O2UuZD0xMDA7ZS5kYWFybWVuaWFuPTEzODA7ZS5kYWJlbmdhbGk9MjQ3MDtlLmRhZGFyYWJpYz0xNTkwO2UuZGFkZXZhPTIzNDI7ZS5kYWRmaW5hbGFyYWJpYz02NTIxNDtlLmRhZGluaXRpYWxhcmFiaWM9NjUyMTU7ZS5kYWRtZWRpYWxhcmFiaWM9NjUyMTY7ZS5kYWdlc2g9MTQ2ODtlLmRhZ2VzaGhlYnJldz0xNDY4O2UuZGFnZ2VyPTgyMjQ7ZS5kYWdnZXJkYmw9ODIyNTtlLmRhZ3VqYXJhdGk9MjcyNjtlLmRhZ3VybXVraGk9MjU5ODtlLmRhaGlyYWdhbmE9MTIzODQ7ZS5kYWthdGFrYW5hPTEyNDgwO2UuZGFsYXJhYmljPTE1ODM7ZS5kYWxldD0xNDkxO2UuZGFsZXRkYWdlc2g9NjQzMDc7ZS5kYWxldGRhZ2VzaGhlYnJldz02NDMwNztlLmRhbGV0aGVicmV3PTE0OTE7ZS5kYWxmaW5hbGFyYWJpYz02NTE5NDtlLmRhbW1hYXJhYmljPTE2MTU7ZS5kYW1tYWxvd2FyYWJpYz0xNjE1O2UuZGFtbWF0YW5hbHRvbmVhcmFiaWM9MTYxMjtlLmRhbW1hdGFuYXJhYmljPTE2MTI7ZS5kYW5kYT0yNDA0O2UuZGFyZ2FoZWJyZXc9MTQ0NztlLmRhcmdhbGVmdGhlYnJldz0xNDQ3O2UuZGFzaWFwbmV1bWF0YWN5cmlsbGljY21iPTExNTc7ZS5kYmxHcmF2ZT02MzE4NztlLmRibGFuZ2xlYnJhY2tldGxlZnQ9MTIyOTg7ZS5kYmxhbmdsZWJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODU7ZS5kYmxhbmdsZWJyYWNrZXRyaWdodD0xMjI5OTtlLmRibGFuZ2xlYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwODY7ZS5kYmxhcmNoaW52ZXJ0ZWRiZWxvd2NtYj04MTE7ZS5kYmxhcnJvd2xlZnQ9ODY2MDtlLmRibGFycm93cmlnaHQ9ODY1ODtlLmRibGRhbmRhPTI0MDU7ZS5kYmxncmF2ZT02MzE5MDtlLmRibGdyYXZlY21iPTc4MztlLmRibGludGVncmFsPTg3NDg7ZS5kYmxsb3dsaW5lPTgyMTU7ZS5kYmxsb3dsaW5lY21iPTgxOTtlLmRibG92ZXJsaW5lY21iPTgzMTtlLmRibHByaW1lbW9kPTY5ODtlLmRibHZlcnRpY2FsYmFyPTgyMTQ7ZS5kYmx2ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODI7ZS5kYm9wb21vZm89MTI1NTM7ZS5kYnNxdWFyZT0xMzI1NjtlLmRjYXJvbj0yNzE7ZS5kY2VkaWxsYT03Njk3O2UuZGNpcmNsZT05NDI3O2UuZGNpcmN1bWZsZXhiZWxvdz03Njk5O2UuZGNyb2F0PTI3MztlLmRkYWJlbmdhbGk9MjQ2NTtlLmRkYWRldmE9MjMzNztlLmRkYWd1amFyYXRpPTI3MjE7ZS5kZGFndXJtdWtoaT0yNTkzO2UuZGRhbGFyYWJpYz0xNjcyO2UuZGRhbGZpbmFsYXJhYmljPTY0MzkzO2UuZGRkaGFkZXZhPTIzOTY7ZS5kZGhhYmVuZ2FsaT0yNDY2O2UuZGRoYWRldmE9MjMzODtlLmRkaGFndWphcmF0aT0yNzIyO2UuZGRoYWd1cm11a2hpPTI1OTQ7ZS5kZG90YWNjZW50PTc2OTE7ZS5kZG90YmVsb3c9NzY5MztlLmRlY2ltYWxzZXBhcmF0b3JhcmFiaWM9MTY0MztlLmRlY2ltYWxzZXBhcmF0b3JwZXJzaWFuPTE2NDM7ZS5kZWN5cmlsbGljPTEwNzY7ZS5kZWdyZWU9MTc2O2UuZGVoaWhlYnJldz0xNDUzO2UuZGVoaXJhZ2FuYT0xMjM5MTtlLmRlaWNvcHRpYz0xMDA3O2UuZGVrYXRha2FuYT0xMjQ4NztlLmRlbGV0ZWxlZnQ9OTAwMztlLmRlbGV0ZXJpZ2h0PTg5OTg7ZS5kZWx0YT05NDg7ZS5kZWx0YXR1cm5lZD0zOTc7ZS5kZW5vbWluYXRvcm1pbnVzb25lbnVtZXJhdG9yYmVuZ2FsaT0yNTUyO2UuZGV6aD02NzY7ZS5kaGFiZW5nYWxpPTI0NzE7ZS5kaGFkZXZhPTIzNDM7ZS5kaGFndWphcmF0aT0yNzI3O2UuZGhhZ3VybXVraGk9MjU5OTtlLmRob29rPTU5OTtlLmRpYWx5dGlrYXRvbm9zPTkwMTtlLmRpYWx5dGlrYXRvbm9zY21iPTgzNjtlLmRpYW1vbmQ9OTgzMDtlLmRpYW1vbmRzdWl0d2hpdGU9OTgyNjtlLmRpZXJlc2lzPTE2ODtlLmRpZXJlc2lzYWN1dGU9NjMxOTE7ZS5kaWVyZXNpc2JlbG93Y21iPTgwNDtlLmRpZXJlc2lzY21iPTc3NjtlLmRpZXJlc2lzZ3JhdmU9NjMxOTI7ZS5kaWVyZXNpc3Rvbm9zPTkwMTtlLmRpaGlyYWdhbmE9MTIzODY7ZS5kaWthdGFrYW5hPTEyNDgyO2UuZGl0dG9tYXJrPTEyMjkxO2UuZGl2aWRlPTI0NztlLmRpdmlkZXM9ODczOTtlLmRpdmlzaW9uc2xhc2g9ODcyNTtlLmRqZWN5cmlsbGljPTExMDY7ZS5ka3NoYWRlPTk2MTk7ZS5kbGluZWJlbG93PTc2OTU7ZS5kbHNxdWFyZT0xMzIwNztlLmRtYWNyb249MjczO2UuZG1vbm9zcGFjZT02NTM0ODtlLmRuYmxvY2s9OTYwNDtlLmRvY2hhZGF0aGFpPTM1OTg7ZS5kb2Rla3RoYWk9MzYwNDtlLmRvaGlyYWdhbmE9MTIzOTM7ZS5kb2thdGFrYW5hPTEyNDg5O2UuZG9sbGFyPTM2O2UuZG9sbGFyaW5mZXJpb3I9NjMyMDM7ZS5kb2xsYXJtb25vc3BhY2U9NjUyODQ7ZS5kb2xsYXJvbGRzdHlsZT02MzI2ODtlLmRvbGxhcnNtYWxsPTY1MTI5O2UuZG9sbGFyc3VwZXJpb3I9NjMyMDQ7ZS5kb25nPTgzNjM7ZS5kb3J1c3F1YXJlPTEzMDk0O2UuZG90YWNjZW50PTcyOTtlLmRvdGFjY2VudGNtYj03NzU7ZS5kb3RiZWxvd2NtYj04MDM7ZS5kb3RiZWxvd2NvbWI9ODAzO2UuZG90a2F0YWthbmE9MTI1Mzk7ZS5kb3RsZXNzaT0zMDU7ZS5kb3RsZXNzaj02MzE2NjtlLmRvdGxlc3Nqc3Ryb2tlaG9vaz02NDQ7ZS5kb3RtYXRoPTg5MDE7ZS5kb3R0ZWRjaXJjbGU9OTY3NjtlLmRvdWJsZXlvZHBhdGFoPTY0Mjg3O2UuZG91YmxleW9kcGF0YWhoZWJyZXc9NjQyODc7ZS5kb3dudGFja2JlbG93Y21iPTc5ODtlLmRvd250YWNrbW9kPTcyNTtlLmRwYXJlbj05Mzc1O2UuZHN1cGVyaW9yPTYzMjExO2UuZHRhaWw9NTk4O2UuZHRvcGJhcj0zOTY7ZS5kdWhpcmFnYW5hPTEyMzg5O2UuZHVrYXRha2FuYT0xMjQ4NTtlLmR6PTQ5OTtlLmR6YWx0b25lPTY3NTtlLmR6Y2Fyb249NDU0O2UuZHpjdXJsPTY3NztlLmR6ZWFia2hhc2lhbmN5cmlsbGljPTEyNDk7ZS5kemVjeXJpbGxpYz0xMTA5O2UuZHpoZWN5cmlsbGljPTExMTk7ZS5lPTEwMTtlLmVhY3V0ZT0yMzM7ZS5lYXJ0aD05NzkzO2UuZWJlbmdhbGk9MjQ0NztlLmVib3BvbW9mbz0xMjU3MjtlLmVicmV2ZT0yNzc7ZS5lY2FuZHJhZGV2YT0yMzE3O2UuZWNhbmRyYWd1amFyYXRpPTI3MDE7ZS5lY2FuZHJhdm93ZWxzaWduZGV2YT0yMzczO2UuZWNhbmRyYXZvd2Vsc2lnbmd1amFyYXRpPTI3NTc7ZS5lY2Fyb249MjgzO2UuZWNlZGlsbGFicmV2ZT03NzA5O2UuZWNoYXJtZW5pYW49MTM4MTtlLmVjaHlpd25hcm1lbmlhbj0xNDE1O2UuZWNpcmNsZT05NDI4O2UuZWNpcmN1bWZsZXg9MjM0O2UuZWNpcmN1bWZsZXhhY3V0ZT03ODcxO2UuZWNpcmN1bWZsZXhiZWxvdz03
101NzA1O2UuZWNpcmN1bWZsZXhkb3RiZWxvdz03ODc5O2UuZWNpcmN1bWZsZXhncmF2ZT03ODczO2UuZWNpcmN1bWZsZXhob29rYWJvdmU9Nzg3NTtlLmVjaXJjdW1mbGV4dGlsZGU9Nzg3NztlLmVjeXJpbGxpYz0xMTA4O2UuZWRibGdyYXZlPTUxNztlLmVkZXZhPTIzMTk7ZS5lZGllcmVzaXM9MjM1O2UuZWRvdD0yNzk7ZS5lZG90YWNjZW50PTI3OTtlLmVkb3RiZWxvdz03ODY1O2UuZWVndXJtdWtoaT0yNTc1O2UuZWVtYXRyYWd1cm11a2hpPTI2MzE7ZS5lZmN5cmlsbGljPTEwOTI7ZS5lZ3JhdmU9MjMyO2UuZWd1amFyYXRpPTI3MDM7ZS5laGFybWVuaWFuPTEzODM7ZS5laGJvcG9tb2ZvPTEyNTczO2UuZWhpcmFnYW5hPTEyMzYwO2UuZWhvb2thYm92ZT03ODY3O2UuZWlib3BvbW9mbz0xMjU3NTtlLmVpZ2h0PTU2O2UuZWlnaHRhcmFiaWM9MTY0MDtlLmVpZ2h0YmVuZ2FsaT0yNTQyO2UuZWlnaHRjaXJjbGU9OTMxOTtlLmVpZ2h0Y2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyOTtlLmVpZ2h0ZGV2YT0yNDE0O2UuZWlnaHRlZW5jaXJjbGU9OTMyOTtlLmVpZ2h0ZWVucGFyZW49OTM0OTtlLmVpZ2h0ZWVucGVyaW9kPTkzNjk7ZS5laWdodGd1amFyYXRpPTI3OTg7ZS5laWdodGd1cm11a2hpPTI2NzA7ZS5laWdodGhhY2thcmFiaWM9MTY0MDtlLmVpZ2h0aGFuZ3pob3U9MTIzMjg7ZS5laWdodGhub3RlYmVhbWVkPTk4MzU7ZS5laWdodGlkZW9ncmFwaGljcGFyZW49MTI4Mzk7ZS5laWdodGluZmVyaW9yPTgzMjg7ZS5laWdodG1vbm9zcGFjZT02NTMwNDtlLmVpZ2h0b2xkc3R5bGU9NjMyODg7ZS5laWdodHBhcmVuPTkzMzk7ZS5laWdodHBlcmlvZD05MzU5O2UuZWlnaHRwZXJzaWFuPTE3ODQ7ZS5laWdodHJvbWFuPTg1Njc7ZS5laWdodHN1cGVyaW9yPTgzMTI7ZS5laWdodHRoYWk9MzY3MjtlLmVpbnZlcnRlZGJyZXZlPTUxOTtlLmVpb3RpZmllZGN5cmlsbGljPTExMjU7ZS5la2F0YWthbmE9MTI0NTY7ZS5la2F0YWthbmFoYWxmd2lkdGg9NjUzOTY7ZS5la29ua2FyZ3VybXVraGk9MjY3NjtlLmVrb3JlYW49MTI2Mjg7ZS5lbGN5cmlsbGljPTEwODM7ZS5lbGVtZW50PTg3MTI7ZS5lbGV2ZW5jaXJjbGU9OTMyMjtlLmVsZXZlbnBhcmVuPTkzNDI7ZS5lbGV2ZW5wZXJpb2Q9OTM2MjtlLmVsZXZlbnJvbWFuPTg1NzA7ZS5lbGxpcHNpcz04MjMwO2UuZWxsaXBzaXN2ZXJ0aWNhbD04OTQyO2UuZW1hY3Jvbj0yNzU7ZS5lbWFjcm9uYWN1dGU9NzcwMztlLmVtYWNyb25ncmF2ZT03NzAxO2UuZW1jeXJpbGxpYz0xMDg0O2UuZW1kYXNoPTgyMTI7ZS5lbWRhc2h2ZXJ0aWNhbD02NTA3MztlLmVtb25vc3BhY2U9NjUzNDk7ZS5lbXBoYXNpc21hcmthcm1lbmlhbj0xMzcxO2UuZW1wdHlzZXQ9ODcwOTtlLmVuYm9wb21vZm89MTI1Nzk7ZS5lbmN5cmlsbGljPTEwODU7ZS5lbmRhc2g9ODIxMTtlLmVuZGFzaHZlcnRpY2FsPTY1MDc0O2UuZW5kZXNjZW5kZXJjeXJpbGxpYz0xMTg3O2UuZW5nPTMzMTtlLmVuZ2JvcG9tb2ZvPTEyNTgxO2UuZW5naGVjeXJpbGxpYz0xMTg5O2UuZW5ob29rY3lyaWxsaWM9MTIyNDtlLmVuc3BhY2U9ODE5NDtlLmVvZ29uZWs9MjgxO2UuZW9rb3JlYW49MTI2Mjc7ZS5lb3Blbj02MDM7ZS5lb3BlbmNsb3NlZD02NjY7ZS5lb3BlbnJldmVyc2VkPTYwNDtlLmVvcGVucmV2ZXJzZWRjbG9zZWQ9NjA2O2UuZW9wZW5yZXZlcnNlZGhvb2s9NjA1O2UuZXBhcmVuPTkzNzY7ZS5lcHNpbG9uPTk0OTtlLmVwc2lsb250b25vcz05NDE7ZS5lcXVhbD02MTtlLmVxdWFsbW9ub3NwYWNlPTY1MzA5O2UuZXF1YWxzbWFsbD02NTEyNjtlLmVxdWFsc3VwZXJpb3I9ODMxNjtlLmVxdWl2YWxlbmNlPTg4MDE7ZS5lcmJvcG9tb2ZvPTEyNTgyO2UuZXJjeXJpbGxpYz0xMDg4O2UuZXJldmVyc2VkPTYwMDtlLmVyZXZlcnNlZGN5cmlsbGljPTExMDE7ZS5lc2N5cmlsbGljPTEwODk7ZS5lc2Rlc2NlbmRlcmN5cmlsbGljPTExOTU7ZS5lc2g9NjQzO2UuZXNoY3VybD02NDY7ZS5lc2hvcnRkZXZhPTIzMTg7ZS5lc2hvcnR2b3dlbHNpZ25kZXZhPTIzNzQ7ZS5lc2hyZXZlcnNlZGxvb3A9NDI2O2UuZXNoc3F1YXRyZXZlcnNlZD02NDU7ZS5lc21hbGxoaXJhZ2FuYT0xMjM1OTtlLmVzbWFsbGthdGFrYW5hPTEyNDU1O2UuZXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODY7ZS5lc3RpbWF0ZWQ9ODQ5NDtlLmVzdXBlcmlvcj02MzIxMjtlLmV0YT05NTE7ZS5ldGFybWVuaWFuPTEzODQ7ZS5ldGF0b25vcz05NDI7ZS5ldGg9MjQwO2UuZXRpbGRlPTc4Njk7ZS5ldGlsZGViZWxvdz03NzA3O2UuZXRuYWh0YWZvdWtoaGVicmV3PTE0MjU7ZS5ldG5haHRhZm91a2hsZWZ0aGVicmV3PTE0MjU7ZS5ldG5haHRhaGVicmV3PTE0MjU7ZS5ldG5haHRhbGVmdGhlYnJldz0xNDI1O2UuZXR1cm5lZD00Nzc7ZS5ldWtvcmVhbj0xMjY0MTtlLmV1cm89ODM2NDtlLmV2b3dlbHNpZ25iZW5nYWxpPTI1MDM7ZS5ldm93ZWxzaWduZGV2YT0yMzc1O2UuZXZvd2Vsc2lnbmd1amFyYXRpPTI3NTk7ZS5leGNsYW09MzM7ZS5leGNsYW1hcm1lbmlhbj0xMzcyO2UuZXhjbGFtZGJsPTgyNTI7ZS5leGNsYW1kb3duPTE2MTtlLmV4Y2xhbWRvd25zbWFsbD02MzM5MztlLmV4Y2xhbW1vbm9zcGFjZT02NTI4MTtlLmV4Y2xhbXNtYWxsPTYzMjY1O2UuZXhpc3RlbnRpYWw9ODcwNztlLmV6aD02NTg7ZS5lemhjYXJvbj00OTU7ZS5lemhjdXJsPTY1OTtlLmV6aHJldmVyc2VkPTQ0MTtlLmV6aHRhaWw9NDQyO2UuZj0xMDI7ZS5mYWRldmE9MjM5ODtlLmZhZ3VybXVraGk9MjY1NDtlLmZhaHJlbmhlaXQ9ODQ1NztlLmZhdGhhYXJhYmljPTE2MTQ7ZS5mYXRoYWxvd2FyYWJpYz0xNjE0O2UuZmF0aGF0YW5hcmFiaWM9MTYxMTtlLmZib3BvbW9mbz0xMjU1MjtlLmZjaXJjbGU9OTQyOTtlLmZkb3RhY2NlbnQ9NzcxMTtlLmZlaGFyYWJpYz0xNjAxO2UuZmVoYXJtZW5pYW49MTQxNDtlLmZlaGZpbmFsYXJhYmljPTY1MjM0O2UuZmVoaW5pdGlhbGFyYWJpYz02NTIzNTtlLmZlaG1lZGlhbGFyYWJpYz02NTIzNjtlLmZlaWNvcHRpYz05OTc7ZS5mZW1hbGU9OTc5MjtlLmZmPTY0MjU2O2UuZl9mPTY0MjU2O2UuZmZpPTY0MjU5O2UuZl9mX2k9NjQyNTk7ZS5mZmw9NjQyNjA7ZS5mX2ZfbD02NDI2MDtlLmZpPTY0MjU3O2UuZl9pPTY0MjU3O2UuZmlmdGVlbmNpcmNsZT05MzI2O2UuZmlmdGVlbnBhcmVuPTkzNDY7ZS5maWZ0ZWVucGVyaW9kPTkzNjY7ZS5maWd1cmVkYXNoPTgyMTA7ZS5maWxsZWRib3g9OTYzMjtlLmZpbGxlZHJlY3Q9OTY0NDtlLmZpbmFsa2FmPTE0OTg7ZS5maW5hbGthZmRhZ2VzaD02NDMxNDtlLmZpbmFsa2FmZGFnZXNoaGVicmV3PTY0MzE0O2UuZmluYWxrYWZoZWJyZXc9MTQ5ODtlLmZpbmFsbWVtPTE1MDE7ZS5maW5hbG1lbWhlYnJldz0xNTAxO2UuZmluYWxudW49MTUwMztlLmZpbmFsbnVuaGVicmV3PTE1MDM7ZS5maW5hbHBlPTE1MDc7ZS5maW5hbHBlaGVicmV3PTE1MDc7ZS5maW5hbHRzYWRpPTE1MDk7ZS5maW5hbHRzYWRpaGVicmV3PTE1MDk7ZS5maXJzdHRvbmVjaGluZXNlPTcxMztlLmZpc2hleWU9OTY3MztlLmZpdGFjeXJpbGxpYz0xMTM5O2UuZml2ZT01MztlLmZpdmVhcmFiaWM9MTYzNztlLmZpdmViZW5nYWxpPTI1Mzk7ZS5maXZlY2lyY2xlPTkzMTY7ZS5maXZlY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNjtlLmZpdmVkZXZhPTI0MTE7ZS5maXZlZWlnaHRocz04NTQxO2UuZml2ZWd1amFyYXRpPTI3OTU7ZS5maXZlZ3VybXVraGk9MjY2NztlLmZpdmVoYWNrYXJhYmljPTE2Mzc7ZS5maXZlaGFuZ3pob3U9MTIzMjU7ZS5maXZlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNjtlLmZpdmVpbmZlcmlvcj04MzI1O2UuZml2ZW1vbm9zcGFjZT02NTMwMTtlLmZpdmVvbGRzdHlsZT02MzI4NTtlLmZpdmVwYXJlbj05MzM2O2UuZml2ZXBlcmlvZD05MzU2O2UuZml2ZXBlcnNpYW49MTc4MTtlLmZpdmVyb21hbj04NTY0O2UuZml2ZXN1cGVyaW9yPTgzMDk7ZS5maXZldGhhaT0zNjY5O2UuZmw9NjQyNTg7ZS5mX2w9NjQyNTg7ZS5mbG9yaW49NDAyO2UuZm1vbm9zcGFjZT02NTM1MDtlLmZtc3F1YXJlPTEzMjA5O2UuZm9mYW50aGFpPTM2MTU7ZS5mb2ZhdGhhaT0zNjEzO2UuZm9uZ21hbnRoYWk9MzY2MztlLmZvcmFsbD04NzA0O2UuZm91cj01MjtlLmZvdXJhcmFiaWM9MTYzNjtlLmZvdXJiZW5nYWxpPTI1Mzg7ZS5mb3VyY2lyY2xlPTkzMTU7ZS5mb3VyY2lyY2xlaW52ZXJzZXNhbnNzZXJpZj0xMDEyNTtlLmZvdXJkZXZhPTI0MTA7ZS5mb3VyZ3VqYXJhdGk9Mjc5NDtlLmZvdXJndXJtdWtoaT0yNjY2O2UuZm91cmhhY2thcmFiaWM9MTYzNjtlLmZvdXJoYW5nemhvdT0xMjMyNDtlLmZvdXJpZGVvZ3JhcGh
101pY3BhcmVuPTEyODM1O2UuZm91cmluZmVyaW9yPTgzMjQ7ZS5mb3VybW9ub3NwYWNlPTY1MzAwO2UuZm91cm51bWVyYXRvcmJlbmdhbGk9MjU1MTtlLmZvdXJvbGRzdHlsZT02MzI4NDtlLmZvdXJwYXJlbj05MzM1O2UuZm91cnBlcmlvZD05MzU1O2UuZm91cnBlcnNpYW49MTc4MDtlLmZvdXJyb21hbj04NTYzO2UuZm91cnN1cGVyaW9yPTgzMDg7ZS5mb3VydGVlbmNpcmNsZT05MzI1O2UuZm91cnRlZW5wYXJlbj05MzQ1O2UuZm91cnRlZW5wZXJpb2Q9OTM2NTtlLmZvdXJ0aGFpPTM2Njg7ZS5mb3VydGh0b25lY2hpbmVzZT03MTU7ZS5mcGFyZW49OTM3NztlLmZyYWN0aW9uPTgyNjA7ZS5mcmFuYz04MzU1O2UuZz0xMDM7ZS5nYWJlbmdhbGk9MjQ1NTtlLmdhY3V0ZT01MDE7ZS5nYWRldmE9MjMyNztlLmdhZmFyYWJpYz0xNzExO2UuZ2FmZmluYWxhcmFiaWM9NjQ0MDM7ZS5nYWZpbml0aWFsYXJhYmljPTY0NDA0O2UuZ2FmbWVkaWFsYXJhYmljPTY0NDA1O2UuZ2FndWphcmF0aT0yNzExO2UuZ2FndXJtdWtoaT0yNTgzO2UuZ2FoaXJhZ2FuYT0xMjM2NDtlLmdha2F0YWthbmE9MTI0NjA7ZS5nYW1tYT05NDc7ZS5nYW1tYWxhdGluc21hbGw9NjExO2UuZ2FtbWFzdXBlcmlvcj03MzY7ZS5nYW5naWFjb3B0aWM9MTAwMztlLmdib3BvbW9mbz0xMjU1NztlLmdicmV2ZT0yODc7ZS5nY2Fyb249NDg3O2UuZ2NlZGlsbGE9MjkxO2UuZ2NpcmNsZT05NDMwO2UuZ2NpcmN1bWZsZXg9Mjg1O2UuZ2NvbW1hYWNjZW50PTI5MTtlLmdkb3Q9Mjg5O2UuZ2RvdGFjY2VudD0yODk7ZS5nZWN5cmlsbGljPTEwNzU7ZS5nZWhpcmFnYW5hPTEyMzcwO2UuZ2VrYXRha2FuYT0xMjQ2NjtlLmdlb21ldHJpY2FsbHllcXVhbD04Nzg1O2UuZ2VyZXNoYWNjZW50aGVicmV3PTE0MzY7ZS5nZXJlc2hoZWJyZXc9MTUyMztlLmdlcmVzaG11cWRhbWhlYnJldz0xNDM3O2UuZ2VybWFuZGJscz0yMjM7ZS5nZXJzaGF5aW1hY2NlbnRoZWJyZXc9MTQzODtlLmdlcnNoYXlpbWhlYnJldz0xNTI0O2UuZ2V0YW1hcms9MTIzMDc7ZS5naGFiZW5nYWxpPTI0NTY7ZS5naGFkYXJtZW5pYW49MTM5NDtlLmdoYWRldmE9MjMyODtlLmdoYWd1amFyYXRpPTI3MTI7ZS5naGFndXJtdWtoaT0yNTg0O2UuZ2hhaW5hcmFiaWM9MTU5NDtlLmdoYWluZmluYWxhcmFiaWM9NjUyMzA7ZS5naGFpbmluaXRpYWxhcmFiaWM9NjUyMzE7ZS5naGFpbm1lZGlhbGFyYWJpYz02NTIzMjtlLmdoZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTczO2UuZ2hlc3Ryb2tlY3lyaWxsaWM9MTE3MTtlLmdoZXVwdHVybmN5cmlsbGljPTExNjk7ZS5naGhhZGV2YT0yMzk0O2UuZ2hoYWd1cm11a2hpPTI2NTA7ZS5naG9vaz02MDg7ZS5naHpzcXVhcmU9MTMyMDM7ZS5naWhpcmFnYW5hPTEyMzY2O2UuZ2lrYXRha2FuYT0xMjQ2MjtlLmdpbWFybWVuaWFuPTEzNzk7ZS5naW
1011lbD0xNDkwO2UuZ2ltZWxkYWdlc2g9NjQzMDY7ZS5naW1lbGRhZ2VzaGhlYnJldz02NDMwNjtlLmdpbWVsaGVicmV3PTE0OTA7ZS5namVjeXJpbGxpYz0xMTA3O2UuZ2xvdHRhbGludmVydGVkc3Ryb2tlPTQ0NjtlLmdsb3R0YWxzdG9wPTY2MDtlLmdsb3R0YWxzdG9waW52ZXJ0ZWQ9NjYyO2UuZ2xvdHRhbHN0b3Btb2Q9NzA0O2UuZ2xvdHRhbHN0b3ByZXZlcnNlZD02NjE7ZS5nbG90dGFsc3RvcHJldmVyc2VkbW9kPTcwNTtlLmdsb3R0YWxzdG9wcmV2ZXJzZWRzdXBlcmlvcj03NDA7ZS5nbG90dGFsc3RvcHN0cm9rZT02NzM7ZS5nbG90dGFsc3RvcHN0cm9rZXJldmVyc2VkPTY3NDtlLmdtYWNyb249NzcxMztlLmdtb25vc3BhY2U9NjUzNTE7ZS5nb2hpcmFnYW5hPTEyMzcyO2UuZ29rYXRha2FuYT0xMjQ2ODtlLmdwYXJlbj05Mzc4O2UuZ3Bhc3F1YXJlPTEzMjI4O2UuZ3JhZGllbnQ9ODcxMTtlLmdyYXZlPTk2O2UuZ3JhdmViZWxvd2NtYj03OTA7ZS5ncmF2ZWNtYj03Njg7ZS5ncmF2ZWNvbWI9NzY4O2UuZ3JhdmVkZXZhPTIzODc7ZS5ncmF2ZWxvd21vZD03MTg7ZS5ncmF2ZW1vbm9zcGFjZT02NTM0NDtlLmdyYXZldG9uZWNtYj04MzI7ZS5ncmVhdGVyPTYyO2UuZ3JlYXRlcmVxdWFsPTg4MDU7ZS5ncmVhdGVyZXF1YWxvcmxlc3M9ODkyMztlLmdyZWF0ZXJtb25vc3BhY2U9NjUzMTA7ZS5ncmVhdGVyb3JlcXVpdmFsZW50PTg4MTk7ZS5ncmVhdGVyb3JsZXNzPTg4MjM7ZS5ncmVhdGVyb3ZlcmVxdWFsPTg4MDc7ZS5ncmVhdGVyc21hbGw9NjUxMjU7ZS5nc2NyaXB0PTYwOTtlLmdzdHJva2U9NDg1O2UuZ3VoaXJhZ2FuYT0xMjM2ODtlLmd1aWxsZW1vdGxlZnQ9MTcxO2UuZ3VpbGxlbW90cmlnaHQ9MTg3O2UuZ3VpbHNpbmdsbGVmdD04MjQ5O2UuZ3VpbHNpbmdscmlnaHQ9ODI1MDtlLmd1a2F0YWthbmE9MTI0NjQ7ZS5ndXJhbXVzcXVhcmU9MTMwODA7ZS5neXNxdWFyZT0xMzI1NztlLmg9MTA0O2UuaGFhYmtoYXNpYW5jeXJpbGxpYz0xMTkzO2UuaGFhbHRvbmVhcmFiaWM9MTcyOTtlLmhhYmVuZ2FsaT0yNDg5O2UuaGFkZXNjZW5kZXJjeXJpbGxpYz0xMjAzO2UuaGFkZXZhPTIzNjE7ZS5oYWd1amFyYXRpPTI3NDU7ZS5oYWd1cm11a2hpPTI2MTc7ZS5oYWhhcmFiaWM9MTU4MTtlLmhhaGZpbmFsYXJhYmljPTY1MTg2O2UuaGFoaW5pdGlhbGFyYWJpYz02NTE4NztlLmhhaGlyYWdhbmE9MTIzOTk7ZS5oYWhtZWRpYWxhcmFiaWM9NjUxODg7ZS5oYWl0dXNxdWFyZT0xMzA5ODtlLmhha2F0YWthbmE9MTI0OTU7ZS5oYWthdGFrYW5haGFsZndpZHRoPTY1NDE4O2UuaGFsYW50Z3VybXVraGk9MjYzNztlLmhhbXphYXJhYmljPTE1Njk7ZS5oYW16YWxvd2FyYWJpYz0xNTY5O2UuaGFuZ3VsZmlsbGVyPTEyNjQ0O2UuaGFyZHNpZ25jeXJpbGxpYz0xMDk4O2UuaGFycG9vbmxlZnRiYXJidXA9ODYzNjtlLmhhcnBvb25yaWdodGJhcmJ1cD04NjQwO2UuaGFzcXVhcmU9MTMyNTg7ZS5oYXRhZnBhdGFoPTE0NTg7ZS5oYXRhZnBhdGFoMTY9MTQ1ODtlLmhhdGFmcGF0YWgyMz0xNDU4O2UuaGF0YWZwYXRhaDJmPTE0NTg7ZS5oYXRhZnBhdGFoaGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFobmFycm93aGVicmV3PTE0NTg7ZS5oYXRhZnBhdGFocXVhcnRlcmhlYnJldz0xNDU4O2UuaGF0YWZwYXRhaHdpZGVoZWJyZXc9MTQ1ODtlLmhhdGFmcWFtYXRzPTE0NTk7ZS5oYXRhZnFhbWF0czFiPTE0NTk7ZS5oYXRhZnFhbWF0czI4PTE0NTk7ZS5oYXRhZnFhbWF0czM0PTE0NTk7ZS5oYXRhZnFhbWF0c2hlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHNuYXJyb3doZWJyZXc9MTQ1OTtlLmhhdGFmcWFtYXRzcXVhcnRlcmhlYnJldz0xNDU5O2UuaGF0YWZxYW1hdHN3aWRlaGVicmV3PTE0NTk7ZS5oYXRhZnNlZ29sPTE0NTc7ZS5oYXRhZnNlZ29sMTc9MTQ1NztlLmhhdGFmc2Vnb2wyND0xNDU3O2UuaGF0YWZzZWdvbDMwPTE0NTc7ZS5oYXRhZnNlZ29saGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29sbmFycm93aGVicmV3PTE0NTc7ZS5oYXRhZnNlZ29scXVhcnRlcmhlYnJldz0xNDU3O2UuaGF0YWZzZWdvbHdpZGVoZWJyZXc9MTQ1NztlLmhiYXI9Mjk1O2UuaGJvcG9tb2ZvPTEyNTU5O2UuaGJyZXZlYmVsb3c9NzcyMztlLmhjZWRpbGxhPTc3MjE7ZS5oY2lyY2xlPTk0MzE7ZS5oY2lyY3VtZmxleD0yOTM7ZS5oZGllcmVzaXM9NzcxOTtlLmhkb3RhY2NlbnQ9NzcxNTtlLmhkb3RiZWxvdz03NzE3O2UuaGU9MTQ5MjtlLmhlYXJ0PTk4Mjk7ZS5oZWFydHN1aXRibGFjaz05ODI5O2UuaGVhcnRzdWl0d2hpdGU9OTgyNTtlLmhlZGFnZXNoPTY0MzA4O2UuaGVkYWdlc2hoZWJyZXc9NjQzMDg7ZS5oZWhhbHRvbmVhcmFiaWM9MTcyOTtlLmhlaGFyYWJpYz0xNjA3O2UuaGVoZWJyZXc9MTQ5MjtlLmhlaGZpbmFsYWx0b25lYXJhYmljPTY0NDIzO2UuaGVoZmluYWxhbHR0d29hcmFiaWM9NjUyNTg7ZS5oZWhmaW5hbGFyYWJpYz02NTI1ODtlLmhlaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NDQyMTtlLmhlaGhhbXphYWJvdmVpc29sYXRlZGFyYWJpYz02NDQyMDtlLmhlaGluaXRpYWxhbHRvbmVhcmFiaWM9NjQ0MjQ7ZS5oZWhpbml0aWFsYXJhYmljPTY1MjU5O2UuaGVoaXJhZ2FuYT0xMjQwODtlLmhlaG1lZGlhbGFsdG9uZWFyYWJpYz02NDQyNTtlLmhlaG1lZGlhbGFyYWJpYz02NTI2MDtlLmhlaXNlaWVyYXNxdWFyZT0xMzE3OTtlLmhla2F0YWthbmE9MTI1MDQ7ZS5oZWthdGFrYW5haGFsZndpZHRoPTY1NDIxO2UuaGVrdXRhYXJ1c3F1YXJlPTEzMTEwO2UuaGVuZ2hvb2s9NjE1O2UuaGVydXR1c3F1YXJlPTEzMTEzO2UuaGV0PTE0OTU7ZS5oZXRoZWJyZXc9MTQ5NTtlLmhob29rPTYxNDtlLmhob29rc3VwZXJpb3I9Njg5O2UuaGlldWhhY2lyY2xla29yZWFuPTEyOTIzO2UuaGlldWhhcGFyZW5rb3JlYW49MTI4Mjc7ZS5oaWV1aGNpcmNsZWtvcmVhbj0xMjkwOTtlLmhpZXVoa29yZWFuPTEyNjIyO2UuaGlldWhwYXJlbmtvcmVhbj0xMjgxMztlLmhpaGlyYWdhbmE9MTI0MDI7ZS5oaWthdGFrYW5hPTEyNDk4O2UuaGlrYXRha2FuYWhhbGZ3aWR0aD02NTQxOTtlLmhpcmlxPTE0NjA7ZS5oaXJpcTE0PTE0NjA7ZS5oaXJpcTIxPTE0NjA7ZS5oaXJpcTJkPTE0NjA7ZS5oaXJpcWhlYnJldz0xNDYwO2UuaGlyaXFuYXJyb3doZWJyZXc9MTQ2MDtlLmhpcmlxcXVhcnRlcmhlYnJldz0xNDYwO2UuaGlyaXF3aWRlaGVicmV3PTE0NjA7ZS5obGluZWJlbG93PTc4MzA7ZS5obW9ub3NwYWNlPTY1MzUyO2UuaG9hcm1lbmlhbj0xMzkyO2UuaG9oaXB0aGFpPTM2Mjc7ZS5ob2hpcmFnYW5hPTEyNDExO2UuaG9rYXRha2FuYT0xMjUwNztlLmhva2F0YWthbmFoYWxmd2lkdGg9NjU0MjI7ZS5ob2xhbT0xNDY1O2UuaG9sYW0xOT0xNDY1O2UuaG9sYW0yNj0xNDY1O2UuaG9sYW0zMj0xNDY1O2UuaG9sYW1oZWJyZXc9MTQ2NTtlLmhvbGFtbmFycm93aGVicmV3PTE0NjU7ZS5ob2xhbXF1YXJ0ZXJo
101ZWJyZXc9MTQ2NTtlLmhvbGFtd2lkZWhlYnJldz0xNDY1O2UuaG9ub2todWt0aGFpPTM2MzA7ZS5ob29rYWJvdmVjb21iPTc3NztlLmhvb2tjbWI9Nzc3O2UuaG9va3BhbGF0YWxpemVkYmVsb3djbWI9ODAxO2UuaG9va3JldHJvZmxleGJlbG93Y21iPTgwMjtlLmhvb25zcXVhcmU9MTMxMjI7ZS5ob3JpY29wdGljPTEwMDE7ZS5ob3Jpem9udGFsYmFyPTgyMTM7ZS5ob3JuY21iPTc5NTtlLmhvdHNwcmluZ3M9OTgzMjtlLmhvdXNlPTg5NjI7ZS5ocGFyZW49OTM3OTtlLmhzdXBlcmlvcj02ODg7ZS5odHVybmVkPTYxMztlLmh1aGlyYWdhbmE9MTI0MDU7ZS5odWlpdG9zcXVhcmU9MTMxMDc7ZS5odWthdGFrYW5hPTEyNTAxO2UuaHVrYXRha2FuYWhhbGZ3aWR0aD02NTQyMDtlLmh1bmdhcnVtbGF1dD03MzM7ZS5odW5nYXJ1bWxhdXRjbWI9Nzc5O2UuaHY9NDA1O2UuaHlwaGVuPTQ1O2UuaHlwaGVuaW5mZXJpb3I9NjMyMDU7ZS5oeXBoZW5tb25vc3BhY2U9NjUyOTM7ZS5oeXBoZW5zbWFsbD02NTEyMztlLmh5cGhlbnN1cGVyaW9yPTYzMjA2O2UuaHlwaGVudHdvPTgyMDg7ZS5pPTEwNTtlLmlhY3V0ZT0yMzc7ZS5pYWN5cmlsbGljPTExMDM7ZS5pYmVuZ2FsaT0yNDM5O2UuaWJvcG9tb2ZvPTEyNTgzO2UuaWJyZXZlPTMwMTtlLmljYXJvbj00NjQ7ZS5pY2lyY2xlPTk0MzI7ZS5pY2lyY3VtZmxleD0yMzg7ZS5pY3lyaWxsaWM9MTExMDtlLmlkYmxncmF2ZT01MjE7ZS5pZGVvZ3JhcGhlYXJ0aGNpcmNsZT0xMjk0MztlLmlkZW9ncmFwaGZpcmVjaXJjbGU9MTI5Mzk7ZS5pZGVvZ3JhcGhpY2FsbGlhbmNlcGFyZW49MTI4NjM7ZS5pZGVvZ3JhcGhpY2NhbGxwYXJlbj0xMjg1ODtlLmlkZW9ncmFwaGljY2VudHJlY2lyY2xlPTEyOTY1O2UuaWRlb2dyYXBoaWNjbG9zZT0xMjI5NDtlLmlkZW9ncmFwaGljY29tbWE9MTIyODk7ZS5pZG
101VvZ3JhcGhpY2NvbW1hbGVmdD02NTM4MDtlLmlkZW9ncmFwaGljY29uZ3JhdHVsYXRpb25wYXJlbj0xMjg1NTtlLmlkZW9ncmFwaGljY29ycmVjdGNpcmNsZT0xMjk2MztlLmlkZW9ncmFwaGljZWFydGhwYXJlbj0xMjg0NztlLmlkZW9ncmFwaGljZW50ZXJwcmlzZXBhcmVuPTEyODYxO2UuaWRlb2dyYXBoaWNleGNlbGxlbnRjaXJjbGU9MTI5NTc7ZS5pZGVvZ3JhcGhpY2Zlc3RpdmFscGFyZW49MTI4NjQ7ZS5pZGVvZ3JhcGhpY2ZpbmFuY2lhbGNpcmNsZT0xMjk1MDtlLmlkZW9ncmFwaGljZmluYW5jaWFscGFyZW49MTI4NTQ7ZS5pZGVvZ3JhcGhpY2ZpcmVwYXJlbj0xMjg0MztlLmlkZW9ncmFwaGljaGF2ZXBhcmVuPTEyODUwO2UuaWRlb2dyYXBoaWNoaWdoY2lyY2xlPTEyOTY0O2UuaWRlb2dyYXBoaWNpdGVyYXRpb25tYXJrPTEyMjkzO2UuaWRlb2dyYXBoaWNsYWJvcmNpcmNsZT0xMjk1MjtlLmlkZW9ncmFwaGljbGFib3JwYXJlbj0xMjg1NjtlLmlkZW9ncmFwaGljbGVmdGNpcmNsZT0xMjk2NztlLmlkZW9ncmFwaGljbG93Y2lyY2xlPTEyOTY2O2UuaWRlb2dyYXBoaWNtZWRpY2luZWNpcmNsZT0xMjk2OTtlLmlkZW9ncmFwaGljbWV0YWxwYXJlbj0xMjg0NjtlLmlkZW9ncmFwaGljbW9vbnBhcmVuPTEyODQyO2UuaWRlb2dyYXBoaWNuYW1lcGFyZW49MTI4NTI7ZS5pZGVvZ3JhcGhpY3BlcmlvZD0xMjI5MDtlLmlkZW9ncmFwaGljcHJpbnRjaXJjbGU9MTI5NTg7ZS5pZGVvZ3JhcGhpY3JlYWNocGFyZW49MTI4Njc7ZS5pZGVvZ3JhcGhpY3JlcHJlc2VudHBhcmVuPTEyODU3O2UuaWRlb2dyYXBoaWNyZXNvdXJjZXBhcmVuPTEyODYyO2UuaWRlb2dyYXBoaWNyaWdodGNpcmNsZT0xMjk2ODtlLmlkZW9ncmFwaGljc2VjcmV0Y2lyY2xlPTEyOTUzO2UuaWRlb2dyYXBoaWNzZWxmcGFyZW49MTI4NjY7ZS5pZGVvZ3JhcGhpY3NvY2lldHlwYXJlbj0xMjg1MTtlLmlkZW9ncmFwaGljc3BhY2U9MTIyODg7ZS5pZGVvZ3JhcGhpY3NwZWNpYWxwYXJlbj0xMjg1MztlLmlkZW9ncmFwaGljc3RvY2twYXJlbj0xMjg0OTtlLmlkZW9ncmFwaGljc3R1ZHlwYXJlbj0xMjg1OTtlLmlkZW9ncmFwaGljc3VucGFyZW49MTI4NDg7ZS5pZGVvZ3JhcGhpY3N1cGVydmlzZXBhcmVuPTEyODYwO2UuaWRlb2dyYXBoaWN3YXRlcnBhcmVuPTEyODQ0O2UuaWRlb2dyYXBoaWN3b29kcGFyZW49MTI4NDU7ZS5pZG
101VvZ3JhcGhpY3plcm89MTIyOTU7ZS5pZGVvZ3JhcGhtZXRhbGNpcmNsZT0xMjk0MjtlLmlkZW9ncmFwaG1vb25jaXJjbGU9MTI5Mzg7ZS5pZGVvZ3JhcGhuYW1lY2lyY2xlPTEyOTQ4O2UuaWRlb2dyYXBoc3VuY2lyY2xlPTEyOTQ0O2UuaWRlb2dyYXBod2F0ZXJjaXJjbGU9MTI5NDA7ZS5pZGVvZ3JhcGh3b29kY2lyY2xlPTEyOTQxO2UuaWRldmE9MjMxMTtlLmlkaWVyZXNpcz0yMzk7ZS5pZGllcmVzaXNhY3V0ZT03NzI3O2UuaWRpZXJlc2lzY3lyaWxsaWM9MTI1MztlLmlkb3RiZWxvdz03ODgzO2UuaWVicmV2ZWN5cmlsbGljPTEyMzk7ZS5pZWN5cmlsbGljPTEwNzc7ZS5pZXVuZ2FjaXJjbGVrb3JlYW49MTI5MTc7ZS5pZXVuZ2FwYXJlbmtvcmVhbj0xMjgyMTtlLmlldW5nY2lyY2xla29yZWFuPTEyOTAzO2UuaWV1bmdrb3JlYW49MTI2MTU7ZS5pZXVuZ3BhcmVua29yZWFuPTEyODA3O2UuaWdyYXZlPTIzNjtlLmlndWphcmF0aT0yNjk1O2UuaWd1cm11a2hpPTI1Njc7ZS5paGlyYWdhbmE9MTIzNTY7ZS5paG9va2Fib3ZlPTc4ODE7ZS5paWJlbmdhbGk9MjQ0MDtlLmlpY3lyaWxsaWM9MTA4MDtlLmlpZGV2YT0yMzEyO2UuaWlndWphcmF0aT0yNjk2O2UuaWlndXJtdWtoaT0yNTY4O2UuaWltYXRyYWd1cm11a2hpPTI2MjQ7ZS5paW52ZXJ0ZWRicmV2ZT01MjM7ZS5paXNob3J0Y3lyaWxsaWM9MTA4MTtlLmlpdm93ZWxzaWduYmVuZ2FsaT0yNDk2O2UuaWl2b3dlbHNpZ25kZXZhPTIzNjg7ZS5paXZvd2Vsc2lnbmd1amFyYXRpPTI3NTI7ZS5paj0zMDc7ZS5pa2F0YWthbmE9MTI0NTI7ZS5pa2F0YWthbmFoYWxmd2lkdGg9NjUzOTQ7ZS5pa29yZWFuPTEyNjQzO2UuaWxkZT03MzI7ZS5pbHV5aGVicmV3PTE0NTI7ZS5pbWFjcm9uPTI5OTtlLmltYWNyb25jeXJpbGxpYz0xMjUxO2UuaW1hZ2VvcmFwcHJveGltYXRlbHllcXVhbD04Nzg3O2UuaW1hdHJhZ3VybXVraGk9MjYyMztlLmltb25vc3BhY2U9NjUzNTM7ZS5pbmNyZW1lbnQ9ODcxMDtlLmluZmluaXR5PTg3MzQ7ZS5pbmlhcm1lbmlhbj0xMzg3O2UuaW50ZWdyYWw9ODc0NztlLmludGVncmFsYm90dG9tPTg5OTM7ZS5pbnRlZ3JhbGJ0PTg5OTM7ZS5pbnRlZ3JhbGV4PTYzNzMzO2UuaW50ZWdyYWx0b3A9ODk5MjtlLmludGVncmFsdHA9ODk5MjtlLmludGVyc2VjdGlvbj04NzQ1O2UuaW50aXNxdWFyZT0xMzA2MTtlLmludmJ1bGxldD05Njg4O2UuaW52Y2lyY2xlPTk2ODk7ZS5pbnZzbWlsZWZhY2U9OTc4NztlLmlvY3lyaWxsaWM9MTEwNTtlLmlvZ29uZWs9MzAzO2UuaW90YT05NTM7ZS5pb3RhZGllcmVzaXM9OTcwO2UuaW90YWRpZXJlc2lzdG9ub3M9OTEyO2UuaW90YWxhdGluPTYxNztlLmlvdGF0b25vcz05NDM7ZS5pcGFyZW49OTM4MDtlLmlyaWd1cm11a2hpPTI2NzQ7ZS5pc21hbGxoaXJhZ2FuYT0xMjM1NTtlLmlzbWFsbGthdGFrYW5hPTEyNDUxO2UuaXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODQ7ZS5pc3NoYXJiZW5nYWxpPTI1NTQ7ZS5pc3Ryb2tlPTYxNjtlLmlzdXBlcmlvcj02MzIxMztlLml0ZXJhdGlvbmhpcmFnYW5hPTEyNDQ1O2UuaXRlcmF0aW9ua2F0YWthbmE9MTI1NDE7ZS5pdGlsZGU9Mjk3O2UuaXRpbGRlYmVsb3c9NzcyNTtlLml1Ym9wb21vZm89MTI1ODU7ZS5pdWN5cmlsbGljPTExMDI7ZS5pdm93ZWxzaWduYmVuZ2FsaT0yNDk1O2UuaXZvd2Vsc2lnbmRldmE9MjM2NztlLml2b3dlbHNpZ25ndWphcmF0aT0yNzUxO2UuaXpoaXRzYWN5cmlsbGljPTExNDE7ZS5pemhpdHNhZGJsZ3JhdmVjeXJpbGxpYz0xMTQzO2Uuaj0xMDY7ZS5qYWFybWVuaWFuPTEzOTM7ZS5qYWJlbmdhbGk9MjQ2MDtlLmphZGV2YT0yMzMyO2UuamFndWphcmF0aT0yNzE2O2UuamFndXJtdWtoaT0yNTg4O2UuamJvcG9tb2ZvPTEyNTYwO2UuamNhcm9uPTQ5NjtlLmpjaXJjbGU9OTQzMztlLmpjaXJjdW1mbGV4PTMwOTtlLmpjcm9zc2VkdGFpbD02Njk7ZS5qZG90bGVzc3N0cm9rZT02MDc7ZS5qZWN5cmlsbGljPTExMTI7ZS5qZWVtYXJhYmljPTE1ODA7ZS5qZWVtZmluYWxhcmFiaWM9NjUxODI7ZS5qZWVtaW5pdGlhbGFyYWJpYz02NTE4MztlLmplZW1tZWRpYWxhcmFiaWM9NjUxODQ7ZS5qZWhhcmFiaWM9MTY4ODtlLmplaGZpbmFsYXJhYmljPTY0Mzk1O2UuamhhYmVuZ2FsaT0yNDYxO2UuamhhZGV2YT0yMzMzO2UuamhhZ3VqYXJhdGk9MjcxNztlLmpoYWd1cm11a2hpPTI1ODk7ZS5qaGVoYXJtZW5pYW49MTQwMztlLmppcz0xMjI5MjtlLmptb25vc3BhY2U9NjUzNTQ7ZS5qcGFyZW49OTM4MTtlLmpzdXBlcmlvcj02OTA7ZS5rPTEwNztlLmthYmFzaGtpcmN5cmlsbGljPTExODU7ZS5rYWJlbmdhbGk9MjQ1MztlLmthY3V0ZT03NzI5O2Uua2FjeXJpbGxpYz0xMDgyO2Uua2FkZXNjZW5kZXJjeXJpbGxpYz0xMTc5O2Uua2FkZXZhPTIzMjU7ZS5rYWY9MTQ5OTtlLmthZmFyYWJpYz0xNjAzO2Uua2FmZGFnZXNoPTY0MzE1O2Uua2FmZGFnZXNoaGVicmV3PTY0MzE1O2Uua2FmZmluYWxhcmFiaWM9NjUyNDI7ZS5rYWZoZWJyZXc9MTQ5OTtlLmthZmluaXRpYWxhcmFiaWM9NjUyNDM7ZS5rYWZtZWRpYWxhcmFiaWM9NjUyNDQ7ZS5rYWZyYWZlaGVicmV3PTY0MzMzO2Uua2FndWphcmF0aT0yNzA5O2Uua2FndXJtdWtoaT0yNTgxO2Uua2FoaXJhZ2FuYT0xMjM2MztlLmthaG9va2N5cmlsbGljPTEyMjA7ZS5rYWthdGFrYW5hPTEyNDU5O2Uua2FrYXRha2FuYWhhbGZ3aWR0aD02NTM5ODtlLmthcHBhPTk1NDtlLmthcHBhc3ltYm9sZ3JlZWs9MTAwODtlLmthcHllb3VubWlldW1rb3JlYW49MTI2NTc7ZS5rYXB5ZW91bnBoaWV1cGhrb3JlYW49MTI2NzY7ZS5rYXB5ZW91bnBpZXVwa29yZWFuPTEyNjY0O2Uua2FweWVvdW5zc2FuZ3BpZXVwa29yZWFuPTEyNjY1O2Uua2Fyb3JpaXNxdWFyZT0xMzA2OTtlLmthc2hpZGFhdXRvYXJhYmljPTE2MDA7ZS5rYXNoaWRhYXV0b25vc2lkZWJlYXJpbmdhcmFiaWM9MTYwMDtlLmthc21hbGxrYXRha2FuYT0xMjUzMztlLmthc3F1YXJlPTEzMTg4O2Uua2FzcmFhcmFiaWM9MTYxNjtlLmthc3JhdGFuYXJhYmljPTE2MTM7ZS5rYXN0cm9rZWN5cmlsbGljPTExODM7ZS5rYXRhaGlyYXByb2xvbmdtYXJraGFsZndpZHRoPTY1MzkyO2Uua2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljPTExODE7ZS5rYm9wb21vZm89MTI1NTg7ZS5rY2Fsc3F1YXJlPTEzMTkzO2Uua2Nhcm9uPTQ4OTtlLmtjZWRpbGx
101hPTMxMTtlLmtjaXJjbGU9OTQzNDtlLmtjb21tYWFjY2VudD0zMTE7ZS5rZG90YmVsb3c9NzczMTtlLmtlaGFybWVuaWFuPTE0MTI7ZS5rZWhpcmFnYW5hPTEyMzY5O2Uua2VrYXRha2FuYT0xMjQ2NTtlLmtla2F0YWthbmFoYWxmd2lkdGg9NjU0MDE7ZS5rZW5hcm1lbmlhbj0xMzkxO2Uua2VzbWFsbGthdGFrYW5hPTEyNTM0O2Uua2dyZWVubGFuZGljPTMxMjtlLmtoYWJlbmdhbGk9MjQ1NDtlLmtoYWN5cmlsbGljPTEwOTM7ZS5raGFkZXZhPTIzMjY7ZS5raGFndWphcmF0aT0yNzEwO2Uua2hhZ3VybXVraGk9MjU4MjtlLmtoYWhhcmFiaWM9MTU4MjtlLmtoYWhmaW5hbGFyYWJpYz02NTE5MDtlLmtoYWhpbml0aWFsYXJhYmljPTY1MTkxO2Uua2hhaG1lZGlhbGFyYWJpYz02NTE5MjtlLmtoZWljb3B0aWM9OTk5O2Uua2hoYWRldmE9MjM5MztlLmtoaGFndXJtdWtoaT0yNjQ5O2Uua2hpZXVraGFjaXJjbGVrb3JlYW49MTI5MjA7ZS5raGlldWtoYXBhcmVua29yZWFuPTEyODI0O2Uua2hpZXVraGNpcmNsZWtvcmVhbj0xMjkwNjtlLmtoaWV1a2hrb3JlYW49MTI2MTk7ZS5raGlldWtocGFyZW5rb3JlYW49MTI4MTA7ZS5raG9raGFpdGhhaT0zNTg2O2Uua2hva2hvbnRoYWk9MzU4OTtlLmtob2todWF0dGhhaT0zNTg3O2Uua2hva2h3YWl0aGFpPTM1ODg7ZS5raG9tdXR0aGFpPTM2NzU7ZS5raG9vaz00MDk7ZS5raG9yYWtoYW5ndGhhaT0zNTkwO2Uua2h6c3F1YXJlPTEzMjAxO2Uua2loaXJhZ2FuYT0xMjM2NTtlLmtpa2F0YWthbmE9MTI0NjE7ZS5raWthdGFrYW5haGFsZndpZHRoPTY1Mzk5O2Uua2lyb2d1cmFtdXNxdWFyZT0xMzA3NztlLmtpcm9tZWV0b3J1c3F1YXJlPTEzMDc4O2Uua2lyb3NxdWFyZT0xMzA3NjtlLmtpeWVva2FjaXJjbGVrb3JlYW49MTI5MTA7ZS5raXllb2thcGFyZW5rb3JlYW49MTI4MTQ7ZS5raXllb2tjaXJjbGVrb3JlYW49MTI4OTY7ZS5raXllb2trb3JlYW49MTI1OTM7ZS5raXllb2twYXJlbmtvcmVhbj0xMjgwMDtlLmtpeWVva3Npb3Nrb3JlYW49MTI1OTU7ZS5ramVjeXJpbGxpYz0xMTE2O2Uua2xpbmViZWxvdz03NzMzO2Uua2xzcXVhcmU9MTMyMDg7ZS5rbWN1YmVkc3F1YXJlPTEzMjIyO2Uua21vbm9zcGFjZT02NTM1NTtlLmttc3F1YXJlZHNxdWFyZT0xMzIxODtlLmtvaGlyYWdhbmE9MTIzNzE7ZS5rb2htc3F1YXJlPTEzMjQ4O2Uua29rYWl0aGFpPTM1ODU7ZS5rb2thdGFrYW5hPTEyNDY3O2Uua29rYXRha2FuYWhhbGZ3aWR0aD02NTQwMjtlLmtvb3Bvc3F1YXJlPTEzMDg2O2Uua29wcGFjeXJpbGxpYz0xMTUzO2Uua29yZWFuc3RhbmRhcmRzeW1ib2w9MTI5Mjc7ZS5rb3JvbmlzY21iPTgzNTtlLmtwYXJlbj05MzgyO2Uua3Bhc3F1YXJlPTEzMjI2O2Uua3NpY3lyaWxsaWM9MTEzNTtlLmt0c3F1YXJlPTEzMjYzO2Uua3R1cm5lZD02NzA7ZS5rdWhpcmFnYW5hPTEyMzY3O2Uua3VrYXRha2FuYT0xMjQ2MztlLmt1a2F0YWthbmFoYWxmd2lkdGg9NjU0MDA7ZS5rdnNxdWFyZT0xMzI0MDtlLmt3c3F1YXJlPTEzMjQ2O2UubD0xMDg7ZS5sYWJlbmdhbGk9MjQ4MjtlLmxhY3V0ZT0zMTQ7ZS5sYWRldmE9MjM1NDtlLmxhZ3VqYXJhdGk9MjczODtlLmxhZ3VybXVraGk9MjYxMDtlLmxha2toYW5neWFvdGhhaT0zNjUzO2UubGFtYWxlZmZpbmFsYXJhYmljPTY1Mjc2O2UubGFtYWxlZmhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTI3MjtlLmxhbWFsZWZoYW16YWFib3ZlaXNvbGF0ZWRhcmFiaWM9NjUyNzE7ZS5sYW1hbGVmaGFtemFiZWxvd2ZpbmFsYXJhYmljPTY1Mjc0O2UubGFtYWxlZmhhbXphYmVsb3dpc29sYXRlZGFyYWJpYz02NTI3MztlLmxhbWFsZWZpc29sYXRlZGFyYWJpYz02NTI3NTtlLmxhbWFsZWZtYWRkYWFib3ZlZmluYWxhcmFiaWM9NjUyNzA7ZS5sYW1hbGVmbWFkZGFhYm92ZWlzb2xhdGVkYXJhYmljPTY1MjY5O2UubGFtYXJhYmljPTE2MDQ7ZS5sYW1iZGE9OTU1O2UubGFtYmRhc3Ryb2tlPTQxMTtlLmxhbWVkPTE1MDA7ZS5sYW1lZGRhZ2VzaD02NDMxNjtlLmxhbWVkZGFnZXNoaGVicmV3PTY0MzE2O2UubGFtZWRoZWJyZXc9MTUwMDtlLmxhbWZpbmFsYXJhYmljPTY1MjQ2O2UubGFtaGFoaW5pdGlhbGFyYWJpYz02NDcxNDtlLmxhbWluaXRpYWxhcmFiaWM9NjUyNDc7ZS5sYW1qZWVtaW5pdGlhbGFyYWJpYz02NDcxMztlLmxhbWtoYWhpbml0aWFsYXJhYmljPTY0NzE1O2UubGFtbGFtaGVoaXNvbGF0ZWRhcmFiaWM9NjUwMTA7ZS5sYW1tZWRpYWxhcmFiaWM9NjUyNDg7ZS5sYW1tZWVtaGFoaW5pdGlhbGFyYWJpYz02NDkwNDtlLmxhbW1lZW1pbml0aWFsYXJhYmljPTY0NzE2O2UubGFyZ2VjaXJjbGU9OTcxMTtlLmxiYXI9NDEwO2UubGJlbHQ9NjIwO2UubGJvcG9tb2ZvPTEyNTU2O2UubGNhcm9uPTMxODtlLmxjZWRpbGxhPTMxNjtlLmxjaXJjbGU9OTQzNTtlLmxjaXJjdW1mbGV4YmVsb3c9Nzc0MTtlLmxjb21tYWFjY2VudD0zMTY7ZS5sZG90PTMyMDtlLmxkb3RhY2NlbnQ9MzIwO2UubGRvdGJlbG93PTc3MzU7ZS5sZG90YmVsb3dtYWNyb249NzczNztlLmxlZnRhbmdsZWFib3ZlY21iPTc5NDtlLmxlZnR0YWNrYmVsb3djbWI9NzkyO2UubGVzcz02MDtlLmxlc3NlcXVhbD04ODA0O2UubGVzc2VxdWFsb3JncmVhdGVyPTg5MjI7ZS5sZXNzbW9ub3NwYWNlPTY1MzA4O2UubGVzc29yZXF1aXZhbGVudD04ODE4O2UubGVzc29yZ3JlYXRlcj04ODIyO2UubGVzc292ZXJlcXVhbD04ODA2O2UubGVzc3NtYWxsPTY1MTI0O2UubGV6aD02MjI7ZS5sZmJsb2NrPTk2MTI7ZS5saG9va3JldHJvZmxleD02MjE7ZS5saXJhPTgzNTY7ZS5saXduYXJtZW5pYW49MTM4ODtlLmxqPTQ1NztlLmxqZWN5cmlsbGljPTExMTM7ZS5sbD02MzE2ODtlLmxsYWRldmE9MjM1NTtlLmxsYWd1amFyYXRpPTI3Mzk7ZS5sbGluZWJlbG93PTc3Mzk7ZS5sbGxhZGV2YT0yMzU2O2UubGx2b2NhbGljYmVuZ2FsaT0yNTI5O2UubGx2b2NhbGljZGV2YT0yNDAxO2UubGx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMxO2UubGx2b2NhbGljdm93ZWxzaWduZGV2YT0yNDAzO2UubG1pZGRsZXRpbGRlPTYxOTtlLmxtb25vc3BhY2U9NjUzNTY7ZS5sbXNxdWFyZT0xMzI2NDtlLmxvY2h1bGF0aGFpPTM2Mjg7ZS5sb2dpY2FsYW5kPTg3NDM7ZS5sb2dpY2Fsbm90PTE3MjtlLmxvZ2ljYWxub3RyZXZlcnNlZD04OTc2O2UubG9naWNhbG9yPTg3NDQ7ZS5sb2xpbmd0aGFpPTM2MjE7ZS5sb25ncz0zODM7ZS5sb3dsaW5lY2VudGVybGluZT02NTEwMjtlLmxvd2xpbmVjbWI9ODE4O2UubG93bGluZWRhc2hlZD02NTEwMTtlLmxvemVuZ2U9OTY3NDtlLmxwYXJlbj05MzgzO2UubHNsYXNoPTMyMjtlLmxzcXVhcmU9ODQ2NztlLmxzdXBlcmlvcj02MzIxNDtlLmx0c2hhZGU9OTYxNztlLmx1dGhhaT0zNjIyO2UubHZvY2FsaWNiZW5nYWxpPTI0NDQ7ZS5sdm9jYWxpY2RldmE9MjMxNjtlLmx2b2NhbGljdm93ZWxzaWduYmVuZ2FsaT0yNTMwO2UubHZvY2FsaWN2b3dlbHNpZ25kZX
101ZhPTI0MDI7ZS5seHNxdWFyZT0xMzI2NztlLm09MTA5O2UubWFiZW5nYWxpPTI0Nzg7ZS5tYWNyb249MTc1O2UubWFjcm9uYmVsb3djbWI9ODE3O2UubWFjcm9uY21iPTc3MjtlLm1hY3Jvbmxvd21vZD03MTc7ZS5tYWNyb25tb25vc3BhY2U9NjU1MDc7ZS5tYWN1dGU9Nzc0MztlLm1hZGV2YT0yMzUwO2UubWFndWphcmF0aT0yNzM0O2UubWFndXJtdWtoaT0yNjA2O2UubWFoYXBha2hoZWJyZXc9MTQ0NDtlLm1haGFwYWtobGVmdGhlYnJldz0xNDQ0O2UubWFoaXJhZ2FuYT0xMjQxNDtlLm1haWNoYXR0YXdhbG93bGVmdHRoYWk9NjM2Mzc7ZS5tYWljaGF0dGF3YWxvd3JpZ2h0dGhhaT02MzYzNjtlLm1haWNoYXR0YXdhdGhhaT0zNjU5O2UubWFpY2hhdHRhd2F1cHBlcmxlZnR0aGFpPTYzNjM1O2UubWFpZWtsb3dsZWZ0dGhhaT02MzYyODtlLm1haWVrbG93cmlnaHR0aGFpPTYzNjI3O2UubWFpZWt0aGFpPTM2NTY7ZS5tYWlla3VwcGVybGVmdHRoYWk9NjM2MjY7ZS5tYWloYW5ha2F0bGVmdHRoYWk9NjM2MjA7ZS5tYWloYW5ha2F0dGhhaT0zNjMzO2UubWFpdGFpa2h1bGVmdHRoYWk9NjM2MjU7ZS5tYWl0YWlraHV0aGFpPTM2NTU7ZS5tYWl0aG9sb3dsZWZ0dGhhaT02MzYzMTtlLm1haXRob2xvd3JpZ2h0dGhhaT02MzYzMDtlLm1haXRob3RoYWk9MzY1NztlLm1haXRob3VwcGVybGVmdHRoYWk9NjM2Mjk7ZS5tYWl0cmlsb3dsZWZ0dGhhaT02MzYzNDtlLm1haXRyaWxvd3JpZ2h0dGhhaT02MzYzMztlLm1haXRyaXRoYWk9MzY1ODtlLm1haXRyaXVwcGVybGVmdHRoYWk9NjM2MzI7ZS5tYWl5YW1va3RoYWk9MzY1NDtlLm1ha2F0YWthbmE9MTI1MTA7ZS5tYWthdGFrYW5haGFsZndpZHRoPTY1NDIzO2UubWFsZT05Nzk0O2UubWFuc3lvbnNxdWFyZT0xMzEyNztlLm1hcWFmaGVicmV3PTE0NzA7ZS5tYXJzPTk3OTQ7ZS5tYXNvcmFjaXJjbGVoZWJyZXc9MTQ1NTtlLm1hc3F1YXJlPTEzMTg3O2UubWJvcG9tb2ZvPTEyNTUxO2UubWJzcXVhcmU9MTMyNjg7ZS5tY2lyY2xlPTk0MzY7ZS5tY3ViZWRzcXVhcmU9MTMyMjE7ZS5tZG90YWNjZW50PTc3NDU7ZS5tZG90YmVsb3c9Nzc0NztlLm1lZW1hcmFiaWM9MTYwNTtlLm1lZW1maW5hbGFyYWJpYz02NTI1MDtlLm1lZW1pbml0aWFsYXJhYmljPTY1MjUxO2UubWVlbW1lZGlhbGFyYWJpYz02NTI1MjtlLm1lZW1tZWVtaW5pdGlhbGFyYWJpYz02NDcyMTtlLm1lZW1tZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1ODQ7ZS5tZWV0b3J1c3F1YXJlPTEzMTMzO2UubWVoaXJhZ2FuYT0xMjQxNztlLm1laXppZXJhc3F1YXJlPTEzMTgyO2UubWVrYXRha2FuYT0xMjUxMztlLm1la2F0YWthbmFoYWxmd2lkdGg9NjU0MjY7ZS5tZW09MTUwMjtlLm1lbWRhZ2VzaD02NDMxODtlLm1lbWRhZ2VzaGhlYnJldz02NDMxODtlLm1lbWhlYnJldz0xNTAyO2UubWVuYXJtZW5pYW49MTM5NjtlLm1lcmtoYWhlYnJldz0xNDQ1O2UubWVya2hha2VmdWxhaGVicmV3PTE0NDY7ZS5tZXJraGFrZWZ1bGFsZWZ0aGVicmV3PTE0NDY7ZS5tZXJraGFsZWZ0aGVicmV3PTE0NDU7ZS5taG9vaz02MjU7ZS5taHpzcXVhcmU9MTMyMDI7ZS5taWRkbGVkb3RrYXRha2FuYWhhbGZ3aWR0aD02NTM4MTtlLm1pZGRvdD0xODM7ZS5taWV1bWFjaXJjbGVrb3JlYW49MTI5MTQ7ZS5taWV1bWFwYXJlbmtvcmVhbj0xMjgxODtlLm1pZXVtY2lyY2xla29yZWFuPTEyOTAwO2UubWlldW1rb3JlYW49MTI2MDk7ZS5taWV1bXBhbnNpb3Nrb3JlYW49MTI2NTY7ZS5taWV1bXBhcmVua29yZWFuPTEyODA0O2UubWlldW1waWV1cGtvcmVhbj0xMjY1NDtlLm1pZXVtc2lvc2tvcmVhbj0xMjY1NTtlLm1paGlyYWdhbmE9MTI0MTU7ZS5taWthdGFrYW5hPTEyNTExO2UubWlrYXRha2FuYWhhbGZ3aWR0aD02NTQyNDtlLm1pbnVzPTg3MjI7ZS5taW51c2JlbG93Y21iPTgwMDtlLm1pbnVzY2lyY2xlPTg4NTQ7ZS5taW51c21vZD03Mjc7ZS5taW51c3BsdXM9ODcyMztlLm1pbnV0ZT04MjQyO2UubWlyaWJhYXJ1c3F1YXJlPTEzMTMwO2UubWlyaXNxdWFyZT0xMzEyOTtlLm1sb25nbGVndHVybmVkPTYyNDtlLm1sc3F1YXJlPTEzMjA2O2UubW1jdWJlZHNxdWFyZT0xMzIxOTtlLm1tb25vc3BhY2U9NjUzNTc7ZS5tbXNxdWFyZWRzcXVhcmU9MTMyMTU7ZS5tb2hpcmFnYW5hPTEyNDE4O2UubW9obXNxdWFyZT0xMzI0OTtlLm1va2F0YWthbmE9MTI1MTQ7ZS5tb2thdGFrYW5haGFsZndpZHRoPTY1NDI3O2UubW9sc3F1YXJlPTEzMjcwO2UubW9tYXRoYWk9MzYxNztlLm1vdmVyc3NxdWFyZT0xMzIyMztlLm1vdmVyc3NxdWFyZWRzcXVhcmU9MTMyMjQ7ZS5tcGFyZW49OTM4NDtlLm1wYXNxdWFyZT0xMzIyNztlLm1zc3F1YXJlPTEzMjM1O2UubXN1cGVyaW9yPTYzMjE1O2UubXR1cm5lZD02MjM7ZS5tdT0xODE7ZS5tdTE9MTgxO2UubXVhc3F1YXJlPTEzMTg2O2UubXVjaGdyZWF0ZXI9ODgxMTtlLm11Y2hsZXNzPTg4MTA7ZS5tdWZzcXVhcmU9MTMxOTY7ZS5tdWdyZWVrPTk1NjtlLm11Z3NxdWFyZT0xMzE5NztlLm11aGlyYWdhbmE9MTI0MTY7ZS5tdWthdGFrYW5hPTEyNTEyO2UubXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyNTtlLm11bHNxdWFyZT0xMzIwNTtlLm11bHRpcGx5PTIxNTtlLm11bXNxdWFyZT0xMzIxMTtlLm11bmFoaGVicmV3PTE0NDM7ZS5tdW5haGxlZnRoZWJyZXc9MTQ0MztlLm11c2ljYWxub3RlPTk4MzQ7ZS5tdXNpY2Fsbm90ZWRibD05ODM1O2UubXVzaWNmbGF0c2lnbj05ODM3O2UubXVzaWNzaGFycHNpZ249OTgzOTtlLm11c3NxdWFyZT0xMzIzNDtlLm11dnNxdWFyZT0xMzIzODtlLm11d3NxdWFyZT0xMzI0NDtlLm12bWVnYXNxdWFyZT0xMzI0MTtlLm12c3F1YXJlPTEzMjM5O2UubXdtZWdhc3F1YXJlPTEzMjQ3O2UubXdzcXVhcmU9MTMyNDU7ZS5uPTExMDtlLm5hYmVuZ2FsaT0yNDcyO2UubmFibGE9ODcxMTtlLm5hY3V0ZT0zMjQ7ZS5uYWRldmE9MjM0NDtlLm5hZ3VqYXJhdGk9MjcyODtlLm5hZ3VybXVraGk9MjYwMDtlLm5haGlyYWdhbmE9MTIzOTQ7ZS5uYWthdGFrYW5hPTEyNDkwO2UubmFrYXRha2FuYWhhbGZ3aWR0aD02NTQxMztlLm5hcG9zdHJvcGhlPTMyOTtlLm5hc3F1YXJlPTEzMTg1O2UubmJvcG9tb2ZvPTEyNTU1O2UubmJzcGFjZT0xNjA7ZS5uY2Fyb249MzI4O2UubmNlZGlsbGE9MzI2O2UubmNpcmNsZT05NDM3O2UubmNpcmN1bWZsZXhiZWxvdz03
101NzU1O2UubmNvbW1hYWNjZW50PTMyNjtlLm5kb3RhY2NlbnQ9Nzc0OTtlLm5kb3RiZWxvdz03NzUxO2UubmVoaXJhZ2FuYT0xMjM5NztlLm5la2F0YWthbmE9MTI0OTM7ZS5uZWthdGFrYW5haGFsZndpZHRoPTY1NDE2O2UubmV3c2hlcWVsc2lnbj04MzYyO2UubmZzcXVhcmU9MTMxOTU7ZS5uZ2FiZW5nYWxpPTI0NTc7ZS5uZ2FkZXZhPTIzMjk7ZS5uZ2FndWphcmF0aT0yNzEzO2UubmdhZ3VybXVraGk9MjU4NTtlLm5nb25ndXRoYWk9MzU5MTtlLm5oaXJhZ2FuYT0xMjQzNTtlLm5ob29rbGVmdD02MjY7ZS5uaG9va3JldHJvZmxleD02Mjc7ZS5uaWV1bmFjaXJjbGVrb3JlYW49MTI5MTE7ZS5uaWV1bmFwYXJlbmtvcmVhbj0xMjgxNTtlLm5pZXVuY2lldWNrb3JlYW49MTI1OTc7ZS5uaWV1bmNpcmNsZWtvcmVhbj0xMjg5NztlLm5pZXVuaGlldWhrb3JlYW49MTI1OTg7ZS5uaWV1bmtvcmVhbj0xMjU5NjtlLm5pZXVucGFuc2lvc2tvcmVhbj0xMjY0ODtlLm5pZXVucGFyZW5rb3JlYW49MTI4MDE7ZS5uaWV1bnNpb3Nrb3JlYW49MTI2NDc7ZS5uaWV1bnRpa2V1dGtvcmVhbj0xMjY0NjtlLm5paGlyYWdhbmE9MTIzOTU7ZS5uaWthdGFrYW5hPTEyNDkxO2UubmlrYXRha2FuYWhhbGZ3aWR0aD02NTQxNDtlLm5pa2hhaGl0bGVmdHRoYWk9NjM2NDE7ZS5uaWtoYWhpdHRoYWk9MzY2MTtlLm5pbmU9NTc7ZS5uaW5lYXJhYmljPTE2NDE7ZS5uaW5lYmVuZ2FsaT0yNTQzO2UubmluZWNpcmNsZT05MzIwO2UubmluZWNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMzA7ZS5uaW5lZGV2YT0yNDE1O2UubmluZWd1amFyYXRpPTI3OTk7ZS5uaW5lZ3VybXVraGk9MjY3MTtlLm5pbmVoYWNrYXJhYmljPTE2NDE7ZS5uaW5laGFuZ3pob3U9MTIzMjk7ZS5uaW5laWRlb2dyYXBoaWNwYXJlbj0xMjg0MDtlLm5pbmVpbmZlcmlvcj04MzI5O2UubmluZW1vbm9zcGFjZT02NTMwNTtlLm5pbmVvbGRzdHlsZT02MzI4OTtlLm5pbmVwYXJlbj05MzQwO2UubmluZXBlcmlvZD05MzYwO2UubmluZXBlcnNpYW49MTc4NTtlLm5pbmVyb21hbj04NTY4O2UubmluZXN1cGVyaW9yPTgzMTM7ZS5uaW5ldGVlbmNpcmNsZT05MzMwO2UubmluZXRlZW5wYXJlbj05MzUwO2UubmluZXRlZW5wZXJpb2Q9OTM3MDtlLm5pbmV0aGFpPTM2NzM7ZS5uaj00NjA7ZS5uamVjeXJpbGxpYz0xMTE0O2UubmthdGFrYW5hPTEyNTMxO2UubmthdGFrYW5haGFsZndpZHRoPTY1NDM3O2UubmxlZ3JpZ2h0bG9uZz00MTQ7ZS5ubGluZWJlbG93PTc3NTM7ZS5ubW9ub3NwYWNlPTY1MzU4O2Uubm1zcXVhcmU9MTMyMTA7ZS5ubmFiZW5nYWxpPTI0Njc7ZS5ubmFkZXZhPTIzMzk7ZS5ubmFndWphcmF0aT0yNzIzO2Uubm5hZ3VybXVraGk9MjU5NTtlLm5ubmFkZXZhPTIzNDU7ZS5ub2hpcmFnYW5hPTEyMzk4O2Uubm9rYXRha2FuYT0xMjQ5NDtlLm5va2F0YWthbmFoYWxmd2lkdGg9NjU0MTc7ZS5ub25icmVha2luZ3NwYWNlPTE2MDtlLm5vbmVudGhhaT0zNjAzO2Uubm9udXRoYWk9MzYwOTtlLm5vb25hcmFiaWM9MTYwNjtlLm5vb25maW5hbGFyYWJpYz02NTI1NDtlLm5vb25naHVubmFhcmFiaWM9MTcyMjtlLm5vb25naHVubmFmaW5hbGFyYWJpYz02NDQxNTtlLm5vb25pbml0aWFsYXJhYmljPTY1MjU1O2Uubm9vbmplZW1pbml0aWFsYXJhYmljPTY0NzIyO2Uubm9vbmplZW1pc29sYXRlZGFyYWJpYz02NDU4NztlLm5vb25tZWRpYWxhcmFiaWM9NjUyNTY7ZS5ub29ubWVlbWluaXRpYWxhcmFiaWM9NjQ3MjU7ZS5ub29ubWVlbWlzb2xhdGVkYXJhYmljPTY0NTkwO2Uubm9vbm5vb25maW5hbGFyYWJpYz02NDY1MztlLm5vdGNvbnRhaW5zPTg3MTY7ZS5ub3RlbGVtZW50PTg3MTM7ZS5ub3RlbGVtZW50b2Y9ODcxMztlLm5vdGVxdWFsPTg4MDA7ZS5ub3RncmVhdGVyPTg4MTU7ZS5ub3RncmVhdGVybm9yZXF1YWw9ODgxNztlLm5vdGdyZWF0ZXJub3JsZXNzPTg4MjU7ZS5ub3RpZGVudGljYWw9ODgwMjtlLm5vdGxlc3M9ODgxNDtlLm5vdGxlc3Nub3JlcXVhbD04ODE2O2Uubm90cGFyYWxsZWw9ODc0MjtlLm5vdHByZWNlZGVzPTg4MzI7ZS5ub3RzdWJzZXQ9ODgzNjtlLm5vdHN1Y2NlZWRzPTg4MzM7ZS5ub3RzdXBlcnNldD04ODM3O2Uubm93YXJtZW5pYW49MTM5ODtlLm5wYXJlbj05Mzg1O2UubnNzcXVhcmU9MTMyMzM7ZS5uc3VwZXJpb3I9ODMxOTtlLm50aWxkZT0yNDE7ZS5udT05NTc7ZS5udWhpcmFnYW5hPTEyMzk2O2UubnVrYXRha2FuYT0xMjQ5MjtlLm51a2F0YWthbmFoYWxmd2lkdGg9NjU0MTU7ZS5udWt0YWJlbmdhbGk9MjQ5MjtlLm51a3RhZGV2YT0yMzY0O2UubnVrdGFndWphcmF0aT0yNzQ4O2UubnVrdGFndXJtdWtoaT0yNjIwO2UubnVtYmVyc2lnbj0zNTtlLm51bWJlcnNpZ25tb25vc3BhY2U9NjUyODM7ZS5udW1iZXJzaWduc21hbGw9NjUxMTk7ZS5udW1lcmFsc2lnbmdyZWVrPTg4NDtlLm51bWVyYWxzaWdubG93ZXJncmVlaz04ODU7ZS5udW1lcm89ODQ3MDtlLm51bj0xNTA0O2UubnVuZGFnZXNoPTY0MzIwO2UubnVuZGFnZXNoaGVicmV3PTY0MzIwO2UubnVuaGVicmV3PTE1MDQ7ZS5udnNxdWFyZT0xMzIzNztlLm53c3F1YXJlPTEzMjQzO2UubnlhYmVuZ2FsaT0yNDYyO2UubnlhZGV2YT0yMzM0O2UubnlhZ3VqYXJhdGk9MjcxODtlLm55YWd1cm11a2hpPTI1OTA7ZS5vPTExMTtlLm9hY3V0ZT0yNDM7ZS5vYW5ndGhhaT0zNjI5O2Uub2JhcnJlZD02Mjk7ZS5vYmFycmVkY3lyaWxsaWM9MTI1NztlLm9iYXJyZWRkaWVyZXNpc2N5cmlsbGljPTEyNTk7ZS5vYmVuZ2FsaT0yNDUxO2Uub2JvcG9tb2ZvPTEyNTcxO2Uub2JyZXZlPTMzNTtlLm9jYW5kcmFkZXZhPTIzMjE7ZS5vY2FuZHJhZ3VqYXJhdGk9MjcwNTtlLm9jYW5kcmF2b3dlbHNpZ25kZXZhPTIzNzc7ZS5vY2FuZHJhdm93ZWxzaWduZ3VqYXJhdGk9Mjc2MTtlLm9jYXJvbj00NjY7ZS5vY2lyY2xlPTk0Mzg7ZS5vY2lyY3VtZmxleD0yNDQ7ZS5vY2lyY3VtZmxleGFjdXRlPTc4ODk7ZS5vY2lyY3VtZmxleGRvdGJlbG93PTc4OTc7ZS5vY2lyY3VtZmxleGdyYXZlPTc4OTE7ZS5vY2lyY3VtZmxleGhvb2thYm92ZT03ODkzO2Uub2NpcmN1bWZsZXh0aWxkZT03ODk1O2Uub2N5cmlsbGljPTEwODY7ZS5vZGJsYWN1dGU9MzM3O2Uub2RibGdyYXZlPTUyNTtlLm9kZXZhPTIzMjM7ZS5vZGllcmVzaXM9MjQ2O2Uub2RpZXJlc2lzY3lyaWxsaWM9MTI1NTtlLm9kb3RiZWxvdz03ODg1O2Uub2U9MzM5O2Uub2Vrb3JlYW49MTI2MzQ7ZS5vZ29uZWs9NzMxO2Uub2dvbmVrY21iPTgwODtlLm9ncmF2ZT0yNDI7ZS5vZ3VqYXJhdGk9MjcwNztlLm9oYXJtZW5pYW49MTQxMztlLm9oaXJhZ2FuYT0xMjM2MjtlLm9ob29rYWJvdmU9Nzg4NztlLm9ob3JuPTQxNztlLm9ob3JuYWN1dGU9Nzg5OTtlLm9ob3JuZG90YmVsb3c9NzkwNztlLm9ob3JuZ3JhdmU9NzkwMTtlLm9ob3JuaG9va2Fib3ZlPTc5MDM7ZS5vaG9ybnRpbGRlPTc5MDU7ZS5vaHVuZ2FydW1sYXV0PTMzNztlLm9pPTQxOTtlLm9pbnZlcnRlZGJyZXZlPTUyNztlLm9rYXRha2FuYT0xMjQ1ODtlLm9rYXRha2FuYWhhbGZ3aWR0aD02NTM5NztlLm9rb3JlYW49MTI2MzE7ZS5vbGVoZWJyZXc9MTQ1MTtlLm9tYWNyb249MzMzO2Uub21hY3JvbmFjdXRlPTc3NjM7ZS5vbWFjcm9uZ3JhdmU9Nzc2MTtlLm9tZGV2YT0yMzg0O2Uub21lZ2E9OTY5O2Uub21lZ2ExPTk4MjtlLm9tZWdhY3lyaWxsaWM9MTEyMTtlLm9tZWdhbGF0aW5jbG9zZWQ9NjMxO2Uub21lZ2Fyb3VuZGN5cmlsbGljPTExNDc7ZS5vbWVnYXRpdGxvY3lyaWxsaWM9MTE0OTtlLm9tZWdhdG9ub3M9OTc0O2Uub21ndWphcmF0aT0yNzY4O2Uub21pY3Jvbj05NTk7ZS5vbWljcm9udG9ub3M9OTcyO2Uub21vbm9zcGFjZT02NTM1OTtlLm9uZT00OTtlLm9uZWFyYWJpYz0xNjMzO2Uub25lYmVuZ2FsaT0yNTM1O2Uub25lY2lyY2xlPTkzMTI7ZS5vbmVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIyO2Uub25lZGV2YT0yNDA3O2Uub25lZG90ZW5sZWFkZXI9ODIyODtlLm9uZWVpZ2h0aD04NTM5O2Uub25lZml0dGVkPTYzMTk2O2Uub25lZ3VqYXJhdGk9Mjc5MTtlLm9uZWd1cm11a2hpPTI2NjM7ZS5vbmVoYWNrYXJhYmljPTE2MzM7ZS5vbmVoYWxmPTE4OTtlLm9uZWhhbmd6aG91PTEyMzIxO2Uub25laWRlb2dyYXBoaWNwYXJlbj0xMjgzMjtlLm9uZWluZmVyaW9yPTgzMjE7ZS5vbmVtb25vc3BhY2U9NjUyOTc7ZS5vbmVudW1lcmF0b3JiZW5nYWxpPTI1NDg7ZS5vbmVvbGRzdHlsZT02MzI4MTtlLm9uZXBhcmVuPTkzMzI7ZS5vbmVwZXJpb2Q9OTM1MjtlLm9uZXBlcnNpYW49MTc3NztlLm9uZXF1YXJ0ZXI9MTg4O2Uub25lcm9tYW49ODU2MDtlLm9uZXN1cGVyaW9yPTE4NTtlLm9uZXRoYWk9MzY2NTtlLm9uZXRoaXJkPTg1MzE7ZS5vb2dvbmVrPTQ5MTtlLm9vZ29uZWttYWNyb249NDkzO2Uub29ndXJtdWtoaT0yNTc5O2Uub29tYXRyYWd1cm11a2hpPTI2MzU7ZS5vb3Blbj01OTY7ZS5vcGFyZW49OTM4NjtlLm9wZW5idWxsZXQ9OTcwMjtlLm9wdGlvbj04OTk3O2Uub3JkZmVtaW5pbmU9MTcwO2Uub3JkbWFzY3VsaW5lPTE4NjtlLm9ydGhvZ29uYWw9ODczNTtlLm9zaG9ydGRldmE9MjMyMjtlLm9zaG9ydHZvd2Vsc2lnbmRldmE9MjM3ODtlLm9zbGFzaD0yNDg7ZS5vc2xhc2hhY3V0ZT01MTE7ZS5vc21hbGxoaXJhZ2FuYT0xMjM2MTtlLm9zbWFsbGthdGFrYW5hPTEyNDU3O2Uub3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODc7ZS5vc3Ryb2tlYW
101N1dGU9NTExO2Uub3N1cGVyaW9yPTYzMjE2O2Uub3RjeXJpbGxpYz0xMTUxO2Uub3RpbGRlPTI0NTtlLm90aWxkZWFjdXRlPTc3NTc7ZS5vdGlsZGVkaWVyZXNpcz03NzU5O2Uub3Vib3BvbW9mbz0xMjU3NztlLm92ZXJsaW5lPTgyNTQ7ZS5vdmVybGluZWNlbnRlcmxpbmU9NjUwOTg7ZS5vdmVybGluZWNtYj03NzM7ZS5vdmVybGluZWRhc2hlZD02NTA5NztlLm92ZXJsaW5lZGJsd2F2eT02NTEwMDtlLm92ZXJsaW5ld2F2eT02NTA5OTtlLm92ZXJzY29yZT0xNzU7ZS5vdm93ZWxzaWduYmVuZ2FsaT0yNTA3O2Uub3Zvd2Vsc2lnbmRldmE9MjM3OTtlLm92b3dlbHNpZ25ndWphcmF0aT0yNzYzO2UucD0xMTI7ZS5wYWFtcHNzcXVhcmU9MTMxODQ7ZS5wYWFzZW50b3NxdWFyZT0xMzA5OTtlLnBhYmVuZ2FsaT0yNDc0O2UucGFjdXRlPTc3NjU7ZS5wYWRldmE9MjM0NjtlLnBhZ2Vkb3duPTg2NzE7ZS5wYWdldXA9ODY3MDtlLnBhZ3VqYXJhdGk9MjczMDtlLnBhZ3VybXVraGk9MjYwMjtlLnBhaGlyYWdhbmE9MTI0MDE7ZS5wYWl5YW5ub2l0aGFpPTM2MzE7ZS5wYWthdGFrYW5hPTEyNDk3O2UucGFsYXRhbGl6YXRpb25jeXJpbGxpY2NtYj0xMTU2O2UucGFsb2Noa2FjeXJpbGxpYz0xMjE2O2UucGFuc2lvc2tvcmVhbj0xMjY3MTtlLnBhcmFncmFwaD0xODI7ZS5wYXJhbGxlbD04NzQxO2UucGFyZW5sZWZ0PTQwO2UucGFyZW5sZWZ0YWx0b25lYXJhYmljPTY0ODMwO2UucGFyZW5sZWZ0YnQ9NjM3MjU7ZS5wYXJlbmxlZnRleD02MzcyNDtlLnBhcmVubGVmdGluZmVyaW9yPTgzMzM7ZS5wYXJlbmxlZnRtb25vc3BhY2U9NjUyODg7ZS5wYXJlbmxlZnRzbWFsbD02NTExMztlLnBhcmVubGVmdHN1cGVyaW9yPTgzMTc7ZS5wYXJlbmxlZnR0cD02MzcyMztlLnBhcmVubGVmdHZlcnRpY2FsPTY1MDc3O2UucGFyZW5yaWdodD00MTtlLnBhcmVucmlnaHRhbHRvbmVhcmFiaWM9NjQ4MzE7ZS5wYXJlbnJpZ2h0YnQ9NjM3MzY7ZS5wYXJlbnJpZ2h0ZXg9NjM3MzU7ZS5wYXJlbnJpZ2h0aW5mZXJpb3I9ODMzNDtlLnBhcmVucmlnaHRtb25vc3BhY2U9NjUyODk7ZS5wYXJlbnJpZ2h0c21hbGw9NjUxMTQ7ZS5wYXJlbnJpZ2h0c3VwZXJpb3I9ODMxODtlLnBhcmVucmlnaHR0cD02MzczNDtlLnBhcmVucmlnaHR2ZXJ0aWNhbD02NTA3ODtlLnBhcnRpYWxkaWZmPTg3MDY7ZS5wYXNlcWhlYnJldz0xNDcyO2UucGFzaHRhaGVicmV3PTE0MzM7ZS5wYXNxdWFyZT0xMzIyNTtlLnBhdGFoPTE0NjM7ZS5wYXRhaDExPTE0NjM7ZS5wYXRhaDFkPTE0NjM7ZS5wYXRhaDJhPTE0NjM7ZS5wYXRhaGhlYnJldz0xNDYzO2UucGF0YWhuYXJyb3doZWJyZXc9MTQ2MztlLnBhdGFocXVhcnRlcmhlYnJldz0xNDYzO2UucGF0YWh3aWRlaGVicmV3PTE0NjM7ZS5wYXplcmhlYnJldz0xNDQxO2UucGJvcG9tb2ZvPTEyNTUwO2UucGNpcmNsZT05NDM5O2UucGRvdGFjY2VudD03NzY3O2UucGU9MTUwODtlLnBlY3lyaWxsaWM9MTA4NztlLnBlZGFnZXNoPTY0MzI0O2UucGVkYWdlc2hoZWJyZXc9NjQzMjQ7ZS5wZWV6aXNxdWFyZT0xMzExNTtlLnBlZmluYWxkYWdlc2hoZWJyZXc9NjQzMjM7ZS5wZWhhcmFiaWM9MTY2MjtlLnBlaGFybWVuaWFuPTE0MDI7ZS5wZWhlYnJldz0xNTA4O2UucGVoZmluYWxhcmFiaWM9NjQzNDM7ZS5wZWhpbml0aWFsYXJhYmljPTY0MzQ0O2UucGVoaXJhZ2FuYT0xMjQxMDtlLnBlaG1lZGlhbGFyYWJpYz02NDM0NTtlLnBla2F0YWthbmE9MTI1MDY7ZS5wZW1pZGRsZWhvb2tjeXJpbGxpYz0xMTkxO2UucGVyYWZlaGVicmV3PTY0MzM0O2UucGVyY2VudD0zNztlLnBlcmNlbnRhcmFiaWM9MTY0MjtlLnBlcmNlbnRtb25vc3BhY2U9NjUyODU7ZS5wZXJjZW50c21hbGw9NjUxMzA7ZS5wZXJpb2Q9NDY7ZS5wZXJpb2Rhcm1lbmlhbj0xNDE3O2UucGVyaW9kY2VudGVyZWQ9MTgzO2UucGVyaW9kaGFsZndpZHRoPTY1Mzc3O2UucGVyaW9kaW5mZXJpb3I9NjMyMDc7ZS5wZXJpb2Rtb25vc3BhY2U9NjUyOTQ7ZS5wZXJpb2RzbWFsbD02NTEwNjtlLnBlcmlvZHN1cGVyaW9yPTYzMjA4O2UucGVyaXNwb21lbmlncmVla2NtYj04MzQ7ZS5wZXJwZW5kaWN1bGFyPTg4Njk7ZS5wZXJ0aG91c2FuZD04MjQwO2UucGVzZXRhPTgzNTk7ZS5wZnNxdWFyZT0xMzE5NDtlLnBoYWJlbmdhbGk9MjQ3NTtlLnBoYWRldmE9MjM0NztlLnBoYWd1amFyYXRpPTI3MzE7ZS5waGFndXJtdWtoaT0yNjAzO2UucGhpPTk2NjtlLnBoaTE9OTgxO2UucGhpZXVwaGFjaXJjbGVrb3JlYW49MTI5MjI7ZS5waGlldXBoYXBhcmVua29yZWFuPTEyODI2O2UucGhpZXVwaGNpcmNsZWtvcmVhbj0xMjkwODtlLnBoaWV1cGhrb3JlYW49MTI2MjE7ZS5waGlldXBocGFyZW5rb3JlYW49MTI4MTI7ZS5waGlsYXRpbj02MzI7ZS5waGludGh1dGhhaT0zNjQyO2UucGhpc3ltYm9sZ3JlZWs9OTgxO2UucGhvb2s9NDIxO2UucGhvcGhhbnRoYWk9MzYxNDtlLnBob3BodW5ndGhhaT0zNjEyO2UucGhvc2FtcGhhb3RoYWk9MzYxNjtlLnBpPTk2MDtlLnBpZXVwYWNpcmNsZWtvcmVhbj0xMjkxNTtlLnBpZXVwYXBhcmVua29yZWFuPTEyODE5O2UucGlldXBjaWV1Y2tvcmVhbj0xMjY2MjtlLnBpZXVwY2lyY2xla29yZWFuPTEyOTAxO2UucGlldXBraXllb2trb3JlYW49MTI2NTg7ZS5waWV1cGtvcmVhbj0xMjYxMDtlLnBpZXVwcGFyZW5rb3JlYW49MTI4MDU7ZS5waWV1cHNpb3NraXllb2trb3JlYW49MTI2NjA7ZS5waWV1cHNpb3Nrb3JlYW49MTI2MTI7ZS5waWV1cHNpb3N0aWtldXRrb3JlYW49MTI2NjE7ZS5waWV1cHRoaWV1dGhrb3JlYW49MTI2NjM7ZS5waWV1cHRpa2V1dGtvcmVhbj0xMjY1OTtlLnBpaGlyYWdhbmE9MTI0MDQ7ZS5waWthdGFrYW5hPTEyNTAwO2UucGlzeW1ib2xncmVlaz05ODI7ZS5waXdyYXJtZW5pYW49MTQxMTtlLnBsYW5ja292ZXIycGk9ODQ2MztlLnBsYW5ja292ZXIycGkxPTg0NjM7ZS5wbHVzPTQzO2UucGx1c2JlbG93Y21iPTc5OTtlLnBsdXNjaXJjbGU9ODg1MztlLnBsdXNtaW51cz0xNzc7ZS5wbHVzbW9kPTcyNjtlLnBsdXNtb25vc3BhY2U9NjUyOTE7ZS5wbHVzc21hbGw9NjUxMjI7ZS5wbHVzc3VwZXJpb3I9ODMxNDtlLnBtb25vc3BhY2U9NjUzNjA7ZS5wbXNxdWFyZT0xMzI3MjtlLnBvaGlyYWdhbmE9MTI0MTM7ZS5wb2ludGluZ2luZGV4ZG93bndoaXRlPTk3NTk7ZS5wb2ludGluZ2luZGV4bGVmdHdoaXRlPTk3NTY7ZS5wb2ludGluZ2luZGV4cmlnaHR3aGl0ZT05NzU4O2UucG9pbnRpbmdpbmRleHVwd2hpdGU9OTc1NztlLnBva2F0YWthbmE9MTI1MDk7ZS5wb3BsYXRoYWk9MzYxMTtlLnBvc3RhbG1hcms9MTIzMDY7ZS5wb3N0YWxtYXJrZmFjZT0xMjMyMDtlLnBwYXJlbj05Mzg3O2UucHJlY2VkZXM9ODgyNjtlLnByZXNjcmlwdGlvbj04NDc4O2UucHJpbWVtb2Q9Njk3O2UucHJpbWVyZXZlcnNlZD04MjQ1O2UucHJvZHVjdD04NzE5O2UucHJvamVjdGl2ZT04OTY1O2
101UucHJvbG9uZ2Vka2FuYT0xMjU0MDtlLnByb3BlbGxvcj04OTg0O2UucHJvcGVyc3Vic2V0PTg4MzQ7ZS5wcm9wZXJzdXBlcnNldD04ODM1O2UucHJvcG9ydGlvbj04NzU5O2UucHJvcG9ydGlvbmFsPTg3MzM7ZS5wc2k9OTY4O2UucHNpY3lyaWxsaWM9MTEzNztlLnBzaWxpcG5ldW1hdGFjeXJpbGxpY2NtYj0xMTU4O2UucHNzcXVhcmU9MTMyMzI7ZS5wdWhpcmFnYW5hPTEyNDA3O2UucHVrYXRha2FuYT0xMjUwMztlLnB2c3F1YXJlPTEzMjM2O2UucHdzcXVhcmU9MTMyNDI7ZS5xPTExMztlLnFhZGV2YT0yMzkyO2UucWFkbWFoZWJyZXc9MTQ0ODtlLnFhZmFyYWJpYz0xNjAyO2UucWFmZmluYWxhcmFiaWM9NjUyMzg7ZS5xYWZpbml0aWFsYXJhYmljPTY1MjM5O2UucWFmbWVkaWFsYXJhYmljPTY1MjQwO2UucWFtYXRzPTE0NjQ7ZS5xYW1hdHMxMD0xNDY0O2UucWFtYXRzMWE9MTQ2NDtlLnFhbWF0czFjPTE0NjQ7ZS5xYW1hdHMyNz0xNDY0O2UucWFtYXRzMjk9MTQ2NDtlLnFhbWF0czMzPTE0NjQ7ZS5xYW1hdHNkZT0xNDY0O2UucWFtYXRzaGVicmV3PTE0NjQ7ZS5xYW1hdHNuYXJyb3doZWJyZXc9MTQ2NDtlLnFhbWF0c3FhdGFuaGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbm5hcnJvd2hlYnJldz0xNDY0O2UucWFtYXRzcWF0YW5xdWFydGVyaGVicmV3PTE0NjQ7ZS5xYW1hdHNxYXRhbndpZGVoZWJyZXc9MTQ2NDtlLnFhbWF0c3F1YXJ0ZXJoZWJyZXc9MTQ2NDtlLnFhbWF0c3dpZGVoZWJyZXc9MTQ2NDtlLnFhcm5leXBhcmFoZWJyZXc9MTQzOTtlLnFib3BvbW9mbz0xMjU2MTtlLnFjaXJjbGU9OTQ0MDtlLnFob29rPTY3MjtlLnFtb25vc3BhY2U9NjUzNjE7ZS5xb2Y9MTUxMTtlLnFvZmRhZ2VzaD02NDMyNztlLnFvZmRhZ2VzaGhlYnJldz02NDMyNztlLnFvZmhlYnJldz0xNTExO2UucXBhcmVuPTkzODg7ZS5xdWFydGVybm90ZT05ODMzO2UucXVidXRzPTE0Njc7ZS5xdWJ1dHMxOD0xNDY3O2UucXVidXRzMjU9MTQ2NztlLnF1YnV0czMxPTE0Njc7ZS5xdWJ1dHNoZWJyZXc9MTQ2NztlLnF1YnV0c25hcnJvd2hlYnJldz0xNDY3O2UucXVidXRzcXVhcnRlcmhlYnJldz0xNDY3O2UucXVidXRzd2lkZWhlYnJldz0xNDY3O2UucXVlc3Rpb249NjM7ZS5xdWVzdGlvbmFyYWJpYz0xNTY3O2UucXVlc3Rpb25hcm1lbmlhbj0xMzc0O2UucXVlc3Rpb25kb3duPTE5MTtlLnF1ZXN0aW9uZG93bnNtYWxsPTYzNDIzO2UucXVlc3Rpb25ncmVlaz04OTQ7ZS5xdWVzdGlvbm1vbm9zcGFjZT02NTMxMTtlLnF1ZXN0aW9uc21hbGw9NjMyOTU7ZS5xdW90ZWRibD0zNDtlLnF1b3RlZGJsYmFzZT04MjIyO2UucXVvdGVkYmxsZWZ0PTgyMjA7ZS5xdW90ZWRibG1vbm9zcGFjZT02NTI4MjtlLnF1b3RlZGJscHJpbWU9MTIzMTg7ZS5xdW90ZWRibHByaW1lcmV2ZXJzZWQ9MTIzMTc7ZS5xdW90ZWRibHJpZ2h0PTgyMjE7ZS5xdW90ZWxlZnQ9ODIxNjtlLnF1b3RlbGVmdHJldmVyc2VkPTgyMTk7ZS5xdW90ZXJldmVyc2VkPTgyMTk7ZS5xdW90ZXJpZ2h0PTgyMTc7ZS5xdW90ZXJpZ2h0bj0zMjk7ZS5xdW90ZXNpbmdsYmFzZT04MjE4O2UucXVvdGVzaW5nbGU9Mzk7ZS5xdW90ZXNpbmdsZW1vbm9zcGFjZT02NTI4NztlLnI9MTE0O2UucmFhcm1lbmlhbj0xNDA0O2UucmFiZW5nYWxpPTI0ODA7ZS5yYWN1dGU9MzQxO2UucmFkZXZhPTIzNTI7ZS5yYWRpY2FsPTg3MzA7ZS5yYWRpY2FsZXg9NjM3MTc7ZS5yYWRvdmVyc3NxdWFyZT0xMzIzMDtlLnJhZG92ZXJzc3F1YXJlZHNxdWFyZT0xMzIzMTtlLnJhZHNxdWFyZT0xMzIyOTtlLnJhZmU9MTQ3MTtlLnJhZmVoZWJyZXc9MTQ3MTtlLnJhZ3VqYXJhdGk9MjczNjtlLnJhZ3VybXVraGk9MjYwODtlLnJhaGlyYWdhbmE9MTI0MjU7ZS5yYWthdGFrYW5hPTEyNTIxO2UucmFrYXRha2FuYWhhbGZ3aWR0aD02NTQzMTtlLnJhbG93ZXJkaWFnb25hbGJlbmdhbGk9MjU0NTtlLnJhbWlkZGxlZGlhZ29uYWxiZW5nYWxpPTI1NDQ7ZS5yYW1zaG9ybj02MTI7ZS5yYXRpbz04NzU4O2UucmJvcG9tb2ZvPTEyNTY2O2UucmNhcm9uPTM0NTtlLnJjZWRpbGxhPTM0MztlLnJjaXJjbGU9OTQ0MTtlLnJjb21tYWFjY2VudD0zNDM7ZS5yZGJsZ3JhdmU9NTI5O2UucmRvdGFjY2VudD03NzY5O2UucmRvdGJlbG93PTc3NzE7ZS5yZG90YmVsb3dtYWNyb249Nzc3MztlLnJlZmVyZW5jZW1hcms9ODI1MTtlLnJlZmxleHN1YnNldD04ODM4O2UucmVmbGV4c3VwZXJzZXQ9ODgzOTtlLnJlZ2lzdGVyZWQ9MTc0O2UucmVnaXN0ZXJzYW5zPTYzNzIwO2UucmVnaXN0ZXJzZXJpZj02MzE5NDtlLnJlaGFyYWJpYz0xNTg1O2UucmVoYXJtZW5pYW49MTQwODtlLnJlaGZpbmFsYXJhYmljPTY1MTk4O2UucmVoaXJhZ2FuYT0xMjQyODtlLnJla2F0YWthbmE9MTI1MjQ7ZS5yZWthdGFrYW5haGFsZndpZHRoPTY1NDM0O2UucmVzaD0xNTEyO2UucmVzaGRhZ2VzaGhlYnJldz02NDMyODtlLnJlc2hoZWJyZXc9MTUxMjtlLnJldmVyc2VkdGlsZGU9ODc2NTtlLnJldmlhaGVicmV3PTE0MzE7ZS5yZXZpYW11Z3Jhc2hoZWJyZXc9MTQzMTtlLnJldmxvZ2ljYWxub3Q9ODk3NjtlLnJmaXNoaG9vaz02Mzg7ZS5yZmlzaGhvb2tyZXZlcnNlZD02Mzk7ZS5yaGFiZW5nYWxpPTI1MjU7ZS5yaGFkZXZhPTIzOTc7ZS5yaG89OTYxO2Uucmhvb2s9NjM3O2Uucmhvb2t0dXJuZWQ9NjM1O2Uucmhvb2t0dXJuZWRzdXBlcmlvcj02OTM7ZS5yaG9zeW1ib2xncmVlaz0xMDA5O2UucmhvdGljaG9va21vZD03MzQ7ZS5yaWV1bGFjaXJjbGVrb3JlYW49MTI5MTM7ZS5yaWV1bGFwYXJlbmtvcmVhbj0xMjgxNztlLnJpZXVsY2lyY2xla29yZWFuPTEyODk5O2UucmlldWxoaWV1aGtvcmVhbj0xMjYwODtlLnJpZXVsa2l5ZW9ra29yZWFuPTEyNjAyO2UucmlldWxraXllb2tzaW9za29yZWFuPTEyNjQ5O2UucmlldWxrb3JlYW49MTI2MDE7ZS5yaWV1bG1pZXVta29yZWFuPTEyNjAzO2UucmlldWxwYW5zaW9za29yZWFuPTEyNjUyO2UucmlldWxwYXJlbmtvcmVhbj0xMjgwMztlLnJpZXVscGhpZXVwaGtvcmVhbj0xMjYwNztlLnJpZXVscGlldXBrb3JlYW49MTI2MDQ7ZS5yaWV1bHBpZXVwc2lvc2tvcmVhbj0xMjY1MTtlLnJpZXVsc2lvc2tvcmVhbj0xMjYwNTtlLnJpZXVsdGhpZXV0aGtvcmVhbj0xMjYwNjtlLnJpZXVsdGlrZXV0a29yZWFuPTEyNjUwO2UucmlldWx5ZW9yaW5oaWV1aGtvcmVhbj0xMjY1MztlLnJpZ2h0YW5nbGU9ODczNTtlLnJpZ2h0dGFja2JlbG93Y21iPTc5MztlLnJpZ2h0dHJpYW5nbGU9ODg5NTtlLnJpaGlyYWdhbmE9MTI0MjY7ZS5yaWthdGFrYW5hPTEyNTIyO2UucmlrYXRha2FuYWhhbGZ3aWR0aD02NTQzMjtlLnJpbmc9NzMwO2UucmluZ2JlbG93Y21iPTgwNTtlLnJpbmdjbWI9Nzc4O2UucmluZ2hhbGZsZWZ0PTcwMztlLnJpbmdoYWxmbGVmdGFybWVuaWFuPTEzNjk7ZS5yaW5naGFsZmxlZnRiZWxvd2NtYj03OTY7ZS5yaW5naGFsZmxlZnRjZW50ZXJlZD03MjM7ZS5yaW5naGFsZnJpZ2h0PTcwMjtlLnJpbmdoYWxmcmlnaHRiZWxvd2NtYj04MjU7ZS5yaW5naGFsZnJpZ2h0Y2VudGVyZWQ9NzIyO2UucmludmVydGVkYnJldmU9NTMxO2Uucml0dG9ydXNxdWFyZT0xMzEzNztlLnJsaW5lYmVsb3c9Nzc3NTtlLnJsb25nbGVnPTYzNjtlLnJsb25nbGVndHVybmVkPTYzNDtlLnJtb25vc3BhY2U9NjUzNjI7ZS5yb2hpcmFnYW5hPTEyNDI5O2Uucm9rYXRha2FuYT0xMjUyNTtlLnJva2F0YWthbmFoYWxmd2lkdGg9NjU0MzU7ZS5yb3J1YXRoYWk9MzYxOTtlLnJwYXJlbj05Mzg5O2UucnJhYmVuZ2FsaT0yNTI0O2UucnJhZGV2YT0yMzUzO2UucnJhZ3VybXVraGk9MjY1MjtlLnJyZWhhcmFiaWM9MTY4MTtlLnJyZWhmaW5hbGFyYWJpYz02NDM5NztlLnJydm9jYWxpY2JlbmdhbGk9MjUyODtlLnJydm9jYWxpY2RldmE9MjQwMDtlLnJydm9jYWxpY2d1amFyYXRpPTI3ODQ7ZS5ycnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI1MDA7ZS5ycnZvY2FsaWN2b3dlbHNpZ25kZX
101ZhPTIzNzI7ZS5ycnZvY2FsaWN2b3dlbHNpZ25ndWphcmF0aT0yNzU2O2UucnN1cGVyaW9yPTYzMjE3O2UucnRibG9jaz05NjE2O2UucnR1cm5lZD02MzM7ZS5ydHVybmVkc3VwZXJpb3I9NjkyO2UucnVoaXJhZ2FuYT0xMjQyNztlLnJ1a2F0YWthbmE9MTI1MjM7ZS5ydWthdGFrYW5haGFsZndpZHRoPTY1NDMzO2UucnVwZWVtYXJrYmVuZ2FsaT0yNTQ2O2UucnVwZWVzaWduYmVuZ2FsaT0yNTQ3O2UucnVwaWFoPTYzMTk3O2UucnV0aGFpPTM2MjA7ZS5ydm9jYWxpY2JlbmdhbGk9MjQ0MztlLnJ2b2NhbGljZGV2YT0yMzE1O2UucnZvY2FsaWNndWphcmF0aT0yNjk5O2UucnZvY2FsaWN2b3dlbHNpZ25iZW5nYWxpPTI0OTk7ZS5ydm9jYWxpY3Zvd2Vsc2lnbmRldmE9MjM3MTtlLnJ2b2NhbGljdm93ZWxzaWduZ3VqYXJhdGk9Mjc1NTtlLnM9MTE1O2Uuc2FiZW5nYWxpPTI0ODg7ZS5zYWN1dGU9MzQ3O2Uuc2FjdXRlZG90YWNjZW50PTc3ODE7ZS5zYWRhcmFiaWM9MTU4OTtlLnNhZGV2YT0yMzYwO2Uuc2FkZmluYWxhcmFiaWM9NjUyMTA7ZS5zYWRpbml0aWFsYXJhYmljPTY1MjExO2Uuc2FkbWVkaWFsYXJhYmljPTY1MjEyO2Uuc2FndWphcmF0aT0yNzQ0O2Uuc2FndXJtdWtoaT0yNjE2O2Uuc2FoaXJhZ2FuYT0xMjM3MztlLnNha2F0YWthbmE9MTI0Njk7ZS5zYWthdGFrYW5haGFsZndpZHRoPTY1NDAzO2Uuc2FsbGFsbGFob3VhbGF5aGV3YXNhbGxhbWFyYWJpYz02NTAxODtlLnNhbWVraD0xNTA1O2Uuc2FtZWtoZGFnZXNoPTY0MzIxO2Uuc2FtZWtoZGFnZXNoaGVicmV3PTY0MzIxO2Uuc2FtZWtoaGVicmV3PTE1MDU7ZS5zYXJhYWF0aGFpPTM2MzQ7ZS5zYXJhYWV0aGFpPTM2NDk7ZS5zYXJhYWltYWltYWxhaXRoYWk9MzY1MjtlLnNhcmFhaW1haW11YW50aGFpPTM2NTE7ZS5zYXJhYW10aGFpPTM2MzU7ZS5zYXJhYXRoYWk9MzYzMjtlLnNhcmFldGhhaT0zNjQ4O2Uuc2FyYWlpbGVmdHRoYWk9NjM2MjI7ZS5zYXJhaWl0aGFpPTM2Mzc7ZS5zYXJhaWxlZnR0aGFpPTYzNjIxO2Uuc2FyYWl0aGFpPTM2MzY7ZS5zYXJhb3RoYWk9MzY1MDtlLnNhcmF1ZWVsZWZ0dGhhaT02MzYyNDtlLnNhcmF1ZWV0aGFpPTM2Mzk7ZS5zYXJhdWVsZWZ0dGhhaT02MzYyMztlLnNhcmF1ZXRoYWk9MzYzODtlLnNhcmF1dGhhaT0zNjQwO2Uuc2FyYXV1dGhhaT0zNjQxO2Uuc2JvcG9tb2ZvPTEyNTY5O2Uuc2Nhcm9uPTM1MztlLnNjYXJvbmRvdGFjY2VudD03NzgzO2Uuc2NlZGlsbGE9MzUxO2Uuc2Nod2E9NjAxO2Uuc2Nod2FjeXJpbGxpYz0xMjQxO2Uuc2Nod2FkaWVyZXNpc2N5cmlsbGljPTEyNDM7ZS5zY2h3YWhvb2s9NjAyO2Uuc2NpcmNsZT05NDQyO2Uuc2NpcmN1bWZsZXg9MzQ5O2Uuc2NvbW1hYWNjZW50PTUzNztlLnNkb3RhY2NlbnQ9Nzc3NztlLnNkb3RiZWxvdz03Nzc5O2Uuc2RvdGJlbG93ZG90YWNjZW50PTc3ODU7ZS5zZWFndWxsYmVsb3djbWI9ODI4O2Uuc2Vjb25kPTgyNDM7ZS5zZWNvbmR0b25lY2hpbmVzZT03MTQ7ZS5zZWN0aW9uPTE2NztlLnNlZW5hcmFiaWM9MTU4NztlLnNlZW5maW5hbGFyYWJpYz02NTIwMjtlLnNlZW5pbml0aWFsYXJhYmljPTY1MjAzO2Uuc2Vlbm1lZGlhbGFyYWJpYz02NTIwNDtlLnNlZ29sPTE0NjI7ZS5zZWdvbDEzPTE0NjI7ZS5zZWdvbDFmPTE0NjI7ZS5zZWdvbDJjPTE0NjI7ZS5zZWdvbGhlYnJldz0xNDYyO2Uuc2Vnb2xuYXJyb3doZWJyZXc9MTQ2MjtlLnNlZ29scXVhcnRlcmhlYnJldz0xNDYyO2Uuc2Vnb2x0YWhlYnJldz0xNDI2O2Uuc2Vnb2x3aWRlaGVicmV3PTE0NjI7ZS5zZWhhcm1lbmlhbj0xNDA1O2Uuc2VoaXJhZ2FuYT0xMjM3OTtlLnNla2F0YWthbmE9MTI0NzU7ZS5zZWthdGFrYW5haGFsZndpZHRoPTY1NDA2O2Uuc2VtaWNvbG9uPTU5O2Uuc2VtaWNvbG9uYXJhYmljPTE1NjM7ZS5zZW1pY29sb25tb25vc3BhY2U9NjUzMDc7ZS5zZW1pY29sb25zbWFsbD02NTEwODtlLnNlbWl2b2ljZWRtYXJra2FuYT0xMjQ0NDtlLnNlbWl2b2ljZWRtYXJra2FuYWhhbGZ3aWR0aD02NTQzOTtlLnNlbnRpc3F1YXJlPTEzMDkwO2Uuc2VudG9zcXVhcmU9MTMwOTE7ZS5zZXZlbj01NTtlLnNldmVuYXJhYmljPTE2Mzk7ZS5zZXZlbmJlbmdhbGk9MjU0MTtlLnNldmVuY2lyY2xlPTkzMTg7ZS5zZXZlbmNpcmNsZWludmVyc2VzYW5zc2VyaWY9MTAxMjg7ZS5zZXZlbmRldmE9MjQxMztlLnNldmVuZWlnaHRocz04NTQyO2Uuc2V2ZW5ndWphcmF0aT0yNzk3O2Uuc2V2ZW5ndXJtdWtoaT0yNjY5O2Uuc2V2ZW5oYWNrYXJhYmljPTE2Mzk7ZS5zZXZlbmhhbmd6aG91PTEyMzI3O2Uuc2V2ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODM4O2Uuc2V2ZW5pbmZlcmlvcj04MzI3O2Uuc2V2ZW5tb25vc3BhY2U9NjUzMDM7ZS5zZXZlbm9sZHN0eWxlPTYzMjg3O2Uuc2V2ZW5wYXJlbj05MzM4O2Uuc2V2ZW5wZXJpb2Q9OTM1ODtlLnNldmVucGVyc2lhbj0xNzgzO2Uuc2V2ZW5yb21hbj04NTY2O2Uuc2V2ZW5zdXBlcmlvcj04MzExO2Uuc2V2ZW50ZWVuY2lyY2xlPTkzMjg7ZS5zZXZlbnRlZW5wYXJlbj05MzQ4O2Uuc2V2ZW50ZWVucGVyaW9kPTkzNjg7ZS5zZXZlbnRoYWk9MzY3MTtlLnNmdGh5cGhlbj0xNzM7ZS5zaGFhcm1lbmlhbj0xMzk5O2Uuc2hhYmVuZ2FsaT0yNDg2O2Uuc2hhY3lyaWxsaWM9MTA5NjtlLnNoYWRkYWFyYWJpYz0xNjE3O2Uuc2hhZGRhZGFtbWFhcmFiaWM9NjQ2MDk7ZS5zaGFkZGFkYW1tYXRhbmFyYWJpYz02NDYwNjtlLnNoYWRkYWZhdGhhYXJhYmljPTY0NjA4O2Uuc2hhZGRha2FzcmFhcmFiaWM9NjQ2MTA7ZS5zaGFkZGFrYXNyYXRhbmFyYWJpYz02NDYwNztlLnNoYWRlPTk2MTg7ZS5zaGFkZWRhcms9OTYxOTtlLnNoYWRlbGlnaHQ9OTYxNztlLnNoYWRlbWVkaXVtPTk2MTg7ZS5zaGFkZXZhPTIzNTg7ZS5zaGFndWphcmF0aT0yNzQyO2Uuc2hhZ3VybXVraGk9MjYxNDtlLnNoYWxzaGVsZXRoZWJyZXc9MTQyNztlLnNoYm9wb21vZm89MTI1NjU7ZS5zaGNoYWN5cmlsbGljPTEwOTc7ZS5zaGVlbmFyYWJpYz0xNTg4O2Uuc2hlZW5maW5hbGFyYWJpYz02NTIwNjtlLnNoZWVuaW5pdGlhbGFyYWJpYz02NTIwNztlLnNoZWVubWVkaWFsYXJhYmljPTY1MjA4O2Uuc2hlaWNvcHRpYz05OTU7ZS5zaGVxZWw9ODM2MjtlLnNoZXFlbGhlYnJldz04MzYyO2Uuc2hldmE9MTQ1NjtlLnNoZXZhMTE1PTE0NTY7ZS5zaGV2YTE1PTE0NTY7ZS5zaGV2YTIyPTE0NTY7ZS5zaGV2YTJlPTE0NTY7ZS5zaGV2YWhlYnJldz0xNDU2O2Uuc2hldmFuYXJyb3doZWJyZXc9MTQ1NjtlLnNoZXZhcXVhcnRlcmhlYnJldz0xNDU2O2Uuc2hldmF3aWRlaGVicmV3PTE0NTY7ZS5zaGhhY3lyaWxsaWM9MTIxMTtlLnNoaW1hY29wdGljPTEwMDU7ZS5zaGluPTE1MTM7ZS5zaGluZGFnZXNoPTY0MzI5O2Uuc2hpbmRhZ2VzaGhlYnJldz02NDMyOTtlLnNoaW5kYWdlc2hzaGluZG90PTY0MzAwO2Uuc2hpbmRhZ2VzaHNoaW5kb3RoZWJyZXc9NjQzMDA7ZS5zaGluZGFnZXNoc2luZG90PTY0MzAxO2Uuc2hpbmRhZ2VzaHNpbmRvdGhlYnJldz02NDMwMTtlLnNoaW5kb3RoZWJyZXc9MTQ3MztlLnNoaW5oZWJyZXc9MTUxMztlLnNoaW5zaGluZG90PTY0Mjk4O2Uuc2hpbnNoaW5kb3RoZWJyZXc9NjQyOTg7ZS5zaGluc2luZG90PTY0Mjk5O2Uuc2hpbnNpbmRvdGhlYnJldz02NDI5OTtlLnNob29rPTY0MjtlLnNpZ21hPTk2MztlLnNpZ21hMT05NjI7ZS5zaWdtYWZpbmFsPTk2MjtlLnNpZ21hbHVuYXRlc3ltYm9sZ3JlZWs9MTAxMDtlLnNpaGlyYWdhbmE9MTIzNzU7ZS5zaWthdGFrYW5hPTEyNDcxO2Uuc2lrYXRha2FuYWhhbGZ3aWR0aD02NTQwNDtlLnNpbHVxaGVicmV3PTE0Njk7ZS5zaWx1cWxlZnRoZWJyZXc9MTQ2OTtlLnNpbWlsYXI9ODc2NDtlLnNpbmRvdGhlYnJldz0xNDc0O2Uuc2lvc2FjaXJjbGVrb3JlYW49MTI5MTY7ZS5zaW9zYXBhcmVua29yZWFuPTEyODIwO2Uuc2lvc2NpZXVja29yZWFuPTEyNjcwO2Uuc2lvc2NpcmNsZWtvcmVhbj0xMjkwMjtlLnNpb3NraXllb2trb3JlYW49MTI2NjY7ZS5zaW9za29yZWFuPTEyNjEzO2Uuc2lvc25pZXVua29yZWFuPTEyNjY3O2Uuc2lvc3BhcmVua29yZWFuPTEyODA2O2Uuc2lvc3BpZXVwa29yZWFuPTEyNjY5O2Uuc2lvc3Rpa2V1dGtvcmVhbj0xMjY2ODtlLnNpeD01NDtlLnNpeGFyYWJpYz0xNjM4O2Uuc2l4YmVuZ2FsaT0yNTQwO2Uuc2l4Y2lyY2xlPTkzMTc7ZS5zaXhjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI3O2Uuc2l4ZGV2YT0yNDEyO2Uuc2l4Z3VqYXJhdGk9Mjc5NjtlLnNpeGd1cm11a2hpPTI2Njg7ZS5zaXhoYWNrYXJhYmljPTE2Mzg7ZS5zaXhoYW5nemhvdT0xMjMyNjtlLnNpeGlkZW9ncmFwaGljcGFyZW49MTI4Mzc7ZS5zaXhpbmZlcmlvcj04MzI2O2Uuc2l4bW9ub3NwYWNlPTY1MzAyO2Uuc2l4b2xkc3R5bGU9NjMyODY7ZS5zaXhwYXJlbj05MzM3O2Uuc2l4cGVyaW9kPTkzNTc7ZS5zaXhwZXJzaWFuPTE3ODI7ZS5zaXhyb21hbj04NTY1O2Uuc2l4c3VwZXJpb3I9ODMxMDtlLnNpeHRlZW5jaXJjbGU9OTMyNztlLnNpeHRlZW5jdXJyZW5jeWRlbm9taW5hdG9yYmVuZ2FsaT0yNTUzO2Uuc2l4dGVlbnBhcmVuPTkzNDc7ZS5zaXh0ZWVucGVyaW9kPTkzNjc7ZS5zaXh0aGFpPTM2NzA7ZS5zbGFzaD00NztlLnNsYXNobW9ub3NwYWNlPTY1Mjk1O2Uuc2xvbmc9MzgzO2Uuc2xvbmdkb3RhY2NlbnQ9NzgzNTtlLnNtaWxlZmFjZT05Nzg2O2Uuc21vbm9zcGFjZT02NTM2MztlLnNvZnBhc3VxaGVicmV3PTE0NzU7ZS5zb2Z0aHlwaGVuPTE3MztlLnNvZnRzaWduY3lyaWxsaWM9MTEwMDtlLnNvaGlyYWdhbmE9MTIzODE7ZS5zb2thdGFrYW5hPTEyNDc3O2Uuc29rYXRha2FuYWhhbGZ3aWR0aD02NTQwNztlLnNvbGlkdXNsb25nb3ZlcmxheWNtYj04MjQ7ZS5zb2xpZHVzc2hvcnRvdmVybGF5Y21iPTgyMztlLnNvcnVzaXRoYWk9MzYyNTtlLnNvc2FsYXRoYWk9MzYyNDtlLnNvc290aGFpPTM1OTU7ZS5zb3N1YXRoYWk9MzYyNjtlLnNwYWNlPTMyO2Uuc3BhY2VoYWNrYXJhYmljPTMyO2Uuc3BhZGU9OTgyNDtlLnNwYWRlc3VpdGJsYWNrPTk4MjQ7ZS5zcGFkZXN1aXR3aGl0ZT05ODI4O2Uuc3BhcmVuPTkzOTA7ZS5zcXVhcmViZWxvd2NtYj04Mjc7ZS5zcXVhcmVjYz0xMzI1MjtlLnNxdWFyZWNtPTEzMjEzO2Uuc3F1YXJlZGlhZ29uYWxjcm9zc2hhdGNoZmlsbD05NjQxO2Uuc3F1YXJlaG9yaXpvbn
101RhbGZpbGw9OTYzNjtlLnNxdWFyZWtnPTEzMTk5O2Uuc3F1YXJla209MTMyMTQ7ZS5zcXVhcmVrbWNhcGl0YWw9MTMyNjI7ZS5zcXVhcmVsbj0xMzI2NTtlLnNxdWFyZWxvZz0xMzI2NjtlLnNxdWFyZW1nPTEzMTk4O2Uuc3F1YXJlbWlsPTEzMjY5O2Uuc3F1YXJlbW09MTMyMTI7ZS5zcXVhcmVtc3F1YXJlZD0xMzIxNztlLnNxdWFyZW9ydGhvZ29uYWxjcm9zc2hhdGNoZmlsbD05NjM4O2Uuc3F1YXJldXBwZXJsZWZ0dG9sb3dlcnJpZ2h0ZmlsbD05NjM5O2Uuc3F1YXJldXBwZXJyaWdodHRvbG93ZXJsZWZ0ZmlsbD05NjQwO2Uuc3F1YXJldmVydGljYWxmaWxsPTk2Mzc7ZS5zcXVhcmV3aGl0ZXdpdGhzbWFsbGJsYWNrPTk2MzU7ZS5zcnNxdWFyZT0xMzI3NTtlLnNzYWJlbmdhbGk9MjQ4NztlLnNzYWRldmE9MjM1OTtlLnNzYWd1amFyYXRpPTI3NDM7ZS5zc2FuZ2NpZXVja29yZWFuPTEyNjE3O2Uuc3NhbmdoaWV1aGtvcmVhbj0xMjY3NztlLnNzYW5naWV1bmdrb3JlYW49MTI2NzI7ZS5zc2FuZ2tpeWVva2tvcmVhbj0xMjU5NDtlLnNzYW5nbmlldW5rb3JlYW49MTI2NDU7ZS5zc2FuZ3BpZXVwa29yZWFuPTEyNjExO2Uuc3NhbmdzaW9za29yZWFuPTEyNjE0O2Uuc3Nhbmd0aWtldXRrb3JlYW49MTI2MDA7ZS5zc3VwZXJpb3I9NjMyMTg7ZS5zdGVybGluZz0xNjM7ZS5zdGVybGluZ21vbm9zcGFjZT02NTUwNTtlLnN0cm9rZWxvbmdvdmVybGF5Y21iPTgyMjtlLnN0cm9rZXNob3J0b3ZlcmxheWNtYj04MjE7ZS5zdWJzZXQ9ODgzNDtlLnN1YnNldG5vdGVxdWFsPTg4NDI7ZS5zdWJzZXRvcmVxdWFsPTg4Mzg7ZS5zdWNjZWVkcz04ODI3O2Uuc3VjaHRoYXQ9ODcxNTtlLnN1aGlyYWdhbmE9MTIzNzc7ZS5zdWthdGFrYW5hPTEyNDczO2Uuc3VrYXRha2FuYWhhbGZ3aWR0aD02NTQwNTtlLnN1a3VuYXJhYmljPTE2MTg7ZS5zdW1tYXRpb249ODcyMTtlLnN1bj05Nzg4O2Uuc3VwZXJzZXQ9ODgzNTtlLnN1cGVyc2V0bm90ZXF1YWw9ODg0MztlLnN1cGVyc2V0b3JlcXVhbD04ODM5O2Uuc3ZzcXVhcmU9MTMyNzY7ZS5zeW91d2FlcmFzcXVhcmU9MTMxODA7ZS50PTExNjtlLnRhYmVuZ2FsaT0yNDY4O2UudGFja2Rvd249ODg2ODtlLnRhY2tsZWZ0PTg4Njc7ZS50YWRldmE9MjM0MDtlLnRhZ3VqYXJhdGk9MjcyNDtlLnRhZ3VybXVraGk9MjU5NjtlLnRhaGFyYWJpYz0xNTkxO2UudGFoZmluYWxhcmFiaWM9NjUyMTg7ZS50YWhpbml0aWFsYXJhYmljPTY1MjE5O2UudGFoaXJhZ2FuYT0xMjM4MztlLnRhaG1lZGlhbGFyYWJpYz02NTIyMDtlLnRhaXN5b3VlcmFzcXVhcmU9MTMxODE7ZS50YWthdGFrYW5hPTEyNDc5O2UudGFrYXRha2FuYWhhbGZ3aWR0aD02NTQwODtlLnRhdHdlZWxhcmFiaWM9MTYwMDtlLnRhdT05NjQ7ZS50YXY9MTUxNDtlLnRhdmRhZ2VzPTY0MzMwO2UudGF2ZGFnZXNoPTY0MzMwO2UudGF2ZGFnZXNoaGVicmV3PTY0MzMwO2UudGF2aGVicmV3PTE1MTQ7ZS50YmFyPTM1OTtlLnRib3BvbW9mbz0xMjU1NDtlLnRjYXJvbj0zNTc7ZS50Y2N1cmw9NjgwO2UudGNlZGlsbGE9MzU1O2UudGNoZWhhcmFiaWM9MTY3MDtlLnRjaGVoZmluYWxhcmFiaWM9NjQzNzk7ZS50Y2hlaGluaXRpYWxhcmFiaWM9NjQzODA7ZS50Y2hlaG1lZGlhbGFyYWJpYz02NDM4MTtlLnRjaXJjbGU9OTQ0MztlLnRjaXJjdW1mbGV4YmVsb3c9Nzc5MztlLnRjb21tYWFjY2VudD0zNTU7ZS50ZGllcmVzaXM9NzgzMTtlLnRkb3RhY2NlbnQ9Nzc4NztlLnRkb3RiZWxvdz03Nzg5O2UudGVjeXJpbGxpYz0xMDkwO2UudGVkZXNjZW5kZXJjeXJpbGxpYz0xMTk3O2UudGVoYXJhYmljPTE1Nzg7ZS50ZWhmaW5hbGFyYWJpYz02NTE3NDtlLnRlaGhhaGluaXRpYWxhcmFiaWM9NjQ2NzQ7ZS50ZWhoYWhpc29sYXRlZGFyYWJpYz02NDUyNDtlLnRlaGluaXRpYWxhcmFiaWM9NjUxNzU7ZS50ZWhpcmFnYW5hPTEyMzkwO2UudGVoamVlbWluaXRpYWxhcmFiaWM9NjQ2NzM7ZS50ZWhqZWVtaXNvbGF0ZWRhcmFiaWM9NjQ1MjM7ZS50ZWhtYXJidXRhYXJhYmljPTE1Nzc7ZS50ZWhtYXJidXRhZmluYWxhcmFiaWM9NjUxNzI7ZS50ZWhtZWRpYWxhcmFiaWM9NjUxNzY7ZS50ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDY3NjtlLnRlaG1lZW1pc29sYXRlZGFyYWJpYz02NDUyNjtlLnRlaG5vb25maW5hbGFyYWJpYz02NDYyNztlLnRla2F0YWthbmE9MTI0ODY7ZS50ZWthdGFrYW5haGFsZndpZHRoPTY1NDExO2UudGVsZXBob25lPTg0ODE7ZS50ZWxlcGhvbmVibGFjaz05NzQyO2UudGVsaXNoYWdlZG9sYWhlYnJldz0xNDQwO2UudGVsaXNoYXFldGFuYWhlYnJldz0xNDQ5O2UudGVuY2lyY2xlPTkzMjE7ZS50ZW5pZGVvZ3JhcGhpY3BhcmVuPTEyODQxO2UudGVucGFyZW49OTM0MTtlLnRlbnBlcmlvZD05MzYxO2UudGVucm9tYW49ODU2OTtlLnRlc2g9Njc5O2UudGV0PTE0OTY7ZS50ZXRkYWdlc2g9NjQzMTI7ZS50ZXRkYWdlc2hoZWJyZXc9NjQzMTI7ZS50ZXRoZWJyZXc9MTQ5NjtlLnRldHNlY3lyaWxsaWM9MTIwNTtlLnRldmlyaGVicmV3PTE0MzU7ZS50ZXZpcmxlZnRoZWJyZXc9MTQzNTtlLnRoYWJlbmdhbGk9MjQ2OTtlLnRoYWRldmE9MjM0MTtlLnRoYWd1amFyYXRpPTI3MjU7ZS50aGFndXJtdWtoaT0yNTk3O2UudGhhbGFyYWJpYz0xNTg0O2UudGhhbGZpbmFsYXJhYmljPTY1MTk2O2UudGhhbnRoYWtoYXRsb3dsZWZ0dGhhaT02MzY0MDtlLnRoYW50aGFraGF0bG93cmlnaHR0aGFpPTYzNjM5O2UudGhhbnRoYWtoYXR0aGFpPTM2NjA7ZS50aGFudGhha2hhdHVwcGVybGVmdHRoYWk9NjM2Mzg7ZS50aGVoYXJhYmljPTE1Nzk7ZS50aGVoZmluYWxhcmFiaWM9NjUxNzg7ZS50aGVoaW5pdGlhbGFyYWJpYz02NTE3OTtlLnRoZWhtZWRpYWxhcmFiaWM9NjUxODA7ZS50aGVyZWV4aXN0cz04NzA3O2UudGhlcmVmb3JlPTg3NTY7ZS50aGV0YT05NTI7ZS50aGV0YTE9OTc3O2UudGhldGFzeW1ib2xncmVlaz05Nzc7ZS50aGlldXRoYWNpcmNsZWtvcmVhbj0xMjkyMTtlLnRoaWV1dGhhcGFyZW5rb3JlYW49MTI4MjU7ZS50aGlldXRoY2lyY2xla29yZWFuPTEyOTA3O2UudGhpZXV0aGtvcmVhbj0xMjYyMDtlLnRoaWV1dGhwYXJlbmtvcmVhbj0xMjgxMTtlLnRoaXJ0ZWVuY2lyY2xlPTkzMjQ7ZS50aGlydGVlbnBhcmVuPTkzNDQ7ZS50aGlydGVlbnBlcmlvZD05MzY0O2
101UudGhvbmFuZ21vbnRob3RoYWk9MzYwMTtlLnRob29rPTQyOTtlLnRob3BodXRoYW90aGFpPTM2MDI7ZS50aG9ybj0yNTQ7ZS50aG90aGFoYW50aGFpPTM2MDc7ZS50aG90aGFudGhhaT0zNjAwO2UudGhvdGhvbmd0aGFpPTM2MDg7ZS50aG90aHVuZ3RoYWk9MzYwNjtlLnRob3VzYW5kY3lyaWxsaWM9MTE1NDtlLnRob3VzYW5kc3NlcGFyYXRvcmFyYWJpYz0xNjQ0O2UudGhvdXNhbmRzc2VwYXJhdG9ycGVyc2lhbj0xNjQ0O2UudGhyZWU9NTE7ZS50aHJlZWFyYWJpYz0xNjM1O2UudGhyZWViZW5nYWxpPTI1Mzc7ZS50aHJlZWNpcmNsZT05MzE0O2UudGhyZWVjaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTI0O2UudGhyZWVkZXZhPTI0MDk7ZS50aHJlZWVpZ2h0aHM9ODU0MDtlLnRocmVlZ3VqYXJhdGk9Mjc5MztlLnRocmVlZ3VybXVraGk9MjY2NTtlLnRocmVlaGFja2FyYWJpYz0xNjM1O2UudGhyZWVoYW5nemhvdT0xMjMyMztlLnRocmVlaWRlb2dyYXBoaWNwYXJlbj0xMjgzNDtlLnRocmVlaW5mZXJpb3I9ODMyMztlLnRocmVlbW9ub3NwYWNlPTY1Mjk5O2UudGhyZWVudW1lcmF0b3JiZW5nYWxpPTI1NTA7ZS50aHJlZW9sZHN0eWxlPTYzMjgzO2UudGhyZWVwYXJlbj05MzM0O2UudGhyZWVwZXJpb2Q9OTM1NDtlLnRocmVlcGVyc2lhbj0xNzc5O2UudGhyZWVxdWFydGVycz0xOTA7ZS50aHJlZXF1YXJ0ZXJzZW1kYXNoPTYzMTk4O2UudGhyZWVyb21hbj04NTYyO2UudGhyZWVzdXBlcmlvcj0xNzk7ZS50aHJlZXRoYWk9MzY2NztlLnRoenNxdWFyZT0xMzIwNDtlLnRpaGlyYWdhbmE9MTIzODU7ZS50aWthdGFrYW5hPTEyNDgxO2UudGlrYXRha2FuYWhhbGZ3aWR0aD02NTQwOTtlLnRpa2V1dGFjaXJjbGVrb3JlYW49MTI5MTI7ZS50aWtldXRhcGFyZW5rb3JlYW49MTI4MTY7ZS50aWtldXRjaXJjbGVrb3JlYW49MTI4OTg7ZS50aWtldXRrb3JlYW49MTI1OTk7ZS50aWtldXRwYXJlbmtvcmVhbj0xMjgwMjtlLnRpbGRlPTczMjtlLnRpbGRlYmVsb3djbWI9ODE2O2UudGlsZGVjbWI9NzcxO2UudGlsZGVjb21iPTc3MTtlLnRpbGRlZG91YmxlY21iPTg2NDtlLnRpbGRlb3BlcmF0b3I9ODc2NDtlLnRpbGRlb3ZlcmxheWNtYj04MjA7ZS50aWxkZXZlcnRpY2FsY21iPTgzMDtlLnRpbWVzY2lyY2xlPTg4NTU7ZS50aXBlaGFoZWJyZXc9MTQzMDtlLnRpcGVoYWxlZnRoZWJyZXc9MTQzMDtlLnRpcHBpZ3VybXVraGk9MjY3MjtlLnRpdGxvY3lyaWxsaWNjbWI9MTE1NTtlLnRpd25hcm1lbmlhbj0xNDA3O2UudGxpbmViZWxvdz03NzkxO2UudG1vbm9zcGFjZT02NTM2NDtlLnRvYXJtZW5pYW49MTM4NTtlLnRvaGlyYWdhbmE9MTIzOTI7ZS50b2thdGFrYW5hPTEyNDg4O2UudG9rYXRha2FuYWhhbGZ3aWR0aD02NTQxMjtlLnRvbmViYXJleHRyYWhpZ2htb2Q9NzQxO2UudG9uZWJhcmV4dHJhbG93bW9kPTc0NTtlLnRvbmViYXJoaWdobW9kPTc0MjtlLnRvbmViYXJsb3dtb2Q9NzQ0O2UudG9uZWJhcm1pZG1vZD03NDM7ZS50b25lZml2ZT00NDU7ZS50b25lc2l4PTM4OTtlLnRvbmV0d289NDI0O2UudG9ub3M9OTAwO2UudG9uc3F1YXJlPTEzMDk1O2UudG9wYXRha3RoYWk9MzU5OTtlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMwODtlLnRvcnRvaXNlc2hlbGxicmFja2V0bGVmdHNtYWxsPTY1MTE3O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRsZWZ0dmVydGljYWw9NjUwODE7ZS50b3J0b2lzZXNoZWxsYnJhY2tldHJpZ2h0PTEyMzA5O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHNtYWxsPTY1MTE4O2UudG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodHZlcnRpY2FsPTY1MDgyO2UudG90YW90aGFpPTM2MDU7ZS50cGFsYXRhbGhvb2s9NDI3O2UudHBhcmVuPTkzOTE7ZS50cmFkZW1hcms9ODQ4MjtlLnRyYWRlbWFya3NhbnM9NjM3MjI7ZS50cmFkZW1hcmtzZXJpZj02MzE5NTtlLnRyZXRyb2ZsZXhob29rPTY0ODtlLnRyaWFnZG49OTY2MDtlLnRyaWFnbGY9OTY2ODtlLnRyaWFncnQ9OTY1ODtlLnRyaWFndXA9OTY1MDtlLnRzPTY3ODtlLnRzYWRpPTE1MTA7ZS50c2FkaWRhZ2VzaD02NDMyNjtlLnRzYWRpZGFnZXNoaGVicmV3PTY0MzI2O2UudHNhZGloZWJyZXc9MTUxMDtlLnRzZWN5cmlsbGljPTEwOTQ7ZS50c2VyZT0xNDYxO2UudHNlcmUxMj0xNDYxO2UudHNlcmUxZT0xNDYxO2UudHNlcmUyYj0xNDYxO2UudHNlcmVoZWJyZXc9MTQ2MTtlLnRzZXJlbmFycm93aGVicmV3PTE0NjE7ZS50c2VyZXF1YXJ0ZXJoZWJyZXc9MTQ2MTtlLnRzZXJld2lkZWhlYnJldz0xNDYxO2UudHNoZWN5cmlsbGljPTExMTU7ZS50c3VwZXJpb3I9NjMyMTk7ZS50dGFiZW5nYWxpPTI0NjM7ZS50dGFkZXZhPTIzMzU7ZS50dGFndWphcmF0aT0yNzE5O2UudHRhZ3VybXVraGk9MjU5MTtlLnR0ZWhhcmFiaWM9MTY1NztlLnR0ZWhmaW5hbGFyYWJpYz02NDM1OTtlLnR0ZWhpbml0aWFsYXJhYmljPTY0MzYwO2UudHRlaG1lZGlhbGFyYWJpYz02NDM2MTtlLnR0aGFiZW5nYWxpPTI0NjQ7ZS50dGhhZGV2YT0yMzM2O2UudHRoYWd1amFyYXRpPTI3MjA7ZS50dGhhZ3VybXVraGk9MjU5MjtlLnR0dXJuZWQ9NjQ3O2UudHVoaXJhZ2FuYT0xMjM4ODtlLnR1a2F0YWthbmE9MTI0ODQ7ZS50dWthdGFrYW5haGFsZndpZHRoPTY1NDEwO2UudHVzbWFsbGhpcmFnYW5hPTEyMzg3O2UudHVzbWFsbGthdGFrYW5hPTEyNDgzO2UudHVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1MzkxO2UudHdlbHZlY2lyY2xlPTkzMjM7ZS50d2VsdmVwYXJlbj05MzQzO2UudHdlbHZlcGVyaW9kPTkzNjM7ZS50d2VsdmVyb21hbj04NTcxO2UudHdlbnR5Y2lyY2xlPTkzMzE7ZS50d2VudHloYW5nemhvdT0yMTMxNjtlLnR3ZW50eXBhcmVuPTkzNTE7ZS50d2VudHlwZXJpb2Q9OTM3MTtlLnR3bz01MDtlLnR3b2FyYWJpYz0xNjM0O2UudHdvYmVuZ2FsaT0yNTM2O2UudHdvY2lyY2xlPTkzMTM7ZS50d29jaXJjbGVpbnZlcnNlc2Fuc3NlcmlmPTEwMTIzO2UudHdvZGV2YT0yNDA4O2UudHdvZG90ZW5sZWFkZXI9ODIyOTtlLnR3b2RvdGxlYWRlcj04MjI5O2UudHdvZG90bGVhZGVydmVydGljYWw9NjUwNzI7ZS50d29ndWphcmF0aT0yNzkyO2UudHdvZ3VybXVraGk9MjY2NDtlLnR3b2hhY2thcmFiaWM9MTYzNDtlLnR3b2hhbmd6aG91PTEyMzIyO2UudHdvaWRlb2dyYXBoaWNwYXJlbj0xMjgzMztlLnR3b2luZmVyaW9yPTgzMjI7ZS50d29tb25vc3BhY2U9NjUyOTg7ZS50d29udW1lcmF0b3JiZW5nYWxpPTI1NDk7ZS50d29vbGRzdHlsZT02MzI4MjtlLnR3b3BhcmVuPTkzMzM7ZS50d29wZXJpb2Q9OTM1MztlLnR3b3BlcnNpYW49MTc3ODtlLnR3b3JvbWFuPTg1NjE7ZS50d29zdHJva2U9NDQzO2UudHdvc3VwZXJpb3I9MTc4O2UudHdvdGhhaT0zNjY2O2UudHdvdGhpcmRzPTg1MzI7ZS51PTExNztlLnVhY3V0ZT0yNTA7ZS51YmFyPTY0OTtlLnViZW5nYWxpPTI0NDE7ZS51Ym9wb21vZm89MTI1ODQ7ZS51YnJldmU9MzY1O2UudWNhcm9uPTQ2ODtlLnVjaXJjbGU9OTQ0NDtlLnVjaXJjdW1mbGV4PTI1MTtlLnVjaXJjdW1mbGV4YmVsb3c9Nzc5OTtlLnVjeXJpbGxpYz0xMDkxO2UudWRhdHRhZGV2YT0yMzg1O2UudWRibGFjdXRlPTM2OTtlLnVkYmxncmF2ZT01MzM7ZS51ZGV2YT0yMzEzO2UudWRpZXJlc2lzPTI1MjtlLnVkaWVyZXNpc2FjdXRlPTQ3MjtlLnVkaWVyZXNpc2JlbG93PTc3OTU7ZS51ZGllcmVzaXNjYXJvbj00NzQ7ZS51ZGllcmVzaXNjeXJpbGxpYz0xMjY1O2UudWRpZXJlc2lzZ3JhdmU9NDc2O2UudWRpZXJlc2lzbWFjcm9uPTQ3MDtlLnVkb3RiZWxvdz03OTA5O2UudWdyYXZlPTI0OTtlLnVndWphcmF0aT0yNjk3O2UudWd1cm11a2hpPTI1Njk7ZS51aGlyYWdhbmE9MTIzNTg7ZS51aG9va2Fib3ZlPTc5MTE7ZS51aG9ybj00MzI7ZS51aG9ybmFjdXRlPTc5MTM7ZS51aG9ybmRvdGJlbG93PTc5MjE7ZS51aG9ybmdyYXZlPTc5MTU7ZS51aG9ybmhvb2thYm92ZT03OTE3O2UudWhvcm50aWxkZT03OTE5O2UudWh1bmdhcnVtbGF1dD0zNjk7ZS51aHVuZ2FydW1sYXV0Y3lyaWxsaWM9MTI2NztlLnVpbnZlcnRlZGJyZXZlPTUzNTtlLnVrYXRha2FuYT0xMjQ1NDtlLnVrYXRha2FuYWhhbGZ3aWR0aD02NTM5NTtlLnVrY3lyaWxsaWM9MTE0NTtlLnVrb3JlYW49MTI2MzY7ZS51bWFjcm9uPTM2MztlLnVtYWNyb25jeXJpbGxpYz0xMjYzO2UudW1hY3JvbmRpZXJlc2lzPTc4MDM7ZS51bWF0cmFndXJtdWtoaT0yNjI1O2UudW1vbm9zcGFjZT02NTM2NTtlLnVuZGVyc2NvcmU9OTU7ZS51bmRlcnNjb3JlZGJsPTgyMTU7ZS51bmRlcnNjb3JlbW9ub3NwYWNlPTY1MzQzO2UudW5kZXJzY29yZXZlcnRpY2FsPTY1MDc1O2UudW5kZXJzY29yZXdhdnk9NjUxMDM7ZS51bmlvbj04NzQ2O2UudW5pdmVyc2FsPTg3MDQ7ZS51b2dvbmVrPTM3MTtlLnVwYXJlbj05MzkyO2UudXBibG9jaz05NjAwO2UudXBwZXJkb3RoZWJyZXc9MTQ3NjtlLnVwc2lsb249OTY
1011O2UudXBzaWxvbmRpZXJlc2lzPTk3MTtlLnVwc2lsb25kaWVyZXNpc3Rvbm9zPTk0NDtlLnVwc2lsb25sYXRpbj02NTA7ZS51cHNpbG9udG9ub3M9OTczO2UudXB0YWNrYmVsb3djbWI9Nzk3O2UudXB0YWNrbW9kPTcyNDtlLnVyYWd1cm11a2hpPTI2NzU7ZS51cmluZz0zNjc7ZS51c2hvcnRjeXJpbGxpYz0xMTE4O2UudXNtYWxsaGlyYWdhbmE9MTIzNTc7ZS51c21hbGxrYXRha2FuYT0xMjQ1MztlLnVzbWFsbGthdGFrYW5haGFsZndpZHRoPTY1Mzg1O2UudXN0cmFpZ2h0Y3lyaWxsaWM9MTE5OTtlLnVzdHJhaWdodHN0cm9rZWN5cmlsbGljPTEyMDE7ZS51dGlsZGU9MzYxO2UudXRpbGRlYWN1dGU9NzgwMTtlLnV0aWxkZWJlbG93PTc3OTc7ZS51dWJlbmdhbGk9MjQ0MjtlLnV1ZGV2YT0yMzE0O2UudXVndWphcmF0aT0yNjk4O2UudXVndXJtdWtoaT0yNTcwO2UudXVtYXRyYWd1cm11a2hpPTI2MjY7ZS51dXZvd2Vsc2lnbmJlbmdhbGk9MjQ5ODtlLnV1dm93ZWxzaWduZGV2YT0yMzcwO2UudXV2b3dlbHNpZ25ndWphcmF0aT0yNzU0O2UudXZvd2Vsc2lnbmJlbmdhbGk9MjQ5NztlLnV2b3dlbHNpZ25kZXZhPTIzNjk7ZS51dm93ZWxzaWduZ3VqYXJhdGk9Mjc1MztlLnY9MTE4O2UudmFkZXZhPTIzNTc7ZS52YWd1amFyYXRpPTI3NDE7ZS52YWd1cm11a2hpPTI2MTM7ZS52YWthdGFrYW5hPTEyNTM1O2UudmF2PTE0OTM7ZS52YXZkYWdlc2g9NjQzMDk7ZS52YXZkYWdlc2g2NT02NDMwOTtlLnZhdmRhZ2VzaGhlYnJldz02NDMwOTtlLnZhdmhlYnJldz0xNDkzO2UudmF2aG9sYW09NjQzMzE7ZS52YXZob2xhbWhlYnJldz02NDMzMTtlLnZhdnZhdmhlYnJldz0xNTIwO2UudmF2eW9kaGVicmV3PTE1MjE7ZS52Y2lyY2xlPTk0NDU7ZS52ZG90YmVsb3c9NzgwNztlLnZlY3lyaWxsaWM9MTA3NDtlLnZlaGFyYWJpYz0xNzAwO2UudmVoZmluYWxhcmFiaWM9NjQzNjM7ZS52ZWhpbml0aWFsYXJhYmljPTY0MzY0O2UudmVobWVkaWFsYXJhYmljPTY0MzY1O2UudmVrYXRha2FuYT0xMjUzNztlLnZlbnVzPTk3OTI7ZS52ZXJ0aWNhbGJhcj0xMjQ7ZS52ZXJ0aWNhbGxpbmVhYm92ZWNtYj03ODE7ZS52ZXJ0aWNhbGxpbmViZWxvd2NtYj04MDk7ZS52ZXJ0aWNhbGxpbmVsb3dtb2Q9NzE2O2UudmVydGljYWxsaW5lbW9kPTcxMjtlLnZld2FybWVuaWFuPTE0MDY7ZS52aG9vaz02NTE7ZS52aWthdGFrYW5hPTEyNTM2O2UudmlyYW1hYmVuZ2FsaT0yNTA5O2UudmlyYW1hZGV2YT0yMzgxO2UudmlyYW1hZ3VqYXJhdGk9Mjc2NTtlLnZpc2FyZ2FiZW5nYWxpPTI0MzU7ZS52aXNhcmdhZGV2YT0yMzA3O2UudmlzYXJnYWd1amFyYXRpPTI2OTE7ZS52bW9ub3NwYWNlPTY1MzY2O2Uudm9hcm1lbmlhbj0xNDAwO2Uudm9pY2VkaXRlcmF0aW9uaGlyYWdhbmE9MTI0NDY7ZS52b2ljZWRpdGVyYXRpb25rYXRha2FuYT0xMjU0MjtlLnZvaWNlZG1hcmtrYW5hPTEyNDQzO2Uudm9pY2VkbWFya2thbmFoYWxmd2lkdGg9NjU0Mzg7ZS52b2thdGFrYW5hPTEyNTM4O2UudnBhcmVuPTkzOTM7ZS52dGlsZGU9NzgwNTtlLnZ0dXJuZWQ9NjUyO2UudnVoaXJhZ2FuYT0xMjQzNjtlLnZ1a2F0YWthbmE9MTI1MzI7ZS53PTExOTtlLndhY3V0ZT03ODExO2Uud2Fla29yZWFuPTEyNjMzO2Uud2FoaXJhZ2FuYT0xMjQzMTtlLndha2F0YWthbmE9MTI1Mjc7ZS53YWthdGFrYW5haGFsZndpZHRoPTY1NDM2O2Uud2Frb3JlYW49MTI2MzI7ZS53YXNtYWxsaGlyYWdhbmE9MTI0MzA7ZS53YXNtYWxsa2F0YWthbmE9MTI1MjY7ZS53YXR0b3NxdWFyZT0xMzE0MztlLndhdmVkYXNoPTEyMzE2O2Uud2F2eXVuZGVyc2NvcmV2ZXJ0aWNhbD02NTA3NjtlLndhd2FyYWJpYz0xNjA4O2Uud2F3ZmluYWxhcmFiaWM9NjUyNjI7ZS53YXdoYW16YWFib3ZlYXJhYmljPTE1NzI7ZS53YXdoYW16YWFib3ZlZmluYWxhcmFiaWM9NjUxNTg7ZS53YnNxdWFyZT0xMzI3NztlLndjaXJjbGU9OTQ0NjtlLndjaXJjdW1mbGV4PTM3MztlLndkaWVyZXNpcz03ODEzO2Uud2RvdGFjY2VudD03ODE1O2Uud2RvdGJlbG93PTc4MTc7ZS53ZWhpcmFnYW5hPTEyNDMzO2Uud2VpZXJzdHJhc3M9ODQ3MjtlLndla2F0YWthbmE9MTI1Mjk7ZS53ZWtvcmVhbj0xMjYzODtlLndlb2tvcmVhbj0xMjYzNztlLndncmF2ZT03ODA5O2Uud2hpdGVidWxsZXQ9OTcwMjtlLndoaXRlY2lyY2xlPTk2NzU7ZS53aGl0ZWNpcmNsZWludmVyc2U9OTY4OTtlLndoaXRlY29ybmVyYnJhY2tldGxlZnQ9MTIzMDI7ZS53aGl0ZWNvcm5lcmJyYWNrZXRsZWZ0dmVydGljYWw9NjUwOTE7ZS53aGl0ZWNvcm5lcmJyYWNrZXRyaWdodD0xMjMwMztlLndoaXRlY29ybmVyYnJhY2tldHJpZ2h0dmVydGljYWw9NjUwOTI7ZS53aGl0ZWRpYW1vbmQ9OTY3MTtlLndoaXRlZGlhbW9uZGNvbnRhaW5pbmdibGFja3NtYWxsZGlhbW9uZD05NjcyO2Uud2hpdGVkb3ducG9pbnRpbmdzbWFsbHRyaWFuZ2xlPTk2NjM7ZS53aGl0ZWRvd25wb2ludGluZ3RyaWFuZ2xlPTk2NjE7ZS53aGl0ZWxlZnRwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY2NztlLndoaXRlbGVmdHBvaW50aW5ndHJpYW5nbGU9OTY2NTtlLndoaXRlbGVudGljdWxhcmJyYWNrZXRsZWZ0PTEyMzEwO2Uud2hpdGVsZW50aWN1bGFyYnJhY2tldHJpZ2h0PTEyMzExO2Uud2hpdGVyaWdodHBvaW50aW5nc21hbGx0cmlhbmdsZT05NjU3O2Uud2hpdGVyaWdodHBvaW50aW5ndHJpYW5nbGU9OTY1NTtlLndoaXRlc21hbGxzcXVhcmU9OTY0MztlLndoaXRlc21pbGluZ2ZhY2U9OTc4NjtlLndoaXRlc3F1YXJlPTk2MzM7ZS53aGl0ZXN0YXI9OTczNDtlLndoaXRldGVsZXBob25lPTk3NDM7ZS53aGl0ZXRvcnRvaXNlc2hlbGxicmFja2V0bGVmdD0xMjMxMjtlLndoaXRldG9ydG9pc2VzaGVsbGJyYWNrZXRyaWdodD0xMjMxMztlLndoaXRldXBwb2ludGluZ3NtYWxsdHJpYW5nbGU9OTY1MztlLndoaXRldXBwb2ludGluZ3RyaWFuZ2xlPTk2NTE7ZS53aWhpcmFnYW5hPTEyNDMyO2Uud2lrYXRha2FuYT0xMjUyODtlLndpa29yZWFuPTEyNjM5O2Uud21vbm9zcGFjZT02NTM2NztlLndvaGlyYWdhbmE9MTI0MzQ7ZS53b2thdGFrYW5hPTEyNTMwO2Uud29rYXRha2FuYWhhbGZ3aWR0aD02NTM4MjtlLndvbj04MzYxO2Uud29ubW9ub3NwYWNlPTY1NTEwO2Uud293YWVudGhhaT0zNjIzO2Uud3BhcmVuPTkzOTQ7ZS53cmluZz03ODMyO2Uud3N1cGVyaW9yPTY5NTtlLnd0dXJuZWQ9NjUzO2Uud3lubj00NDc7ZS54PTEyMDtlLnhhYm92ZWNtYj04Mjk7ZS54Ym9wb21vZm89MTI1NjI7ZS54Y2lyY2xlPTk0NDc7ZS54ZGllcmVzaXM9NzgyMTtlLnhkb3RhY2NlbnQ9NzgxOTtlLnhlaGFybWVuaWFuPTEzODk7ZS54aT05NTg7ZS54bW9ub3NwYWNlPTY1MzY4O2UueHBhcmVuPTkzOTU7ZS54c3VwZXJpb3I9NzM5O2UueT0xMjE7ZS55YWFkb3NxdWFyZT0xMzEzNDtlLnlhYmVuZ2FsaT0yNDc5O2UueWFjdXRlPTI1MztlLnlhZGV2YT0yMzUxO2UueWFla29yZWFuPTEyNjI2O2UueWFndWphcmF0aT0yNzM1O2UueWFndXJtdWtoaT0yNjA3O2UueWFoaXJhZ2FuYT0xMjQyMDtlLnlha2F0YWthbmE9MTI1MTY7ZS55YWthdGFrYW5haGFsZndpZHRoPTY1NDI4O2UueWFrb3JlYW49MTI2MjU7ZS55YW1ha2thbnRoYWk9MzY2MjtlLnlhc21hbGxoaXJhZ2FuYT0xMjQxOTtlLnlhc21hbGxrYXRha2FuYT0xMjUxNTtlLnlhc21hbGxrYXRha2FuYWhhbGZ3aWR0aD02NTM4ODtlLnlhdGN5cmlsbGljPTExMjM7ZS55Y2lyY2xlPTk0NDg7ZS55Y2lyY3VtZmxleD0zNzU7ZS55ZGllcmVzaXM9MjU1O2UueWRvdGFjY2VudD03ODIzO2UueWRvdGJlbG93PTc5MjU7ZS55ZWhhcmFiaWM9MTYxMDtlLnllaGJhcnJlZWFyYWJpYz0xNzQ2O2UueWVoYmFycmVlZmluYWxhcmFiaWM9NjQ0MzE7ZS55ZWhmaW5hbGFyYWJpYz02NTI2NjtlLnllaGhhbXphYWJvdmVhcmFiaWM9MTU3NDtlLnllaGhhbXphYWJvdmVmaW5hbGFyYWJpYz02NTE2MjtlLnllaGhhbXphYWJvdmVpbml0aWFsYXJhYmljPTY1MTYzO2UueWVoaGFtemFhYm92ZW1lZGlhbGFyYWJpYz02NTE2NDtlLnllaGluaXRpYWxhcmFiaWM9NjUyNjc7ZS55ZWhtZWRpYWxhcmFiaWM9NjUyNjg7ZS55ZWhtZWVtaW5pdGlhbGFyYWJpYz02NDczMztlLnllaG1lZW1pc29sYXRlZGFyYWJpYz02NDYwMDtlLnllaG5vb25maW5hbGFyYWJpYz02NDY2MDtlLnllaHRocmVlZG90c2JlbG93YXJhYmljPTE3NDU7ZS55ZWtvcmVhbj0xMjYzMDtlLnllbj0xNjU7ZS55ZW5tb25vc3BhY2U9NjU1MDk7ZS55ZW9rb3JlYW49MTI2Mjk7ZS55ZW9yaW5oaWV1aGtvcmVhbj0xMjY3ODtlLnllcmFoYmVueW9tb2hlYnJldz0xNDUwO2UueWVyYWhiZW55b21vbGVmdGhlYnJldz0xNDUwO2UueWVyaWN5cmlsbGljPTEwOTk7ZS55ZXJ1ZGllcmVzaXNjeXJpbGxpYz0xMjczO2UueWVzaWV1bmdrb3JlYW49MTI2NzM7ZS55ZXNpZXVuZ3BhbnNpb3Nrb3JlYW49MTI2NzU7ZS55ZXNpZXVuZ3Npb3Nrb3JlYW49MTI2NzQ7ZS55ZXRpdmhlYnJldz0xNDM0O2UueWdyYXZlPTc5MjM7ZS55aG9vaz00MzY7ZS55aG9va2Fib3ZlPTc5Mjc7ZS55aWFybWVuaWFuPTEzOTc7ZS55aWN5cmlsbGljPTExMTE7ZS55aWtvcmVhbj0xMjY0MjtlLnlpbnlhbmc9OTc3NTtlLnlpd25hcm1lbmlhbj0xNDEwO2UueW1vbm9zcGFjZT02NTM2OTtlLnlvZD0xNDk3O2UueW9kZGFnZXNoPTY0MzEzO2UueW9kZGFnZXNoaGVicmV3PTY0MzEzO2UueW9kaGVicmV3PTE0OTc7ZS55b2R5b2RoZWJyZXc9MTUyMjtlLnlvZHlvZHBhdGFoaGVicmV3PTY0Mjg3O2UueW9oaXJhZ2FuYT0xMjQyNDtlLnlvaWtvcmVhbj0xMjY4MTtlLnlva2F0YWthbmE9MTI1MjA7ZS55b2thdGFrYW5haGFsZndpZHRoPTY1ND
101MwO2UueW9rb3JlYW49MTI2MzU7ZS55b3NtYWxsaGlyYWdhbmE9MTI0MjM7ZS55b3NtYWxsa2F0YWthbmE9MTI1MTk7ZS55b3NtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzOTA7ZS55b3RncmVlaz0xMDExO2UueW95YWVrb3JlYW49MTI2ODA7ZS55b3lha29yZWFuPTEyNjc5O2UueW95YWt0aGFpPTM2MTg7ZS55b3lpbmd0aGFpPTM1OTc7ZS55cGFyZW49OTM5NjtlLnlwb2dlZ3JhbW1lbmk9ODkwO2UueXBvZ2VncmFtbWVuaWdyZWVrY21iPTgzNztlLnlyPTQyMjtlLnlyaW5nPTc4MzM7ZS55c3VwZXJpb3I9Njk2O2UueXRpbGRlPTc5Mjk7ZS55dHVybmVkPTY1NDtlLnl1aGlyYWdhbmE9MTI0MjI7ZS55dWlrb3JlYW49MTI2ODQ7ZS55dWthdGFrYW5hPTEyNTE4O2UueXVrYXRha2FuYWhhbGZ3aWR0aD02NTQyOTtlLnl1a29yZWFuPTEyNjQwO2UueXVzYmlnY3lyaWxsaWM9MTEzMTtlLnl1c2JpZ2lvdGlmaWVkY3lyaWxsaWM9MTEzMztlLnl1c2xpdHRsZWN5cmlsbGljPTExMjc7ZS55dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljPTExMjk7ZS55dXNtYWxsaGlyYWdhbmE9MTI0MjE7ZS55dXNtYWxsa2F0YWthbmE9MTI1MTc7ZS55dXNtYWxsa2F0YWthbmFoYWxmd2lkdGg9NjUzODk7ZS55dXlla29yZWFuPTEyNjgzO2UueXV5ZW9rb3JlYW49MTI2ODI7ZS55eWFiZW5nYWxpPTI1Mjc7ZS55eWFkZXZhPTIzOTk7ZS56PTEyMjtlLnphYXJtZW5pYW49MTM4MjtlLnphY3V0ZT0zNzg7ZS56YWRldmE9MjM5NTtlLnphZ3VybXVraGk9MjY1MTtlLnphaGFyYWJpYz0xNTkyO2UuemFoZmluYWxhcmFiaWM9NjUyMjI7ZS56YWhpbml0aWFsYXJhYmljPTY1MjIzO2UuemFoaXJhZ2FuYT0xMjM3NDtlLnphaG1lZGlhbGFyYWJpYz02NTIyNDtlLnphaW5hcmFiaWM9MTU4NjtlLnphaW5maW5hbGFyYWJpYz02NTIwMDtlLnpha2F0YWthbmE9MTI0NzA7ZS56YXFlZmdhZG9saGVicmV3PTE0Mjk7ZS56YXFlZnFhdGFuaGVicmV3PTE0Mjg7ZS56YXJxYWhlYnJldz0xNDMyO2UuemF5aW49MTQ5NDtlLnpheWluZGFnZXNoPTY0MzEwO2UuemF5aW5kYWdlc2hoZWJyZXc9NjQzMTA7ZS56YXlpbmhlYnJldz0xNDk0O2UuemJvcG9tb2ZvPTEyNTY3O2UuemNhcm9uPTM4MjtlLnpjaXJjbGU9OTQ0OTtlLnpjaXJjdW1mbGV4PTc4MjU7ZS56Y3VybD02NTc7ZS56ZG90PTM4MDtlLnpkb3RhY2NlbnQ9MzgwO2UuemRvdGJlbG93PTc4Mjc7ZS56ZWN5cmlsbGljPTEwNzk7ZS56ZWRlc2NlbmRlcmN5cmlsbGljPTExNzc7ZS56ZWRpZXJlc2lzY3lyaWxsaWM9MTI0NztlLnplaGlyYWdhbmE9MTIzODA7ZS56ZWthdGFrYW5hPTEyNDc2O2UuemVybz00ODtlLnplcm9hcmFiaWM9MTYzMjtlLnplcm9iZW5nYWxpPTI1MzQ7ZS56ZXJvZGV2YT0yNDA2O2UuemVyb2d1amFyYXRpPTI3OTA7ZS56ZXJvZ3VybXVraGk9MjY2MjtlLnplcm9oYWNrYXJhYmljPTE2MzI7ZS56ZXJvaW5mZXJpb3I9ODMyMDtlLnplcm9tb25vc3BhY2U9NjUyOTY7ZS56ZXJvb2xkc3R5bGU9NjMyODA7ZS56ZXJvcGVyc2lhbj0xNzc2O2UuemVyb3N1cGVyaW9yPTgzMDQ7ZS56ZXJvdGhhaT0zNjY0O2UuemVyb3dpZHRoam9pbmVyPTY1Mjc5O2UuemVyb3dpZHRobm9uam9pbmVyPTgyMDQ7ZS56ZXJvd2lkdGhzcGFjZT04MjAzO2UuemV0YT05NTA7ZS56aGJvcG9tb2ZvPTEyNTYzO2UuemhlYXJtZW5pYW49MTM4NjtlLnpoZWJyZXZlY3lyaWxsaWM9MTIxODtlLnpoZWN5cmlsbGljPTEwNzg7ZS56aGVkZXNjZW5kZXJjeXJpbGxpYz0xMTc1O2UuemhlZGllcmVzaXNjeXJpbGxpYz0xMjQ1O2UuemloaXJhZ2FuYT0xMjM3NjtlLnppa2F0YWthbmE9MTI0NzI7ZS56aW5vcmhlYnJldz0xNDU0O2UuemxpbmViZWxvdz03ODI5O2Uuem1vbm9zcGFjZT02NTM3MDtlLnpvaGlyYWdhbmE9MTIzODI7ZS56b2thdGFrYW5hPTEyNDc4O2UuenBhcmVuPTkzOTc7ZS56cmV0cm9mbGV4aG9vaz02NTY7ZS56c3Ryb2tlPTQzODtlLnp1aGlyYWdhbmE9MTIzNzg7ZS56dWthdGFrYW5hPTEyNDc0O2VbIi5ub3RkZWYiXT0wO2UuYW5nYnJhY2tldGxlZnRiaWc9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0QmlnPTkwMDE7ZS5hbmdicmFja2V0bGVmdGJpZ2c9OTAwMTtlLmFuZ2JyYWNrZXRsZWZ0QmlnZz05MDAxO2UuYW5nYnJhY2tldHJpZ2h0QmlnPTkwMDI7ZS5hbmdicmFja2V0cmlnaHRiaWc9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodEJpZ2c9OTAwMjtlLmFuZ2JyYWNrZXRyaWdodGJpZ2c9OTAwMjtlLmFycm93aG9va2xlZnQ9ODYxODtlLmFycm93aG9va3JpZ2h0PTg2MTc7ZS5hcnJvd2xlZnR0b3BoYWxmPTg2MzY7ZS5hcnJvd2xlZnRib3RoYWxmPTg2Mzc7ZS5hcnJvd25vcnRoZWFzdD04NTk5O2UuYXJyb3dub3J0aHdlc3Q9ODU5ODtlLmFycm93cmlnaHR0b3BoYWxmPTg2NDA7ZS5hcnJvd3JpZ2h0Ym90aGFsZj04NjQxO2UuYXJyb3dzb3V0aGVhc3Q9ODYwMDtlLmFycm93c291dGh3ZXN0PTg2MDE7ZS5iYWNrc2xhc2hiaWc9ODcyNjtlLmJhY2tzbGFzaEJpZz04NzI2O2UuYmFja3NsYXNoQmlnZz04NzI2O2UuYmFja3NsYXNoYmlnZz04NzI2O2UuYmFyZGJsPTgyMTQ7ZS5icmFjZWh0aXBkb3dubGVmdD02NTA3OTtlLmJyYWNlaHRpcGRvd25yaWdodD02NTA3OTtlLmJyYWNlaHRpcHVwbGVmdD02NTA4MDtlLmJyYWNlaHRpcHVwcmlnaHQ9NjUwODA7ZS5icmFjZWxlZnRCaWc9MTIzO2UuYnJhY2VsZWZ0YmlnPTEyMztlLmJyYWNlbGVmdGJpZ2c9MTIzO2UuYnJhY2VsZWZ0QmlnZz0xMjM7ZS5icmFjZXJpZ2h0QmlnPTEyNTtlLmJyYWNlcmlnaHRiaWc9MTI1O2UuYnJhY2VyaWdodGJpZ2c9MTI1O2UuYnJhY2VyaWdodEJpZ2c9MTI1O2UuYnJhY2tldGxlZnRiaWc9OTE7ZS5icmFja2V0bGVmdEJpZz05MTtlLmJyYWNrZXRsZWZ0YmlnZz05MTtlLmJyYWNrZXRsZWZ0QmlnZz05MTtlLmJyYWNrZXRyaWdodEJpZz05MztlLmJyYWNrZXRyaWdodGJpZz05MztlLmJyYWNrZXRyaWdodGJpZ2c9OTM7ZS5icmFja2V0cmlnaHRCaWdnPTkzO2UuY2VpbGluZ2xlZnRiaWc9ODk2ODtlLmNlaWxpbmdsZWZ0QmlnPTg5Njg7ZS5jZWlsaW5nbGVmdEJpZ2c9ODk2ODtlLmNlaWxpbmdsZWZ0YmlnZz04OTY4O2UuY2VpbGluZ3JpZ2h0YmlnPTg5Njk7ZS5jZWlsaW5ncmlnaHRCaWc9ODk2OTtlLmNlaWxpbmdyaWdodGJpZ2c9ODk2OTtlLmNlaWxpbmdyaWdodEJpZ2c9ODk2OTtlLmNpcmNsZWRvdGRpc3BsYXk9ODg1NztlLmNpcmNsZWRvdHRleHQ9ODg1NztlLmNpcmNsZW11bHRpcGx5ZGlzcGxheT04ODU1O2UuY2lyY2xlbXVsdGlwbHl0ZXh0PTg4NTU7ZS5jaXJjbGVwbHVzZGlzcGxheT04ODUzO2UuY2lyY2xlcGx1c3RleHQ9ODg1MztlLmNvbnRpbnRlZ3JhbGRpc3BsYXk9ODc1MDtlLmNvbn
101RpbnRlZ3JhbHRleHQ9ODc1MDtlLmNvcHJvZHVjdGRpc3BsYXk9ODcyMDtlLmNvcHJvZHVjdHRleHQ9ODcyMDtlLmZsb29ybGVmdEJpZz04OTcwO2UuZmxvb3JsZWZ0YmlnPTg5NzA7ZS5mbG9vcmxlZnRiaWdnPTg5NzA7ZS5mbG9vcmxlZnRCaWdnPTg5NzA7ZS5mbG9vcnJpZ2h0YmlnPTg5NzE7ZS5mbG9vcnJpZ2h0QmlnPTg5NzE7ZS5mbG9vcnJpZ2h0QmlnZz04OTcxO2UuZmxvb3JyaWdodGJpZ2c9ODk3MTtlLmhhdHdpZGU9NzcwO2UuaGF0d2lkZXI9NzcwO2UuaGF0d2lkZXN0PTc3MDtlLmludGVyY2FsPTc0ODg7ZS5pbnRlZ3JhbGRpc3BsYXk9ODc0NztlLmludGVncmFsdGV4dD04NzQ3O2UuaW50ZXJzZWN0aW9uZGlzcGxheT04ODk4O2UuaW50ZXJzZWN0aW9udGV4dD04ODk4O2UubG9naWNhbGFuZGRpc3BsYXk9ODc0MztlLmxvZ2ljYWxhbmR0ZXh0PTg3NDM7ZS5sb2dpY2Fsb3JkaXNwbGF5PTg3NDQ7ZS5sb2dpY2Fsb3J0ZXh0PTg3NDQ7ZS5wYXJlbmxlZnRCaWc9NDA7ZS5wYXJlbmxlZnRiaWc9NDA7ZS5wYXJlbmxlZnRCaWdnPTQwO2UucGFyZW5sZWZ0YmlnZz00MDtlLnBhcmVucmlnaHRCaWc9NDE7ZS5wYXJlbnJpZ2h0YmlnPTQxO2UucGFyZW5yaWdodEJpZ2c9NDE7ZS5wYXJlbnJpZ2h0YmlnZz00MTtlLnByaW1lPTgyNDI7ZS5wcm9kdWN0ZGlzcGxheT04NzE5O2UucHJvZHVjdHRleHQ9ODcxOTtlLnJhZGljYWxiaWc9ODczMDtlLnJhZGljYWxCaWc9ODczMDtlLnJhZGljYWxCaWdnPTg3MzA7ZS5yYWRpY2FsYmlnZz04NzMwO2UucmFkaWNhbGJ0PTg3MzA7ZS5yYWRpY2FsdHA9ODczMDtlLnJhZGljYWx2ZXJ0ZXg9ODczMDtlLnNsYXNoYmlnPTQ3O2Uuc2xhc2hCaWc9NDc7ZS5zbGFzaEJpZ2c9NDc7ZS5zbGFzaGJpZ2c9NDc7ZS5zdW1tYXRpb25kaXNwbGF5PTg3MjE7ZS5zdW1tYXRpb250ZXh0PTg3MjE7ZS50aWxkZXdpZGU9NzMyO2UudGlsZGV3aWRlcj03MzI7ZS50aWxkZXdpZGVzdD03MzI7ZS51bmlvbmRpc3BsYXk9ODg5OTtlLnVuaW9ubXVsdGlkaXNwbGF5PTg4NDY7ZS51bmlvbm11bHRpdGV4dD04ODQ2O2UudW5pb25zcWRpc3BsYXk9ODg1MjtlLnVuaW9uc3F0ZXh0PTg4NTI7ZS51bmlvbnRleHQ9ODg5OTtlLnZleHRlbmRkb3VibGU9ODc0MTtlLnZleHRlbmRzaW5nbGU9ODczOX0pLGdyPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTMyO2UuYTE9OTk4NTtlLmEyPTk5ODY7ZS5hMjAyPTk5ODc7ZS5hMz05OTg4O2UuYTQ9OTc0MjtlLmE1PTk5OTA7ZS5hMTE5PTk5OTE7ZS5hMTE4PTk5OTI7ZS5hMTE3PTk5OTM7ZS5hMTE9OTc1NTtlLmExMj05NzU4O2UuYTEzPTk5OTY7ZS5hMTQ9OTk5NztlLmExNT05OTk4O2UuYTE2PTk5OTk7ZS5hMTA1PTFlNDtlLmExNz0xMDAwMTtlLmExOD0xMDAwMjtlLmExOT0xMDAwMztlLmEyMD0xMDAwNDtlLmEyMT0xMDAwNTtlLmEyMj0xMDAwNjtlLmEyMz0xMDAwNztlLmEyND0xMDAwODtlLmEyNT0xMDAwOTtlLmEyNj0xMDAxMDtlLmEyNz0xMDAxMTtlLmEyOD0xMDAxMjtlLmE2PTEwMDEzO2UuYTc9MTAwMTQ7ZS5hOD0xMDAxNTtlLmE5PTEwMDE2O2UuYTEwPTEwMDE3O2UuYTI5PTEwMDE4O2UuYTMwPTEwMDE5O2UuYTMxPTEwMDIwO2UuYTMyPTEwMDIxO2UuYTMzPTEwMDIyO2UuYTM0PTEwMDIzO2UuYTM1PTk3MzM7ZS5hMzY9MTAwMjU7ZS5hMzc9MTAwMjY7ZS5hMzg9MTAwMjc7ZS5hMzk9MTAwMjg7ZS5hNDA9MTAwMjk7ZS5hNDE9MTAwMzA7ZS5hNDI9MTAwMzE7ZS5hNDM9MTAwMzI7ZS5hNDQ9MTAwMzM7ZS5hNDU9MTAwMzQ7ZS5hNDY9MTAwMzU7ZS5hNDc9MTAwMzY7ZS5hNDg9MTAwMzc7ZS5hNDk9MTAwMzg7ZS5hNTA9MTAwMzk7ZS5hNTE9MTAwNDA7ZS5hNTI9MTAwNDE7ZS5hNTM9MTAwNDI7ZS5hNTQ9MTAwNDM7ZS5hNTU9MTAwNDQ7ZS5hNTY9MTAwNDU7ZS5hNTc9MTAwNDY7ZS5hNTg9MTAwNDc7ZS5hNTk9MTAwNDg7ZS5hNjA9MTAwNDk7ZS5hNjE9MTAwNTA7ZS5hNjI9MTAwNTE7ZS5hNjM9MTAwNTI7ZS5hNjQ9MTAwNTM7ZS5hNjU9MTAwNTQ7ZS5hNjY9MTAwNTU7ZS5hNjc9MTAwNTY7ZS5hNjg9MTAwNTc7ZS5hNjk9MTAwNTg7ZS5hNzA9MTAwNTk7ZS5hNzE9OTY3OTtlLmE3Mj0xMDA2MTtlLmE3Mz05NjMyO2UuYTc0PTEwMDYzO2UuYTIwMz0xMDA2NDtlLmE3NT0xMDA2NTtlLmEyMDQ9MTAwNjY7ZS5hNzY9OTY1MDtlLmE3Nz05NjYwO2UuYTc4PTk2NzA7ZS5hNzk9MTAwNzA7ZS5hODE9OTY4NztlLmE4Mj0xMDA3MjtlLmE4Mz0xMDA3MztlLmE4ND0xMDA3NDtlLmE5Nz0xMDA3NTtlLmE5OD0xMDA3NjtlLmE5OT0xMDA3NztlLmExMDA9MTAwNzg7ZS5hMTAxPTEwMDgxO2UuYTEwMj0xMDA4MjtlLmExMDM9MTAwODM7ZS5hMTA0PTEwMDg0O2UuYTEwNj0xMDA4NTtlLmExMDc9MTAwODY7ZS5hMTA4PTEwMDg3O2UuYTExMj05ODI3O2UuYTExMT05ODMwO2UuYTExMD05ODI5O2UuYTEwOT05ODI0O2UuYTEyMD05MzEyO2UuYTEyMT05MzEzO2UuYTEyMj05MzE0O2UuYTEyMz05MzE1O2UuYTEyND05MzE2O2UuYTEyNT05MzE3O2UuYTEyNj05MzE4O2UuYTEyNz05MzE5O2UuYTEyOD05MzIwO2UuYTEyOT05MzIxO2UuYTEzMD0xMDEwMjtlLmExMzE9MTAxMDM7ZS5hMTMyPTEwMTA0O2UuYTEzMz0xMDEwNTtlLmExMzQ9MTAxMDY7ZS5hMTM1PTEwMTA3O2UuYTEzNj0xMDEwODtlLmExMzc9MTAxMDk7ZS5hMTM4PTEwMTEwO2UuYTEzOT0xMDExMTtlLmExNDA9MTAxMTI7ZS5hMTQxPTEwMTEzO2UuYTE0Mj0xMDExNDtlLmExNDM9MTAxMTU7ZS5hMTQ0PTEwMTE2O2UuYTE0NT0xMDExNztlLmExNDY9MTAxMTg7ZS5hMTQ3PTEwMTE5O2UuYTE0OD0xMDEyMDtlLmExNDk9MTAxMjE7ZS5hMTUwPTEwMTIyO2UuYTE1MT0xMDEyMztlLmExNTI9MTAxMjQ7ZS5hMTUzPTEwMTI1O2UuYTE1ND0xMDEyNjtlLmExNTU9MTAxMjc7ZS5hMTU2PTEwMTI4O2UuYTE1Nz0xMDEyOTtlLmExNTg9MTAxMzA7ZS5hMTU5PTEwMTMxO2UuYTE2MD0xMDEzMjtlLmExNjE9ODU5NDtlLmExNjM9ODU5NjtlLmExNjQ9ODU5NztlLmExOTY9MTAxMzY7ZS5hMTY1PTEwMTM3O2UuYTE5Mj0xMDEzODtlLmExNjY9MTAxMzk7ZS5hMTY3PTEwMTQwO2UuYTE2OD0xMDE0MTtlLmExNjk9MTAxNDI7ZS5hMTcwPTEwMTQzO2UuYTE3MT0xMDE0NDtlLmExNzI9MTAxNDU7ZS5hMTczPTEwMTQ2O2UuYTE2Mj0xMDE0NztlLmExNzQ9MTAxNDg7ZS5hMTc1PTEwMTQ5O2UuYTE3Nj0xMDE1MDtlLmExNzc9MTAxNTE7ZS5hMTc4PTEwMT
101UyO2UuYTE3OT0xMDE1MztlLmExOTM9MTAxNTQ7ZS5hMTgwPTEwMTU1O2UuYTE5OT0xMDE1NjtlLmExODE9MTAxNTc7ZS5hMjAwPTEwMTU4O2UuYTE4Mj0xMDE1OTtlLmEyMDE9MTAxNjE7ZS5hMTgzPTEwMTYyO2UuYTE4ND0xMDE2MztlLmExOTc9MTAxNjQ7ZS5hMTg1PTEwMTY1O2UuYTE5ND0xMDE2NjtlLmExOTg9MTAxNjc7ZS5hMTg2PTEwMTY4O2UuYTE5NT0xMDE2OTtlLmExODc9MTAxNzA7ZS5hMTg4PTEwMTcxO2UuYTE4OT0xMDE3MjtlLmExOTA9MTAxNzM7ZS5hMTkxPTEwMTc0O2UuYTg5PTEwMDg4O2UuYTkwPTEwMDg5O2UuYTkzPTEwMDkwO2UuYTk0PTEwMDkxO2UuYTkxPTEwMDkyO2UuYTkyPTEwMDkzO2UuYTIwNT0xMDA5NDtlLmE4NT0xMDA5NTtlLmEyMDY9MTAwOTY7ZS5hODY9MTAwOTc7ZS5hODc9MTAwOTg7ZS5hODg9MTAwOTk7ZS5hOTU9MTAxMDA7ZS5hOTY9MTAxMDE7ZVsiLm5vdGRlZiJdPTB9KSxwcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZVs2MzcyMV09MTY5O2VbNjMxOTNdPTE2OTtlWzYzNzIwXT0xNzQ7ZVs2MzE5NF09MTc0O2VbNjM3MjJdPTg0ODI7ZVs2MzE5NV09ODQ4MjtlWzYzNzI5XT05MTI3O2VbNjM3MzBdPTkxMjg7ZVs2MzczMV09OTEyOTtlWzYzNzQwXT05MTMxO2VbNjM3NDFdPTkxMzI7ZVs2Mzc0Ml09OTEzMztlWzYzNzI2XT05MTIxO2VbNjM3MjddPTkxMjI7ZVs2MzcyOF09OTEyMztlWzYzNzM3XT05MTI0O2VbNjM3MzhdPTkxMjU7ZVs2MzczOV09OTEyNjtlWzYzNzIzXT05MTE1O2VbNjM3MjRdPTkxMTY7ZVs2MzcyNV09OTExNztlWzYzNzM0XT05MTE4O2VbNjM3MzVdPTkxMTk7ZVs2MzczNl09OTEyMH0pO2Z1bmN0aW9uIGdldFVuaWNvZGVGb3JHbHlwaChlLHQpe2xldCBhPXRbZV07aWYodm9pZCAwIT09YSlyZXR1cm4gYTtpZighZSlyZXR1cm4tMTtpZigidSI9PT1lWzBdKXtjb25zdCB0PWUubGVuZ3RoO2xldCByO2lmKDc9PT10JiYibiI9PT1lWzFdJiYiaSI9PT1lWzJdKXI9ZS5zdWJzdHJpbmcoMyk7ZWxzZXtpZighKHQ+PTUmJnQ8PTcpKXJldHVybi0xO3I9ZS5zdWJzdHJpbmcoMSl9aWYocj09PXIudG9VcHBlckNhc2UoKSl7YT1wYXJzZUludChyLDE2KTtpZihhPj0wKXJldHVybiBhfX1yZXR1cm4tMX1jb25zdCBtcj1bWzAsMTI3XSxbMTI4LDI1NV0sWzI1NiwzODNdLFszODQsNTkxXSxbNTkyLDY4Nyw3NDI0LDc1NTEsNzU1Miw3NjE1XSxbNjg4LDc2Nyw0Mjc1Miw0Mjc4M10sWzc2OCw4NzksNzYxNiw3Njc5XSxbODgwLDEwMjNdLFsxMTM5MiwxMTUxOV0sWzEwMjQsMTI3OSwxMjgwLDEzMjcsMTE3NDQsMTE3NzUsNDI1NjAsNDI2NTVdLFsxMzI4LDE0MjNdLFsxNDI0LDE1MzVdLFs0MjI0MCw0MjU1OV0sWzE1MzYsMTc5MSwxODcyLDE5MTldLFsxOTg0LDIwNDddLFsyMzA0LDI0MzFdLFsyNDMyLDI1NTldLFsyNTYwLDI2ODddLFsyNjg4LDI4MTVdLFsyODE2LDI5NDNdLFsyOTQ0LDMwNzFdLFszMDcyLDMxOTldLFszMjAwLDMzMjddLFszMzI4LDM0NTVdLFszNTg0LDM3MTFdLFszNzEyLDM4MzldLFs0MjU2LDQzNTEsMTE1MjAsMTE1NjddLFs2OTEyLDcwMzldLFs0MzUyLDQ2MDddLFs3NjgwLDc5MzUsMTEzNjAsMTEzOTEsNDI3ODQsNDMwMDddLFs3OTM2LDgxOTFdLFs4MTkyLDgzMDMsMTE3NzYsMTE5MDNdLFs4MzA0LDgzNTFdLFs4MzUyLDgzOTldLFs4NDAwLDg0NDddLFs4NDQ4LDg1MjddLFs4NTI4LDg1OTFdLFs4NTkyLDg3MDMsMTAyMjQsMTAyMzksMTA0OTYsMTA2MjMsMTEwMDgsMTEyNjNdLFs4NzA0LDg5NTksMTA3NTIsMTEwMDcsMTAxNzYsMTAyMjMsMTA2MjQsMTA3NTFdLFs4OTYwLDkyMTVdLFs5MjE2LDkyNzldLFs5MjgwLDkzMTFdLFs5MzEyLDk0NzFdLFs5NDcyLDk1OTldLFs5NjAwLDk2MzFdLFs5NjMyLDk3MjddLFs5NzI4LDk5ODNdLFs5OTg0LDEwMTc1XSxbMTIyODgsMTIzNTFdLFsxMjM1MiwxMjQ0N10sWzEyNDQ4LDEyNTQzLDEyNzg0LDEyNzk5XSxbMTI1NDQsMTI1OTEsMTI3MDQsMTI3MzVdLFsxMjU5MiwxMjY4N10sWzQzMDcyLDQzMTM1XSxbMTI4MDAsMTMwNTVdLFsxMzA1NiwxMzMxMV0sWzQ0MDMyLDU1MjE1XSxbNTUyOTYsNTczNDNdLFs2Nzg0MCw2Nzg3MV0sWzE5OTY4LDQwOTU5LDExOTA0LDEyMDMxLDEyMDMyLDEyMjU1LDEyMjcyLDEyMjg3LDEzMzEyLDE5OTAzLDEzMTA3MiwxNzM3OTEsMTI2ODgsMTI3MDNdLFs1NzM0NCw2Mzc0M10sWzEyNzM2LDEyNzgzLDYzNzQ0LDY0MjU1LDE5NDU2MCwxOTUxMDNdLFs2NDI1Niw2NDMzNV0sWzY0MzM2LDY1MDIzXSxbNjUwNTYsNjUwNzFdLFs2NTA0MCw2NTA1NV0sWzY1MTA0LDY1MTM1XSxbNjUxMzYsNjUyNzldLFs2NTI4MCw2NTUxOV0sWzY1NTIwLDY1NTM1XSxbMzg0MCw0MDk1XSxbMTc5MiwxODcxXSxbMTkyMCwxOTgzXSxbMzQ1NiwzNTgzXSxbNDA5Niw0MjU1XSxbNDYwOCw0OTkxLDQ5OTIsNTAyMywxMTY0OCwxMTc0M10sWzUwMjQsNTExOV0sWzUxMjAsNTc1OV0sWzU3NjAsNTc5MV0sWzU3OTIsNTg4N10sWzYwMTYsNjE0M10sWzYxNDQsNjMxOV0sWzEwMjQwLDEwNDk1XSxbNDA5NjAsNDIxMjddLFs1ODg4LDU5MTksNTkyMCw1OTUxLDU5NTIsNTk4Myw1OTg0LDYwMTVdLFs2NjMwNCw2NjM1MV0sWzY2MzUyLDY2MzgzXSxbNjY1NjAsNjY2MzldLFsxMTg3ODQsMTE5MDM5LDExOTA0MCwxMTkyOTUsMTE5Mjk2LDExOTM3NV0sWzExOTgwOCwxMjA4MzFdLFsxMDQ0NDgwLDEwNDg1NzNdLFs2NTAyNCw2NTAzOSw5MTc3NjAsOTE3OTk5XSxbOTE3NTA0LDkxNzYzMV0sWzY0MDAsNjQ3OV0sWzY0ODAsNjUyN10sWzY1MjgsNjYyM10sWzY2NTYsNjY4N10sWzExMjY0LDExMzU5XSxbMTE1NjgsMTE2NDddLFsxOTkwNCwxOTk2N10sWzQzMDA4LDQzMDU1XSxbNjU1MzYsNjU2NjMsNjU2NjQsNjU3OTEsNjU3OTIsNjU4NTVdLFs2NTg1Niw2NTkzNV0sWzY2NDMyLDY2NDYzXSxbNjY0NjQsNjY1MjddLFs2NjY0MCw2NjY4N10sWzY2Njg4LDY2NzM1XSxbNjc1ODQsNjc2NDddLFs2ODA5Niw2ODE5MV0sWzExOTU1MiwxMTk2NDddLFs3MzcyOCw3NDc1MSw3NDc1Miw3NDg3OV0sWzExOTY0OCwxMTk2NzldLFs3MDQwLDcxMDNdLFs3MTY4LDcyNDddLFs3MjQ4LDcyOTVdLFs0MzEzNiw0MzIzMV0sWzQzMjY0LDQzMzExXSxbNDMzMTIsNDMzNTldLFs0MzUyMCw0MzYxNV0sWzY1OTM2LDY1OTk5XSxbNjZlMyw2NjA0N10sWzY2MjA4LDY2MjcxLDY2MTc2LDY2MjA3LDY3ODcyLDY3OTAzXSxbMTI3MDI0LDEyNzEzNSwxMjY5NzYsMTI3MDIzXV07ZnVuY3Rpb24gZ2V0VW5pY29kZVJhbmdlRm9yKGUsdD0tMSl7aWYoLTEhPT10KXtjb25zdCBhPW1yW3RdO2ZvcihsZXQgcj0wLGk9YS5sZW5ndGg7cjxpO3IrPTIpaWYoZT49YVtyXSYmZTw9YVtyKzFdKXJldHVybi
101B0fWZvcihsZXQgdD0wLGE9bXIubGVuZ3RoO3Q8YTt0Kyspe2NvbnN0IGE9bXJbdF07Zm9yKGxldCByPTAsaT1hLmxlbmd0aDtyPGk7cis9MilpZihlPj1hW3JdJiZlPD1hW3IrMV0pcmV0dXJuIHR9cmV0dXJuLTF9Y29uc3QgYnI9bmV3IFJlZ0V4cCgiXihcXHMpfChcXHB7TW59KXwoXFxwe0NmfSkkIiwidSIpLHlyPW5ldyBNYXA7Y29uc3Qgd3I9ITAseHI9MSxTcj0yLEFyPTQsa3I9MzIsQ3I9WyIubm90ZGVmIiwiLm51bGwiLCJub25tYXJraW5ncmV0dXJuIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVzaW5nbGUiLCJwYXJlbmxlZnQiLCJwYXJlbnJpZ2h0IiwiYXN0ZXJpc2siLCJwbHVzIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJzbGFzaCIsInplcm8iLCJvbmUiLCJ0d28iLCJ0aHJlZSIsImZvdXIiLCJmaXZlIiwic2l4Iiwic2V2ZW4iLCJlaWdodCIsIm5pbmUiLCJjb2xvbiIsInNlbWljb2xvbiIsImxlc3MiLCJlcXVhbCIsImdyZWF0ZXIiLCJxdWVzdGlvbiIsImF0IiwiQSIsIkIiLCJDIiwiRCIsIkUiLCJGIiwiRyIsIkgiLCJJIiwiSiIsIksiLCJMIiwiTSIsIk4iLCJPIiwiUCIsIlEiLCJSIiwiUyIsIlQiLCJVIiwiViIsIlciLCJYIiwiWSIsIloiLCJicmFja2V0bGVmdCIsImJhY2tzbGFzaCIsImJyYWNrZXRyaWdodCIsImFzY2lpY2lyY3VtIiwidW5kZXJzY29yZSIsImdyYXZlIiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsIkFkaWVyZXNpcyIsIkFyaW5nIiwiQ2NlZGlsbGEiLCJFYWN1dGUiLCJOdGlsZGUiLCJPZGllcmVzaXMiLCJVZGllcmVzaXMiLCJhYWN1dGUiLCJhZ3JhdmUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImF0aWxkZSIsImFyaW5nIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlZ3JhdmUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImlhY3V0ZSIsImlncmF2ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwibnRpbGRlIiwib2FjdXRlIiwib2dyYXZlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvdGlsZGUiLCJ1YWN1dGUiLCJ1Z3JhdmUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsImRhZ2dlciIsImRlZ3JlZSIsImNlbnQiLCJzdGVybGluZyIsInNlY3Rpb24iLCJidWxsZXQiLCJwYXJhZ3JhcGgiLCJnZXJtYW5kYmxzIiwicmVnaXN0ZXJlZCIsImNvcHlyaWdodCIsInRyYWRlbWFyayIsImFjdXRlIiwiZGllcmVzaXMiLCJub3RlcXVhbCIsIkFFIiwiT3NsYXNoIiwiaW5maW5pdHkiLCJwbHVzbWludXMiLCJsZXNzZXF1YWwiLCJncmVhdGVyZXF1YWwiLCJ5ZW4iLCJtdSIsInBhcnRpYWxkaWZmIiwic3VtbWF0aW9uIiwicHJvZHVjdCIsInBpIiwiaW50ZWdyYWwiLCJvcmRmZW1pbmluZSIsIm9yZG1hc2N1bGluZSIsIk9tZWdhIiwiYWUiLCJvc2xhc2giLCJxdWVzdGlvbmRvd24iLCJleGNsYW1kb3duIiwibG9naWNhbG5vdCIsInJhZGljYWwiLCJmbG9yaW4iLCJhcHByb3hlcXVhbCIsIkRlbHRhIiwiZ3VpbGxlbW90bGVmdCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJub25icmVha2luZ3NwYWNlIiwiQWdyYXZlIiwiQXRpbGRlIiwiT3RpbGRlIiwiT0UiLCJvZSIsImVuZGFzaCIsImVtZGFzaCIsInF1b3RlZGJsbGVmdCIsInF1b3RlZGJscmlnaHQiLCJxdW90ZWxlZnQiLCJxdW90ZXJpZ2h0IiwiZGl2aWRlIiwibG96ZW5nZSIsInlkaWVyZXNpcyIsIllkaWVyZXNpcyIsImZyYWN0aW9uIiwiY3VycmVuY3kiLCJndWlsc2luZ2xsZWZ0IiwiZ3VpbHNpbmdscmlnaHQiLCJmaSIsImZsIiwiZGFnZ2VyZGJsIiwicGVyaW9kY2VudGVyZWQiLCJxdW90ZXNpbmdsYmFzZSIsInF1b3RlZGJsYmFzZSIsInBlcnRob3VzYW5kIiwiQWNpcmN1bWZsZXgiLCJFY2lyY3VtZmxleCIsIkFhY3V0ZSIsIkVkaWVyZXNpcyIsIkVncmF2ZSIsIklhY3V0ZSIsIkljaXJjdW1mbGV4IiwiSWRpZXJlc2lzIiwiSWdyYXZlIiwiT2FjdXRlIiwiT2NpcmN1bWZsZXgiLCJhcHBsZSIsIk9ncmF2ZSIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWdyYXZlIiwiZG90bGVzc2kiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsInJpbmciLCJjZWRpbGxhIiwiaHVuZ2FydW1sYXV0Iiwib2dvbmVrIiwiY2Fyb24iLCJMc2xhc2giLCJsc2xhc2giLCJTY2Fyb24iLCJzY2Fyb24iLCJaY2Fyb24iLCJ6Y2Fyb24iLCJicm9rZW5iYXIiLCJFdGgiLCJldGgiLCJZYWN1dGUiLCJ5YWN1dGUiLCJUaG9ybiIsInRob3JuIiwibWludXMiLCJtdWx0aXBseSIsIm9uZXN1cGVyaW9yIiwidHdvc3VwZXJpb3IiLCJ0aHJlZXN1cGVyaW9yIiwib25laGFsZiIsIm9uZXF1YXJ0ZXIiLCJ0aHJlZXF1YXJ0ZXJzIiwiZnJhbmMiLCJHYnJldmUiLCJnYnJldmUiLCJJZG90YWNjZW50IiwiU2NlZGlsbGEiLCJzY2VkaWxsYSIsIkNhY3V0ZSIsImNhY3V0ZSIsIkNjYXJvbiIsImNjYXJvbiIsImRjcm9hdCJdO2Z1bmN0aW9uIHJlY292ZXJHbHlwaE5hbWUoZSx0KXtpZih2b2lkIDAhPT10W2VdKXJldHVybiBlO2NvbnN0IGE9Z2V0VW5pY29kZUZvckdseXBoKGUsdCk7aWYoLTEhPT1hKWZvcihjb25zdCBlIGluIHQpaWYodFtlXT09PWEpcmV0dXJuIGU7aW5mbygiVW5hYmxlIHRvIHJlY292ZXIgYSBzdGFuZGFyZCBnbHlwaCBuYW1lIGZvcjogIitlKTtyZXR1cm4gZX1mdW5jdGlvbiB0eXBlMUZvbnRHbHlwaE1hcHBpbmcoZSx0LGEpe2NvbnN0IHI9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgaSxuLHM7Y29uc3Qgbz0hIShlLmZsYWdzJkFyKTtpZihlLmlzSW50ZXJuYWxGb250KXtzPXQ7Zm9yKG49MDtuPHMubGVuZ3RoO24rKyl7aT1hLmluZGV4T2Yoc1tuXSk7cltuXT1pPj0wP2k6MH19ZWxzZSBpZihlLmJhc2VFbmNvZGluZ05hbWUpe3M9Z2V0RW5jb2RpbmcoZS5iYXNlRW5jb2RpbmdOYW1lKTtmb3Iobj0wO248cy5sZW5ndGg7bisrKXtpPWEuaW5kZXhPZihzW25dKTtyW25dPWk+PTA/aTowfX1lbHNlIGlmKG8pZm9yKG4gaW4gdClyW25dPXRbbl07ZWxzZXtzPWxyO2ZvcihuPTA7bj
101xzLmxlbmd0aDtuKyspe2k9YS5pbmRleE9mKHNbbl0pO3Jbbl09aT49MD9pOjB9fWNvbnN0IGM9ZS5kaWZmZXJlbmNlcztsZXQgbDtpZihjKWZvcihuIGluIGMpe2NvbnN0IGU9Y1tuXTtpPWEuaW5kZXhPZihlKTtpZigtMT09PWkpe2x8fChsPWZyKCkpO2NvbnN0IHQ9cmVjb3ZlckdseXBoTmFtZShlLGwpO3QhPT1lJiYoaT1hLmluZGV4T2YodCkpfXJbbl09aT49MD9pOjB9cmV0dXJuIHJ9ZnVuY3Rpb24gbm9ybWFsaXplRm9udE5hbWUoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvWyxfXS9nLCItIikucmVwbGFjZUFsbCgvXHMvZywiIil9Y29uc3QgdnI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGU9PntlWzgyMTFdPTY1MDc0O2VbODIxMl09NjUwNzM7ZVs4MjI5XT02NTA3MjtlWzgyMzBdPTY1MDQ5O2VbMTIyODldPTY1MDQxO2VbMTIyOTBdPTY1MDQyO2VbMTIyOTZdPTY1MDg3O2VbMTIyOTddPTY1MDg4O2VbMTIyOThdPTY1MDg1O2VbMTIyOTldPTY1MDg2O2VbMTIzMDBdPTY1MDg5O2VbMTIzMDFdPTY1MDkwO2VbMTIzMDJdPTY1MDkxO2VbMTIzMDNdPTY1MDkyO2VbMTIzMDRdPTY1MDgzO2VbMTIzMDVdPTY1MDg0O2VbMTIzMDhdPTY1MDgxO2VbMTIzMDldPTY1MDgyO2VbMTIzMTBdPTY1MDQ3O2VbMTIzMTFdPTY1MDQ4O2VbNjUxMDNdPTY1MDc2O2VbNjUyODFdPTY1MDQ1O2VbNjUyODhdPTY1MDc3O2VbNjUyODldPTY1MDc4O2VbNjUyOTJdPTY1MDQwO2VbNjUzMDZdPTY1MDQzO2VbNjUzMDddPTY1MDQ0O2VbNjUzMTFdPTY1MDQ2O2VbNjUzMzldPTY1MDk1O2VbNjUzNDFdPTY1MDk2O2VbNjUzNDNdPTY1MDc1O2VbNjUzNzFdPTY1MDc5O2VbNjUzNzNdPTY1MDgwfSk7Y29uc3QgRnI9WyIubm90ZGVmIiwic3BhY2UiLCJleGNsYW0iLCJxdW90ZWRibCIsIm51bWJlcnNpZ24iLCJkb2xsYXIiLCJwZXJjZW50IiwiYW1wZXJzYW5kIiwicXVvdGVyaWdodCIsInBhcmVubGVmdCIsInBhcmVucmlnaHQiLCJhc3RlcmlzayIsInBsdXMiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsInNsYXNoIiwiemVybyIsIm9uZSIsInR3byIsInRocmVlIiwiZm91ciIsImZpdmUiLCJzaXgiLCJzZXZlbiIsImVpZ2h0IiwibmluZSIsImNvbG9uIiwic2VtaWNvbG9uIiwibGVzcyIsImVxdWFsIiwiZ3JlYXRlciIsInF1ZXN0aW9uIiwiYXQiLCJBIiwiQiIsIkMiLCJEIiwiRSIsIkYiLCJHIiwiSCIsIkkiLCJKIiwiSyIsIkwiLCJNIiwiTiIsIk8iLCJQIiwiUSIsIlIiLCJTIiwiVCIsIlUiLCJWIiwiVyIsIlgiLCJZIiwiWiIsImJyYWNrZXRsZWZ0IiwiYmFja3NsYXNoIiwiYnJhY2tldHJpZ2h0IiwiYXNjaWljaXJjdW0iLCJ1bmRlcnNjb3JlIiwicXVvdGVsZWZ0IiwiYSIsImIiLCJjIiwiZCIsImUiLCJmIiwiZyIsImgiLCJpIiwiaiIsImsiLCJsIiwibSIsIm4iLCJvIiwicCIsInEiLCJyIiwicyIsInQiLCJ1IiwidiIsInciLCJ4IiwieSIsInoiLCJicmFjZWxlZnQiLCJiYXIiLCJicmFjZXJpZ2h0IiwiYXNjaWl0aWxkZSIsImV4Y2xhbWRvd24iLCJjZW50Iiwic3RlcmxpbmciLCJmcmFjdGlvbiIsInllbiIsImZsb3JpbiIsInNlY3Rpb24iLCJjdXJyZW5jeSIsInF1b3Rlc2luZ2xlIiwicXVvdGVkYmxsZWZ0IiwiZ3VpbGxlbW90bGVmdCIsImd1aWxzaW5nbGxlZnQiLCJndWlsc2luZ2xyaWdodCIsImZpIiwiZmwiLCJlbmRhc2giLCJkYWdnZXIiLCJkYWdnZXJkYmwiLCJwZXJpb2RjZW50ZXJlZCIsInBhcmFncmFwaCIsImJ1bGxldCIsInF1b3Rlc2luZ2xiYXNlIiwicXVvdGVkYmxiYXNlIiwicXVvdGVkYmxyaWdodCIsImd1aWxsZW1vdHJpZ2h0IiwiZWxsaXBzaXMiLCJwZXJ0aG91c2FuZCIsInF1ZXN0aW9uZG93biIsImdyYXZlIiwiYWN1dGUiLCJjaXJjdW1mbGV4IiwidGlsZGUiLCJtYWNyb24iLCJicmV2ZSIsImRvdGFjY2VudCIsImRpZXJlc2lzIiwicmluZyIsImNlZGlsbGEiLCJodW5nYXJ1bWxhdXQiLCJvZ29uZWsiLCJjYXJvbiIsImVtZGFzaCIsIkFFIiwib3JkZmVtaW5pbmUiLCJMc2xhc2giLCJPc2xhc2giLCJPRSIsIm9yZG1hc2N1bGluZSIsImFlIiwiZG90bGVzc2kiLCJsc2xhc2giLCJvc2xhc2giLCJvZSIsImdlcm1hbmRibHMiLCJvbmVzdXBlcmlvciIsImxvZ2ljYWxub3QiLCJtdSIsInRyYWRlbWFyayIsIkV0aCIsIm9uZWhhbGYiLCJwbHVzbWludXMiLCJUaG9ybiIsIm9uZXF1YXJ0ZXIiLCJkaXZpZGUiLCJicm9rZW5iYXIiLCJkZWdyZWUiLCJ0aG9ybiIsInRocmVlcXVhcnRlcnMiLCJ0d29zdXBlcmlvciIsInJlZ2lzdGVyZWQiLCJtaW51cyIsImV0aCIsIm11bHRpcGx5IiwidGhyZWVzdXBlcmlvciIsImNvcHlyaWdodCIsIkFhY3V0ZSIsIkFjaXJjdW1mbGV4IiwiQWRpZXJlc2lzIiwiQWdyYXZlIiwiQXJpbmciLCJBdGlsZGUiLCJDY2VkaWxsYSIsIkVhY3V0ZSIsIkVjaXJjdW1mbGV4IiwiRWRpZXJlc2lzIiwiRWdyYXZlIiwiSWFjdXRlIiwiSWNpcmN1bWZsZXgiLCJJZGllcmVzaXMiLCJJZ3JhdmUiLCJOdGlsZGUiLCJPYWN1dGUiLCJPY2lyY3VtZmxleCIsIk9kaWVyZXNpcyIsIk9ncmF2ZSIsIk90aWxkZSIsIlNjYXJvbiIsIlVhY3V0ZSIsIlVjaXJjdW1mbGV4IiwiVWRpZXJlc2lzIiwiVWdyYXZlIiwiWWFjdXRlIiwiWWRpZXJlc2lzIiwiWmNhcm9uIiwiYWFjdXRlIiwiYWNpcmN1bWZsZXgiLCJhZGllcmVzaXMiLCJhZ3JhdmUiLCJhcmluZyIsImF0aWxkZSIsImNjZWRpbGxhIiwiZWFjdXRlIiwiZWNpcmN1bWZsZXgiLCJlZGllcmVzaXMiLCJlZ3JhdmUiLCJpYWN1dGUiLCJpY2lyY3VtZmxleCIsImlkaWVyZXNpcyIsImlncmF2ZSIsIm50aWxkZSIsIm9hY3V0ZSIsIm9jaXJjdW1mbGV4Iiwib2RpZXJlc2lzIiwib2dyYXZlIiwib3RpbGRlIiwic2Nhcm9uIiwidWFjdXRlIiwidWNpcmN1bWZsZXgiLCJ1ZGllcmVzaXMiLCJ1Z3JhdmUiLCJ5YWN1dGUiLCJ5ZGllcmVzaXMiLCJ6Y2Fyb24iXSxJcj1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiY29tbWEiLCJoeXBoZW4iLCJwZXJpb2QiLCJmcmFjdGlvbiIsInplcm9vbGRzdHlsZSIsIm9uZW9sZHN0eWxlIiwidHdvb2xkc3R5bGUiLCJ0aHJlZW9sZHN0eWxlIiwiZm91cm9sZHN0eWxlIiwiZml2ZW9sZHN0eWxlIiwic2l4b2xkc3R5bGUiLCJzZXZlbm9sZHN0eWxlIiwiZWlnaHRvbGRzdHlsZSIsIm5pbmVvbGRzdHlsZSIsImNvbG9uIiwic2VtaWNvbG9uIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZpIiwiZmwiLCJmZmkiLCJmZmwiLCJwYXJlbmxlZnRpbmZlcmlvciIsInBhcmVucmlnaHRpbmZlcmlvciIsIkNpcmN1bWZsZXhzbWFsbCIsImh5cGhlbnN1cGVyaW9yIiwiR3JhdmVzbWFsbCIsIkFzbWFsbCIsIkJzbWFsbCIsIkNzbWFsbCIsIkRzbWFsbCIsIkVzbWFsbCIsIkZzbWFsbCIsIkdzbWFsbCIsIkhzbWFsbCIsIklzbWFsbCIsIkpzbWFsbCIsIktzbWFsbCIsIkxzbWFsbCIsIk1zbWFsbCIsIk5zbWFsbCIsIk9zbWFsbCIsIlBzbWFsbCIsIlFzbWFsbCIsIlJzbWFsbCIsIlNzbWFsbCIsIlRzbWFsbCIsIlVzbWFsbCIsIlZzbWFsbCIsIldzbWFsbCIsIlhzbWFsbCIsIllzbWFsbCIsIlpzbWFsbCIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJUaWxkZXNtYWxsIiwiZXhjbGFtZG93bnNtYWxsIiwiY2VudG9sZHN0eWxlIiwiTHNsYXNoc21hbGwiLCJTY2Fyb25zbWFsbCIsIlpjYXJvbnNtYWxsIiwiRGllcmVzaXNzbWFsbCIsIkJyZXZlc21hbGwiLCJDYXJvbnNtYWxsIiwiRG90YWNjZW50c21hbGwiLCJNYWNyb25zbWFsbCIsImZpZ3VyZWRhc2giLCJoeXBoZW5pbmZlcmlvciIsIk9nb25la3NtYWxsIiwiUmluZ3NtYWxsIiwiQ2VkaWxsYXNtYWxsIiwib25lcXVhcnRlciIsIm9uZWhhbGYiLCJ0aHJlZXF1YXJ0ZXJzIiwicXVlc3Rpb25kb3duc21hbGwiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiXSxUcj1bIi5ub3RkZWYiLCJzcGFjZSIsImRvbGxhcm9sZHN0eWxlIiwiZG9sbGFyc3VwZXJpb3IiLCJwYXJlbmxlZnRzdXBlcmlvciIsInBhcmVucmlnaHRzdXBlcmlvciIsInR3b2RvdGVubGVhZGVyIiwib25lZG90ZW5sZWFkZXIiLCJjb21tYSIsImh5cGhlbiIsInBlcmlvZCIsImZyYWN0aW9uIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29sb24iLCJzZW1pY29sb24iLCJjb21tYXN1cGVyaW9yIiwidGhyZWVxdWFydGVyc2VtZGFzaCIsInBlcmlvZHN1cGVyaW9yIiwiYXN1cGVyaW9yIiwiYnN1cGVyaW9yIiwiY2VudHN1cGVyaW9yIiwiZHN1cGVyaW9yIiwiZXN1cGVyaW9yIiwiaXN1cGVyaW9yIiwibHN1cGVyaW9yIiwibXN1cGVyaW9yIiwibnN1cGVyaW9yIiwib3N1cGVyaW9yIiwicnN1cGVyaW9yIiwic3N1cGVyaW9yIiwidHN1cGVyaW9yIiwiZmYiLCJmaSIsImZsIiwiZmZpIiwiZmZsIiwicGFyZW5sZWZ0aW5mZXJpb3IiLCJwYXJlbnJpZ2h0aW5mZXJpb3IiLCJoeXBoZW5zdXBlcmlvciIsImNvbG9ubW9uZXRhcnkiLCJvbmVmaXR0ZWQiLCJydXBpYWgiLCJjZW50b2xkc3R5bGUiLCJmaWd1cmVkYXNoIiwiaHlwaGVuaW5mZXJpb3IiLCJvbmVxdWFydGVyIiwib25laGFsZiIsInRocmVlcXVhcnRlcnMiLCJvbmVlaWdodGgiLCJ0aHJlZWVpZ2h0aHMiLCJmaXZlZWlnaHRocyIsInNldmVuZWlnaHRocyIsIm9uZXRoaXJkIiwidHdvdGhpcmRzIiwiemVyb3N1cGVyaW9yIiwib25lc3VwZXJpb3IiLCJ0d29zdXBlcmlvciIsInRocmVlc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiXSxPcj1bIi5ub3RkZWYiLCJzcGFjZSIsImV4Y2xhbSIsInF1b3RlZGJsIiwibnVtYmVyc2lnbiIsImRvbGxhciIsInBlcmNlbnQiLCJhbXBlcnNhbmQiLCJxdW90ZXJpZ2h0IiwicGFyZW5sZWZ0IiwicGFyZW5yaWdodCIsImFzdGVyaXNrIiwicGx1cyIsImNvbW1hIiwiaHlwaGVuIiwicGVyaW9kIiwic2xhc2giLCJ6ZXJvIiwib25lIiwidHdvIiwidGhyZWUiLCJmb3VyIiwi
101Zml2ZSIsInNpeCIsInNldmVuIiwiZWlnaHQiLCJuaW5lIiwiY29sb24iLCJzZW1pY29sb24iLCJsZXNzIiwiZXF1YWwiLCJncmVhdGVyIiwicXVlc3Rpb24iLCJhdCIsIkEiLCJCIiwiQyIsIkQiLCJFIiwiRiIsIkciLCJIIiwiSSIsIkoiLCJLIiwiTCIsIk0iLCJOIiwiTyIsIlAiLCJRIiwiUiIsIlMiLCJUIiwiVSIsIlYiLCJXIiwiWCIsIlkiLCJaIiwiYnJhY2tldGxlZnQiLCJiYWNrc2xhc2giLCJicmFja2V0cmlnaHQiLCJhc2NpaWNpcmN1bSIsInVuZGVyc2NvcmUiLCJxdW90ZWxlZnQiLCJhIiwiYiIsImMiLCJkIiwiZSIsImYiLCJnIiwiaCIsImkiLCJqIiwiayIsImwiLCJtIiwibiIsIm8iLCJwIiwicSIsInIiLCJzIiwidCIsInUiLCJ2IiwidyIsIngiLCJ5IiwieiIsImJyYWNlbGVmdCIsImJhciIsImJyYWNlcmlnaHQiLCJhc2NpaXRpbGRlIiwiZXhjbGFtZG93biIsImNlbnQiLCJzdGVybGluZyIsImZyYWN0aW9uIiwieWVuIiwiZmxvcmluIiwic2VjdGlvbiIsImN1cnJlbmN5IiwicXVvdGVzaW5nbGUiLCJxdW90ZWRibGxlZnQiLCJndWlsbGVtb3RsZWZ0IiwiZ3VpbHNpbmdsbGVmdCIsImd1aWxzaW5nbHJpZ2h0IiwiZmkiLCJmbCIsImVuZGFzaCIsImRhZ2dlciIsImRhZ2dlcmRibCIsInBlcmlvZGNlbnRlcmVkIiwicGFyYWdyYXBoIiwiYnVsbGV0IiwicXVvdGVzaW5nbGJhc2UiLCJxdW90ZWRibGJhc2UiLCJxdW90ZWRibHJpZ2h0IiwiZ3VpbGxlbW90cmlnaHQiLCJlbGxpcHNpcyIsInBlcnRob3VzYW5kIiwicXVlc3Rpb25kb3duIiwiZ3JhdmUiLCJhY3V0ZSIsImNpcmN1bWZsZXgiLCJ0aWxkZSIsIm1hY3JvbiIsImJyZXZlIiwiZG90YWNjZW50IiwiZGllcmVzaXMiLCJyaW5nIiwiY2VkaWxsYSIsImh1bmdhcnVtbGF1dCIsIm9nb25layIsImNhcm9uIiwiZW1kYXNoIiwiQUUiLCJvcmRmZW1pbmluZSIsIkxzbGFzaCIsIk9zbGFzaCIsIk9FIiwib3JkbWFzY3VsaW5lIiwiYWUiLCJkb3RsZXNzaSIsImxzbGFzaCIsIm9zbGFzaCIsIm9lIiwiZ2VybWFuZGJscyIsIm9uZXN1cGVyaW9yIiwibG9naWNhbG5vdCIsIm11IiwidHJhZGVtYXJrIiwiRXRoIiwib25laGFsZiIsInBsdXNtaW51cyIsIlRob3JuIiwib25lcXVhcnRlciIsImRpdmlkZSIsImJyb2tlbmJhciIsImRlZ3JlZSIsInRob3JuIiwidGhyZWVxdWFydGVycyIsInR3b3N1cGVyaW9yIiwicmVnaXN0ZXJlZCIsIm1pbnVzIiwiZXRoIiwibXVsdGlwbHkiLCJ0aHJlZXN1cGVyaW9yIiwiY29weXJpZ2h0IiwiQWFjdXRlIiwiQWNpcmN1bWZsZXgiLCJBZGllcmVzaXMiLCJBZ3JhdmUiLCJBcmluZyIsIkF0aWxkZSIsIkNjZWRpbGxhIiwiRWFjdXRlIiwiRWNpcmN1bWZsZXgiLCJFZGllcmVzaXMiLCJFZ3JhdmUiLCJJYWN1dGUiLCJJY2lyY3VtZmxleCIsIklkaWVyZXNpcyIsIklncmF2ZSIsIk50aWxkZSIsIk9hY3V0ZSIsIk9jaXJjdW1mbGV4IiwiT2RpZXJlc2lzIiwiT2dyYXZlIiwiT3RpbGRlIiwiU2Nhcm9uIiwiVWFjdXRlIiwiVWNpcmN1bWZsZXgiLCJVZGllcmVzaXMiLCJVZ3JhdmUiLCJZYWN1dGUiLCJZZGllcmVzaXMiLCJaY2Fyb24iLCJhYWN1dGUiLCJhY2lyY3VtZmxleCIsImFkaWVyZXNpcyIsImFncmF2ZSIsImFyaW5nIiwiYXRpbGRlIiwiY2NlZGlsbGEiLCJlYWN1dGUiLCJlY2lyY3VtZmxleCIsImVkaWVyZXNpcyIsImVncmF2ZSIsImlhY3V0ZSIsImljaXJjdW1mbGV4IiwiaWRpZXJlc2lzIiwiaWdyYXZlIiwibnRpbGRlIiwib2FjdXRlIiwib2NpcmN1bWZsZXgiLCJvZGllcmVzaXMiLCJvZ3JhdmUiLCJvdGlsZGUiLCJzY2Fyb24iLCJ1YWN1dGUiLCJ1Y2lyY3VtZmxleCIsInVkaWVyZXNpcyIsInVncmF2ZSIsInlhY3V0ZSIsInlkaWVyZXNpcyIsInpjYXJvbiIsImV4Y2xhbXNtYWxsIiwiSHVuZ2FydW1sYXV0c21hbGwiLCJkb2xsYXJvbGRzdHlsZSIsImRvbGxhcnN1cGVyaW9yIiwiYW1wZXJzYW5kc21hbGwiLCJBY3V0ZXNtYWxsIiwicGFyZW5sZWZ0c3VwZXJpb3IiLCJwYXJlbnJpZ2h0c3VwZXJpb3IiLCJ0d29kb3RlbmxlYWRlciIsIm9uZWRvdGVubGVhZGVyIiwiemVyb29sZHN0eWxlIiwib25lb2xkc3R5bGUiLCJ0d29vbGRzdHlsZSIsInRocmVlb2xkc3R5bGUiLCJmb3Vyb2xkc3R5bGUiLCJmaXZlb2xkc3R5bGUiLCJzaXhvbGRzdHlsZSIsInNldmVub2xkc3R5bGUiLCJlaWdodG9sZHN0eWxlIiwibmluZW9sZHN0eWxlIiwiY29tbWFzdXBlcmlvciIsInRocmVlcXVhcnRlcnNlbWRhc2giLCJwZXJpb2RzdXBlcmlvciIsInF1ZXN0aW9uc21hbGwiLCJhc3VwZXJpb3IiLCJic3VwZXJpb3IiLCJjZW50c3VwZXJpb3IiLCJkc3VwZXJpb3IiLCJlc3VwZXJpb3IiLCJpc3VwZXJpb3IiLCJsc3VwZXJpb3IiLCJtc3VwZXJpb3IiLCJuc3VwZXJpb3IiLCJvc3VwZXJpb3IiLCJyc3VwZXJpb3IiLCJzc3VwZXJpb3IiLCJ0c3VwZXJpb3IiLCJmZiIsImZmaSIsImZmbCIsInBhcmVubGVmdGluZmVyaW9yIiwicGFyZW5yaWdodGluZmVyaW9yIiwiQ2lyY3VtZmxleHNtYWxsIiwiaHlwaGVuc3VwZXJpb3IiLCJHcmF2ZXNtYWxsIiwiQXNtYWxsIiwiQnNtYWxsIiwiQ3NtYWxsIiwiRHNtYWxsIiwiRXNtYWxsIiwiRnNtYWxsIiwiR3NtYWxsIiwiSHNtYWxsIiwiSXNtYWxsIiwiSnNtYWxsIiwiS3NtYWxsIiwiTHNtYWxsIiwiTXNtYWxsIiwiTnNtYWxsIiwiT3NtYWxsIiwiUHNtYWxsIiwiUXNtYWxsIiwiUnNtYWxsIiwiU3NtYWxsIiwiVHNtYWxsIiwiVXNtYWxsIiwiVnNtYWxsIiwiV3NtYWxsIiwiWHNtYWxsIiwiWXNtYWxsIiwiWnNtYWxsIiwiY29sb25tb25ldGFyeSIsIm9uZWZpdHRlZCIsInJ1cGlhaCIsIlRpbGRlc21hbGwiLCJleGNsYW1kb3duc21hbGwiLCJjZW50b2xkc3R5bGUiLCJMc2xhc2hzbWFsbCIsIlNjYXJvbnNtYWxsIiwiWmNhcm9uc21hbGwiLCJEaWVyZXNpc3NtYWxsIiwiQnJldmVzbWFsbCIsIkNhcm9uc21hbGwiLCJEb3RhY2NlbnRzbWFsbCIsIk1hY3JvbnNtYWxsIiwiZmlndXJlZGFzaCIsImh5cGhlbmluZmVyaW9yIiwiT2dvbmVrc21hbGwiLCJSaW5nc21hbGwiLCJDZWRpbGxhc21hbGwiLCJxdWVzdGlvbmRvd25zbWFsbCIsIm9uZWVpZ2h0aCIsInRocmVlZWlnaHRocyIsImZpdmVlaWdodGhzIiwic2V2ZW5laWdodGhzIiwib25ldGhpcmQiLCJ0d29
1010aGlyZHMiLCJ6ZXJvc3VwZXJpb3IiLCJmb3Vyc3VwZXJpb3IiLCJmaXZlc3VwZXJpb3IiLCJzaXhzdXBlcmlvciIsInNldmVuc3VwZXJpb3IiLCJlaWdodHN1cGVyaW9yIiwibmluZXN1cGVyaW9yIiwiemVyb2luZmVyaW9yIiwib25laW5mZXJpb3IiLCJ0d29pbmZlcmlvciIsInRocmVlaW5mZXJpb3IiLCJmb3VyaW5mZXJpb3IiLCJmaXZlaW5mZXJpb3IiLCJzaXhpbmZlcmlvciIsInNldmVuaW5mZXJpb3IiLCJlaWdodGluZmVyaW9yIiwibmluZWluZmVyaW9yIiwiY2VudGluZmVyaW9yIiwiZG9sbGFyaW5mZXJpb3IiLCJwZXJpb2RpbmZlcmlvciIsImNvbW1haW5mZXJpb3IiLCJBZ3JhdmVzbWFsbCIsIkFhY3V0ZXNtYWxsIiwiQWNpcmN1bWZsZXhzbWFsbCIsIkF0aWxkZXNtYWxsIiwiQWRpZXJlc2lzc21hbGwiLCJBcmluZ3NtYWxsIiwiQUVzbWFsbCIsIkNjZWRpbGxhc21hbGwiLCJFZ3JhdmVzbWFsbCIsIkVhY3V0ZXNtYWxsIiwiRWNpcmN1bWZsZXhzbWFsbCIsIkVkaWVyZXNpc3NtYWxsIiwiSWdyYXZlc21hbGwiLCJJYWN1dGVzbWFsbCIsIkljaXJjdW1mbGV4c21hbGwiLCJJZGllcmVzaXNzbWFsbCIsIkV0aHNtYWxsIiwiTnRpbGRlc21hbGwiLCJPZ3JhdmVzbWFsbCIsIk9hY3V0ZXNtYWxsIiwiT2NpcmN1bWZsZXhzbWFsbCIsIk90aWxkZXNtYWxsIiwiT2RpZXJlc2lzc21hbGwiLCJPRXNtYWxsIiwiT3NsYXNoc21hbGwiLCJVZ3JhdmVzbWFsbCIsIlVhY3V0ZXNtYWxsIiwiVWNpcmN1bWZsZXhzbWFsbCIsIlVkaWVyZXNpc3NtYWxsIiwiWWFjdXRlc21hbGwiLCJUaG9ybnNtYWxsIiwiWWRpZXJlc2lzc21hbGwiLCIwMDEuMDAwIiwiMDAxLjAwMSIsIjAwMS4wMDIiLCIwMDEuMDAzIiwiQmxhY2siLCJCb2xkIiwiQm9vayIsIkxpZ2h0IiwiTWVkaXVtIiwiUmVndWxhciIsIlJvbWFuIiwiU2VtaWJvbGQiXSxEcj0zOTEsTXI9W251bGwse2lkOiJoc3RlbSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSxudWxsLHtpZDoidnN0ZW0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJ2bW92ZXRvIixtaW46MSxzdGFja0NsZWFyaW5nOiEwfSx7aWQ6InJsaW5ldG8iLG1pbjoyLHJlc2V0U3RhY2s6ITB9LHtpZDoiaGxpbmV0byIsbWluOjEscmVzZXRTdGFjazohMH0se2lkOiJ2bGluZXRvIixtaW46MSxyZXNldFN0YWNrOiEwfSx7aWQ6InJyY3VydmV0byIsbWluOjYscmVzZXRTdGFjazohMH0sbnVsbCx7aWQ6ImNhbGxzdWJyIixtaW46MX0se2lkOiJyZXR1cm4iLG1pbjowfSxudWxsLG51bGwse2lkOiJlbmRjaGFyIixtaW46MCxzdGFja0NsZWFyaW5nOiEwfSxudWxsLG51bGwsbnVsbCx7aWQ6ImhzdGVtaG0iLG1pbjoyLHN0YWNrQ2xlYXJpbmc6ITAsc3RlbTohMH0se2lkOiJoaW50bWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJjbnRybWFzayIsbWluOjAsc3RhY2tDbGVhcmluZzohMH0se2lkOiJybW92ZXRvIixtaW46MixzdGFja0NsZWFyaW5nOiEwfSx7aWQ6Imhtb3ZldG8iLG1pbjoxLHN0YWNrQ2xlYXJpbmc6ITB9LHtpZDoidnN0ZW1obSIsbWluOjIsc3RhY2tDbGVhcmluZzohMCxzdGVtOiEwfSx7aWQ6InJjdXJ2ZWxpbmUiLG1pbjo4LHJlc2V0U3RhY2s6ITB9LHtpZDoicmxpbmVjdXJ2ZSIsbWluOjgscmVzZXRTdGFjazohMH0se2lkOiJ2dmN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaGhjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfSxudWxsLHtpZDoiY2FsbGdzdWJyIixtaW46MX0se2lkOiJ2aGN1cnZldG8iLG1pbjo0LHJlc2V0U3RhY2s6ITB9LHtpZDoiaHZjdXJ2ZXRvIixtaW46NCxyZXNldFN0YWNrOiEwfV0sUnI9W251bGwsbnVsbCxudWxsLHtpZDoiYW5kIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im9yIixtaW46MixzdGFja0RlbHRhOi0xfSx7aWQ6Im5vdCIsbWluOjEsc3RhY2tEZWx0YTowfSxudWxsLG51bGwsbnVsbCx7aWQ6ImFicyIsbWluOjEsc3RhY2tEZWx0YTowfSx7aWQ6ImFkZCIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXStlW3QtMV19fSx7aWQ6InN1YiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS1lW3QtMV19fSx7aWQ6ImRpdiIsbWluOjIsc3RhY2tEZWx0YTotMSxzdGFja0ZuKGUsdCl7ZVt0LTJdPWVbdC0yXS9lW3QtMV19fSxudWxsLHtpZDoibmVnIixtaW46MSxzdGFja0RlbHRhOjAsc3RhY2tGbihlLHQpe2VbdC0xXT0tZVt0LTFdfX0se2lkOiJlcSIsbWluOjIsc3RhY2tEZWx0YTotMX0sbnVsbCxudWxsLHtpZDoiZHJvcCIsbWluOjEsc3RhY2tEZWx0YTotMX0sbnVsbCx7aWQ6InB1dCIsbWluOjIsc3RhY2tEZWx0YTotMn0se2lkOiJnZXQiLG1pbjoxLHN0YWNrRGVsdGE6MH0se2lkOiJpZmVsc2UiLG1pbjo0LHN0YWNrRGVsdGE6LTN9LHtpZDoicmFuZG9tIixtaW46MCxzdGFja0RlbHRhOjF9LHtpZDoibXVsIixtaW46MixzdGFja0RlbHRhOi0xLHN0YWNrRm4oZSx0KXtlW3QtMl09ZVt0LTJdKmVbdC0xXX19LG51bGwse2lkOiJzcXJ0IixtaW46MSxzdGFja0RlbHRhOjB9LHtpZDoiZHVwIixtaW46MSxzdGFja0RlbHRhOjF9LHtpZDoiZXhjaCIsbWluOjIsc3RhY2tEZWx0YTowfSx7aWQ6ImluZGV4IixtaW46MixzdGFja0RlbHRhOjB9LHtpZDoicm9sbCIsbWluOjMsc3RhY2tEZWx0YTotMn0sbnVsbCxudWxsLG51bGwse2lkOiJoZmxleCIsbWluOjcscmVzZXRTdGFjazohMH0se2lkOiJmbGV4IixtaW46MTMscmVzZXRTdGFjazohMH0se2lkOiJoZmxleDEiLG1pbjo5LHJlc2V0U3RhY2s6ITB9LHtpZDoiZmxleDEiLG1pbjoxMSxyZXNldFN0YWNrOiEwfV07Y2xhc3MgQ0ZGUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmJ5dGVzPWUuZ2V0Qnl0ZXMoKTt0aGlzLnByb3BlcnRpZXM9dDt0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQ9ISFhfXBhcnNlKCl7Y29uc3QgZT10aGlzLnByb3BlcnRpZXMsdD1uZXcgQ0ZGO3RoaXMuY2ZmPXQ7Y29uc3QgYT10aGlzLnBhcnNlSGVhZGVyKCkscj10aGlzLnBhcnNlSW5kZXgoYS5lbmRQb3MpLGk9dGhpcy5wYXJzZUluZGV4KHIuZW5kUG9zKSxuPXRoaXMucGFyc2VJbmRleChpLmVuZFBvcykscz10aGlzLnBhcnNlSW5kZXgobi5lbmRQb3MpLG89dGhpcy5wYXJzZURpY3QoaS5vYmouZ2V0KDApKSxjPXRoaXMuY3JlYXRlRGljdChDRkZUb3BEaWN0LG8sdC5zdHJpbmdzKTt0LmhlYWRlcj1hLm9iajt0Lm5hbWVzPXRoaXMucGFyc2VOYW1lSW5kZXgoci5vYmopO3Quc3RyaW5ncz10aGlzLnBhcnNlU3RyaW5nSW5kZXgobi5vYmopO3QudG9wRGljdD1jO3QuZ2xvYmFsU3VickluZGV4PXMub2JqO3RoaXMucGFyc2VQcml2YXRlRGljdCh0LnRvcERpY3QpO3QuaXNDSURGb250PWMuaGFzTmFtZSgiUk9TIik7Y29uc3QgbD1jLmdldEJ5TmFtZSgiQ2hhclN0cmluZ3MiKSxoPXRoaXMucGFyc2VJbmRleChsKS5vYmo7dC5jaGFyU3RyaW5nQ291bnQ9aC5jb3VudDtjb25zdCB1PWMuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7dSYmKGUuZm9udE1hdHJpeD11KTtjb25zdCBkPWMuZ2V0QnlOYW1lKCJGb250QkJveCIpO2lmKGQpe2UuYXNjZW50PU1hdGgubWF4KGRbM10sZFsxXSk7ZS5kZXNjZW50PU1hdGgubWluKGRbMV0sZFszXSk7ZS5hc2NlbnRTY2FsZWQ9ITB9bGV0IGYsZztpZih0LmlzQ0lERm9udCl7Y29uc3QgZT10aGlzLnBhcnNlSW5kZXgoYy5nZXRCeU5hbWUoIkZEQXJyYXkiKSkub2JqO2ZvcihsZXQgYT0wLHI9ZS5jb3VudDthPHI7KythKXtjb25zdCByPWUuZ2V0KGEpLGk9dGhpcy5jcmVhdGVEaWN0KENGRlRvcERpY3QsdGhpcy5wYXJzZURpY3QociksdC5zdHJpbmdzKTt0aGlzLnBhcnNlUHJpdmF0ZURpY3QoaSk7dC5mZEFycmF5LnB1c2goaSl9Zz1udWxsO2Y9dGhpcy5wYXJzZUNoYXJzZXRzKGMuZ2V0QnlOYW1lKCJjaGFyc2V0IiksaC5jb3VudCx0LnN0cmluZ3MsITApO3QuZmRTZWxlY3Q9dGhpcy5wYXJzZU
101ZEU2VsZWN0KGMuZ2V0QnlOYW1lKCJGRFNlbGVjdCIpLGguY291bnQpfWVsc2V7Zj10aGlzLnBhcnNlQ2hhcnNldHMoYy5nZXRCeU5hbWUoImNoYXJzZXQiKSxoLmNvdW50LHQuc3RyaW5ncywhMSk7Zz10aGlzLnBhcnNlRW5jb2RpbmcoYy5nZXRCeU5hbWUoIkVuY29kaW5nIiksZSx0LnN0cmluZ3MsZi5jaGFyc2V0KX10LmNoYXJzZXQ9Zjt0LmVuY29kaW5nPWc7Y29uc3QgcD10aGlzLnBhcnNlQ2hhclN0cmluZ3Moe2NoYXJTdHJpbmdzOmgsbG9jYWxTdWJySW5kZXg6Yy5wcml2YXRlRGljdC5zdWJyc0luZGV4LGdsb2JhbFN1YnJJbmRleDpzLm9iaixmZFNlbGVjdDp0LmZkU2VsZWN0LGZkQXJyYXk6dC5mZEFycmF5LHByaXZhdGVEaWN0OmMucHJpdmF0ZURpY3R9KTt0LmNoYXJTdHJpbmdzPXAuY2hhclN0cmluZ3M7dC5zZWFjcz1wLnNlYWNzO3Qud2lkdGhzPXAud2lkdGhzO3JldHVybiB0fXBhcnNlSGVhZGVyKCl7bGV0IGU9dGhpcy5ieXRlcztjb25zdCB0PWUubGVuZ3RoO2xldCBhPTA7Zm9yKDthPHQmJjEhPT1lW2FdOykrK2E7aWYoYT49dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgQ0ZGIGhlYWRlciIpO2lmKDAhPT1hKXtpbmZvKCJjZmYgZGF0YSBpcyBzaGlmdGVkIik7ZT1lLnN1YmFycmF5KGEpO3RoaXMuYnl0ZXM9ZX1jb25zdCByPWVbMF0saT1lWzFdLG49ZVsyXSxzPWVbM107cmV0dXJue29iajpuZXcgQ0ZGSGVhZGVyKHIsaSxuLHMpLGVuZFBvczpufX1wYXJzZURpY3QoZSl7bGV0IHQ9MDtmdW5jdGlvbiBwYXJzZU9wZXJhbmQoKXtsZXQgYT1lW3QrK107aWYoMzA9PT1hKXJldHVybiBmdW5jdGlvbiBwYXJzZUZsb2F0T3BlcmFuZCgpe2xldCBhPSIiO2NvbnN0IHI9MTUsaT1bIjAiLCIxIiwiMiIsIjMiLCI0IiwiNSIsIjYiLCI3IiwiOCIsIjkiLCIuIiwiRSIsIkUtIixudWxsLCItIl0sbj1lLmxlbmd0aDtmb3IoO3Q8bjspe2NvbnN0IG49ZVt0KytdLHM9bj4+NCxvPTE1Jm47aWYocz09PXIpYnJlYWs7YSs9aVtzXTtpZihvPT09cilicmVhazthKz1pW29dfXJldHVybiBwYXJzZUZsb2F0KGEpfSgpO2lmKDI4PT09YSl7YT1yZWFkSW50MTYoZSx0KTt0Kz0yO3JldHVybiBhfWlmKDI5PT09YSl7YT1lW3QrK107YT1hPDw4fGVbdCsrXTthPWE8PDh8ZVt0KytdO2E9YTw8OHxlW3QrK107cmV0dXJuIGF9aWYoYT49MzImJmE8PTI0NilyZXR1cm4gYS0xMzk7aWYoYT49MjQ3JiZhPD0yNTApcmV0dXJuIDI1NiooYS0yNDcpK2VbdCsrXSsxMDg7aWYoYT49MjUxJiZhPD0yNTQpcmV0dXJuLTI1NiooYS0yNTEpLWVbdCsrXS0xMDg7d2FybignQ0ZGUGFyc2VyX3BhcnNlRGljdDogIicrYSsnIiBpcyBhIHJlc2VydmVkIGNvbW1hbmQuJyk7cmV0dXJuIE5hTn1sZXQgYT1bXTtjb25zdCByPVtdO3Q9MDtjb25zdCBpPWUubGVuZ3RoO2Zvcig7dDxpOyl7bGV0IGk9ZVt0XTtpZihpPD0yMSl7MTI9PT1pJiYoaT1pPDw4fGVbKyt0XSk7ci5wdXNoKFtpLGFdKTthPVtdOysrdH1lbHNlIGEucHVzaChwYXJzZU9wZXJhbmQoKSl9cmV0dXJuIHJ9cGFyc2VJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleCxhPXRoaXMuYnl0ZXMscj1hW2UrK108PDh8YVtlKytdLGk9W107bGV0IG4scyxvPWU7aWYoMCE9PXIpe2NvbnN0IHQ9YVtlKytdLGM9ZSsocisxKSp0LTE7Zm9yKG49MCxzPXIrMTtuPHM7KytuKXtsZXQgcj0wO2ZvcihsZXQgaT0wO2k8dDsrK2kpe3I8PD04O3IrPWFbZSsrXX1pLnB1c2goYytyKX1vPWlbcl19Zm9yKG49MCxzPWkubGVuZ3RoLTE7bjxzOysrbil7Y29uc3QgZT1pW25dLHI9aVtuKzFdO3QuYWRkKGEuc3ViYXJyYXkoZSxyKSl9cmV0dXJue29iajp0LGVuZFBvczpvfX1wYXJzZU5hbWVJbmRleChlKXtjb25zdCB0PVtdO2ZvcihsZXQgYT0wLHI9ZS5jb3VudDthPHI7KythKXtjb25zdCByPWUuZ2V0KGEpO3QucHVzaChieXRlc1RvU3RyaW5nKHIpKX1yZXR1cm4gdH1wYXJzZVN0cmluZ0luZGV4KGUpe2NvbnN0IHQ9bmV3IENGRlN0cmluZ3M7Zm9yKGxldCBhPTAscj1lLmNvdW50O2E8cjsrK2Epe2NvbnN0IHI9ZS5nZXQoYSk7dC5hZGQoYnl0ZXNUb1N0cmluZyhyKSl9cmV0dXJuIHR9Y3JlYXRlRGljdChlLHQsYSl7Y29uc3Qgcj1uZXcgZShhKTtmb3IoY29uc3RbZSxhXW9mIHQpci5zZXRCeUtleShlLGEpO3JldHVybiByfXBhcnNlQ2hhclN0cmluZyhlLHQsYSxyKXtpZighdHx8ZS5jYWxsRGVwdGg+MTApcmV0dXJuITE7bGV0IGk9ZS5zdGFja1NpemU7Y29uc3Qgbj1lLnN0YWNrO2xldCBzPXQubGVuZ3RoO2ZvcihsZXQgbz0wO288czspe2NvbnN0IGM9dFtvKytdO2xldCBsPW51bGw7aWYoMTI9PT1jKXtjb25zdCBlPXRbbysrXTtpZigwPT09ZSl7dFtvLTJdPTEzOTt0W28tMV09MjI7aT0wfWVsc2UgbD1ScltlXX1lbHNlIGlmKDI4PT09Yyl7bltpXT1yZWFkSW50MTYodCxvKTtvKz0yO2krK31lbHNlIGlmKDE0PT09Yyl7aWYoaT49NCl7aS09NDtpZih0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpe2Uuc2VhYz1uLnNsaWNlKGksaSs0KTtyZXR1cm4hMX19bD1NcltjXX1lbHNlIGlmKGM+PTMyJiZjPD0yNDYpe25baV09Yy0xMzk7aSsrfWVsc2UgaWYoYz49MjQ3JiZjPD0yNTQpe25baV09YzwyNTE/KGMtMjQ3PDw4KSt0W29dKzEwODotKGMtMjUxPDw4KS10W29dLTEwODtvKys7aSsrfWVsc2UgaWYoMjU1PT09Yyl7bltpXT0odFtvXTw8MjR8dFtvKzFdPDwxNnx0W28rMl08PDh8dFtvKzNdKS82NTUzNjtvKz00O2krK31lbHNlIGlmKDE5PT09Y3x8MjA9PT1jKXtlLmhpbnRzKz1pPj4xO2lmKDA9PT1lLmhpbnRzKXt0LmNvcHlXaXRoaW4oby0xLG8sLTEpO28tPTE7cy09MTtjb250aW51ZX1vKz1lLmhpbnRzKzc+PjM7aSU9MjtsPU1yW2NdfWVsc2V7aWYoMTA9PT1jfHwyOT09PWMpe2NvbnN0IHQ9MTA9PT1jP2E6cjtpZighdCl7bD1NcltjXTt3YXJuKCJNaXNzaW5nIHN1YnJzSW5kZXggZm9yICIrbC5pZCk7cmV0dXJuITF9bGV0IHM9MzI3Njg7dC5jb3VudDwxMjQwP3M9MTA3OnQuY291bnQ8MzM5MDAmJihzPTExMzEpO2NvbnN0IG89blstLWldK3M7aWYobzwwfHxvPj10LmNvdW50fHxpc05hTihvKSl7bD1NcltjXTt3YXJuKCJPdXQgb2YgYm91bmRzIHN1YnJJbmRleCBmb3IgIitsLmlkKTtyZXR1cm4hMX1lLnN0YWNrU2l6ZT1pO2UuY2FsbERlcHRoKys7aWYoIXRoaXMucGFyc2VDaGFyU3RyaW5nKGUsdC5nZXQobyksYSxyKSlyZXR1cm4hMTtlLmNhbGxEZXB0aC0tO2k9ZS5zdGFja1NpemU7Y29udGludWV9aWYoMTE9PT1jKXtlLnN0YWNrU2l6ZT1pO3JldHVybiEwfWlmKDA9PT1jJiZvPT09dC5sZW5ndGgpe3Rbby0xXT0xNDtsPU1yWzE0XX1lbHNle2lmKDk9PT1jKXt0LmNvcHlXaXRoaW4oby0xLG8sLTEpO28tPTE7cy09MTtjb250aW51ZX1sPU1yW2NdfX1pZihsKXtpZihsLnN0ZW0pe2UuaGludHMrPWk+PjE7aWYoMz09PWN8fDIzPT09YyllLmhhc1ZTdGVtcz0hMDtlbHNlIGlmKGUuaGFzVlN0ZW1zJiYoMT09PWN8fDE4PT09Yykpe3dhcm4oIkNGRiBzdGVtIGhpbnRzIGFyZSBpbiB3cm9uZyBvcmRlciIpO3Rbby0xXT0xPT09Yz8zOjIzfX1pZihpPGwubWluKXt3YXJuKCJOb3QgZW5vdWdoIHBhcmFtZXRlcnMgZm9yICIrbC5pZCsiOyBhY3R1YWw6ICIraSsiLCBleHBlY3RlZDogIitsLm1pbik7aWYoMD09PWkpe3Rbby0xXT0xNDtyZXR1cm4hMH1yZXR1cm4hMX1pZihlLmZpcnN0U3RhY2tDbGVhcmluZyYmbC5zdGFja0NsZWFyaW5nKXtlLmZpcnN0U3RhY2tDbGVhcmluZz0hMTtpLT1sLm1pbjtpPj0yJiZsLnN0ZW0/aSU9MjppPjEmJndhcm4oIkZvdW5kIHRvbyBtYW55IHBhcmFtZXRlcnMgZm9yIHN0YWNrLWNsZWFyaW5nIGNvbW1hbmQiKTtpPjAmJihlLndpZHRoPW5baS0xXSl9aWYoInN0YWNrRGVsdGEiaW4gbCl7InN0YWNrRm4iaW4gbCYmbC5zdGFja0ZuKG4saSk7aSs9bC5zdGFja0RlbHRhfWVsc2UobC5zdGFja0NsZWFyaW5nfHxsLnJlc2V0U3RhY2spJiYoaT0wKX19czx0Lmxlbmd0aCYmdC5maWxsKDE0LHMpO2Uuc3RhY2tTaXplPWk7cmV0dXJuITB9cGFyc2VDaGFyU3RyaW5ncy
101h7Y2hhclN0cmluZ3M6ZSxsb2NhbFN1YnJJbmRleDp0LGdsb2JhbFN1YnJJbmRleDphLGZkU2VsZWN0OnIsZmRBcnJheTppLHByaXZhdGVEaWN0Om59KXtjb25zdCBzPVtdLG89W10sYz1lLmNvdW50O2ZvcihsZXQgbD0wO2w8YztsKyspe2NvbnN0IGM9ZS5nZXQobCksaD17Y2FsbERlcHRoOjAsc3RhY2tTaXplOjAsc3RhY2s6W10saGludHM6MCxmaXJzdFN0YWNrQ2xlYXJpbmc6ITAsc2VhYzpudWxsLHdpZHRoOm51bGwsaGFzVlN0ZW1zOiExfTtsZXQgdT0hMCxkPW51bGwsZj1uO2lmKHImJmkubGVuZ3RoKXtjb25zdCBlPXIuZ2V0RkRJbmRleChsKTtpZigtMT09PWUpe3dhcm4oIkdseXBoIGluZGV4IGlzIG5vdCBpbiBmZCBzZWxlY3QuIik7dT0hMX1pZihlPj1pLmxlbmd0aCl7d2FybigiSW52YWxpZCBmZCBpbmRleCBmb3IgZ2x5cGggaW5kZXguIik7dT0hMX1pZih1KXtmPWlbZV0ucHJpdmF0ZURpY3Q7ZD1mLnN1YnJzSW5kZXh9fWVsc2UgdCYmKGQ9dCk7dSYmKHU9dGhpcy5wYXJzZUNoYXJTdHJpbmcoaCxjLGQsYSkpO2lmKG51bGwhPT1oLndpZHRoKXtjb25zdCBlPWYuZ2V0QnlOYW1lKCJub21pbmFsV2lkdGhYIik7b1tsXT1lK2gud2lkdGh9ZWxzZXtjb25zdCBlPWYuZ2V0QnlOYW1lKCJkZWZhdWx0V2lkdGhYIik7b1tsXT1lfW51bGwhPT1oLnNlYWMmJihzW2xdPWguc2VhYyk7dXx8ZS5zZXQobCxuZXcgVWludDhBcnJheShbMTRdKSl9cmV0dXJue2NoYXJTdHJpbmdzOmUsc2VhY3M6cyx3aWR0aHM6b319ZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKXtjb25zdCB0PXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxbXSxlLnN0cmluZ3MpO2Uuc2V0QnlLZXkoMTgsWzAsMF0pO2UucHJpdmF0ZURpY3Q9dH1wYXJzZVByaXZhdGVEaWN0KGUpe2lmKCFlLmhhc05hbWUoIlByaXZhdGUiKSl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCB0PWUuZ2V0QnlOYW1lKCJQcml2YXRlIik7aWYoIUFycmF5LmlzQXJyYXkodCl8fDIhPT10Lmxlbmd0aCl7ZS5yZW1vdmVCeU5hbWUoIlByaXZhdGUiKTtyZXR1cm59Y29uc3QgYT10WzBdLHI9dFsxXTtpZigwPT09YXx8cj49dGhpcy5ieXRlcy5sZW5ndGgpe3RoaXMuZW1wdHlQcml2YXRlRGljdGlvbmFyeShlKTtyZXR1cm59Y29uc3QgaT1yK2Esbj10aGlzLmJ5dGVzLnN1YmFycmF5KHIsaSkscz10aGlzLnBhcnNlRGljdChuKSxvPXRoaXMuY3JlYXRlRGljdChDRkZQcml2YXRlRGljdCxzLGUuc3RyaW5ncyk7ZS5wcml2YXRlRGljdD1vOzA9PT1vLmdldEJ5TmFtZSgiRXhwYW5zaW9uRmFjdG9yIikmJm8uc2V0QnlOYW1lKCJFeHBhbnNpb25GYWN0b3IiLC4wNik7aWYoIW8uZ2V0QnlOYW1lKCJTdWJycyIpKXJldHVybjtjb25zdCBjPW8uZ2V0QnlOYW1lKCJTdWJycyIpLGw9citjO2lmKDA9PT1jfHxsPj10aGlzLmJ5dGVzLmxlbmd0aCl7dGhpcy5lbXB0eVByaXZhdGVEaWN0aW9uYXJ5KGUpO3JldHVybn1jb25zdCBoPXRoaXMucGFyc2VJbmRleChsKTtvLnN1YnJzSW5kZXg9aC5vYmp9cGFyc2VDaGFyc2V0cyhlLHQsYSxyKXtpZigwPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRXIuSVNPX0FET0JFLEZyKTtpZigxPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRXIuRVhQRVJULElyKTtpZigyPT09ZSlyZXR1cm4gbmV3IENGRkNoYXJzZXQoITAsRXIuRVhQRVJUX1NVQlNFVCxUcik7Y29uc3QgaT10aGlzLmJ5dGVzLG49ZSxzPWlbZSsrXSxvPVtyPzA6Ii5ub3RkZWYiXTtsZXQgYyxsLGg7dC09MTtzd2l0Y2gocyl7Y2FzZSAwOmZvcihoPTA7aDx0O2grKyl7Yz1pW2UrK108PDh8aVtlKytdO28ucHVzaChyP2M6YS5nZXQoYykpfWJyZWFrO2Nhc2UgMTpmb3IoO28ubGVuZ3RoPD10Oyl7Yz1pW2UrK108PDh8aVtlKytdO2w9aVtlKytdO2ZvcihoPTA7aDw9bDtoKyspby5wdXNoKHI/YysrOmEuZ2V0KGMrKykpfWJyZWFrO2Nhc2UgMjpmb3IoO28ubGVuZ3RoPD10Oyl7Yz1pW2UrK108PDh8aVtlKytdO2w9aVtlKytdPDw4fGlbZSsrXTtmb3IoaD0wO2g8PWw7aCsrKW8ucHVzaChyP2MrKzphLmdldChjKyspKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biBjaGFyc2V0IGZvcm1hdCIpfWNvbnN0IHU9ZSxkPWkuc3ViYXJyYXkobix1KTtyZXR1cm4gbmV3IENGRkNoYXJzZXQoITEscyxvLGQpfXBhcnNlRW5jb2RpbmcoZSx0LGEscil7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLG49dGhpcy5ieXRlcztsZXQgcyxvLGMsbD0hMSxoPW51bGw7aWYoMD09PWV8fDE9PT1lKXtsPSEwO3M9ZTtjb25zdCB0PWU/c3I6bHI7Zm9yKG89MCxjPXIubGVuZ3RoO288YztvKyspe2NvbnN0IGU9dC5pbmRleE9mKHJbb10pOy0xIT09ZSYmKGlbZV09byl9fWVsc2V7Y29uc3QgdD1lO3M9bltlKytdO3N3aXRjaCgxMjcmcyl7Y2FzZSAwOmNvbnN0IHQ9bltlKytdO2ZvcihvPTE7bzw9dDtvKyspaVtuW2UrK11dPW87YnJlYWs7Y2FzZSAxOmNvbnN0IGE9bltlKytdO2xldCByPTE7Zm9yKG89MDtvPGE7bysrKXtjb25zdCB0PW5bZSsrXSxhPW5bZSsrXTtmb3IobGV0IGU9dDtlPD10K2E7ZSsrKWlbZV09cisrfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIGVuY29kaW5nIGZvcm1hdDogJHtzfSBpbiBDRkZgKX1jb25zdCBjPWU7aWYoMTI4JnMpe25bdF0mPTEyNzshZnVuY3Rpb24gcmVhZFN1cHBsZW1lbnQoKXtjb25zdCB0PW5bZSsrXTtmb3Iobz0wO288dDtvKyspe2NvbnN0IHQ9bltlKytdLHM9KG5bZSsrXTw8OCkrKDI1NSZuW2UrK10pO2lbdF09ci5pbmRleE9mKGEuZ2V0KHMpKX19KCl9aD1uLnN1YmFycmF5KHQsYyl9cyY9MTI3O3JldHVybiBuZXcgQ0ZGRW5jb2RpbmcobCxzLGksaCl9cGFyc2VGRFNlbGVjdChlLHQpe2NvbnN0IGE9dGhpcy5ieXRlcyxyPWFbZSsrXSxpPVtdO2xldCBuO3N3aXRjaChyKXtjYXNlIDA6Zm9yKG49MDtuPHQ7KytuKXtjb25zdCB0PWFbZSsrXTtpLnB1c2godCl9YnJlYWs7Y2FzZSAzOmNvbnN0IHM9YVtlKytdPDw4fGFbZSsrXTtmb3Iobj0wO248czsrK24pe2xldCB0PWFbZSsrXTw8OHxhW2UrK107aWYoMD09PW4mJjAhPT10KXt3YXJuKCJwYXJzZUZEU2VsZWN0OiBUaGUgZmlyc3QgcmFuZ2UgbXVzdCBoYXZlIGEgZmlyc3QgR0lEIG9mIDAgLS0gdHJ5aW5nIHRvIHJlY292ZXIuIik7dD0wfWNvbnN0IHI9YVtlKytdLHM9YVtlXTw8OHxhW2UrMV07Zm9yKGxldCBlPXQ7ZTxzOysrZSlpLnB1c2gocil9ZSs9MjticmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgcGFyc2VGRFNlbGVjdDogVW5rbm93biBmb3JtYXQgIiR7cn0iLmApfWlmKGkubGVuZ3RoIT09dCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInBhcnNlRkRTZWxlY3Q6IEludmFsaWQgZm9udCBkYXRhLiIpO3JldHVybiBuZXcgQ0ZGRkRTZWxlY3QocixpKX19Y2xhc3MgQ0ZGe2NvbnN0cnVjdG9yKCl7dGhpcy5oZWFkZXI9bnVsbDt0aGlzLm5hbWVzPVtdO3RoaXMudG9wRGljdD1udWxsO3RoaXMuc3RyaW5ncz1uZXcgQ0ZGU3RyaW5nczt0aGlzLmdsb2JhbFN1YnJJbmRleD1udWxsO3RoaXMuZW5jb2Rpbmc9bnVsbDt0aGlzLmNoYXJzZXQ9bnVsbDt0aGlzLmNoYXJTdHJpbmdzPW51bGw7dGhpcy5mZEFycmF5PVtdO3RoaXMuZmRTZWxlY3Q9bnVsbDt0aGlzLmlzQ0lERm9udD0hMTt0aGlzLmNoYXJTdHJpbmdDb3VudD0wfWR1cGxpY2F0ZUZpcnN0R2x5cGgoKXtpZih0aGlzLmNoYXJTdHJpbmdzLmNvdW50Pj02NTUzNSl7d2FybigiTm90IGVub3VnaCBzcGFjZSBpbiBjaGFyc3RyaW5ncyB0byBkdXBsaWNhdGUgZmlyc3QgZ2x5cGguIik7cmV0dXJufWNvbnN0IGU9dGhpcy5jaGFyU3RyaW5ncy5nZXQoMCk7dGhpcy5jaGFyU3RyaW5ncy5hZGQoZSk7dGhpcy5pc0NJREZvbnQmJnRoaXMuZmRTZWxlY3QuZmRTZWxlY3QucHVzaCh0aGlzLmZkU2VsZWN0LmZkU2VsZWN0WzBdKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5jaGFyU3RyaW5ncy5jb3VudClyZXR1cm4hMTtyZXR1cm4gdGhpcy5jaGFyU3RyaW5ncy5nZXQoZSkubGVuZ3RoPjB9fWNsYXNzIENGRkhlYWRlcntjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLm1ham9yPWU7dGhpcy5taW5vcj10O3RoaXMuaGRyU2l6ZT1hO3RoaXMub2ZmU2l6ZT1yfX1jbGFzcyBDRkZTdHJpbmdze2NvbnN0cnVjdG9yKCl7dGhpcy5zdHJpbmdzPVtdfWdldChl
101KXtyZXR1cm4gZT49MCYmZTw9MzkwP09yW2VdOmUtRHI8PXRoaXMuc3RyaW5ncy5sZW5ndGg/dGhpcy5zdHJpbmdzW2UtRHJdOk9yWzBdfWdldFNJRChlKXtsZXQgdD1Pci5pbmRleE9mKGUpO2lmKC0xIT09dClyZXR1cm4gdDt0PXRoaXMuc3RyaW5ncy5pbmRleE9mKGUpO3JldHVybi0xIT09dD90K0RyOi0xfWFkZChlKXt0aGlzLnN0cmluZ3MucHVzaChlKX1nZXQgY291bnQoKXtyZXR1cm4gdGhpcy5zdHJpbmdzLmxlbmd0aH19Y2xhc3MgQ0ZGSW5kZXh7Y29uc3RydWN0b3IoKXt0aGlzLm9iamVjdHM9W107dGhpcy5sZW5ndGg9MH1hZGQoZSl7dGhpcy5sZW5ndGgrPWUubGVuZ3RoO3RoaXMub2JqZWN0cy5wdXNoKGUpfXNldChlLHQpe3RoaXMubGVuZ3RoKz10Lmxlbmd0aC10aGlzLm9iamVjdHNbZV0ubGVuZ3RoO3RoaXMub2JqZWN0c1tlXT10fWdldChlKXtyZXR1cm4gdGhpcy5vYmplY3RzW2VdfWdldCBjb3VudCgpe3JldHVybiB0aGlzLm9iamVjdHMubGVuZ3RofX1jbGFzcyBDRkZEaWN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5rZXlUb05hbWVNYXA9ZS5rZXlUb05hbWVNYXA7dGhpcy5uYW1lVG9LZXlNYXA9ZS5uYW1lVG9LZXlNYXA7dGhpcy5kZWZhdWx0cz1lLmRlZmF1bHRzO3RoaXMudHlwZXM9ZS50eXBlczt0aGlzLm9wY29kZXM9ZS5vcGNvZGVzO3RoaXMub3JkZXI9ZS5vcmRlcjt0aGlzLnN0cmluZ3M9dDt0aGlzLnZhbHVlcz1PYmplY3QuY3JlYXRlKG51bGwpfXNldEJ5S2V5KGUsdCl7aWYoIShlIGluIHRoaXMua2V5VG9OYW1lTWFwKSlyZXR1cm4hMTtpZigwPT09dC5sZW5ndGgpcmV0dXJuITA7Zm9yKGNvbnN0IGEgb2YgdClpZihpc05hTihhKSl7d2FybihgSW52YWxpZCBDRkZEaWN0IHZhbHVlOiAiJHt0fSIgZm9yIGtleSAiJHtlfSIuYCk7cmV0dXJuITB9Y29uc3QgYT10aGlzLnR5cGVzW2VdOyJudW0iIT09YSYmInNpZCIhPT1hJiYib2Zmc2V0IiE9PWF8fCh0PXRbMF0pO3RoaXMudmFsdWVzW2VdPXQ7cmV0dXJuITB9c2V0QnlOYW1lKGUsdCl7aWYoIShlIGluIHRoaXMubmFtZVRvS2V5TWFwKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZGljdGlvbmFyeSBuYW1lICIke2V9ImApO3RoaXMudmFsdWVzW3RoaXMubmFtZVRvS2V5TWFwW2VdXT10fWhhc05hbWUoZSl7cmV0dXJuIHRoaXMubmFtZVRvS2V5TWFwW2VdaW4gdGhpcy52YWx1ZXN9Z2V0QnlOYW1lKGUpe2lmKCEoZSBpbiB0aGlzLm5hbWVUb0tleU1hcCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGRpY3Rpb25hcnkgbmFtZSAke2V9ImApO2NvbnN0IHQ9dGhpcy5uYW1lVG9LZXlNYXBbZV07cmV0dXJuIHQgaW4gdGhpcy52YWx1ZXM/dGhpcy52YWx1ZXNbdF06dGhpcy5kZWZhdWx0c1t0XX1yZW1vdmVCeU5hbWUoZSl7ZGVsZXRlIHRoaXMudmFsdWVzW3RoaXMubmFtZVRvS2V5TWFwW2VdXX1zdGF0aWMgY3JlYXRlVGFibGVzKGUpe2NvbnN0IHQ9e2tleVRvTmFtZU1hcDp7fSxuYW1lVG9LZXlNYXA6e30sZGVmYXVsdHM6e30sdHlwZXM6e30sb3Bjb2Rlczp7fSxvcmRlcjpbXX07Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1BcnJheS5pc0FycmF5KGFbMF0pPyhhWzBdWzBdPDw4KSthWzBdWzFdOmFbMF07dC5rZXlUb05hbWVNYXBbZV09YVsxXTt0Lm5hbWVUb0tleU1hcFthWzFdXT1lO3QudHlwZXNbZV09YVsyXTt0LmRlZmF1bHRzW2VdPWFbM107dC5vcGNvZGVzW2VdPUFycmF5LmlzQXJyYXkoYVswXSk/YVswXTpbYVswXV07dC5vcmRlci5wdXNoKGUpfXJldHVybiB0fX1jb25zdCBOcj1bW1sxMiwzMF0sIlJPUyIsWyJzaWQiLCJzaWQiLCJudW0iXSxudWxsXSxbWzEyLDIwXSwiU3ludGhldGljQmFzZSIsIm51bSIsbnVsbF0sWzAsInZlcnNpb24iLCJzaWQiLG51bGxdLFsxLCJOb3RpY2UiLCJzaWQiLG51bGxdLFtbMTIsMF0sIkNvcHlyaWdodCIsInNpZCIsbnVsbF0sWzIsIkZ1bGxOYW1lIiwic2lkIixudWxsXSxbMywiRmFtaWx5TmFtZSIsInNpZCIsbnVsbF0sWzQsIldlaWdodCIsInNpZCIsbnVsbF0sW1sxMiwxXSwiaXNGaXhlZFBpdGNoIiwibnVtIiwwXSxbWzEyLDJdLCJJdGFsaWNBbmdsZSIsIm51bSIsMF0sW1sxMiwzXSwiVW5kZXJsaW5lUG9zaXRpb24iLCJudW0iLC0xMDBdLFtbMTIsNF0sIlVuZGVybGluZVRoaWNrbmVzcyIsIm51bSIsNTBdLFtbMTIsNV0sIlBhaW50VHlwZSIsIm51bSIsMF0sW1sxMiw2XSwiQ2hhcnN0cmluZ1R5cGUiLCJudW0iLDJdLFtbMTIsN10sIkZvbnRNYXRyaXgiLFsibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIiwibnVtIl0sWy4wMDEsMCwwLC4wMDEsMCwwXV0sWzEzLCJVbmlxdWVJRCIsIm51bSIsbnVsbF0sWzUsIkZvbnRCQm94IixbIm51bSIsIm51bSIsIm51bSIsIm51bSJdLFswLDAsMCwwXV0sW1sxMiw4XSwiU3Ryb2tlV2lkdGgiLCJudW0iLDBdLFsxNCwiWFVJRCIsImFycmF5IixudWxsXSxbMTUsImNoYXJzZXQiLCJvZmZzZXQiLDBdLFsxNiwiRW5jb2RpbmciLCJvZmZzZXQiLDBdLFsxNywiQ2hhclN0cmluZ3MiLCJvZmZzZXQiLDBdLFsxOCwiUHJpdmF0ZSIsWyJvZmZzZXQiLCJvZmZzZXQiXSxudWxsXSxbWzEyLDIxXSwiUG9zdFNjcmlwdCIsInNpZCIsbnVsbF0sW1sxMiwyMl0sIkJhc2VGb250TmFtZSIsInNpZCIsbnVsbF0sW1sxMiwyM10sIkJhc2VGb250QmxlbmQiLCJkZWx0YSIsbnVsbF0sW1sxMiwzMV0sIkNJREZvbnRWZXJzaW9uIiwibnVtIiwwXSxbWzEyLDMyXSwiQ0lERm9udFJldmlzaW9uIiwibnVtIiwwXSxbWzEyLDMzXSwiQ0lERm9udFR5cGUiLCJudW0iLDBdLFtbMTIsMzRdLCJDSURDb3VudCIsIm51bSIsODcyMF0sW1sxMiwzNV0sIlVJREJhc2UiLCJudW0iLG51bGxdLFtbMTIsMzddLCJGRFNlbGVjdCIsIm9mZnNldCIsbnVsbF0sW1sxMiwzNl0sIkZEQXJyYXkiLCJvZmZzZXQiLG51bGxdLFtbMTIsMzhdLCJGb250TmFtZSIsInNpZCIsbnVsbF1dO2NsYXNzIENGRlRvcERpY3QgZXh0ZW5kcyBDRkZEaWN0e3N0YXRpYyBnZXQgdGFibGVzKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ0YWJsZXMiLHRoaXMuY3JlYXRlVGFibGVzKE5yKSl9Y29uc3RydWN0b3IoZSl7c3VwZXIoQ0ZGVG9wRGljdC50YWJsZXMsZSk7dGhpcy5wcml2YXRlRGljdD1udWxsfX1jb25zdCBQcj1bWzYsIkJsdW
101VWYWx1ZXMiLCJkZWx0YSIsbnVsbF0sWzcsIk90aGVyQmx1ZXMiLCJkZWx0YSIsbnVsbF0sWzgsIkZhbWlseUJsdWVzIiwiZGVsdGEiLG51bGxdLFs5LCJGYW1pbHlPdGhlckJsdWVzIiwiZGVsdGEiLG51bGxdLFtbMTIsOV0sIkJsdWVTY2FsZSIsIm51bSIsLjAzOTYyNV0sW1sxMiwxMF0sIkJsdWVTaGlmdCIsIm51bSIsN10sW1sxMiwxMV0sIkJsdWVGdXp6IiwibnVtIiwxXSxbMTAsIlN0ZEhXIiwibnVtIixudWxsXSxbMTEsIlN0ZFZXIiwibnVtIixudWxsXSxbWzEyLDEyXSwiU3RlbVNuYXBIIiwiZGVsdGEiLG51bGxdLFtbMTIsMTNdLCJTdGVtU25hcFYiLCJkZWx0YSIsbnVsbF0sW1sxMiwxNF0sIkZvcmNlQm9sZCIsIm51bSIsMF0sW1sxMiwxN10sIkxhbmd1YWdlR3JvdXAiLCJudW0iLDBdLFtbMTIsMThdLCJFeHBhbnNpb25GYWN0b3IiLCJudW0iLC4wNl0sW1sxMiwxOV0sImluaXRpYWxSYW5kb21TZWVkIiwibnVtIiwwXSxbMjAsImRlZmF1bHRXaWR0aFgiLCJudW0iLDBdLFsyMSwibm9taW5hbFdpZHRoWCIsIm51bSIsMF0sWzE5LCJTdWJycyIsIm9mZnNldCIsbnVsbF1dO2NsYXNzIENGRlByaXZhdGVEaWN0IGV4dGVuZHMgQ0ZGRGljdHtzdGF0aWMgZ2V0IHRhYmxlcygpe3JldHVybiBzaGFkb3codGhpcywidGFibGVzIix0aGlzLmNyZWF0ZVRhYmxlcyhQcikpfWNvbnN0cnVjdG9yKGUpe3N1cGVyKENGRlByaXZhdGVEaWN0LnRhYmxlcyxlKTt0aGlzLnN1YnJzSW5kZXg9bnVsbH19Y29uc3QgRXI9e0lTT19BRE9CRTowLEVYUEVSVDoxLEVYUEVSVF9TVUJTRVQ6Mn07Y2xhc3MgQ0ZGQ2hhcnNldHtjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnByZWRlZmluZWQ9ZTt0aGlzLmZvcm1hdD10O3RoaXMuY2hhcnNldD1hO3RoaXMucmF3PXJ9fWNsYXNzIENGRkVuY29kaW5ne2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMucHJlZGVmaW5lZD1lO3RoaXMuZm9ybWF0PXQ7dGhpcy5lbmNvZGluZz1hO3RoaXMucmF3PXJ9fWNsYXNzIENGRkZEU2VsZWN0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5mb3JtYXQ9ZTt0aGlzLmZkU2VsZWN0PXR9Z2V0RkRJbmRleChlKXtyZXR1cm4gZTwwfHxlPj10aGlzLmZkU2VsZWN0Lmxlbmd0aD8tMTp0aGlzLmZkU2VsZWN0W2VdfX1jbGFzcyBDRkZPZmZzZXRUcmFja2Vye2NvbnN0cnVjdG9yKCl7dGhpcy5vZmZzZXRzPU9iamVjdC5jcmVhdGUobnVsbCl9aXNUcmFja2luZyhlKXtyZXR1cm4gZSBpbiB0aGlzLm9mZnNldHN9dHJhY2soZSx0KXtpZihlIGluIHRoaXMub2Zmc2V0cyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEFscmVhZHkgdHJhY2tpbmcgbG9jYXRpb24gb2YgJHtlfWApO3RoaXMub2Zmc2V0c1tlXT10fW9mZnNldChlKXtmb3IoY29uc3QgdCBpbiB0aGlzLm9mZnNldHMpdGhpcy5vZmZzZXRzW3RdKz1lfXNldEVudHJ5TG9jYXRpb24oZSx0LGEpe2lmKCEoZSBpbiB0aGlzLm9mZnNldHMpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgTm90IHRyYWNraW5nIGxvY2F0aW9uIG9mICR7ZX1gKTtjb25zdCByPWEuZGF0YSxpPXRoaXMub2Zmc2V0c1tlXTtmb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTsrK2Upe2NvbnN0IGE9NSplK2ksbj1hKzEscz1hKzIsbz1hKzMsYz1hKzQ7aWYoMjkhPT1yW2FdfHwwIT09cltuXXx8MCE9PXJbc118fDAhPT1yW29dfHwwIT09cltjXSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIndyaXRpbmcgdG8gYW4gb2Zmc2V0IHRoYXQgaXMgbm90IGVtcHR5Iik7Y29uc3QgbD10W2VdO3JbYV09Mjk7cltuXT1sPj4yNCYyNTU7cltzXT1sPj4xNiYyNTU7cltvXT1sPj44JjI1NTtyW2NdPTI1NSZsfX19Y2xhc3MgQ0ZGQ29tcGlsZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5jZmY9ZX1jb21waWxlKCl7Y29uc3QgZT10aGlzLmNmZix0PXtkYXRhOltdLGxlbmd0aDowLGFkZChlKXt0cnl7dGhpcy5kYXRhLnB1c2goLi4uZSl9Y2F0Y2h7dGhpcy5kYXRhPXRoaXMuZGF0YS5jb25jYXQoZSl9dGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aH19LGE9dGhpcy5jb21waWxlSGVhZGVyKGUuaGVhZGVyKTt0LmFkZChhKTtjb25zdCByPXRoaXMuY29tcGlsZU5hbWVJbmRleChlLm5hbWVzKTt0LmFkZChyKTtpZihlLmlzQ0lERm9udCYmZS50b3BEaWN0Lmhhc05hbWUoIkZvbnRNYXRyaXgiKSl7Y29uc3QgdD1lLnRvcERpY3QuZ2V0QnlOYW1lKCJGb250TWF0cml4Iik7ZS50b3BEaWN0LnJlbW92ZUJ5TmFtZSgiRm9udE1hdHJpeCIpO2Zvcihjb25zdCBhIG9mIGUuZmRBcnJheSl7bGV0IGU9dC5zbGljZSgwKTthLmhhc05hbWUoIkZvbnRNYXRyaXgiKSYmKGU9VXRpbC50cmFuc2Zvcm0oZSxhLmdldEJ5TmFtZSgiRm9udE1hdHJpeCIpKSk7YS5zZXRCeU5hbWUoIkZvbnRNYXRyaXgiLGUpfX1jb25zdCBpPWUudG9wRGljdC5nZXRCeU5hbWUoIlhVSUQiKTtpPy5sZW5ndGg+MTYmJmUudG9wRGljdC5yZW1vdmVCeU5hbWUoIlhVSUQiKTtlLnRvcERpY3Quc2V0QnlOYW1lKCJjaGFyc2V0IiwwKTtsZXQgbj10aGlzLmNvbXBpbGVUb3BEaWN0cyhbZS50b3BEaWN0XSx0Lmxlbmd0aCxlLmlzQ0lERm9udCk7dC5hZGQobi5vdXRwdXQpO2NvbnN0IHM9bi50cmFja2Vyc1swXSxvPXRoaXMuY29tcGlsZVN0cmluZ0luZGV4KGUuc3RyaW5ncy5zdHJpbmdzKTt0LmFkZChvKTtjb25zdCBjPXRoaXMuY29tcGlsZUluZGV4KGUuZ2xvYmFsU3VickluZGV4KTt0LmFkZChjKTtpZihlLmVuY29kaW5nJiZlLnRvcERpY3QuaGFzTmFtZSgiRW5jb2RpbmciKSlpZihlLmVuY29kaW5nLnByZWRlZmluZWQpcy5zZXRFbnRyeUxvY2F0aW9uKCJFbmNvZGluZyIsW2UuZW5jb2RpbmcuZm9ybWF0XSx0KTtlbHNle2NvbnN0IGE9dGhpcy5jb21waWxlRW5jb2RpbmcoZS5lbmNvZGluZyk7cy5zZXRFbnRyeUxvY2F0aW9uKCJFbmNvZGluZyIsW3QubGVuZ3RoXSx0KTt0LmFkZChhKX1jb25zdCBsPXRoaXMuY29tcGlsZUNoYXJzZXQoZS5jaGFyc2V0LGUuY2hhclN0cmluZ3MuY291bnQsZS5zdHJpbmdzLGUuaXNDSURGb250KTtzLnNldEVudHJ5TG9jYXRpb24oImNoYXJzZXQiLFt0Lmxlbmd0aF0sdCk7dC5hZGQobCk7Y29uc3QgaD10aGlzLmNvbXBpbGVDaGFyU3RyaW5ncyhlLmNoYXJTdHJpbmdzKTtzLnNldEVudHJ5TG9jYXRpb24oIkNoYXJTdHJpbmdzIixbdC5sZW5ndGhdLHQpO3QuYWRkKGgpO2lmKGUuaXNDSURGb250KXtzLnNldEVudHJ5TG9jYXRpb24oIkZEU2VsZWN0IixbdC
1015sZW5ndGhdLHQpO2NvbnN0IGE9dGhpcy5jb21waWxlRkRTZWxlY3QoZS5mZFNlbGVjdCk7dC5hZGQoYSk7bj10aGlzLmNvbXBpbGVUb3BEaWN0cyhlLmZkQXJyYXksdC5sZW5ndGgsITApO3Muc2V0RW50cnlMb2NhdGlvbigiRkRBcnJheSIsW3QubGVuZ3RoXSx0KTt0LmFkZChuLm91dHB1dCk7Y29uc3Qgcj1uLnRyYWNrZXJzO3RoaXMuY29tcGlsZVByaXZhdGVEaWN0cyhlLmZkQXJyYXkscix0KX10aGlzLmNvbXBpbGVQcml2YXRlRGljdHMoW2UudG9wRGljdF0sW3NdLHQpO3QuYWRkKFswXSk7cmV0dXJuIHQuZGF0YX1lbmNvZGVOdW1iZXIoZSl7cmV0dXJuIE51bWJlci5pc0ludGVnZXIoZSk/dGhpcy5lbmNvZGVJbnRlZ2VyKGUpOnRoaXMuZW5jb2RlRmxvYXQoZSl9c3RhdGljIGdldCBFbmNvZGVGbG9hdFJlZ0V4cCgpe3JldHVybiBzaGFkb3codGhpcywiRW5jb2RlRmxvYXRSZWdFeHAiLC9cLihcZCo/KSg/Ojl7NSwyMH18MHs1LDIwfSlcZHswLDJ9KD86ZSguKyl8JCkvKX1lbmNvZGVGbG9hdChlKXtsZXQgdD1lLnRvU3RyaW5nKCk7Y29uc3QgYT1DRkZDb21waWxlci5FbmNvZGVGbG9hdFJlZ0V4cC5leGVjKHQpO2lmKGEpe2NvbnN0IHI9cGFyc2VGbG9hdCgiMWUiKygoYVsyXT8rYVsyXTowKSthWzFdLmxlbmd0aCkpO3Q9KE1hdGgucm91bmQoZSpyKS9yKS50b1N0cmluZygpfWxldCByLGksbj0iIjtmb3Iocj0wLGk9dC5sZW5ndGg7cjxpOysrcil7Y29uc3QgZT10W3JdO24rPSJlIj09PWU/Ii0iPT09dFsrK3JdPyJjIjoiYiI6Ii4iPT09ZT8iYSI6Ii0iPT09ZT8iZSI6ZX1uKz0xJm4ubGVuZ3RoPyJmIjoiZmYiO2NvbnN0IHM9WzMwXTtmb3Iocj0wLGk9bi5sZW5ndGg7cjxpO3IrPTIpcy5wdXNoKHBhcnNlSW50KG4uc3Vic3RyaW5nKHIscisyKSwxNikpO3JldHVybiBzfWVuY29kZUludGVnZXIoZSl7bGV0IHQ7dD1lPj0tMTA3JiZlPD0xMDc/W2UrMTM5XTplPj0xMDgmJmU8PTExMzE/WzI0NysoKGUtPTEwOCk+PjgpLDI1NSZlXTplPj0tMTEzMSYmZTw9LTEwOD9bMjUxKygoZT0tZS0xMDgpPj44KSwyNTUmZV06ZT49LTMyNzY4JiZlPD0zMjc2Nz9bMjgsZT4+OCYyNTUsMjU1JmVdOlsyOSxlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlXTtyZXR1cm4gdH1jb21waWxlSGVhZGVyKGUpe3JldHVybltlLm1ham9yLGUubWlub3IsNCxlLm9mZlNpemVdfWNvbXBpbGVOYW1lSW5kZXgoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3QgZT1NYXRoLm1pbihhLmxlbmd0aCwxMjcpO2xldCByPW5ldyBBcnJheShlKTtmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgZT1hW3RdOyhlPCIhInx8ZT4ifiJ8fCJbIj09PWV8fCJdIj09PWV8fCIoIj09PWV8fCIpIj09PWV8fCJ7Ij09PWV8fCJ9Ij09PWV8fCI8Ij09PWV8fCI+Ij09PWV8fCIvIj09PWV8fCIlIj09PWUpJiYoZT0iXyIpO3JbdF09ZX1yPXIuam9pbigiIik7IiI9PT1yJiYocj0iQmFkX0ZvbnRfTmFtZSIpO3QuYWRkKHN0cmluZ1RvQnl0ZXMocikpfXJldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlVG9wRGljdHMoZSx0LGEpe2NvbnN0IHI9W107bGV0IGk9bmV3IENGRkluZGV4O2Zvcihjb25zdCBuIG9mIGUpe2lmKGEpe24ucmVtb3ZlQnlOYW1lKCJDSURGb250VmVyc2lvbiIpO24ucmVtb3ZlQnlOYW1lKCJDSURGb250UmV2aXNpb24iKTtuLnJlbW92ZUJ5TmFtZSgiQ0lERm9udFR5cGUiKTtuLnJlbW92ZUJ5TmFtZSgiQ0lEQ291bnQiKTtuLnJlbW92ZUJ5TmFtZSgiVUlEQmFzZSIpfWNvbnN0IGU9bmV3IENGRk9mZnNldFRyYWNrZXIscz10aGlzLmNvbXBpbGVEaWN0KG4sZSk7ci5wdXNoKGUpO2kuYWRkKHMpO2Uub2Zmc2V0KHQpfWk9dGhpcy5jb21waWxlSW5kZXgoaSxyKTtyZXR1cm57dHJhY2tlcnM6cixvdXRwdXQ6aX19Y29tcGlsZVByaXZhdGVEaWN0cyhlLHQsYSl7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7KytyKXtjb25zdCBpPWVbcl0sbj1pLnByaXZhdGVEaWN0O2lmKCFufHwhaS5oYXNOYW1lKCJQcml2YXRlIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJUaGVyZSBtdXN0IGJlIGEgcHJpdmF0ZSBkaWN0aW9uYXJ5LiIpO2NvbnN0IHM9bmV3IENGRk9mZnNldFRyYWNrZXIsbz10aGlzLmNvbXBpbGVEaWN0KG4scyk7bGV0IGM9YS5sZW5ndGg7cy5vZmZzZXQoYyk7by5sZW5ndGh8fChjPTApO3Rbcl0uc2V0RW50cnlMb2NhdGlvbigiUHJpdmF0ZSIsW28ubGVuZ3RoLGNdLGEpO2EuYWRkKG8pO2lmKG4uc3VicnNJbmRleCYmbi5oYXNOYW1lKCJTdWJycyIpKXtjb25zdCBlPXRoaXMuY29tcGlsZUluZGV4KG4uc3VicnNJbmRleCk7cy5zZXRFbnRyeUxvY2F0aW9uKCJTdWJycyIsW28ubGVuZ3RoXSxhKTthLmFkZChlKX19fWNvbXBpbGVEaWN0KGUsdCl7Y29uc3QgYT1bXTtmb3IoY29uc3QgciBvZiBlLm9yZGVyKXtpZighKHIgaW4gZS52YWx1ZXMpKWNvbnRpbnVlO2xldCBpPWUudmFsdWVzW3JdLG49ZS50eXBlc1tyXTtBcnJheS5pc0FycmF5KG4pfHwobj1bbl0pO0FycmF5LmlzQXJyYXkoaSl8fChpPVtpXSk7aWYoMCE9PWkubGVuZ3RoKXtmb3IobGV0IHM9MCxvPW4ubGVuZ3RoO3M8bzsrK3Mpe2NvbnN0IG89bltzXSxjPWlbc107c3dpdGNoKG8pe2Nhc2UibnVtIjpjYXNlInNpZCI6YS5wdXNoKC4uLnRoaXMuZW5jb2RlTnVtYmVyKGMpKTticmVhaztjYXNlIm9mZnNldCI6Y29uc3Qgbj1lLmtleVRvTmFtZU1hcFtyXTt0LmlzVHJhY2tpbmcobil8fHQudHJhY2sobixhLmxlbmd0aCk7YS5wdXNoKDI5LDAsMCwwLDApO2JyZWFrO2Nhc2UiYXJyYXkiOmNhc2UiZGVsdGEiOmEucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihjKSk7Zm9yKGxldCBlPTEsdD1pLmxlbmd0aDtlPHQ7KytlKWEucHVzaCguLi50aGlzLmVuY29kZU51bWJlcihpW2VdKSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gZGF0YSB0eXBlIG9mICR7b31gKX19YS5wdXNoKC4uLmUub3Bjb2Rlc1tyXSl9fXJldHVybiBhfWNvbXBpbGVTdHJpbmdJbmRleChlKXtjb25zdCB0PW5ldyBDRkZJbmRleDtmb3IoY29uc3QgYSBvZiBlKXQuYWRkKHN0cmluZ1RvQnl0ZXMoYSkpO3JldHVybiB0aGlzLmNvbXBpbGVJbmRleCh0KX1jb21waWxlQ2hhclN0cmluZ3MoZSl7Y29uc3QgdD1uZXcgQ0ZGSW5kZXg7Zm9yKGxldCBhPTA7YTxlLmNvdW50O2ErKyl7Y29uc3Qgcj1lLmdldChhKTswIT09ci5sZW5ndGg/dC5hZGQocik6dC5hZGQobmV3IFVpbnQ4QXJyYXkoWzEzOSwxNF0pKX1yZXR1cm4gdGhpcy5jb21waWxlSW5kZXgodCl9Y29tcGlsZUNoYXJzZXQoZSx0LGEscil7bGV0IGk7Y29uc3Qgbj10LTE7aWYocil7Y29uc3QgZT1uLTE7aT1uZXcgVWludDhBcnJheShbMiwwLDEsZT4+OCYyNTUsMjU1JmVdKX1lbHNle2k9bmV3IFVpbnQ4QXJyYXkoMSsyKm4pO2lbMF09MDtsZXQgdD0wO2NvbnN0IHI9ZS5jaGFyc2V0Lmxlbmd0aDtsZXQgcz0hMTtmb3IobGV0IG49MTtuPGkubGVuZ3RoO24rPTIpe2xldCBvPTA7aWYodDxyKXtjb25zdCByPWUuY2hhcnNldFt0KytdO289YS5nZXRTSUQocik7aWYoLTE9PT1vKXtvPTA7aWYoIXMpe3M9ITA7d2FybihgQ291bGRuJ3QgZmluZCAke3J9IGluIENGRiBzdHJpbmdzYCl9fX1pW25dPW8+PjgmMjU1O2lbbisxXT0yNTUmb319cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoaSl9Y29tcGlsZUVuY29kaW5nKGUpe3JldHVybiB0aGlzLmNvbXBpbGVUeXBlZEFycmF5KGUucmF3KX1jb21waWxlRkRTZWxlY3QoZSl7Y29uc3QgdD1lLmZvcm1hdDtsZXQgYSxyO3N3aXRjaC
101h0KXtjYXNlIDA6YT1uZXcgVWludDhBcnJheSgxK2UuZmRTZWxlY3QubGVuZ3RoKTthWzBdPXQ7Zm9yKHI9MDtyPGUuZmRTZWxlY3QubGVuZ3RoO3IrKylhW3IrMV09ZS5mZFNlbGVjdFtyXTticmVhaztjYXNlIDM6Y29uc3QgaT0wO2xldCBuPWUuZmRTZWxlY3RbMF07Y29uc3Qgcz1bdCwwLDAsaT4+OCYyNTUsMjU1Jmksbl07Zm9yKHI9MTtyPGUuZmRTZWxlY3QubGVuZ3RoO3IrKyl7Y29uc3QgdD1lLmZkU2VsZWN0W3JdO2lmKHQhPT1uKXtzLnB1c2gocj4+OCYyNTUsMjU1JnIsdCk7bj10fX1jb25zdCBvPShzLmxlbmd0aC0zKS8zO3NbMV09bz4+OCYyNTU7c1syXT0yNTUmbztzLnB1c2gocj4+OCYyNTUsMjU1JnIpO2E9bmV3IFVpbnQ4QXJyYXkocyl9cmV0dXJuIHRoaXMuY29tcGlsZVR5cGVkQXJyYXkoYSl9Y29tcGlsZVR5cGVkQXJyYXkoZSl7cmV0dXJuIEFycmF5LmZyb20oZSl9Y29tcGlsZUluZGV4KGUsdD1bXSl7Y29uc3QgYT1lLm9iamVjdHMscj1hLmxlbmd0aDtpZigwPT09cilyZXR1cm5bMCwwXTtjb25zdCBpPVtyPj44JjI1NSwyNTUmcl07bGV0IG4scyxvPTE7Zm9yKG49MDtuPHI7KytuKW8rPWFbbl0ubGVuZ3RoO3M9bzwyNTY/MTpvPDY1NTM2PzI6bzwxNjc3NzIxNj8zOjQ7aS5wdXNoKHMpO2xldCBjPTE7Zm9yKG49MDtuPHIrMTtuKyspezE9PT1zP2kucHVzaCgyNTUmYyk6Mj09PXM/aS5wdXNoKGM+PjgmMjU1LDI1NSZjKTozPT09cz9pLnB1c2goYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjKTppLnB1c2goYz4+PjI0JjI1NSxjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMpO2Fbbl0mJihjKz1hW25dLmxlbmd0aCl9Zm9yKG49MDtuPHI7bisrKXt0W25dJiZ0W25dLm9mZnNldChpLmxlbmd0aCk7aS5wdXNoKC4uLmFbbl0pfXJldHVybiBpfX1jb25zdCBMcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZVsiVGltZXMtUm9tYW4iXT0iVGltZXMtUm9tYW4iO2UuSGVsdmV0aWNhPSJIZWx2ZXRpY2EiO2UuQ291cmllcj0iQ291cmllciI7ZS5TeW1ib2w9IlN5bWJvbCI7ZVsiVGltZXMtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQ291cmllci1Cb2xkIl09IkNvdXJpZXItQm9sZCI7ZS5aYXBmRGluZ2JhdHM9IlphcGZEaW5nYmF0cyI7ZVsiVGltZXMtSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlLkFyaWFsTmFycm93PSJIZWx2ZXRpY2EiO2VbIkFyaWFsTmFycm93LUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbE5hcnJvdy1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWxCbGFjaz0iSGVsdmV0aWNhIjtlWyJBcmlhbEJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsQmxhY2stQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsQmxhY2stSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJBcmlhbC1CbGFjayJdPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJsYWNrLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUJsYWNrLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJBcmlhbC1CbGFjay1JdGFsaWMiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2UuQXJpYWw9IkhlbHZldGljYSI7ZVsiQXJpYWwtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbE1UPSJIZWx2ZXRpY2EiO2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkFyaWFsLUJvbGRNVCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiQXJpYWwtSXRhbGljTVQiXT0iSGVsdmV0aWNhLU9ibGlxdWUiO2VbIkFyaWFsLUJvbGRJdGFsaWNNVC1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWwtQm9sZE1ULUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkFyaWFsLUl0YWxpY01ULUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5BcmlhbFVuaWNvZGVNUz0iSGVsdmV0aWNhIjtlWyJBcmlhbFVuaWNvZGVNUy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJBcmlhbFVuaWNvZGVNUy1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiQXJpYWxVbmljb2RlTVMtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJDb3VyaWVyLUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllci1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlLkNvdXJpZXJOZXc9IkNvdXJpZXIiO2VbIkNvdXJpZXJOZXctQm9sZCJdPSJDb3VyaWVyLUJvbGQiO2VbIkNvdXJpZXJOZXctQm9sZEl0YWxpYyJdPSJDb3VyaWVyLUJvbGRPYmxpcXVlIjtlWyJDb3VyaWVyTmV3LUl0YWxpYyJdPSJDb3VyaWVyLU9ibGlxdWUiO2VbIkNvdXJpZXJOZXdQUy1Cb2xkSXRhbGljTVQiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiQ291cmllck5ld1BTLUJvbGRNVCJdPSJDb3VyaWVyLUJvbGQiO2VbIkNvdXJpZXJOZXdQUy1JdGFsaWNNVCJdPSJDb3VyaWVyLU9ibGlxdWUiO2UuQ291cmllck5ld1BTTVQ9IkNvdXJpZXIiO2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09IkhlbHZldGljYS1Cb2xkT2JsaXF1ZSI7ZVsiSGVsdmV0aWNhLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZVsiSGVsdmV0aWNhTFRTdGQtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiU3ltYm9sLUJvbGQiXT0iU3ltYm9sIjtlWyJTeW1ib2wtQm9sZEl0YWxpYyJdPSJTeW1ib2wiO2VbIlN5bWJvbC1JdGFsaWMiXT0iU3ltYm9sIjtlLlRpbWVzTmV3Um9tYW49IlRpbWVzLVJvbWFuIjtlWyJUaW1lc05ld1JvbWFuLUJvbGQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hbi1Cb2xkSXRhbGljIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW4tSXRhbGljIl09IlRpbWVzLUl0YWxpYyI7ZS5UaW1lc05ld1JvbWFuUFM9IlRpbWVzLVJvbWFuIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZCJdPSJUaW1lcy1Cb2xkIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZEl0YWxpYyJdPSJUaW1lcy1Cb2xkSXRhbGljIjtlWyJUaW1lc05ld1JvbWFuUFMtQm9sZEl0YWxpY01UIl09IlRpbWVzLUJvbGRJdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QUy1Cb2xkTVQiXT0iVGltZXMtQm9sZCI7ZVsiVGltZXNOZXdSb21hblBTLUl0YWxpYyJdPSJUaW1lcy1JdGFsaWMiO2VbIlRpbWVzTmV3Um9tYW5QUy1JdGFsaWNNVCJdPSJUaW1lcy1JdGFsaWMiO2UuVGltZXNOZXdSb21hblBTTVQ9IlR
101pbWVzLVJvbWFuIjtlWyJUaW1lc05ld1JvbWFuUFNNVC1Cb2xkIl09IlRpbWVzLUJvbGQiO2VbIlRpbWVzTmV3Um9tYW5QU01ULUJvbGRJdGFsaWMiXT0iVGltZXMtQm9sZEl0YWxpYyI7ZVsiVGltZXNOZXdSb21hblBTTVQtSXRhbGljIl09IlRpbWVzLUl0YWxpYyJ9KSxfcj1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5Db3VyaWVyPSJGb3hpdEZpeGVkLnBmYiI7ZVsiQ291cmllci1Cb2xkIl09IkZveGl0Rml4ZWRCb2xkLnBmYiI7ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPSJGb3hpdEZpeGVkQm9sZEl0YWxpYy5wZmIiO2VbIkNvdXJpZXItT2JsaXF1ZSJdPSJGb3hpdEZpeGVkSXRhbGljLnBmYiI7ZS5IZWx2ZXRpY2E9IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjtlWyJIZWx2ZXRpY2EtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMudHRmIjtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPSJMaWJlcmF0aW9uU2Fucy1JdGFsaWMudHRmIjtlWyJUaW1lcy1Sb21hbiJdPSJGb3hpdFNlcmlmLnBmYiI7ZVsiVGltZXMtQm9sZCJdPSJGb3hpdFNlcmlmQm9sZC5wZmIiO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT0iRm94aXRTZXJpZkJvbGRJdGFsaWMucGZiIjtlWyJUaW1lcy1JdGFsaWMiXT0iRm94aXRTZXJpZkl0YWxpYy5wZmIiO2UuU3ltYm9sPSJGb3hpdFN5bWJvbC5wZmIiO2UuWmFwZkRpbmdiYXRzPSJGb3hpdERpbmdiYXRzLnBmYiI7ZVsiTGliZXJhdGlvblNhbnMtUmVndWxhciJdPSJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtQm9sZCJdPSJMaWJlcmF0aW9uU2Fucy1Cb2xkLnR0ZiI7ZVsiTGliZXJhdGlvblNhbnMtSXRhbGljIl09IkxpYmVyYXRpb25TYW5zLUl0YWxpYy50dGYiO2VbIkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiXT0iTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYy50dGYifSksVXI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuQ2FsaWJyaT0iSGVsdmV0aWNhIjtlWyJDYWxpYnJpLUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkNhbGlicmktSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkNlbnR1cnlHb3RoaWM9IkhlbHZldGljYSI7ZVsiQ2VudHVyeUdvdGhpYy1Cb2xkIl09IkhlbHZldGljYS1Cb2xkIjtlWyJDZW50dXJ5R290aGljLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJDZW50dXJ5R290aGljLUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5Db21pY1NhbnNNUz0iQ29taWMgU2FucyBNUyI7ZVsiQ29taWNTYW5zTVMtQm9sZCJdPSJDb21pYyBTYW5zIE1TLUJvbGQiO2VbIkNvbWljU2Fuc01TLUJvbGRJdGFsaWMiXT0iQ29taWMgU2FucyBNUy1Cb2xkSXRhbGljIjtlWyJDb21pY1NhbnNNUy1JdGFsaWMiXT0iQ29taWMgU2FucyBNUy1JdGFsaWMiO2UuR2lsbFNhbnNNVD0iSGVsdmV0aWNhIjtlWyJHaWxsU2Fuc01ULUJvbGQiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIkdpbGxTYW5zTVQtQm9sZEl0YWxpYyJdPSJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiO2VbIkdpbGxTYW5zTVQtSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlLkltcGFjdD0iSGVsdmV0aWNhIjtlWyJJdGNTeW1ib2wtQm9sZCJdPSJIZWx2ZXRpY2EtQm9sZCI7ZVsiSXRjU3ltYm9sLUJvbGRJdGFsaWMiXT0iSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjtlWyJJdGNTeW1ib2wtQm9vayJdPSJIZWx2ZXRpY2EiO2VbIkl0Y1N5bWJvbC1Cb29rSXRhbGljIl09IkhlbHZldGljYS1PYmxpcXVlIjtlWyJJdGNTeW1ib2wtTWVkaXVtIl09IkhlbHZldGljYSI7ZVsiSXRjU3ltYm9sLU1lZGl1bUl0YWxpYyJdPSJIZWx2ZXRpY2EtT2JsaXF1ZSI7ZS5MdWNpZGFDb25zb2xlPSJDb3VyaWVyIjtlWyJMdWNpZGFDb25zb2xlLUJvbGQiXT0iQ291cmllci1Cb2xkIjtlWyJMdWNpZGFDb25zb2xlLUJvbGRJdGFsaWMiXT0iQ291cmllci1Cb2xkT2JsaXF1ZSI7ZVsiTHVjaWRhQ29uc29sZS1JdGFsaWMiXT0iQ291cmllci1PYmxpcXVlIjtlWyJMdWNpZGFTYW5zLURlbWkiXT0iSGVsdmV0aWNhLUJvbGQiO2VbIk1TLUdvdGhpYyJdPSJNUyBHb3RoaWMiO2VbIk1TLUdvdGhpYy1Cb2xkIl09Ik1TIEdvdGhpYy1Cb2xkIjtlWyJNUy1Hb3RoaWMtQm9sZEl0YWxpYyJdPSJNUyBHb3RoaWMtQm9sZEl0YWxpYyI7ZVsiTVMtR290aGljLUl0YWxpYyJdPSJNUyBHb3RoaWMtSXRhbGljIjtlWyJNUy1NaW5jaG8iXT0iTVMgTWluY2hvIjtlWyJNUy1NaW5jaG8tQm9sZCJdPSJNUyBNaW5jaG8tQm9sZCI7ZVsiTVMtTWluY2hvLUJvbGRJdGFsaWMiXT0iTVMgTWluY2hvLUJvbGRJdGFsaWMiO2VbIk1TLU1pbmNoby1JdGFsaWMiXT0iTVMgTWluY2hvLUl0YWxpYyI7ZVsiTVMtUEdvdGhpYyJdPSJNUyBQR290aGljIjtlWyJNUy1QR290aGljLUJvbGQiXT0iTVMgUEdvdGhpYy1Cb2xkIjtlWyJNUy1QR290aGljLUJvbGRJdGFsaWMiXT0iTVMgUEdvdGhpYy1Cb2xkSXRhbGljIjtlWyJNUy1QR290aGljLUl0YWxpYyJdPSJNUyBQR290aGljLUl0YWxpYyI7ZVsiTVMtUE1pbmNobyJdPSJNUyBQTWluY2hvIjtlWyJNUy1QTWluY2hvLUJvbGQiXT0iTVMgUE1pbmNoby1Cb2xkIjtlWyJNUy1QTWluY2hvLUJvbGRJdGFsaWMiXT0iTVMgUE1pbmNoby1Cb2xkSXRhbGljIjtlWyJNUy1QTWluY2hvLUl0YWxpYyJdPSJNUyBQTWluY2hvLUl0YWxpYyI7ZS5OdXB0aWFsU2NyaXB0PSJUaW1lcy1JdGFsaWMiO2UuU2Vnb2VVSVN5bWJvbD0iSGVsdmV0aWNhIn0pLGpyPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWyJBZG9iZSBKZW5zb24iXT0hMDtlWyJBZG9iZSBUZXh0Il09ITA7ZS5BbGJlcnR1cz0hMDtlLkFsZHVzPSEwO2UuQWxleGFuZHJpYT0hMDtlLkFsZ2VyaWFuPSEwO2VbIkFtZXJpY2FuIFR5cGV3cml0ZXIiXT0hMDtlLkFudGlxdWE9ITA7ZS5BcGV4PSEwO2UuQXJubz0hMDtlLkFzdGVyPSEwO2UuQXVyb3JhPSEwO2UuQmFza2VydmlsbGU9ITA7ZS5CZWxsPSEwO2UuQmVtYm89ITA7ZVsiQmVtYm8gU2Nob29sYm9vayJdPSEwO2UuQmVuZ3VpYXQ9ITA7ZVsiQmVya2VsZXkgT2xkIFN0eWxlIl09ITA7ZVsiQmVybmhhcmQgTW9kZXJuIl09ITA7ZVsiQmVydGhvbGQgQ2l0eSJdPSEwO2UuQm9kb25pPSEwO2VbIkJhdWVyIEJvZG9uaSJdPSEwO2VbIkJvb2sgQW50aXF1YSJdPSEwO2UuQm9va21hbj0hMDtlWyJCb3JkZWF1eCBSb21hbiJdPSEwO2VbIkNhbGlmb3JuaWFuIEZCIl09ITA7ZS5DYWxpc3RvPSEwO2UuQ2FsdmVydD0hMDtlLkNhcGl0YWxzPSEwO2UuQ2FtYnJpYT0hMDtlLkNhcnRpZXI9ITA7ZS5DYXNsb249ITA7ZS5DYXR1bGw9ITA7ZS5DZW50YXVyPSEwO2VbIkNlbnR1cnkgT2xkIFN0eWxlIl09ITA7ZVsiQ2VudHVyeSBTY2hvb2xib29rIl09ITA7ZS5DaGFwYXJyYWw9ITA7ZVsiQ2hhcmlzIFNJTCJdPSEwO2UuQ2hlbHRlbmhhbT0hMDtlWyJDaG9sbGEgU2xhYiJdPSEwO2UuQ2xhcmVuZG9uPSEwO2UuQ2xlYXJmYWNlPSEwO2UuQ29jaGluPSEwO2UuQ29sb25uYT0hMDtlWyJDb21wdXRlciBNb2Rlcm4iXT0hMDtlWyJDb25jcmV0ZSBSb21hbiJdPSEwO2UuQ29uc3RhbnRpYT0hMDtlWyJDb29wZXIgQmxhY2siXT0hMDtlLkNvcm9uYT0hMDtlLkVjb3R5cGU9ITA7ZS5FZ3lwdGllbm5lPSEwO2UuRWxlcGhhbnQ9ITA7ZS5FeGNlbHNpb3I9ITA7ZS5GYWlyZmllbGQ9ITA7ZVsiRkYgU2NhbGEiXT0hMDtlLkZvbGthcmQ9ITA7ZS5Gb290bGlnaHQ9ITA7ZS5GcmVlU2VyaWY9ITA7ZVsiRnJpeiBRdWFkcmF0YSJdPSEwO2UuR2FyYW1vbmQ9ITA7ZS5HZW50aXVtPSEwO2UuR2VvcmdpYT0hMDtlLkdsb3VjZXN0ZXI9ITA7ZVsiR291ZHkgT2xkIFN0eWxlIl09ITA7ZVsiR291ZHkgU2Nob29sYm9vayJdPSEwO2VbIkdvdWR5IFBybyBGb250Il09ITA7ZS5HcmFuam9uPSEwO2VbIkd1YXJkaWFuIEVneXB0aWFuIl09ITA7ZS5IZWF0aGVyPSEwO2UuSGVyY3VsZXM9ITA7ZVsiSGlnaCBUb3dlciBUZXh0Il09ITA7ZS5IaXJvc2hpZ2U9ITA7ZVsiSG9lZmxlciBUZXh0Il09ITA7ZVsiSHVtYW5hIFNlcmlmIl09ITA7ZS5JbXByaW50PSEwO2VbIklvbmljIE5vLiA1Il09ITA7ZS5KYW5zb249ITA7ZS5Kb2FubmE9ITA7ZS5Lb3Jpbm5hPSEwO2UuTGV4aWNvbj0hMDtlLkxpYmVyYXRpb25TZXJpZj0hMDtlWyJMaWJlcmF0aW9uIFNlcmlmIl09ITA7ZVsiTGludXggTGliZXJ0aW5lIl09ITA7ZS5M
101aXRlcmF0dXJuYXlhPSEwO2UuTHVjaWRhPSEwO2VbIkx1Y2lkYSBCcmlnaHQiXT0hMDtlLk1lbGlvcj0hMDtlLk1lbXBoaXM9ITA7ZS5NaWxsZXI9ITA7ZS5NaW5pb249ITA7ZS5Nb2Rlcm49ITA7ZVsiTW9uYSBMaXNhIl09ITA7ZVsiTXJzIEVhdmVzIl09ITA7ZVsiTVMgU2VyaWYiXT0hMDtlWyJNdXNlbyBTbGFiIl09ITA7ZVsiTmV3IFlvcmsiXT0hMDtlWyJOaW1idXMgUm9tYW4iXT0hMDtlWyJOUFMgUmF3bGluc29uIFJvYWR3YXkiXT0hMDtlLk51cHRpYWxTY3JpcHQ9ITA7ZS5QYWxhdGlubz0hMDtlLlBlcnBldHVhPSEwO2UuUGxhbnRpbj0hMDtlWyJQbGFudGluIFNjaG9vbGJvb2siXT0hMDtlLlBsYXliaWxsPSEwO2VbIlBvb3IgUmljaGFyZCJdPSEwO2VbIlJhd2xpbnNvbiBSb2Fkd2F5Il09ITA7ZS5SZW5hdWx0PSEwO2UuUmVxdWllbT0hMDtlLlJvY2t3ZWxsPSEwO2UuUm9tYW49ITA7ZVsiUm90aXMgU2VyaWYiXT0hMDtlLlNhYm9uPSEwO2UuU2NhbGE9ITA7ZS5TZWFndWxsPSEwO2UuU2lzdGluYT0hMDtlLlNvdXZlbmlyPSEwO2UuU1RJWD0hMDtlWyJTdG9uZSBJbmZvcm1hbCJdPSEwO2VbIlN0b25lIFNlcmlmIl09ITA7ZS5TeWxmYWVuPSEwO2UuVGltZXM9ITA7ZS5UcmFqYW49ITA7ZVsiVHJpbml0w6kiXT0hMDtlWyJUcnVtcCBNZWRpYWV2YWwiXT0hMDtlLlV0b3BpYT0hMDtlWyJWYWxlIFR5cGUiXT0hMDtlWyJCaXRzdHJlYW0gVmVyYSJdPSEwO2VbIlZlcmEgU2VyaWYiXT0hMDtlLlZlcnNhaWxsZXM9ITA7ZS5XYW50ZWQ9ITA7ZS5XZWlzcz0hMDtlWyJXaWRlIExhdGluIl09ITA7ZS5XaW5kc29yPSEwO2UuWElUUz0hMH0pLFhyPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkRpbmdiYXRzPSEwO2UuU3ltYm9sPSEwO2UuWmFwZkRpbmdiYXRzPSEwO2UuV2luZ2RpbmdzPSEwO2VbIldpbmdkaW5ncy1Cb2xkIl09ITA7ZVsiV2luZ2RpbmdzLVJlZ3VsYXIiXT0hMH0pLHFyPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlWzJdPTEwO2VbM109MzI7ZVs0XT0zMztlWzVdPTM0O2VbNl09MzU7ZVs3XT0zNjtlWzhdPTM3O2VbOV09Mzg7ZVsxMF09Mzk7ZVsxMV09NDA7ZVsxMl09NDE7ZVsxM109NDI7ZVsxNF09NDM7ZVsxNV09NDQ7ZVsxNl09NDU7ZVsxN109NDY7ZVsxOF09NDc7ZVsxOV09NDg7ZVsyMF09NDk7ZVsyMV09NTA7ZVsyMl09NTE7ZVsyM109NTI7ZVsyNF09NTM7ZVsyNV09NTQ7ZVsyNl09NTU7ZVsyN109NTY7ZVsyOF09NTc7ZVsyOV09NTg7ZVszMF09ODk0O2VbMzFdPTYwO2VbMzJdPTYxO2VbMzNdPTYyO2VbMzRdPTYzO2VbMzVdPTY0O2VbMzZdPTY1O2VbMzddPTY2O2VbMzhdPTY3O2VbMzldPTY4O2VbNDBdPTY5O2VbNDFdPTcwO2VbNDJdPTcxO2VbNDNdPTcyO2VbNDRdPTczO2VbNDVdPTc0O2VbNDZdPTc1O2VbNDddPTc2O2VbNDhdPTc3O2VbNDldPTc4O2VbNTBdPTc5O2VbNTFdPTgwO2VbNTJdPTgxO2VbNTNdPTgyO2VbNTRdPTgzO2VbNTVdPTg0O2VbNTZdPTg1O2VbNTddPTg2O2VbNThdPTg3O2VbNTldPTg4O2VbNjBdPTg5O2VbNjFdPTkwO2VbNjJdPTkxO2VbNjNdPTkyO2VbNjRdPTkzO2VbNjVdPTk0O2VbNjZdPTk1O2VbNjddPTk2O2VbNjhdPTk3O2VbNjldPTk4O2VbNzBdPTk5O2VbNzFdPTEwMDtlWzcyXT0xMDE7ZVs3M109MTAyO2VbNzRdPTEwMztlWzc1XT0xMDQ7ZVs3Nl09MTA1O2VbNzddPTEwNjtlWzc4XT0xMDc7ZVs3OV09MTA4O2VbODBdPTEwOTtlWzgxXT0xMTA7ZVs4Ml09MTExO2VbODNdPTExMjtlWzg0XT0xMTM7ZVs4NV09MTE0O2VbODZdPTExNTtlWzg3XT0xMTY7ZVs4OF09MTE3O2VbODldPTExODtlWzkwXT0xMTk7ZVs5MV09MTIwO2VbOTJdPTEyMTtlWzkzXT0xMjI7ZVs5NF09MTIzO2VbOTVdPTEyNDtlWzk2XT0xMjU7ZVs5N109MTI2O2VbOThdPTE5NjtlWzk5XT0xOTc7ZVsxMDBdPTE5OTtlWzEwMV09MjAxO2VbMTAyXT0yMDk7ZVsxMDNdPTIxNDtlWzEwNF09MjIwO2VbMTA1XT0yMjU7ZVsxMDZdPTIyNDtlWzEwN109MjI2O2VbMTA4XT0yMjg7ZVsxMDldPTIyNztlWzExMF09MjI5O2VbMTExXT0yMzE7ZVsxMTJdPTIzMztlWzExM109MjMyO2VbMTE0XT0yMzQ7ZVsxMTVdPTIzNTtlWzExNl09MjM3O2VbMTE3XT0yMzY7ZVsxMThdPTIzODtlWzExOV09MjM5O2VbMTIwXT0yNDE7ZVsxMjFdPTI0MztlWzEyMl09MjQyO2VbMTIzXT0yNDQ7ZVsxMjRdPTI0NjtlWzEyNV09MjQ1O2VbMTI2XT0yNTA7ZVsxMjddPTI0OTtlWzEyOF09MjUxO2VbMTI5XT0yNTI7ZVsxMzBdPTgyMjQ7ZVsxMzFdPTE3NjtlWzEzMl09MTYyO2VbMTMzXT0xNjM7ZVsxMzRdPTE2NztlWzEzNV09ODIyNjtlWzEzNl09MTgyO2VbMTM3XT0yMjM7ZVsxMzhdPTE3NDtlWzEzOV09MTY5O2VbMTQwXT04NDgyO2VbMTQxXT0xODA7ZVsxNDJdPTE2ODtlWzE0M109ODgwMDtlWzE0NF09MTk4O2VbMTQ1XT0yMTY7ZVsxNDZdPTg3MzQ7ZVsxNDddPTE3NztlWz
101E0OF09ODgwNDtlWzE0OV09ODgwNTtlWzE1MF09MTY1O2VbMTUxXT0xODE7ZVsxNTJdPTg3MDY7ZVsxNTNdPTg3MjE7ZVsxNTRdPTg3MTk7ZVsxNTZdPTg3NDc7ZVsxNTddPTE3MDtlWzE1OF09MTg2O2VbMTU5XT04NDg2O2VbMTYwXT0yMzA7ZVsxNjFdPTI0ODtlWzE2Ml09MTkxO2VbMTYzXT0xNjE7ZVsxNjRdPTE3MjtlWzE2NV09ODczMDtlWzE2Nl09NDAyO2VbMTY3XT04Nzc2O2VbMTY4XT04NzEwO2VbMTY5XT0xNzE7ZVsxNzBdPTE4NztlWzE3MV09ODIzMDtlWzE3OV09ODIyMDtlWzE4MF09ODIyMTtlWzE4MV09ODIxNjtlWzE4Ml09ODIxNztlWzIwMF09MTkzO2VbMjAzXT0yMDU7ZVsyMDddPTIxMTtlWzIxMF09MjE4O2VbMjIzXT03MTE7ZVsyMjRdPTMyMTtlWzIyNV09MzIyO2VbMjI2XT0zNTI7ZVsyMjddPTM1MztlWzIyOF09MzgxO2VbMjI5XT0zODI7ZVsyMzNdPTIyMTtlWzIzNF09MjUzO2VbMjUyXT0yNjM7ZVsyNTNdPTI2ODtlWzI1NF09MjY5O2VbMjU4XT0yNTg7ZVsyNjBdPTI2MDtlWzI2MV09MjYxO2VbMjY1XT0yODA7ZVsyNjZdPTI4MTtlWzI2N109MjgyO2VbMjY4XT0yODM7ZVsyNjldPTMxMztlWzI3NV09MzIzO2VbMjc2XT0zMjQ7ZVsyNzhdPTMyODtlWzI4M109MzQ0O2VbMjg0XT0zNDU7ZVsyODVdPTM0NjtlWzI4Nl09MzQ3O2VbMjkyXT0zNjc7ZVsyOTVdPTM3NztlWzI5Nl09Mzc4O2VbMjk4XT0zODA7ZVszMDVdPTk2MztlWzMwNl09OTY0O2VbMzA3XT05NjY7ZVszMDhdPTgyMTU7ZVszMDldPTgyNTI7ZVszMTBdPTgzMTk7ZVszMTFdPTgzNTk7ZVszMTJdPTg1OTI7ZVszMTNdPTg1OTM7ZVszMzddPTk1NTI7ZVs0OTNdPTEwMzk7ZVs0OTRdPTEwNDA7ZVs1NzBdPTEwNDA7ZVs1NzFdPTEwNDE7ZVs1NzJdPTEwNDI7ZVs1NzNdPTEwNDM7ZVs1NzRdPTEwNDQ7ZVs1NzVdPTEwNDU7ZVs1NzZdPTEwNDY7ZVs1NzddPTEwNDc7ZVs1NzhdPTEwNDg7ZVs1NzldPTEwNDk7ZVs1ODBdPTEwNTA7ZVs1ODFdPTEwNTE7ZVs1ODJdPTEwNTI7ZVs1ODNdPTEwNTM7ZVs1ODRdPTEwNTQ7ZVs1ODVdPTEwNTU7ZVs1ODZdPTEwNTY7ZVs1ODddPTEwNTc7ZVs1ODhdPTEwNTg7ZVs1ODldPTEwNTk7ZVs1OTBdPTEwNjA7ZVs1OTFdPTEwNjE7ZVs1OTJdPTEwNjI7ZVs1OTNdPTEwNjM7ZVs1OTRdPTEwNjQ7ZVs1OTVdPTEwNjU7ZVs1OTZdPTEwNjY7ZVs1OTddPTEwNjc7ZVs1OThdPTEwNjg7ZVs1OTldPTEwNjk7ZVs2MDBdPTEwNzA7ZVs2MDFdPTEwNzE7ZVs2MDJdPTEwNzI7ZVs2MDNdPTEwNzM7ZVs2MDRdPTEwNzQ7ZVs2MDVdPTEwNzU7ZVs2MDZdPTEwNzY7ZVs2MDddPTEwNzc7ZVs2MDhdPTEwNzg7ZVs2MDldPTEwNzk7ZVs2MTBdPTEwODA7ZVs2MTFdPTEwODE7ZVs2MTJdPTEwODI7ZVs2MTNdPTEwODM7ZVs2MTRdPTEwODQ7ZVs2MTVdPTEwODU7ZVs2MTZdPTEwODY7ZVs2MTddPTEwODc7ZVs2MThdPTEwODg7ZVs2MTldPTEwODk7ZVs2MjBdPTEwOTA7ZVs2MjFdPTEwOTE7ZVs2MjJdPTEwOTI7ZVs2MjNdPTEwOTM7ZVs2MjRdPTEwOTQ7ZVs2MjVdPTEwOTU7ZVs2MjZdPTEwOTY7ZVs2MjddPTEwOTc7ZVs2MjhdPTEwOTg7ZVs2MjldPTEwOTk7ZVs2MzBdPTExMDA7ZVs2MzFdPTExMDE7ZVs2MzJdPTExMDI7ZVs2MzNdPTExMDM7ZVs2NzJdPTE0ODg7ZVs2NzNdPTE0ODk7ZVs2NzRdPTE0OTA7ZVs2NzVdPTE0OTE7ZVs2NzZdPTE0OTI7ZVs2NzddPTE0OTM7ZVs2NzhdPTE0OTQ7ZVs2NzldPTE0OTU7ZVs2ODBdPTE0OTY7ZVs2ODFdPTE0OTc7ZVs2ODJdPTE0OTg7ZVs2ODNdPTE0OTk7ZVs2ODRdPTE1MDA7ZVs2ODVdPTE1MDE7ZVs2ODZdPTE1MDI7ZVs2ODddPTE1MDM7ZVs2ODhdPTE1MDQ7ZVs2ODldPTE1MDU7ZVs2OTBdPTE1MDY7ZVs2OTFdPTE1MDc7ZVs2OTJdPTE1MDg7ZVs2OTNdPTE1MDk7ZVs2OTRdPTE1MTA7ZVs2OTVdPTE1MTE7ZVs2OTZdPTE1MTI7ZVs2OTddPTE1MTM7ZVs2OThdPTE1MTQ7ZVs3MDVdPTE1MjQ7ZVs3MDZdPTgzNjI7ZVs3MTBdPTY0Mjg4O2VbNzExXT02NDI5ODtlWzc1OV09MTYxNztlWzc2MV09MTc3NjtlWzc2M109MTc3ODtlWzc3NV09MTY1MjtlWzc3N109MTc2NDtlWzc3OF09MTc4MDtlWzc3OV09MTc4MTtlWzc4MF09MTc4MjtlWzc4Ml09NzcxO2VbNzgzXT02NDcyNjtlWzc4Nl09ODM2MztlWzc4OF09ODUzMjtlWzc5MF09NzY4O2VbNzkxXT03Njk7ZVs3OTJdPTc2ODtlWzc5NV09ODAzO2VbNzk3XT02NDMzNjtlWzc5OF09NjQzMzc7ZVs3OTldPTY0MzQyO2VbODAwXT02NDM0MztlWzgwMV09NjQzNDQ7ZVs4MDJdPTY0MzQ1O2VbODAzXT02NDM2MjtlWzgwNF09NjQzNjM7ZVs4MDVdPTY0MzY0O2VbMjQyNF09NzgyMTtlWzI0MjVdPTc4MjI7ZVsyNDI2XT03ODIzO2VbMjQyN109NzgyNDtlWzI0MjhdPTc4MjU7ZVsyNDI5XT03ODI2O2VbMjQzMF09NzgyNztlWzI0MzNdPTc2ODI7ZVsyNjc4XT04MDQ1O2VbMjY3OV09ODA0NjtlWzI4MzBdPTE1NTI7ZVsyODM4XT02ODY7ZVsyODQwXT03NTE7ZVsyODQyXT03NTM7ZVsyODQzXT03NTQ7ZVsyODQ0XT03NTU7ZVsyODQ2XT03NTc7ZVsyODU2XT03Njc7ZVsyODU3XT04NDg7ZVsyODU4XT04NDk7ZVsyODYyXT04NTM7ZVsyODYzXT04NTQ7ZVsyODY0XT04NTU7ZVsyODY1XT04NjE7ZVsyODY2XT04NjI7ZVsyOTA2XT03NDYwO2VbMjkwOF09NzQ2MjtlWzI5MDldPTc0NjM7ZVsyOTEwXT03NDY0O2VbMjkxMl09NzQ2NjtlWzI5MTNdPTc0Njc7ZVsyOTE0XT03NDY4O2VbMjkxNl09NzQ3MDtlWzI5MTddPTc0NzE7ZVsyOTE4XT03NDcyO2VbMjkyMF09NzQ3NDtlWzI5MjFdPTc0NzU7ZVsyOTIyXT03NDc2O2VbMjkyNF09NzQ3ODtlWzI5MjVdPTc0Nzk7ZVsyOTI2XT03NDgwO2VbMjkyOF09NzQ4MjtlWzI5MjldPTc0ODM7ZVsyOTMwXT03NDg0O2VbMjkzMl09NzQ4NjtlWzI5MzNdPTc0ODc7ZVsyOTM0XT03NDg4O2VbMjkzNl09NzQ5MDtlWzI5MzddPTc0OTE7ZVsyOTM4XT03NDkyO2VbMjk0MF09NzQ5NDtlWzI5NDFdPTc0OTU7ZVsyOTQyXT03NDk2O2VbMjk0NF09NzQ5ODtlWzI5NDZdPTc1MDA7ZVsyOTQ4XT03NTAyO2VbMjk1MF09NzUwNDtlWzI5NTFdPTc1MDU7ZVsyOTUyXT03NTA2O2VbMjk1NF09NzUwODtlWzI5NTVdPTc1MDk7ZVsyOTU2XT03NTEwO2VbMjk1OF09NzUxMjtlWzI5NTldPTc1MTM7ZVsyOTYwXT03NTE0O2VbMjk2Ml09NzUxNjtlWzI5NjNdPTc1MTc7ZVsyOTY0XT03NTE4O2VbMjk2Nl09NzUyMDtlWzI5NjddPTc1MjE7ZVsyOTY4XT03NTIyO2VbMjk3MF09NzUyNDtlWzI5NzFdPTc1MjU7ZVsyOTcyXT03NTI2O2VbMjk3NF09
101NzUyODtlWzI5NzVdPTc1Mjk7ZVsyOTc2XT03NTMwO2VbMjk3OF09MTUzNztlWzI5NzldPTE1Mzg7ZVsyOTgwXT0xNTM5O2VbMjk4Ml09MTU0OTtlWzI5ODNdPTE1NTE7ZVsyOTg0XT0xNTUyO2VbMjk4Nl09MTU1NDtlWzI5ODddPTE1NTU7ZVsyOTg4XT0xNTU2O2VbMjk5MF09MTYyMztlWzI5OTFdPTE2MjQ7ZVsyOTk1XT0xNzc1O2VbMjk5OV09MTc5MTtlWzMwMDJdPTY0MjkwO2VbMzAwM109NjQyOTE7ZVszMDA0XT02NDI5MjtlWzMwMDZdPTY0Mjk0O2VbMzAwN109NjQyOTU7ZVszMDA4XT02NDI5NjtlWzMwMTFdPTE5MDA7ZVszMDE0XT04MjIzO2VbMzAxNV09ODI0NDtlWzMwMTddPTc1MzI7ZVszMDE4XT03NTMzO2VbMzAxOV09NzUzNDtlWzMwNzVdPTc1OTA7ZVszMDc2XT03NTkxO2VbMzA3OV09NzU5NDtlWzMwODBdPTc1OTU7ZVszMDgzXT03NTk4O2VbMzA4NF09NzU5OTtlWzMwODddPTc2MDI7ZVszMDg4XT03NjAzO2VbMzA5MV09NzYwNjtlWzMwOTJdPTc2MDc7ZVszMDk1XT03NjEwO2VbMzA5Nl09NzYxMTtlWzMwOTldPTc2MTQ7ZVszMTAwXT03NjE1O2VbMzEwM109NzYxODtlWzMxMDRdPTc2MTk7ZVszMTA3XT04MzM3O2VbMzEwOF09ODMzODtlWzMxMTZdPTE4ODQ7ZVszMTE5XT0xODg1O2VbMzEyMF09MTg4NTtlWzMxMjNdPTE4ODY7ZVszMTI0XT0xODg2O2VbMzEyN109MTg4NztlWzMxMjhdPTE4ODc7ZVszMTMxXT0xODg4O2VbMzEzMl09MTg4ODtlWzMxMzVdPTE4ODk7ZVszMTM2XT0xODg5O2VbMzEzOV09MTg5MDtlWzMxNDBdPTE4OTA7ZVszMTQzXT0xODkxO2VbMzE0NF09MTg5MTtlWzMxNDddPTE4OTI7ZVszMTQ4XT0xODkyO2VbMzE1M109NTgwO2VbMzE1NF09NTgxO2VbMzE1N109NTg0O2VbMzE1OF09NTg1O2VbMzE2MV09NTg4O2VbMzE2Ml09NTg5O2VbMzE2NV09ODkxO2VbMzE2Nl09ODkyO2VbMzE2OV09MTI3NDtlWzMxNzBdPTEyNzU7ZVszMTczXT0xMjc4O2VbMzE3NF09MTI3OTtlWzMxODFdPTc2MjI7ZVszMTgyXT03NjIzO2VbMzI4Ml09MTE3OTk7ZVszMzE2XT01Nzg7ZVszMzc5XT00Mjc4NTtlWzMzOTNdPTExNTk7ZVszNDE2XT04Mzc3fSksSHI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbMjI3XT0zMjI7ZVsyNjRdPTI2MTtlWzI5MV09MzQ2fSksV3I9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbMV09MzI7ZVs0XT02NTtlWzVdPTE5MjtlWzZdPTE5MztlWzldPTE5NjtlWzE3XT02NjtlWzE4XT02NztlWzIxXT0yNjg7ZVsyNF09Njg7ZVsyOF09Njk7ZVsyOV09MjAwO2VbMzBdPTIwMTtlWzMyXT0yODI7ZVszOF09NzA7ZVszOV09NzE7ZVs0NF09NzI7ZVs0N109NzM7ZVs0OF09MjA0O2VbNDldPTIwNTtlWzU4XT03NDtlWzYwXT03NTtlWzYyXT03NjtlWzY4XT03NztlWzY5XT03ODtlWzc1XT03OTtlWzc2XT0yMTA7ZVs4MF09MjE0O2VbODddPTgwO2VbODldPTgxO2VbOTBdPTgyO2VbOTJdPTM0NDtlWzk0XT04MztlWzk3XT0zNTI7ZVsxMDBdPTg0O2VbMTA0XT04NTtlWzEwOV09MjIwO2VbMTE1XT04NjtlWzExNl09ODc7ZVsxMjFdPTg4O2VbMTIyXT04OTtlWzEyNF09MjIxO2VbMTI3XT05MDtlWzEyOV09MzgxO2VbMjU4XT05NztlWzI1OV09MjI0O2VbMjYwXT0yMjU7ZVsyNjNdPTIyODtlWzI2OF09MjYxO2VbMjcxXT05ODtlWzI3Ml09OTk7ZVsyNzNdPTI2MztlWzI3NV09MjY5O2VbMjgyXT0xMDA7ZVsyODZdPTEwMTtlWzI4N109MjMyO2VbMjg4XT0yMzM7ZVsyOTBdPTI4MztlWzI5NV09MjgxO2VbMjk2XT0xMDI7ZVszMzZdPTEwMztlWzM0Nl09MTA0O2VbMzQ5XT0xMDU7ZVszNTBdPTIzNjtlWzM1MV09MjM3O2VbMzYxXT0xMDY7ZVszNjRdPTEwNztlWzM2N109MTA4O2VbMzcxXT0zMjI7ZVszNzNdPTEwOTtlWzM3NF09MTEwO2VbMzgxXT0xMTE7ZVszODJdPTI0MjtlWzM4M109MjQzO2VbMzg2XT0yNDY7ZVszOTNdPTExMjtlWzM5NV09MTEzO2VbMzk2XT0xMTQ7ZVszOThdPTM0NTtlWzQwMF09MTE1O2VbNDAxXT0zNDc7ZVs0MDNdPTM1MztlWzQxMF09MTE2O2VbNDM3XT0xMTc7ZVs0NDJdPTI1MjtlWzQ0OF09MTE4O2VbNDQ5XT0xMTk7ZVs0NTRdPTEyMDtlWzQ1NV09MTIxO2VbNDU3XT0yNTM7ZVs0NjBdPTEyMjtlWzQ2Ml09MzgyO2VbNDYzXT0zODA7ZVs4NTNdPTQ0O2VbODU1XT01ODtlWzg1Nl09NDY7ZVs4NzZdPTQ3O2VbODc4XT00NTtlWzg4Ml09NDU7ZVs4OTRdPTQwO2VbODk1XT00MTtlWzg5Nl09OTE7ZVs4OTddPTkzO2VbOTIzXT02NDtlWzk0MF09MTYzO2VbMTAwNF09NDg7ZVsxMDA1XT00OTtlWzEwMDZdPTUwO2VbMTAwN109NTE7ZVsxMDA4XT01MjtlWzEwMDldPTUzO2VbMTAxMF09NTQ7ZVsxMDExXT01NTtlWzEwMTJdPTU2O2VbMTAxM109NTc7ZVsxMDgxXT0zNztlWzEwODVdPTQzO2VbMTA4Nl09NDV9KTtmdW5jdGlvbiBnZXRTdGFuZGFyZEZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIExyKClbdF19ZnVuY3Rpb24gaXNLbm93bkZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuISEoTHIoKVt0XXx8VXIoKVt0XXx8anIoKVt0XXx8WHIoKVt0XSl9Y2xhc3MgVG9Vbmljb2RlTWFwe2NvbnN0cnVjdG9yKGU9W10pe3RoaXMuX21hcD1lfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fbWFwLmxlbmd0aH1mb3JFYWNoKGUpe2Zvcihjb25zdCB0IGluIHRoaXMuX21hcCllKHQsdGhpcy5fbWFwW3RdLmNvZGVQb2ludEF0KDApKX1oYXMoZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX21hcFtlXX1nZXQoZSl7cmV0dXJuIHRoaXMuX21hcFtlXX1jaGFyQ29kZU9mKGUpe2NvbnN0IHQ9dGhpcy5fbWFwO2lmKHQubGVuZ3RoPD02NTUzNilyZXR1cm4gdC5pbmRleE9mKGUpO2Zvcihjb25zdCBhIGluIHQpaWYodFthXT09PWUpcmV0dXJuIDB8YTtyZXR1cm4tMX1hbWVuZChlKXtmb3IoY29uc3QgdCBpbiBlKXRoaXMuX21hcFt0XT1lW3RdfX1jbGFzcyBJZGVudGl0eVRvVW5pY29kZU1hcHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZmlyc3RDaGFyPWU7dGhpcy5sYXN0Q2hhcj10fWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5sYXN0Q2hhcisxLXRoaXMuZmlyc3RDaGFyfWZvckVhY2goZSl7Zm9yKGxldCB0PXRoaXMuZmlyc3RDaGFyLGE9dGhpcy5sYXN0Q2hhcjt0PD1hO3QrKyllKHQsdCl9aGFzKGUpe3JldHVybiB0aGlzLmZpcnN0Q2hhcjw9ZSYmZTw9dGhpcy5sYXN0Q2hhcn1nZXQoZSl7aWYodGhpcy5maXJzdENoYXI8PWUmJmU8PXRoaXMubGFzdENoYXIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoZSl9Y2hhckNvZGVPZihlKXtyZXR1cm4gTnVtYmVyLmlzSW50ZWdlcihlKSYmZT49dGh
101pcy5maXJzdENoYXImJmU8PXRoaXMubGFzdENoYXI/ZTotMX1hbWVuZChlKXt1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGFtZW5kKCkiKX19Y2xhc3MgQ0ZGRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMucHJvcGVydGllcz10O2NvbnN0IGE9bmV3IENGRlBhcnNlcihlLHQsd3IpO3RoaXMuY2ZmPWEucGFyc2UoKTt0aGlzLmNmZi5kdXBsaWNhdGVGaXJzdEdseXBoKCk7Y29uc3Qgcj1uZXcgQ0ZGQ29tcGlsZXIodGhpcy5jZmYpO3RoaXMuc2VhY3M9dGhpcy5jZmYuc2VhY3M7dHJ5e3RoaXMuZGF0YT1yLmNvbXBpbGUoKX1jYXRjaHt3YXJuKCJGYWlsZWQgdG8gY29tcGlsZSBmb250ICIrdC5sb2FkZWROYW1lKTt0aGlzLmRhdGE9ZX10aGlzLl9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2ZmLmNoYXJTdHJpbmdzLmNvdW50fWdldENoYXJzZXQoKXtyZXR1cm4gdGhpcy5jZmYuY2hhcnNldC5jaGFyc2V0fWdldEdseXBoTWFwcGluZygpe2NvbnN0IGU9dGhpcy5jZmYsdD10aGlzLnByb3BlcnRpZXMse2NpZFRvR2lkTWFwOmEsY01hcDpyfT10LGk9ZS5jaGFyc2V0LmNoYXJzZXQ7bGV0IG4scztpZih0LmNvbXBvc2l0ZSl7bGV0IHQsbztpZihhPy5sZW5ndGg+MCl7dD1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgZT0wLHI9YS5sZW5ndGg7ZTxyO2UrKyl7Y29uc3Qgcj1hW2VdO3ZvaWQgMCE9PXImJih0W3JdPWUpfX1uPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZS5pc0NJREZvbnQpZm9yKHM9MDtzPGkubGVuZ3RoO3MrKyl7Y29uc3QgZT1pW3NdO289ci5jaGFyQ29kZU9mKGUpO3ZvaWQgMCE9PXQ/LltvXSYmKG89dFtvXSk7bltvXT1zfWVsc2UgZm9yKHM9MDtzPGUuY2hhclN0cmluZ3MuY291bnQ7cysrKXtvPXIuY2hhckNvZGVPZihzKTtuW29dPXN9cmV0dXJuIG59bGV0IG89ZS5lbmNvZGluZz9lLmVuY29kaW5nLmVuY29kaW5nOm51bGw7dC5pc0ludGVybmFsRm9udCYmKG89dC5kZWZhdWx0RW5jb2RpbmcpO249dHlwZTFGb250R2x5cGhNYXBwaW5nKHQsbyxpKTtyZXR1cm4gbn1oYXNHbHlwaElkKGUpe3JldHVybiB0aGlzLmNmZi5oYXNHbHlwaElkKGUpfV9jcmVhdGVCdWlsdEluRW5jb2RpbmcoKXtjb25zdHtjaGFyc2V0OmUsZW5jb2Rpbmc6dH09dGhpcy5jZmY7aWYoIWV8fCF0KXJldHVybjtjb25zdCBhPWUuY2hhcnNldCxyPXQuZW5jb2RpbmcsaT1bXTtmb3IoY29uc3QgZSBpbiByKXtjb25zdCB0PXJbZV07aWYodD49MCl7Y29uc3Qgcj1hW3RdO3ImJihpW2VdPXIpfX1pLmxlbmd0aD4wJiYodGhpcy5wcm9wZXJ0aWVzLmJ1aWx0SW5FbmNvZGluZz1pKX19ZnVuY3Rpb24gZ2V0RmxvYXQyMTQoZSx0KXtyZXR1cm4gcmVhZEludDE2KGUsdCkvMTYzODR9ZnVuY3Rpb24gZ2V0U3Vicm91dGluZUJpYXMoZSl7Y29uc3QgdD1lLmxlbmd0aDtsZXQgYT0zMjc2ODt0PDEyNDA/YT0xMDc6dDwzMzkwMCYmKGE9MTEzMSk7cmV0dXJuIGF9ZnVuY3Rpb24gcGFyc2VDbWFwKGUsdCxhKXtjb25zdCByPTE9PT1yZWFkVWludDE2KGUsdCsyKT9yZWFkVWludDMyKGUsdCs4KTpyZWFkVWludDMyKGUsdCsxNiksaT1yZWFkVWludDE2KGUsdCtyKTtsZXQgbixzLG87aWYoND09PWkpe3JlYWRVaW50MTYoZSx0K3IrMik7Y29uc3QgYT1yZWFkVWludDE2KGUsdCtyKzYpPj4xO3M9dCtyKzE0O249W107Zm9yKG89MDtvPGE7bysrLHMrPTIpbltvXT17ZW5kOnJlYWRVaW50MTYoZSxzKX07cys9Mjtmb3Iobz0wO288YTtvKysscys9MiluW29dLnN0YXJ0PXJlYWRVaW50MTYoZSxzKTtmb3Iobz0wO288YTtvKysscys9MiluW29dLmlkRGVsdGE9cmVhZFVpbnQxNihlLHMpO2ZvcihvPTA7bzxhO28rKyxzKz0yKXtsZXQgdD1yZWFkVWludDE2KGUscyk7aWYoMCE9PXQpe25bb10uaWRzPVtdO2ZvcihsZXQgYT0wLHI9bltvXS5lbmQtbltvXS5zdGFydCsxO2E8cjthKyspe25bb10uaWRzW2FdPXJlYWRVaW50MTYoZSxzK3QpO3QrPTJ9fX1yZXR1cm4gbn1pZigxMj09PWkpe2NvbnN0IGE9cmVhZFVpbnQzMihlLHQrcisxMik7cz10K3IrMTY7bj1bXTtmb3Iobz0wO288YTtvKyspe3Q9cmVhZFVpbnQzMihlLHMpO24ucHVzaCh7c3RhcnQ6dCxlbmQ6cmVhZFVpbnQzMihlLHMrNCksaWREZWx0YTpyZWFkVWludDMyKGUscys4KS10fSk7cys9MTJ9cmV0dXJuIG59dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bnN1cHBvcnRlZCBjbWFwOiAke2l9YCl9ZnVuY3Rpb24gcGFyc2VDZmYoZSx0LGEscil7Y29uc3QgaT1uZXcgQ0ZGUGFyc2VyKG5ldyBTdHJlYW0oZSx0LGEtdCkse30scikucGFyc2UoKTtyZXR1cm57Z2x5cGhzOmkuY2hhclN0cmluZ3Mub2JqZWN0cyxzdWJyczppLnRvcERpY3QucHJpdmF0ZURpY3Q/LnN1YnJzSW5kZXg/Lm9iamVjdHMsZ3N1YnJzOmkuZ2xvYmFsU3VickluZGV4Py5vYmplY3RzLGlzQ0ZGQ0lERm9udDppLmlzQ0lERm9udCxmZFNlbGVjdDppLmZkU2VsZWN0LGZkQXJyYXk6aS5mZEFycmF5fX1mdW5jdGlvbiBsb29rdXBDbWFwKGUsdCl7Y29uc3QgYT10LmNvZGVQb2ludEF0KDApO2xldCByPTAsaT0wLG49ZS5sZW5ndGgtMTtmb3IoO2k8bjspe2NvbnN0IHQ9aStuKzE+PjE7YTxlW3RdLnN0YXJ0P249dC0xOmk9dH1lW2ldLnN0YXJ0PD1hJiZhPD1lW2ldLmVuZCYmKHI9ZVtpXS5pZERlbHRhKyhlW2ldLmlkcz9lW2ldLmlkc1thLWVbaV0uc3RhcnRdOmEpJjY1NTM1KTtyZXR1cm57Y2hhckNvZGU6YSxnbHlwaElkOnJ9fWZ1bmN0aW9uIGNvbXBpbGVHbHlmKGUsdCxhKXtmdW5jdGlvbiBtb3ZlVG8oZSxhKXtzJiZ0LmFkZChHdCxzKTtzPVtlLGFdO3QuYWRkKCR0LFtlLGFdKX1mdW5jdGlvbiBsaW5lVG8oZSxhKXt0LmFkZChHdCxbZSxhXSl9ZnVuY3Rpb24gcXVhZHJhdGljQ3VydmVUbyhlLGEscixpKXt0LmFkZChLdCxbZSxhLHIsaV0pfWxldCByPTA7Y29uc3QgaT1yZWFkSW50MTYoZSxyKTtsZXQgbixzPW51bGwsbz0wLGM9MDtyKz0xMDtpZihpPDApZG97bj1yZWFkVWludDE2KGUscik7Y29uc3QgaT1yZWFkVWludDE2KGUscisyKTtyKz00O2xldCBzLGw7aWYoMSZuKXtpZigyJm4pe3M9cmVhZEludDE2KGUscik7bD1yZWFkSW50MTYoZSxyKzIpfWVsc2V7cz1yZWFkVWludDE2KGUscik7bD1yZWFkVWludDE2KGUscisyKX1yKz00fWVsc2UgaWYoMiZuKXtzPXJlYWRJbnQ4KGUscisrKTtsPXJlYWRJbnQ4KGUscisrKX1lbHNle3M9ZVtyKytdO2w9ZVtyKytdfWlmKDImbil7bz1zO2M9bH1lbHNle289MDtjPTB9bGV0IGg9MSx1PTEsZD0wLGY9MDtpZig4Jm4pe2g9dT1nZXRGbG9hdDIxNChlLHIpO3IrPTJ9ZWxzZSBpZig2NCZuKXtoPWdldEZsb2F0MjE0KGUscik7dT1nZXRGbG9hdDIxNChlLHIrMik7cis9NH1lbHNlIGlmKDEyOCZuKXtoPWdldEZsb2F0MjE0KGUscik7ZD1nZXRGbG9hdDIxNChlLHIrMik7Zj1nZXRGbG9hdDIxNChlLHIrNCk7dT1nZXRGbG9hdDIxNChlLHIrNik7cis9OH1jb25zdCBnPWEuZ2x5cGhzW2ldO2lmKGcpe3Quc2F2ZSgpO3QudHJhbnNmb3JtKFtoLGQsZix1LG8sY10pO2NvbXBpbGVHbHlmKGcsdCxhKTt0LnJlc3RvcmUoKX19d2hpbGUoMzImbik7ZWxzZXtjb25zdCB0PVtdO2xldCBhLHM7Zm9yKGE9MDthPGk7YSsrKXt0LnB1c2gocmVhZFVpbnQxNihlLHIpKTtyKz0yfXIrPTIrcmVhZFVpbnQxNihlLHIpO2NvbnN0IGw9dC5hdCgtMSkrMSxoPVtdO2Zvcig7aC5sZW5ndGg8bDspe249ZVtyKytdO2xldCB0PTE7OCZuJiYodCs9ZVtyKytdKTtmb3IoO3QtLSA+MDspaC5wdXNoKHtmbGFnczpufSl9Zm9yKGE9MDthPGw7YSsrKXtzd2l0Y2goMTgmaFthXS5mbGFncyl7Y2FzZSAwOm8rPXJlYWRJbnQxNihlLHIpO3IrPTI7YnJlYWs7Y2FzZSAyOm8tPWVbcisrXTticmVhaztjYXNlIDE4Om8rPWVbcisrXX1oW2FdLng9b31mb3IoYT0wO2E8bDthKyspe3N3aXRjaCgzNiZoW2FdLmZsYWdzKXtjYXNlIDA6Yys9cmVhZEludDE2KGUscik7cis9MjticmVhaztjYXNlIDQ6Yy09ZVtyKytdO2JyZWFrO2Nhc2UgMzY6Yys9ZVtyKytdfWhbYV0ueT1jfWxldCB1PTA7Zm9yKHI9MDtyPGk7cisrKXtjb25zdCBlPXRbcl0saT1oLnNsaWNlKHUsZSsxKTtpZigxJmlbMF0uZmxhZ3MpaS5wdXNoKGlbMF0pO2Vsc2UgaWYoMSZpLmF0KC0xKS5mbGFncylpLnVuc2hpZnQoaS5hdCgtMSkpO2Vsc2V7Y29uc3QgZT17ZmxhZ3M6MSx4OihpWzBdLngraS5hdCgtMSkueCkvMix5OihpWzBdLnkraS5hdCgtMSkueSkvMn07aS51bnNoaWZ0KGUpO2kucHVzaChlKX1tb3ZlVG8oaVswXS54LGlbMF0ueSk7Zm9yKGE9MSxzPWkubGVuZ3RoO2E8czthKyspaWYoMSZpW2FdLmZsYWdzKWxpbmVUbyhpW2FdLngsaVthXS55KTtlbHNlIGlmKDEmaVthKzFdLmZsYWdzKXtxdWFkcmF0aWNDdXJ2ZVRvKGlbYV0ueCxpW2FdLnksaVthKzFdLngsaVthKzFdLnkpO2ErK31lbHNlIHF1YWRyYXRpY0N1cnZlVG8oaVthXS54LGlbYV0ueSwoaVthXS54K2lbYSsxXS54KS8yLChpW2FdLnkraVthKzFdLnkpLzIpO3U9ZSsxfX19ZnVuY3Rpb24gY29tcGlsZUNoYXJTdHJpbmc
101oZSx0LGEscil7ZnVuY3Rpb24gbW92ZVRvKGUsYSl7YyYmdC5hZGQoR3QsYyk7Yz1bZSxhXTt0LmFkZCgkdCxbZSxhXSl9ZnVuY3Rpb24gbGluZVRvKGUsYSl7dC5hZGQoR3QsW2UsYV0pfWZ1bmN0aW9uIGJlemllckN1cnZlVG8oZSxhLHIsaSxuLHMpe3QuYWRkKFZ0LFtlLGEscixpLG4sc10pfWNvbnN0IGk9W107bGV0IG49MCxzPTAsbz0wLGM9bnVsbDshZnVuY3Rpb24gcGFyc2UoZSl7bGV0IGM9MDtmb3IoO2M8ZS5sZW5ndGg7KXtsZXQgbCxoLHUsZCxmLGcscCxtLGIseT0hMSx3PWVbYysrXTtzd2l0Y2godyl7Y2FzZSAxOmNhc2UgMzpjYXNlIDE4OmNhc2UgMjM6bys9aS5sZW5ndGg+PjE7eT0hMDticmVhaztjYXNlIDQ6cys9aS5wb3AoKTttb3ZlVG8obixzKTt5PSEwO2JyZWFrO2Nhc2UgNTpmb3IoO2kubGVuZ3RoPjA7KXtuKz1pLnNoaWZ0KCk7cys9aS5zaGlmdCgpO2xpbmVUbyhuLHMpfWJyZWFrO2Nhc2UgNjpmb3IoO2kubGVuZ3RoPjA7KXtuKz1pLnNoaWZ0KCk7bGluZVRvKG4scyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO3MrPWkuc2hpZnQoKTtsaW5lVG8obixzKX1icmVhaztjYXNlIDc6Zm9yKDtpLmxlbmd0aD4wOyl7cys9aS5zaGlmdCgpO2xpbmVUbyhuLHMpO2lmKDA9PT1pLmxlbmd0aClicmVhaztuKz1pLnNoaWZ0KCk7bGluZVRvKG4scyl9YnJlYWs7Y2FzZSA4OmZvcig7aS5sZW5ndGg+MDspe2w9bitpLnNoaWZ0KCk7dT1zK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtzPWQraS5zaGlmdCgpO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpfWJyZWFrO2Nhc2UgMTA6bT1pLnBvcCgpO2I9bnVsbDtpZihhLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT1hLmZkU2VsZWN0LmdldEZESW5kZXgocik7aWYoZT49MCYmZTxhLmZkQXJyYXkubGVuZ3RoKXtjb25zdCB0PWEuZmRBcnJheVtlXTtsZXQgcjt0LnByaXZhdGVEaWN0Py5zdWJyc0luZGV4JiYocj10LnByaXZhdGVEaWN0LnN1YnJzSW5kZXgub2JqZWN0cyk7aWYocil7bSs9Z2V0U3Vicm91dGluZUJpYXMocik7Yj1yW21dfX1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWVsc2UgYj1hLnN1YnJzW20rYS5zdWJyc0JpYXNdO2ImJnBhcnNlKGIpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuO2Nhc2UgMTI6dz1lW2MrK107c3dpdGNoKHcpe2Nhc2UgMzQ6bD1uK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2Y9cytpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwscyxoLGYsbixmKTtsPW4raS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwsZixoLHMsbixzKTticmVhaztjYXNlIDM1Omw9bitpLnNoaWZ0KCk7dT1zK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtzPWQraS5zaGlmdCgpO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpO2w9bitpLnNoaWZ0KCk7dT1zK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtzPWQraS5zaGlmdCgpO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpO2kucG9wKCk7YnJlYWs7Y2FzZSAzNjpsPW4raS5zaGlmdCgpO2Y9cytpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtnPWYraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLGYsaCxnLG4sZyk7bD1uK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO3A9ZytpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtiZXppZXJDdXJ2ZVRvKGwsZyxoLHAsbixzKTticmVhaztjYXNlIDM3OmNvbnN0IGU9bix0PXM7bD1uK2kuc2hpZnQoKTt1PXMraS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO3M9ZCtpLnNoaWZ0KCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyk7bD1uK2kuc2hpZnQoKTt1PXMraS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtuPWg7cz1kO01hdGguYWJzKG4tZSk+TWF0aC5hYnMocy10KT9uKz1pLnNoaWZ0KCk6cys9aS5zaGlmdCgpO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAxMiAke3d9YCl9YnJlYWs7Y2FzZSAxNDppZihpLmxlbmd0aD49NCl7Y29uc3QgZT1pLnBvcCgpLHI9aS5wb3AoKTtzPWkucG9wKCk7bj1pLnBvcCgpO3Quc2F2ZSgpO3QudHJhbnNsYXRlKG4scyk7bGV0IG89bG9va3VwQ21hcChhLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShhLmdseXBoTmFtZU1hcFtscltlXV0pKTtjb21waWxlQ2hhclN0cmluZyhhLmdseXBoc1tvLmdseXBoSWRdLHQsYSxvLmdseXBoSWQpO3QucmVzdG9yZSgpO289bG9va3VwQ21hcChhLmNtYXAsU3RyaW5nLmZyb21DaGFyQ29kZShhLmdseXBoTmFtZU1hcFtscltyXV0pKTtjb21waWxlQ2hhclN0cmluZyhhLmdseXBoc1tvLmdseXBoSWRdLHQsYSxvLmdseXBoSWQpfXJldHVybjtjYXNlIDE5OmNhc2UgMjA6bys9aS5sZW5ndGg+PjE7Yys9bys3Pj4zO3k9ITA7YnJlYWs7Y2FzZSAyMTpzKz1pLnBvcCgpO24rPWkucG9wKCk7bW92ZVRvKG4scyk7eT0hMDticmVhaztjYXNlIDIyOm4rPWkucG9wKCk7bW92ZVRvKG4scyk7eT0hMDticmVhaztjYXNlIDI0OmZvcig7aS5sZW5ndGg+Mjspe2w9bitpLnNoaWZ0KCk7dT1zK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtzPWQraS5zaGlmdCgpO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpfW4rPWkuc2hpZnQoKTtzKz1pLnNoaWZ0KCk7bGluZVRvKG4scyk7YnJlYWs7Y2FzZSAyNTpmb3IoO2kubGVuZ3RoPjY7KXtuKz1pLnNoaWZ0KCk7cys9aS5zaGlmdCgpO2xpbmVUbyhuLHMpfWw9bitpLnNoaWZ0KCk7dT1zK2kuc2hpZnQoKTtoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7bj1oK2kuc2hpZnQoKTtzPWQraS5zaGlmdCgpO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpO2JyZWFrO2Nhc2UgMjY6aS5sZW5ndGglMiYmKG4rPWkuc2hpZnQoKSk7Zm9yKDtpLmxlbmd0aD4wOyl7bD1uO3U9cytpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO249aDtzPWQraS5zaGlmdCgpO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpfWJyZWFrO2Nhc2UgMjc6aS5sZW5ndGglMiYmKHMrPWkuc2hpZnQoKSk7Zm9yKDtpLmxlbmd0aD4wOyl7bD1uK2kuc2hpZnQoKTt1PXM7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7cz1kO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpfWJyZWFrO2Nhc2UgMjg6aS5wdXNoKHJlYWRJbnQxNihlLGMpKTtjKz0yO2JyZWFrO2Nhc2UgMjk6bT1pLnBvcCgpK2EuZ3N1YnJzQmlhcztiPWEuZ3N1YnJzW21dO2ImJnBhcnNlKGIpO2JyZWFrO2Nhc2UgMzA6Zm9yKDtpLmxlbmd0aD4wOyl7bD1uO3U9cytpLnNoaWZ0KCk7aD1sK2kuc2hpZnQoKTtkPXUraS5zaGlmdCgpO249aCtpLnNoaWZ0KCk7cz1kKygxPT09aS5sZW5ndGg/aS5zaGlmdCgpOjApO2JlemllckN1cnZlVG8obCx1LGgsZCxuLHMpO2lmKDA9PT1pLmxlbmd0aClicmVhaztsPW4raS5zaGlmdCgpO3U9cztoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7cz1kK2kuc2hpZnQoKTtuPWgrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyl9YnJlYWs7Y2FzZSAzMTpmb3IoO2kubGVuZ3RoPjA7KXtsPW4raS5zaGlmdCgpO3U9cztoPWwraS5zaGlmdCgpO2Q9dStpLnNoaWZ0KCk7cz1kK2kuc2hpZnQoKTtuPWgrKDE9PT1pLmxlbmd0aD9pLnNoaWZ0KCk6MCk7YmV6aWVyQ3VydmVUbyhsLHUsaCxkLG4scyk7aWYoMD09PWkubGVuZ3RoKWJyZWFrO2w9bjt1PXMraS5zaGlmdCgpO2g9bCtpLnNoaWZ0KCk7ZD11K2kuc2hpZnQoKTtuPWgraS5zaGlmdCgpO3M9ZCsoMT09PWkubGVuZ3RoP2kuc2hpZnQoKTowKTtiZXppZXJDdXJ2ZVRvKGwsdSxoLGQsbixzKX1icmVhaztkZWZhdWx0OmlmKHc8MzIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGB1bmtub3duIG9wZXJhdG9yOiAke3d9YCk7aWYodzwyNDcpaS5wdXNoKHctMTM5KTtlbHNlIGlmKHc8MjUxKWkucHVzaCgyNTYqKHctMjQ3KStlW2MrK10rMTA4KTtlbHNlIGlmKHc8MjU1KWkucHVzaCgyNTYqLSh3LTI1MSktZVtjKytdLTEwOCk7ZWxzZXtpLnB1c2goKGVbY108PDI0fGVbYysxXTw8MTZ8ZVtjKzJdPDw4fGVbYyszXSkvNjU1MzYpO2MrPTR9fXkmJihpLmxlbmd0aD0wKX19KGUpfWNsYXNzIENvbW1hbmRze2NtZHM9W107dHJhbnNmb3JtU3RhY2s9W107Y3VycmVudFRyYW5zZm9ybT1bMSwwLDAsMSwwLDB
101dO2FkZChlLHQpe2lmKHQpe2NvbnN0e2N1cnJlbnRUcmFuc2Zvcm06YX09dGhpcztmb3IobGV0IGU9MCxyPXQubGVuZ3RoO2U8cjtlKz0yKVV0aWwuYXBwbHlUcmFuc2Zvcm0odCxhLGUpO3RoaXMuY21kcy5wdXNoKGUsLi4udCl9ZWxzZSB0aGlzLmNtZHMucHVzaChlKX10cmFuc2Zvcm0oZSl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPVV0aWwudHJhbnNmb3JtKHRoaXMuY3VycmVudFRyYW5zZm9ybSxlKX10cmFuc2xhdGUoZSx0KXt0aGlzLnRyYW5zZm9ybShbMSwwLDAsMSxlLHRdKX1zYXZlKCl7dGhpcy50cmFuc2Zvcm1TdGFjay5wdXNoKHRoaXMuY3VycmVudFRyYW5zZm9ybS5zbGljZSgpKX1yZXN0b3JlKCl7dGhpcy5jdXJyZW50VHJhbnNmb3JtPXRoaXMudHJhbnNmb3JtU3RhY2sucG9wKCl8fFsxLDAsMCwxLDAsMF19Z2V0UGF0aCgpe3JldHVybiBuZXcoRmVhdHVyZVRlc3QuaXNGbG9hdDE2QXJyYXlTdXBwb3J0ZWQ/RmxvYXQxNkFycmF5OkZsb2F0MzJBcnJheSkodGhpcy5jbWRzKX19Y2xhc3MgQ29tcGlsZWRGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZm9udE1hdHJpeD1lO3RoaXMuY29tcGlsZWRHbHlwaHM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNvbXBpbGVkQ2hhckNvZGVUb0dseXBoSWQ9T2JqZWN0LmNyZWF0ZShudWxsKX1nZXRQYXRoSnMoZSl7Y29uc3R7Y2hhckNvZGU6dCxnbHlwaElkOmF9PWxvb2t1cENtYXAodGhpcy5jbWFwLGUpO2xldCByLGk9dGhpcy5jb21waWxlZEdseXBoc1thXTtpZih2b2lkIDA9PT1pKXt0cnl7aT10aGlzLmNvbXBpbGVHbHlwaCh0aGlzLmdseXBoc1thXSxhKX1jYXRjaChlKXtpPSIiO3I9ZX10aGlzLmNvbXBpbGVkR2x5cGhzW2FdPWl9dGhpcy5jb21waWxlZENoYXJDb2RlVG9HbHlwaElkW3RdPz89YTtpZihyKXRocm93IHI7cmV0dXJuIGl9Y29tcGlsZUdseXBoKGUsYSl7aWYoIWU/Lmxlbmd0aHx8MTQ9PT1lWzBdKXJldHVybiIiO2xldCByPXRoaXMuZm9udE1hdHJpeDtpZih0aGlzLmlzQ0ZGQ0lERm9udCl7Y29uc3QgZT10aGlzLmZkU2VsZWN0LmdldEZESW5kZXgoYSk7aWYoZT49MCYmZTx0aGlzLmZkQXJyYXkubGVuZ3RoKXtyPXRoaXMuZmRBcnJheVtlXS5nZXRCeU5hbWUoIkZvbnRNYXRyaXgiKXx8dH1lbHNlIHdhcm4oIkludmFsaWQgZmQgaW5kZXggZm9yIGdseXBoIGluZGV4LiIpfWFzc2VydChpc051bWJlckFycmF5KHIsNiksIkV4cGVjdGVkIGEgdmFsaWQgZm9udE1hdHJpeC4iKTtjb25zdCBpPW5ldyBDb21tYW5kcztpLnRyYW5zZm9ybShyLnNsaWNlKCkpO3RoaXMuY29tcGlsZUdseXBoSW1wbChlLGksYSk7aS5hZGQoSnQpO3JldHVybiBpLmdldFBhdGgoKX1jb21waWxlR2x5cGhJbXBsKCl7dW5yZWFjaGFibGUoIkNoaWxkcmVuIGNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB0aGlzLiIpfWhhc0J1aWx0UGF0aChlKXtjb25zdHtjaGFyQ29kZTp0LGdseXBoSWQ6YX09bG9va3VwQ21hcCh0aGlzLmNtYXAsZSk7cmV0dXJuIHZvaWQgMCE9PXRoaXMuY29tcGlsZWRHbHlwaHNbYV0mJnZvaWQgMCE9PXRoaXMuY29tcGlsZWRDaGFyQ29kZVRvR2x5cGhJZFt0XX19Y2xhc3MgVHJ1ZVR5cGVDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoYXx8WzQ4OGUtNiwwLDAsNDg4ZS02LDAsMF0pO3RoaXMuZ2x5cGhzPWU7dGhpcy5jbWFwPXR9Y29tcGlsZUdseXBoSW1wbChlLHQpe2NvbXBpbGVHbHlmKGUsdCx0aGlzKX19Y2xhc3MgVHlwZTJDb21waWxlZCBleHRlbmRzIENvbXBpbGVkRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoYXx8Wy4wMDEsMCwwLC4wMDEsMCwwXSk7dGhpcy5nbHlwaHM9ZS5nbHlwaHM7dGhpcy5nc3VicnM9ZS5nc3VicnN8fFtdO3RoaXMuc3VicnM9ZS5zdWJyc3x8W107dGhpcy5jbWFwPXQ7dGhpcy5nbHlwaE5hbWVNYXA9ZnIoKTt0aGlzLmdzdWJyc0JpYXM9Z2V0U3Vicm91dGluZUJpYXModGhpcy5nc3VicnMpO3RoaXMuc3VicnNCaWFzPWdldFN1YnJvdXRpbmVCaWFzKHRoaXMuc3VicnMpO3RoaXMuaXNDRkZDSURGb250PWUuaXNDRkZDSURGb250O3RoaXMuZmRTZWxlY3Q9ZS5mZFNlbGVjdDt0aGlzLmZkQXJyYXk9ZS5mZEFycmF5fWNvbXBpbGVHbHlwaEltcGwoZSx0LGEpe2NvbXBpbGVDaGFyU3RyaW5nKGUsdCx0aGlzLGEpfX1jbGFzcyBGb250UmVuZGVyZXJGYWN0b3J5e3N0YXRpYyBjcmVhdGUoZSx0KXtjb25zdCBhPW5ldyBVaW50OEFycmF5KGUuZGF0YSk7bGV0IHIsaSxuLHMsbyxjO2NvbnN0IGw9cmVhZFVpbnQxNihhLDQpO2ZvcihsZXQgZT0wLGg9MTI7ZTxsO2UrKyxoKz0xNil7Y29uc3QgZT1ieXRlc1RvU3RyaW5nKGEuc3ViYXJyYXkoaCxoKzQpKSxsPXJlYWRVaW50MzIoYSxoKzgpLHU9cmVhZFVpbnQzMihhLGgrMTIpO3N3aXRjaChlKXtjYXNlImNtYXAiOnI9cGFyc2VDbWFwKGEsbCk7YnJlYWs7Y2FzZSJnbHlmIjppPWEuc3ViYXJyYXkobCxsK3UpO2JyZWFrO2Nhc2UibG9jYSI6bj1hLnN1YmFycmF5KGwsbCt1KTticmVhaztjYXNlImhlYWQiOmM9cmVhZFVpbnQxNihhLGwrMTgpO289cmVhZFVpbnQxNihhLGwrNTApO2JyZWFrO2Nhc2UiQ0ZGICI6cz1wYXJzZUNmZihhLGwsbCt1LHQpfX1pZihpKXtjb25zdCB0PWM/WzEvYywwLDAsMS9jLDAsMF06ZS5mb250TWF0cml4O3JldHVybiBuZXcgVHJ1ZVR5cGVDb21waWxlZChmdW5jdGlvbiBwYXJzZUdseWZUYWJsZShlLHQsYSl7bGV0IHIsaTtpZihhKXtyPTQ7aT1yZWFkVWludDMyfWVsc2V7cj0yO2k9KGUsdCk9PjIqcmVhZFVpbnQxNihlLHQpfWNvbnN0IG49W107bGV0IHM9aSh0LDApO2ZvcihsZXQgYT1yO2E8dC5sZW5ndGg7YSs9cil7Y29uc3Qgcj1pKHQsYSk7bi5wdXNoKGUuc3ViYXJyYXkocyxyKSk7cz1yfXJldHVybiBufShpLG4sbykscix0KX1yZXR1cm4gbmV3IFR5cGUyQ29tcGlsZWQocyxyLGUuZm9udE1hdHJpeCl9fWNvbnN0IHpy
vendor: 52,900 bytes, line 101
101PWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLkNvdXJpZXI9NjAwO2VbIkNvdXJpZXItQm9sZCJdPTYwMDtlWyJDb3VyaWVyLUJvbGRPYmxpcXVlIl09NjAwO2VbIkNvdXJpZXItT2JsaXF1ZSJdPTYwMDtlLkhlbHZldGljYT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09Mjc4O2UucXVvdGVkYmw9MzU1O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NjY3O2UucXVvdGVyaWdodD0yMjI7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0yNzg7ZS5zZW1pY29sb249Mjc4O2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTU1NjtlLmF0PTEwMTU7ZS5BPTY2NztlLkI9NjY3O2UuQz03MjI7ZS5EPTcyMjtlLkU9NjY3O2UuRj02MTE7ZS5HPTc3ODtlLkg9NzIyO2UuST0yNzg7ZS5KPTUwMDtlLks9NjY3O2UuTD01NTY7ZS5NPTgzMztlLk49NzIyO2UuTz03Nzg7ZS5QPTY2NztlLlE9Nzc4O2UuUj03MjI7ZS5TPTY2NztlLlQ9NjExO2UuVT03MjI7ZS5WPTY2NztlLlc9OTQ0O2UuWD02Njc7ZS5ZPTY2NztlLlo9NjExO2UuYnJhY2tldGxlZnQ9Mjc4O2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0yNzg7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTU1NjtlLnF1b3RlbGVmdD0yMjI7ZS5hPTU1NjtlLmI9NTU2O2UuYz01MDA7ZS5kPTU1NjtlLmU9NTU2O2UuZj0yNzg7ZS5nPTU1NjtlLmg9NTU2O2UuaT0yMjI7ZS5qPTIyMjtlLms9NTAwO2UubD0yMjI7ZS5tPTgzMztlLm49NTU2O2Uubz01NTY7ZS5wPTU1NjtlLnE9NTU2O2Uucj0zMzM7ZS5zPTUwMDtlLnQ9Mjc4O2UudT01NTY7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NTAwO2UuYnJhY2VsZWZ0PTMzNDtlLmJhcj0yNjA7ZS5icmFjZXJpZ2h0PTMzNDtlLmFzY2lpdGlsZGU9NTg0O2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTU1NjtlLnN0ZXJsaW5nPTU1NjtlLmZyYWN0aW9uPTE2NztlLnllbj01NTY7ZS5mbG9yaW49NTU2O2Uuc2VjdGlvbj01NTY7ZS5jdXJyZW5jeT01NTY7ZS5xdW90ZXNpbmdsZT0xOTE7ZS5xdW90ZWRibGxlZnQ9MzMzO2UuZ3VpbGxlbW90bGVmdD01NTY7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTUwMDtlLmZsPTUwMDtlLmVuZGFzaD01NTY7ZS5kYWdnZXI9NTU2O2UuZGFnZ2VyZGJsPTU1NjtlLnBlcmlvZGNlbnRlcmVkPTI3ODtlLnBhcmFncmFwaD01Mzc7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MjIyO2UucXVvdGVkYmxiYXNlPTMzMztlLnF1b3RlZGJscmlnaHQ9MzMzO2UuZ3VpbGxlbW90cmlnaHQ9NTU2O2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTYxMTtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9MWUzO2Uub3JkZmVtaW5pbmU9MzcwO2UuTHNsYXNoPTU1NjtlLk9zbGFzaD03Nzg7ZS5PRT0xZTM7ZS5vcmRtYXNjdWxpbmU9MzY1O2UuYWU9ODg5O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTIyMjtlLm9zbGFzaD02MTE7ZS5vZT05NDQ7ZS5nZXJtYW5kYmxzPTYxMTtlLklkaWVyZXNpcz0yNzg7ZS5lYWN1dGU9NTU2O2UuYWJyZXZlPTU1NjtlLnVodW5nYXJ1bWxhdXQ9NTU2O2UuZWNhcm9uPTU1NjtlLllkaWVyZXNpcz02Njc7ZS5kaXZpZGU9NTg0O2UuWWFjdXRlPTY2NztlLkFjaXJjdW1mbGV4PTY2NztlLmFhY3V0ZT01NTY7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTUwMDtlLmVjaXJjdW1mbGV4PTU1NjtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTU1NjtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTU1NjtlLkVkaWVyZXNpcz02Njc7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTczNztlLkVtYWNyb249NjY3O2UuY2Nhcm9uPTUwMDtlLmFyaW5nPTU1NjtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9MjIyO2UuYWdyYXZlPTU1NjtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NzIyO2UuYXRpbGRlPTU1NjtlLkVkb3RhY2NlbnQ9NjY3O2Uuc2Nhcm9uPTUwMDtlLnNjZWRpbGxhPTUwMDtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj03MjI7ZS5HY29tbWFhY2NlbnQ9Nzc4O2UudWNpcmN1bWZsZXg9NTU2O2UuYWNpcmN1bWZsZXg9NTU2O2UuQW1hY3Jvbj02Njc7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NTAwO2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj02Njc7ZS5PbWFjcm9uPTc3ODtlLlJhY3V0ZT03MjI7ZS5TYWN1dGU9NjY3O2UuZGNhcm9uPTY0MztlLlVtYWNyb249NzIyO2UudXJpbmc9NTU2O2UudGhyZWVzdXBlcmlvcj0zMzM7ZS5PZ3JhdmU9Nzc4O2UuQWdyYXZlPTY2NztlLkFicmV2ZT02Njc7ZS5tdWx0aXBseT01ODQ7ZS51YWN1dGU9NTU2O2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjY3O2UuYWRpZXJlc2lzPTU1NjtlLmVkaWVyZXNpcz01NTY7ZS5jYWN1dGU9NTAwO2UubmFjdXRlPTU1NjtlLnVtYWNyb249NTU2O2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0yNzg7ZS5wbHVzbWludXM9NTg0O2UuYnJva2VuYmFyPTI2MDtlLnJlZ2lzdGVyZWQ9NzM3O2UuR2JyZXZlPTc3ODtlLklkb3RhY2NlbnQ9Mjc4O2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02Njc7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01NTY7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NzIyO2UubGNvbW1hYWNjZW50PTIyMjtlLnRjYXJvbj0zMTc7ZS5lb2dvbmVrPTU1NjtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTY2NztlLkFkaWVyZXNpcz02Njc7ZS5lZ3JhdmU9NTU2O2UuemFjdXRlPTUwMDtlLmlvZ29uZWs9MjIyO2UuT2FjdXRlPTc3ODtlLm9hY3V0ZT01NTY7ZS5hbWFjcm9uPTU1NjtlLnNhY3V0ZT01MDA7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9Nzc4O2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTU1NjtlLnR3b3N1cGVyaW9yPTMzMztlLk9kaWVyZXNpcz03Nzg7ZS5tdT01NTY7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01NTY7ZS5Fb2dvbmVrPTY2NztlLmRjcm9hdD01NTY7ZS50aHJlZXF1YXJ0ZXJzPTgzNDtlLlNjZWRpbGxhPTY2NztlLmxjYXJvbj0yOTk7ZS5LY29tbWFhY2NlbnQ9NjY3O2UuTGFjdXRlPTU1NjtlLnRyYWRlbWFyaz0xZTM7ZS5lZG90YWNjZW50PTU1NjtlLklncmF2ZT0yNzg7ZS5JbWFjcm9uPTI3ODtlLkxjYXJvbj01NTY7ZS5vbmVoYWxmPTgzNDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01NTY7ZS5udGlsZGU9NTU2O2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjY3O2UuZW1hY3Jvbj01NTY7ZS5nYnJldmU9NTU2O2Uub25lcXVhcnRlcj04MzQ7ZS5TY2Fyb249NjY3O2UuU2NvbW1hYWNjZW50PTY2NztlLk9odW5nYXJ1bWxhdXQ9Nzc4O2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01NTY7ZS5DY2Fyb249NzIyO2UudWdyYXZlPTU1NjtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTU1NjtlLlJjb21tYWFjY2VudD03MjI7ZS5MY29tbWFhY2NlbnQ9NTU2O2UuQXRpbGRlPTY2NztlLkFvZ29uZWs9NjY3O2UuQXJpbmc9NjY3O2UuT3RpbGRlPTc3ODtlLnpkb3RhY2NlbnQ9NTAwO2UuRWNhcm9uPTY2NztlLklvZ29uZWs9Mjc4O2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU4NDtlLkljaXJjdW1mbGV4PTI3ODtlLm5jYXJvbj01NTY7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01ODQ7ZS5vZGllcmVzaXM9NTU2O2UudWRpZXJlc2lzPTU1NjtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01NTY7ZS5ldGg9NTU2O2UuemNhcm9uPTUwMDtlLm5jb21tYWFjY2VudD01NTY7ZS5vbmVzdXBlcmlvcj0zMzM7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTU2fSk7ZVsiSGVsdmV0aWNhLUJvbGQiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KTtlWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDc0O2UubnVtYmVyc2lnbj01NTY7ZS5kb2xsYXI9NTU2O2UucGVyY2VudD04ODk7ZS5hbXBlcnNhbmQ9NzIyO2UucXVvdGVyaWdodD0yNzg7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz0zODk7ZS5wbHVzPTU4NDtlLmNvbW1hPTI3ODtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9Mjc4O2Uuc2xhc2g9Mjc4O2UuemVybz01NTY7ZS5vbmU9NTU2O2UudHdvPTU1NjtlLnRocmVlPTU1NjtlLmZvdXI9NTU2O2UuZml2ZT01NTY7ZS5zaXg9NTU2O2Uuc2V2ZW49NTU2O2UuZWlnaHQ9NTU2O2UubmluZT01NTY7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01ODQ7ZS5lcXVhbD01ODQ7ZS5ncmVhdGVyPTU4NDtlLnF1ZXN0aW9uPTYxMTtlLmF0PTk3NTtlLkE9NzIyO2UuQj03MjI7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTU2O2UuSz03MjI7ZS5MPTYxMTtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU4NDtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTI3ODtlLmE9NTU2O2UuYj02MTE7ZS5jPTU1NjtlLmQ9NjExO2UuZT01NTY7ZS5mPTMzMztlLmc9NjExO2UuaD02MTE7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01NTY7ZS5sPTI3ODtlLm09ODg5O2Uubj02MTE7ZS5vPTYxMTtlLnA9NjExO2UucT02MTE7ZS5yPTM4OTtlLnM9NTU2O2UudD0zMzM7ZS51PTYxMTtlLnY9NTU2O2Uudz03Nzg7ZS54PTU1NjtlLnk9NTU2O2Uuej01MDA7ZS5icmFjZWxlZnQ9Mzg5O2UuYmFyPTI4MDtlLmJyYWNlcmlnaHQ9Mzg5O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTIzODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NjExO2UuZmw9NjExO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTU1NjtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yNzg7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD02MTE7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NzIyO2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01NTY7ZS5zY29tbWFhY2NlbnQ9NTU2O2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NjExO2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTU2O2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTU2O2Uuc2NlZGlsbGE9NTU2O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD02MTE7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTcyMjtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT01NTY7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NzQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz02MTE7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NzIyO2UuQWJyZXZlPTcyMjtlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT02MTE7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTU1NjtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01NTY7ZS5uYWN1dGU9NjExO2UudW1hY3Jvbj02MTE7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjgwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTYxMTtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM4OTtlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NzIyO2UuQWRpZXJlc2lzPTcyMjtlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTYxMTtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTU1NjtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NjExO2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTYxMTtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTYxMTtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTYxMTtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTQwMDtlLktjb21tYWFjY2VudD03MjI7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTYxMTtlLm50aWxkZT02MTE7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT02MTE7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTYxMTtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NjExO2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NjExO2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NzIyO2UuQW9nb25laz03MjI7ZS5BcmluZz03MjI7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTU2O2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTYxMTtlLnRjb21tYWFjY2VudD0zMzM7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz02MTE7ZS51ZGllcmVzaXM9NjExO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTYxMTtlLmV0aD02MTE7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTYxMTtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KTtlWyJIZWx2ZXRpY2EtT2JsaXF1ZSJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI3ODtlLmV4Y2xhbT0yNzg7ZS5xdW90ZWRibD0zNTU7ZS5udW1iZXJzaWduPTU1NjtlLmRvbGxhcj01NTY7ZS5wZXJjZW50PTg4OTtlLmFtcGVyc2FuZD02Njc7ZS5xdW90ZXJpZ2h0PTIyMjtlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTM4OTtlLnBsdXM9NTg0O2UuY29tbWE9Mjc4O2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNzg7ZS5zbGFzaD0yNzg7ZS56ZXJvPTU1NjtlLm9uZT01NTY7ZS50d289NTU2O2UudGhyZWU9NTU2O2UuZm91cj01NTY7ZS5maXZlPTU1NjtlLnNpeD01NTY7ZS5zZXZlbj01NTY7ZS5laWdodD01NTY7ZS5uaW5lPTU1NjtlLmNvbG9uPTI3ODtlLnNlbWljb2xvbj0yNzg7ZS5sZXNzPTU4NDtlLmVxdWFsPTU4NDtlLmdyZWF0ZXI9NTg0O2UucXVlc3Rpb249NTU2O2UuYXQ9MTAxNTtlLkE9NjY3O2UuQj02Njc7ZS5DPTcyMjtlLkQ9NzIyO2UuRT02Njc7ZS5GPTYxMTtlLkc9Nzc4O2UuSD03MjI7ZS5JPTI3ODtlLko9NTAwO2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj03MjI7ZS5PPTc3ODtlLlA9NjY3O2UuUT03Nzg7ZS5SPTcyMjtlLlM9NjY3O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz05NDQ7ZS5YPTY2NztlLlk9NjY3O2UuWj02MTE7ZS5icmFja2V0bGVmdD0yNzg7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTI3ODtlLmFzY2lpY2lyY3VtPTQ2OTtlLnVuZGVyc2NvcmU9NTU2O2UucXVvdGVsZWZ0PTIyMjtlLmE9NTU2O2UuYj01NTY7ZS5jPTUwMDtlLmQ9NTU2O2UuZT01NTY7ZS5mPTI3ODtlLmc9NTU2O2UuaD01NTY7ZS5pPTIyMjtlLmo9MjIyO2Uuaz01MDA7ZS5sPTIyMjtlLm09ODMzO2Uubj01NTY7ZS5vPTU1NjtlLnA9NTU2O2UucT01NTY7ZS5yPTMzMztlLnM9NTAwO2UudD0yNzg7ZS51PTU1NjtlLnY9NTAwO2Uudz03MjI7ZS54PTUwMDtlLnk9NTAwO2Uuej01MDA7ZS5icmFjZWxlZnQ9MzM0O2UuYmFyPTI2MDtlLmJyYWNlcmlnaHQ9MzM0O2UuYXNjaWl0aWxkZT01ODQ7ZS5leGNsYW1kb3duPTMzMztlLmNlbnQ9NTU2O2Uuc3Rlcmxpbmc9NTU2O2UuZnJhY3Rpb249MTY3O2UueWVuPTU1NjtlLmZsb3Jpbj01NTY7ZS5zZWN0aW9uPTU1NjtlLmN1cnJlbmN5PTU1NjtlLnF1b3Rlc2luZ2xlPTE5MTtlLnF1b3RlZGJsbGVmdD0zMzM7ZS5ndWlsbGVtb3RsZWZ0PTU1NjtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTU1NjtlLmRhZ2dlcj01NTY7ZS5kYWdnZXJkYmw9NTU2O2UucGVyaW9kY2VudGVyZWQ9Mjc4O2UucGFyYWdyYXBoPTUzNztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0yMjI7ZS5xdW90ZWRibGJhc2U9MzMzO2UucXVvdGVkYmxyaWdodD0zMzM7ZS5ndWlsbGVtb3RyaWdodD01NTY7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NjExO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT0xZTM7ZS5vcmRmZW1pbmluZT0zNzA7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTc3ODtlLk9FPTFlMztlLm9yZG1hc2N1bGluZT0zNjU7ZS5hZT04ODk7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9MjIyO2Uub3NsYXNoPTYxMTtlLm9lPTk0NDtlLmdlcm1hbmRibHM9NjExO2UuSWRpZXJlc2lzPTI3ODtlLmVhY3V0ZT01NTY7ZS5hYnJldmU9NTU2O2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NTU2O2UuWWRpZXJlc2lzPTY2NztlLmRpdmlkZT01ODQ7ZS5ZYWN1dGU9NjY3O2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTU1NjtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT01MDA7ZS5zY29tbWFhY2NlbnQ9NTAwO2UuZWNpcmN1bWZsZXg9NTU2O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTU2O2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzM3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NTAwO2UuYXJpbmc9NTU2O2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yMjI7ZS5hZ3JhdmU9NTU2O2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT03MjI7ZS5hdGlsZGU9NTU2O2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249NTAwO2Uuc2NlZGlsbGE9NTAwO2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTcyMjtlLkdjb21tYWFjY2VudD03Nzg7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01NTY7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zMzM7ZS5jY2VkaWxsYT01MDA7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTY2NztlLk9tYWNyb249Nzc4O2UuUmFjdXRlPTcyMjtlLlNhY3V0ZT02Njc7ZS5kY2Fyb249NjQzO2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMzMztlLk9ncmF2ZT03Nzg7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU4NDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTUwMDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTU2O2UuZWRpZXJlc2lzPTU1NjtlLmNhY3V0ZT01MDA7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTI3ODtlLnBsdXNtaW51cz01ODQ7ZS5icm9rZW5iYXI9MjYwO2UucmVnaXN0ZXJlZD03Mzc7ZS5HYnJldmU9Nzc4O2UuSWRvdGFjY2VudD0yNzg7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zMzM7ZS5vbWFjcm9uPTU1NjtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT03MjI7ZS5sY29tbWFhY2NlbnQ9MjIyO2UudGNhcm9uPTMxNztlLmVvZ29uZWs9NTU2O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT01NTY7ZS56YWN1dGU9NTAwO2UuaW9nb25laz0yMjI7ZS5PYWN1dGU9Nzc4O2Uub2FjdXRlPTU1NjtlLmFtYWNyb249NTU2O2Uuc2FjdXRlPTUwMDtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03Nzg7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTU2O2UudHdvc3VwZXJpb3I9MzMzO2UuT2RpZXJlc2lzPTc3ODtlLm11PTU1NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTU1NjtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTU1NjtlLnRocmVlcXVhcnRlcnM9ODM0O2UuU2NlZGlsbGE9NjY3O2UubGNhcm9uPTI5OTtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NTU2O2UuSWdyYXZlPTI3ODtlLkltYWNyb249Mjc4O2UuTGNhcm9uPTU1NjtlLm9uZWhhbGY9ODM0O2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTU1NjtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTU1NjtlLmdicmV2ZT01NTY7ZS5vbmVxdWFydGVyPTgzNDtlLlNjYXJvbj02Njc7ZS5TY29tbWFhY2NlbnQ9NjY3O2UuT2h1bmdhcnVtbGF1dD03Nzg7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTU1NjtlLkNjYXJvbj03MjI7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTMzMztlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTU2O2UuUmNvbW1hYWNjZW50PTcyMjtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9Nzc4O2UuemRvdGFjY2VudD01MDA7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0yNzg7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NTg0O2UuSWNpcmN1bWZsZXg9Mjc4O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTU4NDtlLm9kaWVyZXNpcz01NTY7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTU1NjtlLmV0aD01NTY7ZS56Y2Fyb249NTAwO2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMzMztlLmltYWNyb249Mjc4O2UuRXVybz01NTZ9KTtlLlN5bWJvbD1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UudW5pdmVyc2FsPTcxMztlLm51bWJlcnNpZ249NTAwO2UuZXhpc3RlbnRpYWw9NTQ5O2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2Uuc3VjaHRoYXQ9NDM5O2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2ttYXRoPTUwMDtlLnBsdXM9NTQ5O2UuY29tbWE9MjUwO2UubWludXM9NTQ5O2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTQ5O2UuZXF1YWw9NTQ5O2UuZ3JlYXRlcj01NDk7ZS5xdWVzdGlvbj00NDQ7ZS5jb25ncnVlbnQ9NTQ5O2UuQWxwaGE9NzIyO2UuQmV0YT02Njc7ZS5DaGk9NzIyO2UuRGVsdGE9NjEyO2UuRXBzaWxvbj02MTE7ZS5QaGk9NzYzO2UuR2FtbWE9NjAzO2UuRXRhPTcyMjtlLklvdGE9MzMzO2UudGhldGExPTYzMTtlLkthcHBhPTcyMjtlLkxhbWJkYT02ODY7ZS5NdT04ODk7ZS5OdT03MjI7ZS5PbWljcm9uPTcyMjtlLlBpPTc2ODtlLlRoZXRhPTc0MTtlLlJobz01NTY7ZS5TaWdtYT01OTI7ZS5UYXU9NjExO2UuVXBzaWxvbj02OTA7ZS5zaWdtYTE9NDM5O2UuT21lZ2E9NzY4O2UuWGk9NjQ1O2UuUHNpPTc5NTtlLlpldGE9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UudGhlcmVmb3JlPTg2MztlLmJyYWNrZXRyaWdodD0zMzM7ZS5wZXJwZW5kaWN1bGFyPTY1ODtlLnVuZGVyc2NvcmU9NTAwO2UucmFkaWNhbGV4PTUwMDtlLmFscGhhPTYzMTtlLmJldGE9NTQ5O2UuY2hpPTU0OTtlLmRlbHRhPTQ5NDtlLmVwc2lsb249NDM5O2UucGhpPTUyMTtlLmdhbW1hPTQxMTtlLmV0YT02MDM7ZS5pb3RhPTMyOTtlLnBoaTE9NjAzO2Uua2FwcGE9NTQ5O2UubGFtYmRhPTU0OTtlLm11PTU3NjtlLm51PTUyMTtlLm9taWNyb249NTQ5O2UucGk9NTQ5O2UudGhldGE9NTIxO2UucmhvPTU0OTtlLnNpZ21hPTYwMztlLnRhdT00Mzk7ZS51cHNpbG9uPTU3NjtlLm9tZWdhMT03MTM7ZS5vbWVnYT02ODY7ZS54aT00OTM7ZS5wc2k9Njg2O2UuemV0YT00OTQ7ZS5icmFjZWxlZnQ9NDgwO2UuYmFyPTIwMDtlLmJyYWNlcmlnaHQ9NDgwO2Uuc2ltaWxhcj01NDk7ZS5FdXJvPTc1MDtlLlVwc2lsb24xPTYyMDtlLm1pbnV0ZT0yNDc7ZS5sZXNzZXF1YWw9NTQ5O2UuZnJhY3Rpb249MTY3O2UuaW5maW5pdHk9NzEzO2UuZmxvcmluPTUwMDtlLmNsdWI9NzUzO2UuZGlhbW9uZD03NTM7ZS5oZWFydD03NTM7ZS5zcGFkZT03NTM7ZS5hcnJvd2JvdGg9MTA0MjtlLmFycm93bGVmdD05ODc7ZS5hcnJvd3VwPTYwMztlLmFycm93cmlnaHQ9OTg3O2UuYXJyb3dkb3duPTYwMztlLmRlZ3JlZT00MDA7ZS5wbHVzbWludXM9NTQ5O2Uuc2Vjb25kPTQxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5tdWx0aXBseT01NDk7ZS5wcm9wb3J0aW9uYWw9NzEzO2UucGFydGlhbGRpZmY9NDk0O2UuYnVsbGV0PTQ2MDtlLmRpdmlkZT01NDk7ZS5ub3RlcXVhbD01NDk7ZS5lcXVpdmFsZW5jZT01NDk7ZS5hcHByb3hlcXVhbD01NDk7ZS5lbGxpcHNpcz0xZTM7ZS5hcnJvd3ZlcnRleD02MDM7ZS5hcnJvd2hvcml6ZXg9MWUzO2UuY2FycmlhZ2VyZXR1cm49NjU4O2UuYWxlcGg9ODIzO2UuSWZyYWt0dXI9Njg2O2UuUmZyYWt0dXI9Nzk1O2Uud2VpZXJzdHJhc3M9OTg3O2UuY2lyY2xlbXVsdGlwbHk9NzY4O2UuY2lyY2xlcGx1cz03Njg7ZS5lbXB0eXNldD04MjM7ZS5pbnRlcnNlY3Rpb249NzY4O2UudW5pb249NzY4O2UucHJvcGVyc3VwZXJzZXQ9NzEzO2UucmVmbGV4c3VwZXJzZXQ9NzEzO2Uubm90c3Vic2V0PTcxMztlLnByb3BlcnN1YnNldD03MTM7ZS5yZWZsZXhzdWJzZXQ9NzEzO2UuZWxlbWVudD03MTM7ZS5ub3RlbGVtZW50PTcxMztlLmFuZ2xlPTc2ODtlLmdyYWRpZW50PTcxMztlLnJlZ2lzdGVyc2VyaWY9NzkwO2UuY29weXJpZ2h0c2VyaWY9NzkwO2UudHJhZGVtYXJrc2VyaWY9ODkwO2UucHJvZHVjdD04MjM7ZS5yYWRpY2FsPTU0OTtlLmRvdG1hdGg9MjUwO2UubG9naWNhbG5vdD03MTM7ZS5sb2dpY2FsYW5kPTYwMztlLmxvZ2ljYWxvcj02MDM7ZS5hcnJvd2RibGJvdGg9MTA0MjtlLmFycm93ZGJsbGVmdD05ODc7ZS5hcnJvd2RibHVwPTYwMztlLmFycm93ZGJscmlnaHQ9OTg3O2UuYXJyb3dkYmxkb3duPTYwMztlLmxvemVuZ2U9NDk0O2UuYW5nbGVsZWZ0PTMyOTtlLnJlZ2lzdGVyc2Fucz03OTA7ZS5jb3B5cmlnaHRzYW5zPTc5MDtlLnRyYWRlbWFya3NhbnM9Nzg2O2Uuc3VtbWF0aW9uPTcxMztlLnBhcmVubGVmdHRwPTM4NDtlLnBhcmVubGVmdGV4PTM4NDtlLnBhcmVubGVmdGJ0PTM4NDtlLmJyYWNrZXRsZWZ0dHA9Mzg0O2UuYnJhY2tldGxlZnRleD0zODQ7ZS5icmFja2V0bGVmdGJ0PTM4NDtlLmJyYWNlbGVmdHRwPTQ5NDtlLmJyYWNlbGVmdG1pZD00OTQ7ZS5icmFjZWxlZnRidD00OTQ7ZS5icmFjZWV4PTQ5NDtlLmFuZ2xlcmlnaHQ9MzI5O2UuaW50ZWdyYWw9Mjc0O2UuaW50ZWdyYWx0cD02ODY7ZS5pbnRlZ3JhbGV4PTY4NjtlLmludGVncmFsYnQ9Njg2O2UucGFyZW5yaWdodHRwPTM4NDtlLnBhcmVucmlnaHRleD0zODQ7ZS5wYXJlbnJpZ2h0YnQ9Mzg0O2UuYnJhY2tldHJpZ2h0dHA9Mzg0O2UuYnJhY2tldHJpZ2h0ZXg9Mzg0O2UuYnJhY2tldHJpZ2h0YnQ9Mzg0O2UuYnJhY2VyaWdodHRwPTQ5NDtlLmJyYWNlcmlnaHRtaWQ9NDk0O2UuYnJhY2VyaWdodGJ0PTQ5NDtlLmFwcGxlPTc5MH0pO2VbIlRpbWVzLVJvbWFuIl09Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2Uuc3BhY2U9MjUwO2UuZXhjbGFtPTMzMztlLnF1b3RlZGJsPTQwODtlLm51bWJlcnNpZ249NTAwO2UuZG9sbGFyPTUwMDtlLnBlcmNlbnQ9ODMzO2UuYW1wZXJzYW5kPTc3ODtlLnF1b3RlcmlnaHQ9MzMzO2UucGFyZW5sZWZ0PTMzMztlLnBhcmVucmlnaHQ9MzMzO2UuYXN0ZXJpc2s9NTAwO2UucGx1cz01NjQ7ZS5jb21tYT0yNTA7ZS5oeXBoZW49MzMzO2UucGVyaW9kPTI1MDtlLnNsYXNoPTI3ODtlLnplcm89NTAwO2Uub25lPTUwMDtlLnR3bz01MDA7ZS50aHJlZT01MDA7ZS5mb3VyPTUwMDtlLmZpdmU9NTAwO2Uuc2l4PTUwMDtlLnNldmVuPTUwMDtlLmVpZ2h0PTUwMDtlLm5pbmU9NTAwO2UuY29sb249Mjc4O2Uuc2VtaWNvbG9uPTI3ODtlLmxlc3M9NTY0O2UuZXF1YWw9NTY0O2UuZ3JlYXRlcj01NjQ7ZS5xdWVzdGlvbj00NDQ7ZS5hdD05MjE7ZS5BPTcyMjtlLkI9NjY3O2UuQz02Njc7ZS5EPTcyMjtlLkU9NjExO2UuRj01NTY7ZS5HPTcyMjtlLkg9NzIyO2UuST0zMzM7ZS5KPTM4OTtlLks9NzIyO2UuTD02MTE7ZS5NPTg4OTtlLk49NzIyO2UuTz03MjI7ZS5QPTU1NjtlLlE9NzIyO2UuUj02Njc7ZS5TPTU1NjtlLlQ9NjExO2UuVT03MjI7ZS5WPTcyMjtlLlc9OTQ0O2UuWD03MjI7ZS5ZPTcyMjtlLlo9NjExO2UuYnJhY2tldGxlZnQ9MzMzO2UuYmFja3NsYXNoPTI3ODtlLmJyYWNrZXRyaWdodD0zMzM7ZS5hc2NpaWNpcmN1bT00Njk7ZS51bmRlcnNjb3JlPTUwMDtlLnF1b3RlbGVmdD0zMzM7ZS5hPTQ0NDtlLmI9NTAwO2UuYz00NDQ7ZS5kPTUwMDtlLmU9NDQ0O2UuZj0zMzM7ZS5nPTUwMDtlLmg9NTAwO2UuaT0yNzg7ZS5qPTI3ODtlLms9NTAwO2UubD0yNzg7ZS5tPTc3ODtlLm49NTAwO2Uubz01MDA7ZS5wPTUwMDtlLnE9NTAwO2Uucj0zMzM7ZS5zPTM4OTtlLnQ9Mjc4O2UudT01MDA7ZS52PTUwMDtlLnc9NzIyO2UueD01MDA7ZS55PTUwMDtlLno9NDQ0O2UuYnJhY2VsZWZ0PTQ4MDtlLmJhcj0yMDA7ZS5icmFjZXJpZ2h0PTQ4MDtlLmFzY2lpdGlsZGU9NTQxO2UuZXhjbGFtZG93bj0zMzM7ZS5jZW50PTUwMDtlLnN0ZXJsaW5nPTUwMDtlLmZyYWN0aW9uPTE2NztlLnllbj01MDA7ZS5mbG9yaW49NTAwO2Uuc2VjdGlvbj01MDA7ZS5jdXJyZW5jeT01MDA7ZS5xdW90ZXNpbmdsZT0xODA7ZS5xdW90ZWRibGxlZnQ9NDQ0O2UuZ3VpbGxlbW90bGVmdD01MDA7ZS5ndWlsc2luZ2xsZWZ0PTMzMztlLmd1aWxzaW5nbHJpZ2h0PTMzMztlLmZpPTU1NjtlLmZsPTU1NjtlLmVuZGFzaD01MDA7ZS5kYWdnZXI9NTAwO2UuZGFnZ2VyZGJsPTUwMDtlLnBlcmlvZGNlbnRlcmVkPTI1MDtlLnBhcmFncmFwaD00NTM7ZS5idWxsZXQ9MzUwO2UucXVvdGVzaW5nbGJhc2U9MzMzO2UucXVvdGVkYmxiYXNlPTQ0NDtlLnF1b3RlZGJscmlnaHQ9NDQ0O2UuZ3VpbGxlbW90cmlnaHQ9NTAwO2UuZWxsaXBzaXM9MWUzO2UucGVydGhvdXNhbmQ9MWUzO2UucXVlc3Rpb25kb3duPTQ0NDtlLmdyYXZlPTMzMztlLmFjdXRlPTMzMztlLmNpcmN1bWZsZXg9MzMzO2UudGlsZGU9MzMzO2UubWFjcm9uPTMzMztlLmJyZXZlPTMzMztlLmRvdGFjY2VudD0zMzM7ZS5kaWVyZXNpcz0zMzM7ZS5yaW5nPTMzMztlLmNlZGlsbGE9MzMzO2UuaHVuZ2FydW1sYXV0PTMzMztlLm9nb25laz0zMzM7ZS5jYXJvbj0zMzM7ZS5lbWRhc2g9MWUzO2UuQUU9ODg5O2Uub3JkZmVtaW5pbmU9Mjc2O2UuTHNsYXNoPTYxMTtlLk9zbGFzaD03MjI7ZS5PRT04ODk7ZS5vcmRtYXNjdWxpbmU9MzEwO2UuYWU9NjY3O2UuZG90bGVzc2k9Mjc4O2UubHNsYXNoPTI3ODtlLm9zbGFzaD01MDA7ZS5vZT03MjI7ZS5nZXJtYW5kYmxzPTUwMDtlLklkaWVyZXNpcz0zMzM7ZS5lYWN1dGU9NDQ0O2UuYWJyZXZlPTQ0NDtlLnVodW5nYXJ1bWxhdXQ9NTAwO2UuZWNhcm9uPTQ0NDtlLllkaWVyZXNpcz03MjI7ZS5kaXZpZGU9NTY0O2UuWWFjdXRlPTcyMjtlLkFjaXJjdW1mbGV4PTcyMjtlLmFhY3V0ZT00NDQ7ZS5VY2lyY3VtZmxleD03MjI7ZS55YWN1dGU9NTAwO2Uuc2NvbW1hYWNjZW50PTM4OTtlLmVjaXJjdW1mbGV4PTQ0NDtlLlVyaW5nPTcyMjtlLlVkaWVyZXNpcz03MjI7ZS5hb2dvbmVrPTQ0NDtlLlVhY3V0ZT03MjI7ZS51b2dvbmVrPTUwMDtlLkVkaWVyZXNpcz02MTE7ZS5EY3JvYXQ9NzIyO2UuY29tbWFhY2NlbnQ9MjUwO2UuY29weXJpZ2h0PTc2MDtlLkVtYWNyb249NjExO2UuY2Nhcm9uPTQ0NDtlLmFyaW5nPTQ0NDtlLk5jb21tYWFjY2VudD03MjI7ZS5sYWN1dGU9Mjc4O2UuYWdyYXZlPTQ0NDtlLlRjb21tYWFjY2VudD02MTE7ZS5DYWN1dGU9NjY3O2UuYXRpbGRlPTQ0NDtlLkVkb3RhY2NlbnQ9NjExO2Uuc2Nhcm9uPTM4OTtlLnNjZWRpbGxhPTM4OTtlLmlhY3V0ZT0yNzg7ZS5sb3plbmdlPTQ3MTtlLlJjYXJvbj02Njc7ZS5HY29tbWFhY2NlbnQ9NzIyO2UudWNpcmN1bWZsZXg9NTAwO2UuYWNpcmN1bWZsZXg9NDQ0O2UuQW1hY3Jvbj03MjI7ZS5yY2Fyb249MzMzO2UuY2NlZGlsbGE9NDQ0O2UuWmRvdGFjY2VudD02MTE7ZS5UaG9ybj01NTY7ZS5PbWFjcm9uPTcyMjtlLlJhY3V0ZT02Njc7ZS5TYWN1dGU9NTU2O2UuZGNhcm9uPTU4ODtlLlVtYWNyb249NzIyO2UudXJpbmc9NTAwO2UudGhyZWVzdXBlcmlvcj0zMDA7ZS5PZ3JhdmU9NzIyO2UuQWdyYXZlPTcyMjtlLkFicmV2ZT03MjI7ZS5tdWx0aXBseT01NjQ7ZS51YWN1dGU9NTAwO2UuVGNhcm9uPTYxMTtlLnBhcnRpYWxkaWZmPTQ3NjtlLnlkaWVyZXNpcz01MDA7ZS5OYWN1dGU9NzIyO2UuaWNpcmN1bWZsZXg9Mjc4O2UuRWNpcmN1bWZsZXg9NjExO2UuYWRpZXJlc2lzPTQ0NDtlLmVkaWVyZXNpcz00NDQ7ZS5jYWN1dGU9NDQ0O2UubmFjdXRlPTUwMDtlLnVtYWNyb249NTAwO2UuTmNhcm9uPTcyMjtlLklhY3V0ZT0zMzM7ZS5wbHVzbWludXM9NTY0O2UuYnJva2VuYmFyPTIwMDtlLnJlZ2lzdGVyZWQ9NzYwO2UuR2JyZXZlPTcyMjtlLklkb3RhY2NlbnQ9MzMzO2Uuc3VtbWF0aW9uPTYwMDtlLkVncmF2ZT02MTE7ZS5yYWN1dGU9MzMzO2Uub21hY3Jvbj01MDA7ZS5aYWN1dGU9NjExO2UuWmNhcm9uPTYxMTtlLmdyZWF0ZXJlcXVhbD01NDk7ZS5FdGg9NzIyO2UuQ2NlZGlsbGE9NjY3O2UubGNvbW1hYWNjZW50PTI3ODtlLnRjYXJvbj0zMjY7ZS5lb2dvbmVrPTQ0NDtlLlVvZ29uZWs9NzIyO2UuQWFjdXRlPTcyMjtlLkFkaWVyZXNpcz03MjI7ZS5lZ3JhdmU9NDQ0O2UuemFjdXRlPTQ0NDtlLmlvZ29uZWs9Mjc4O2UuT2FjdXRlPTcyMjtlLm9hY3V0ZT01MDA7ZS5hbWFjcm9uPTQ0NDtlLnNhY3V0ZT0zODk7ZS5pZGllcmVzaXM9Mjc4O2UuT2NpcmN1bWZsZXg9NzIyO2UuVWdyYXZlPTcyMjtlLkRlbHRhPTYxMjtlLnRob3JuPTUwMDtlLnR3b3N1cGVyaW9yPTMwMDtlLk9kaWVyZXNpcz03MjI7ZS5tdT01MDA7ZS5pZ3JhdmU9Mjc4O2Uub2h1bmdhcnVtbGF1dD01MDA7ZS5Fb2dvbmVrPTYxMTtlLmRjcm9hdD01MDA7ZS50aHJlZXF1YXJ0ZXJzPTc1MDtlLlNjZWRpbGxhPTU1NjtlLmxjYXJvbj0zNDQ7ZS5LY29tbWFhY2NlbnQ9NzIyO2UuTGFjdXRlPTYxMTtlLnRyYWRlbWFyaz05ODA7ZS5lZG90YWNjZW50PTQ0NDtlLklncmF2ZT0zMzM7ZS5JbWFjcm9uPTMzMztlLkxjYXJvbj02MTE7ZS5vbmVoYWxmPTc1MDtlLmxlc3NlcXVhbD01NDk7ZS5vY2lyY3VtZmxleD01MDA7ZS5udGlsZGU9NTAwO2UuVWh1bmdhcnVtbGF1dD03MjI7ZS5FYWN1dGU9NjExO2UuZW1hY3Jvbj00NDQ7ZS5nYnJldmU9NTAwO2Uub25lcXVhcnRlcj03NTA7ZS5TY2Fyb249NTU2O2UuU2NvbW1hYWNjZW50PTU1NjtlLk9odW5nYXJ1bWxhdXQ9NzIyO2UuZGVncmVlPTQwMDtlLm9ncmF2ZT01MDA7ZS5DY2Fyb249NjY3O2UudWdyYXZlPTUwMDtlLnJhZGljYWw9NDUzO2UuRGNhcm9uPTcyMjtlLnJjb21tYWFjY2VudD0zMzM7ZS5OdGlsZGU9NzIyO2Uub3RpbGRlPTUwMDtlLlJjb21tYWFjY2VudD02Njc7ZS5MY29tbWFhY2NlbnQ9NjExO2UuQXRpbGRlPTcyMjtlLkFvZ29uZWs9NzIyO2UuQXJpbmc9NzIyO2UuT3RpbGRlPTcyMjtlLnpkb3RhY2NlbnQ9NDQ0O2UuRWNhcm9uPTYxMTtlLklvZ29uZWs9MzMzO2Uua2NvbW1hYWNjZW50PTUwMDtlLm1pbnVzPTU2NDtlLkljaXJjdW1mbGV4PTMzMztlLm5jYXJvbj01MDA7ZS50Y29tbWFhY2NlbnQ9Mjc4O2UubG9naWNhbG5vdD01NjQ7ZS5vZGllcmVzaXM9NTAwO2UudWRpZXJlc2lzPTUwMDtlLm5vdGVxdWFsPTU0OTtlLmdjb21tYWFjY2VudD01MDA7ZS5ldGg9NTAwO2UuemNhcm9uPTQ0NDtlLm5jb21tYWFjY2VudD01MDA7ZS5vbmVzdXBlcmlvcj0zMDA7ZS5pbWFjcm9uPTI3ODtlLkV1cm89NTAwfSk7ZVsiVGltZXMtQm9sZCJdPWdldExvb2t1cFRhYmxlRmFjdG9yeShmdW5jdGlvbihlKXtlLnNwYWNlPTI1MDtlLmV4Y2xhbT0zMzM7ZS5xdW90ZWRibD01NTU7ZS5udW1iZXJzaWduPTUwMDtlLmRvbGxhcj01MDA7ZS5wZXJjZW50PTFlMztlLmFtcGVyc2FuZD04MzM7ZS5xdW90ZXJpZ2h0PTMzMztlLnBhcmVubGVmdD0zMzM7ZS5wYXJlbnJpZ2h0PTMzMztlLmFzdGVyaXNrPTUwMDtlLnBsdXM9NTcwO2UuY29tbWE9MjUwO2UuaHlwaGVuPTMzMztlLnBlcmlvZD0yNTA7ZS5zbGFzaD0yNzg7ZS56ZXJvPTUwMDtlLm9uZT01MDA7ZS50d289NTAwO2UudGhyZWU9NTAwO2UuZm91cj01MDA7ZS5maXZlPTUwMDtlLnNpeD01MDA7ZS5zZXZlbj01MDA7ZS5laWdodD01MDA7ZS5uaW5lPTUwMDtlLmNvbG9uPTMzMztlLnNlbWljb2xvbj0zMzM7ZS5sZXNzPTU3MDtlLmVxdWFsPTU3MDtlLmdyZWF0ZXI9NTcwO2UucXVlc3Rpb249NTAwO2UuYXQ9OTMwO2UuQT03MjI7ZS5CPTY2NztlLkM9NzIyO2UuRD03MjI7ZS5FPTY2NztlLkY9NjExO2UuRz03Nzg7ZS5IPTc3ODtlLkk9Mzg5O2UuSj01MDA7ZS5LPTc3ODtlLkw9NjY3O2UuTT05NDQ7ZS5OPTcyMjtlLk89Nzc4O2UuUD02MTE7ZS5RPTc3ODtlLlI9NzIyO2UuUz01NTY7ZS5UPTY2NztlLlU9NzIyO2UuVj03MjI7ZS5XPTFlMztlLlg9NzIyO2UuWT03MjI7ZS5aPTY2NztlLmJyYWNrZXRsZWZ0PTMzMztlLmJhY2tzbGFzaD0yNzg7ZS5icmFja2V0cmlnaHQ9MzMzO2UuYXNjaWljaXJjdW09NTgxO2UudW5kZXJzY29yZT01MDA7ZS5xdW90ZWxlZnQ9MzMzO2UuYT01MDA7ZS5iPTU1NjtlLmM9NDQ0O2UuZD01NTY7ZS5lPTQ0NDtlLmY9MzMzO2UuZz01MDA7ZS5oPTU1NjtlLmk9Mjc4O2Uuaj0zMzM7ZS5rPTU1NjtlLmw9Mjc4O2UubT04MzM7ZS5uPTU1NjtlLm89NTAwO2UucD01NTY7ZS5xPTU1NjtlLnI9NDQ0O2Uucz0zODk7ZS50PTMzMztlLnU9NTU2O2Uudj01MDA7ZS53PTcyMjtlLng9NTAwO2UueT01MDA7ZS56PTQ0NDtlLmJyYWNlbGVmdD0zOTQ7ZS5iYXI9MjIwO2UuYnJhY2VyaWdodD0zOTQ7ZS5hc2NpaXRpbGRlPTUyMDtlLmV4Y2xhbWRvd249MzMzO2UuY2VudD01MDA7ZS5zdGVybGluZz01MDA7ZS5mcmFjdGlvbj0xNjc7ZS55ZW49NTAwO2UuZmxvcmluPTUwMDtlLnNlY3Rpb249NTAwO2UuY3VycmVuY3k9NTAwO2UucXVvdGVzaW5nbGU9Mjc4O2UucXVvdGVkYmxsZWZ0PTUwMDtlLmd1aWxsZW1vdGxlZnQ9NTAwO2UuZ3VpbHNpbmdsbGVmdD0zMzM7ZS5ndWlsc2luZ2xyaWdodD0zMzM7ZS5maT01NTY7ZS5mbD01NTY7ZS5lbmRhc2g9NTAwO2UuZGFnZ2VyPTUwMDtlLmRhZ2dlcmRibD01MDA7ZS5wZXJpb2RjZW50ZXJlZD0yNTA7ZS5wYXJhZ3JhcGg9NTQwO2UuYnVsbGV0PTM1MDtlLnF1b3Rlc2luZ2xiYXNlPTMzMztlLnF1b3RlZGJsYmFzZT01MDA7ZS5xdW90ZWRibHJpZ2h0PTUwMDtlLmd1aWxsZW1vdHJpZ2h0PTUwMDtlLmVsbGlwc2lzPTFlMztlLnBlcnRob3VzYW5kPTFlMztlLnF1ZXN0aW9uZG93bj01MDA7ZS5ncmF2ZT0zMzM7ZS5hY3V0ZT0zMzM7ZS5jaXJjdW1mbGV4PTMzMztlLnRpbGRlPTMzMztlLm1hY3Jvbj0zMzM7ZS5icmV2ZT0zMzM7ZS5kb3RhY2NlbnQ9MzMzO2UuZGllcmVzaXM9MzMzO2UucmluZz0zMzM7ZS5jZWRpbGxhPTMzMztlLmh1bmdhcnVtbGF1dD0zMzM7ZS5vZ29uZWs9MzMzO2UuY2Fyb249MzMzO2UuZW1kYXNoPTFlMztlLkFFPTFlMztlLm9yZGZlbWluaW5lPTMwMDtlLkxzbGFzaD02Njc7ZS5Pc2xhc2g9Nzc4O2UuT0U9MWUzO2Uub3JkbWFzY3VsaW5lPTMzMDtlLmFlPTcyMjtlLmRvdGxlc3NpPTI3ODtlLmxzbGFzaD0yNzg7ZS5vc2xhc2g9NTAwO2Uub2U9NzIyO2UuZ2VybWFuZGJscz01NTY7ZS5JZGllcmVzaXM9Mzg5O2UuZWFjdXRlPTQ0NDtlLmFicmV2ZT01MDA7ZS51aHVuZ2FydW1sYXV0PTU1NjtlLmVjYXJvbj00NDQ7ZS5ZZGllcmVzaXM9NzIyO2UuZGl2aWRlPTU3MDtlLllhY3V0ZT03MjI7ZS5BY2lyY3VtZmxleD03MjI7ZS5hYWN1dGU9NTAwO2UuVWNpcmN1bWZsZXg9NzIyO2UueWFjdXRlPTUwMDtlLnNjb21tYWFjY2VudD0zODk7ZS5lY2lyY3VtZmxleD00NDQ7ZS5VcmluZz03MjI7ZS5VZGllcmVzaXM9NzIyO2UuYW9nb25laz01MDA7ZS5VYWN1dGU9NzIyO2UudW9nb25laz01NTY7ZS5FZGllcmVzaXM9NjY3O2UuRGNyb2F0PTcyMjtlLmNvbW1hYWNjZW50PTI1MDtlLmNvcHlyaWdodD03NDc7ZS5FbWFjcm9uPTY2NztlLmNjYXJvbj00NDQ7ZS5hcmluZz01MDA7ZS5OY29tbWFhY2NlbnQ9NzIyO2UubGFjdXRlPTI3ODtlLmFncmF2ZT01MDA7ZS5UY29tbWFhY2NlbnQ9NjY3O2UuQ2FjdXRlPTcyMjtlLmF0aWxkZT01MDA7ZS5FZG90YWNjZW50PTY2NztlLnNjYXJvbj0zODk7ZS5zY2VkaWxsYT0zODk7ZS5pYWN1dGU9Mjc4O2UubG96ZW5nZT00OTQ7ZS5SY2Fyb249NzIyO2UuR2NvbW1hYWNjZW50PTc3ODtlLnVjaXJjdW1mbGV4PTU1NjtlLmFjaXJjdW1mbGV4PTUwMDtlLkFtYWNyb249NzIyO2UucmNhcm9uPTQ0NDtlLmNjZWRpbGxhPTQ0NDtlLlpkb3RhY2NlbnQ9NjY3O2UuVGhvcm49NjExO2UuT21hY3Jvbj03Nzg7ZS5SYWN1dGU9NzIyO2UuU2FjdXRlPTU1NjtlLmRjYXJvbj02NzI7ZS5VbWFjcm9uPTcyMjtlLnVyaW5nPTU1NjtlLnRocmVlc3VwZXJpb3I9MzAwO2UuT2dyYXZlPTc3ODtlLkFncmF2ZT03MjI7ZS5BYnJldmU9NzIyO2UubXVsdGlwbHk9NTcwO2UudWFjdXRlPTU1NjtlLlRjYXJvbj02Njc7ZS5wYXJ0aWFsZGlmZj00OTQ7ZS55ZGllcmVzaXM9NTAwO2UuTmFjdXRlPTcyMjtlLmljaXJjdW1mbGV4PTI3ODtlLkVjaXJjdW1mbGV4PTY2NztlLmFkaWVyZXNpcz01MDA7ZS5lZGllcmVzaXM9NDQ0O2UuY2FjdXRlPTQ0NDtlLm5hY3V0ZT01NTY7ZS51bWFjcm9uPTU1NjtlLk5jYXJvbj03MjI7ZS5JYWN1dGU9Mzg5O2UucGx1c21pbnVzPTU3MDtlLmJyb2tlbmJhcj0yMjA7ZS5yZWdpc3RlcmVkPTc0NztlLkdicmV2ZT03Nzg7ZS5JZG90YWNjZW50PTM4OTtlLnN1bW1hdGlvbj02MDA7ZS5FZ3JhdmU9NjY3O2UucmFjdXRlPTQ0NDtlLm9tYWNyb249NTAwO2UuWmFjdXRlPTY2NztlLlpjYXJvbj02Njc7ZS5ncmVhdGVyZXF1YWw9NTQ5O2UuRXRoPTcyMjtlLkNjZWRpbGxhPTcyMjtlLmxjb21tYWFjY2VudD0yNzg7ZS50Y2Fyb249NDE2O2UuZW9nb25laz00NDQ7ZS5Vb2dvbmVrPTcyMjtlLkFhY3V0ZT03MjI7ZS5BZGllcmVzaXM9NzIyO2UuZWdyYXZlPTQ0NDtlLnphY3V0ZT00NDQ7ZS5pb2dvbmVrPTI3ODtlLk9hY3V0ZT03Nzg7ZS5vYWN1dGU9NTAwO2UuYW1hY3Jvbj01MDA7ZS5zYWN1dGU9Mzg5O2UuaWRpZXJlc2lzPTI3ODtlLk9jaXJjdW1mbGV4PTc3ODtlLlVncmF2ZT03MjI7ZS5EZWx0YT02MTI7ZS50aG9ybj01NTY7ZS50d29zdXBlcmlvcj0zMDA7ZS5PZGllcmVzaXM9Nzc4O2UubXU9NTU2O2UuaWdyYXZlPTI3ODtlLm9odW5nYXJ1bWxhdXQ9NTAwO2UuRW9nb25laz02Njc7ZS5kY3JvYXQ9NTU2O2UudGhyZWVxdWFydGVycz03NTA7ZS5TY2VkaWxsYT01NTY7ZS5sY2Fyb249Mzk0O2UuS2NvbW1hYWNjZW50PTc3ODtlLkxhY3V0ZT02Njc7ZS50cmFkZW1hcms9MWUzO2UuZWRvdGFjY2VudD00NDQ7ZS5JZ3JhdmU9Mzg5O2UuSW1hY3Jvbj0zODk7ZS5MY2Fyb249NjY3O2Uub25laGFsZj03NTA7ZS5sZXNzZXF1YWw9NTQ5O2Uub2NpcmN1bWZsZXg9NTAwO2UubnRpbGRlPTU1NjtlLlVodW5nYXJ1bWxhdXQ9NzIyO2UuRWFjdXRlPTY2NztlLmVtYWNyb249NDQ0O2UuZ2JyZXZlPTUwMDtlLm9uZXF1YXJ0ZXI9NzUwO2UuU2Nhcm9uPTU1NjtlLlNjb21tYWFjY2VudD01NTY7ZS5PaHVuZ2FydW1sYXV0PTc3ODtlLmRlZ3JlZT00MDA7ZS5vZ3JhdmU9NTAwO2UuQ2Nhcm9uPTcyMjtlLnVncmF2ZT01NTY7ZS5yYWRpY2FsPTU0OTtlLkRjYXJvbj03MjI7ZS5yY29tbWFhY2NlbnQ9NDQ0O2UuTnRpbGRlPTcyMjtlLm90aWxkZT01MDA7ZS5SY29tbWFhY2NlbnQ9NzIyO2UuTGNvbW1hYWNjZW50PTY2NztlLkF0aWxkZT03MjI7ZS5Bb2dvbmVrPTcyMjtlLkFyaW5nPTcyMjtlLk90aWxkZT03Nzg7ZS56ZG90YWNjZW50PTQ0NDtlLkVjYXJvbj02Njc7ZS5Jb2dvbmVrPTM4OTtlLmtjb21tYWFjY2VudD01NTY7ZS5taW51cz01NzA7ZS5JY2lyY3VtZmxleD0zODk7ZS5uY2Fyb249NTU2O2UudGNvbW1hYWNjZW50PTMzMztlLmxvZ2ljYWxub3Q9NTcwO2Uub2RpZXJlc2lzPTUwMDtlLnVkaWVyZXNpcz01NTY7ZS5ub3RlcXVhbD01NDk7ZS5nY29tbWFhY2NlbnQ9NTAwO2UuZXRoPTUwMDtlLnpjYXJvbj00NDQ7ZS5uY29tbWFhY2NlbnQ9NTU2O2Uub25lc3VwZXJpb3I9MzAwO2UuaW1hY3Jvbj0yNzg7ZS5FdXJvPTUwMH0pO2VbIlRpbWVzLUJvbGRJdGFsaWMiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09Mzg5O2UucXVvdGVkYmw9NTU1O2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTU3MDtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz01NzA7ZS5lcXVhbD01NzA7ZS5ncmVhdGVyPTU3MDtlLnF1ZXN0aW9uPTUwMDtlLmF0PTgzMjtlLkE9NjY3O2UuQj02Njc7ZS5DPTY2NztlLkQ9NzIyO2UuRT02Njc7ZS5GPTY2NztlLkc9NzIyO2UuSD03Nzg7ZS5JPTM4OTtlLko9NTAwO2UuSz02Njc7ZS5MPTYxMTtlLk09ODg5O2UuTj03MjI7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTY2NztlLlM9NTU2O2UuVD02MTE7ZS5VPTcyMjtlLlY9NjY3O2UuVz04ODk7ZS5YPTY2NztlLlk9NjExO2UuWj02MTE7ZS5icmFja2V0bGVmdD0zMzM7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTMzMztlLmFzY2lpY2lyY3VtPTU3MDtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTMzMztlLmc9NTAwO2UuaD01NTY7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz01MDA7ZS5sPTI3ODtlLm09Nzc4O2Uubj01NTY7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTU1NjtlLnY9NDQ0O2Uudz02Njc7ZS54PTUwMDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9MzQ4O2UuYmFyPTIyMDtlLmJyYWNlcmlnaHQ9MzQ4O2UuYXNjaWl0aWxkZT01NzA7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTI3ODtlLnF1b3RlZGJsbGVmdD01MDA7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTU2O2UuZmw9NTU2O2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUwMDtlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTAwO2UucXVvdGVkYmxyaWdodD01MDA7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz0xZTM7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD0xZTM7ZS5BRT05NDQ7ZS5vcmRmZW1pbmluZT0yNjY7ZS5Mc2xhc2g9NjExO2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMDA7ZS5hZT03MjI7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTcyMjtlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTM4OTtlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01NTY7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTYxMTtlLmRpdmlkZT01NzA7ZS5ZYWN1dGU9NjExO2UuQWNpcmN1bWZsZXg9NjY3O2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTU2O2UuRWRpZXJlc2lzPTY2NztlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzQ3O2UuRW1hY3Jvbj02Njc7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTcyMjtlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTYxMTtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02Njc7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDk0O2UuUmNhcm9uPTY2NztlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01NTY7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTY2NztlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTYxMTtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTY2NztlLlNhY3V0ZT01NTY7ZS5kY2Fyb249NjA4O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01NTY7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjY3O2UuQWJyZXZlPTY2NztlLm11bHRpcGx5PTU3MDtlLnVhY3V0ZT01NTY7ZS5UY2Fyb249NjExO2UucGFydGlhbGRpZmY9NDk0O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT03MjI7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02Njc7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTU2O2UudW1hY3Jvbj01NTY7ZS5OY2Fyb249NzIyO2UuSWFjdXRlPTM4OTtlLnBsdXNtaW51cz01NzA7ZS5icm9rZW5iYXI9MjIwO2UucmVnaXN0ZXJlZD03NDc7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zODk7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTY2NztlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT02MTE7ZS5aY2Fyb249NjExO2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTM2NjtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjY3O2UuQWRpZXJlc2lzPTY2NztlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTU3NjtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjY3O2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTU2O2UubGNhcm9uPTM4MjtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NjExO2UudHJhZGVtYXJrPTFlMztlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTM4OTtlLkltYWNyb249Mzg5O2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01NTY7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02Njc7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01NTY7ZS5TY29tbWFhY2NlbnQ9NTU2O2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTU2O2UucmFkaWNhbD01NDk7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT03MjI7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTY2NztlLkxjb21tYWFjY2VudD02MTE7ZS5BdGlsZGU9NjY3O2UuQW9nb25laz02Njc7ZS5BcmluZz02Njc7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjY3O2UuSW9nb25laz0zODk7ZS5rY29tbWFhY2NlbnQ9NTAwO2UubWludXM9NjA2O2UuSWNpcmN1bWZsZXg9Mzg5O2UubmNhcm9uPTU1NjtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTYwNjtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTU2O2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTU1NjtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KTtlWyJUaW1lcy1JdGFsaWMiXT1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNTA7ZS5leGNsYW09MzMzO2UucXVvdGVkYmw9NDIwO2UubnVtYmVyc2lnbj01MDA7ZS5kb2xsYXI9NTAwO2UucGVyY2VudD04MzM7ZS5hbXBlcnNhbmQ9Nzc4O2UucXVvdGVyaWdodD0zMzM7ZS5wYXJlbmxlZnQ9MzMzO2UucGFyZW5yaWdodD0zMzM7ZS5hc3Rlcmlzaz01MDA7ZS5wbHVzPTY3NTtlLmNvbW1hPTI1MDtlLmh5cGhlbj0zMzM7ZS5wZXJpb2Q9MjUwO2Uuc2xhc2g9Mjc4O2UuemVybz01MDA7ZS5vbmU9NTAwO2UudHdvPTUwMDtlLnRocmVlPTUwMDtlLmZvdXI9NTAwO2UuZml2ZT01MDA7ZS5zaXg9NTAwO2Uuc2V2ZW49NTAwO2UuZWlnaHQ9NTAwO2UubmluZT01MDA7ZS5jb2xvbj0zMzM7ZS5zZW1pY29sb249MzMzO2UubGVzcz02NzU7ZS5lcXVhbD02NzU7ZS5ncmVhdGVyPTY3NTtlLnF1ZXN0aW9uPTUwMDtlLmF0PTkyMDtlLkE9NjExO2UuQj02MTE7ZS5DPTY2NztlLkQ9NzIyO2UuRT02MTE7ZS5GPTYxMTtlLkc9NzIyO2UuSD03MjI7ZS5JPTMzMztlLko9NDQ0O2UuSz02Njc7ZS5MPTU1NjtlLk09ODMzO2UuTj02Njc7ZS5PPTcyMjtlLlA9NjExO2UuUT03MjI7ZS5SPTYxMTtlLlM9NTAwO2UuVD01NTY7ZS5VPTcyMjtlLlY9NjExO2UuVz04MzM7ZS5YPTYxMTtlLlk9NTU2O2UuWj01NTY7ZS5icmFja2V0bGVmdD0zODk7ZS5iYWNrc2xhc2g9Mjc4O2UuYnJhY2tldHJpZ2h0PTM4OTtlLmFzY2lpY2lyY3VtPTQyMjtlLnVuZGVyc2NvcmU9NTAwO2UucXVvdGVsZWZ0PTMzMztlLmE9NTAwO2UuYj01MDA7ZS5jPTQ0NDtlLmQ9NTAwO2UuZT00NDQ7ZS5mPTI3ODtlLmc9NTAwO2UuaD01MDA7ZS5pPTI3ODtlLmo9Mjc4O2Uuaz00NDQ7ZS5sPTI3ODtlLm09NzIyO2Uubj01MDA7ZS5vPTUwMDtlLnA9NTAwO2UucT01MDA7ZS5yPTM4OTtlLnM9Mzg5O2UudD0yNzg7ZS51PTUwMDtlLnY9NDQ0O2Uudz02Njc7ZS54PTQ0NDtlLnk9NDQ0O2Uuej0zODk7ZS5icmFjZWxlZnQ9NDAwO2UuYmFyPTI3NTtlLmJyYWNlcmlnaHQ9NDAwO2UuYXNjaWl0aWxkZT01NDE7ZS5leGNsYW1kb3duPTM4OTtlLmNlbnQ9NTAwO2Uuc3Rlcmxpbmc9NTAwO2UuZnJhY3Rpb249MTY3O2UueWVuPTUwMDtlLmZsb3Jpbj01MDA7ZS5zZWN0aW9uPTUwMDtlLmN1cnJlbmN5PTUwMDtlLnF1b3Rlc2luZ2xlPTIxNDtlLnF1b3RlZGJsbGVmdD01NTY7ZS5ndWlsbGVtb3RsZWZ0PTUwMDtlLmd1aWxzaW5nbGxlZnQ9MzMzO2UuZ3VpbHNpbmdscmlnaHQ9MzMzO2UuZmk9NTAwO2UuZmw9NTAwO2UuZW5kYXNoPTUwMDtlLmRhZ2dlcj01MDA7ZS5kYWdnZXJkYmw9NTAwO2UucGVyaW9kY2VudGVyZWQ9MjUwO2UucGFyYWdyYXBoPTUyMztlLmJ1bGxldD0zNTA7ZS5xdW90ZXNpbmdsYmFzZT0zMzM7ZS5xdW90ZWRibGJhc2U9NTU2O2UucXVvdGVkYmxyaWdodD01NTY7ZS5ndWlsbGVtb3RyaWdodD01MDA7ZS5lbGxpcHNpcz04ODk7ZS5wZXJ0aG91c2FuZD0xZTM7ZS5xdWVzdGlvbmRvd249NTAwO2UuZ3JhdmU9MzMzO2UuYWN1dGU9MzMzO2UuY2lyY3VtZmxleD0zMzM7ZS50aWxkZT0zMzM7ZS5tYWNyb249MzMzO2UuYnJldmU9MzMzO2UuZG90YWNjZW50PTMzMztlLmRpZXJlc2lzPTMzMztlLnJpbmc9MzMzO2UuY2VkaWxsYT0zMzM7ZS5odW5nYXJ1bWxhdXQ9MzMzO2Uub2dvbmVrPTMzMztlLmNhcm9uPTMzMztlLmVtZGFzaD04ODk7ZS5BRT04ODk7ZS5vcmRmZW1pbmluZT0yNzY7ZS5Mc2xhc2g9NTU2O2UuT3NsYXNoPTcyMjtlLk9FPTk0NDtlLm9yZG1hc2N1bGluZT0zMTA7ZS5hZT02Njc7ZS5kb3RsZXNzaT0yNzg7ZS5sc2xhc2g9Mjc4O2Uub3NsYXNoPTUwMDtlLm9lPTY2NztlLmdlcm1hbmRibHM9NTAwO2UuSWRpZXJlc2lzPTMzMztlLmVhY3V0ZT00NDQ7ZS5hYnJldmU9NTAwO2UudWh1bmdhcnVtbGF1dD01MDA7ZS5lY2Fyb249NDQ0O2UuWWRpZXJlc2lzPTU1NjtlLmRpdmlkZT02NzU7ZS5ZYWN1dGU9NTU2O2UuQWNpcmN1bWZsZXg9NjExO2UuYWFjdXRlPTUwMDtlLlVjaXJjdW1mbGV4PTcyMjtlLnlhY3V0ZT00NDQ7ZS5zY29tbWFhY2NlbnQ9Mzg5O2UuZWNpcmN1bWZsZXg9NDQ0O2UuVXJpbmc9NzIyO2UuVWRpZXJlc2lzPTcyMjtlLmFvZ29uZWs9NTAwO2UuVWFjdXRlPTcyMjtlLnVvZ29uZWs9NTAwO2UuRWRpZXJlc2lzPTYxMTtlLkRjcm9hdD03MjI7ZS5jb21tYWFjY2VudD0yNTA7ZS5jb3B5cmlnaHQ9NzYwO2UuRW1hY3Jvbj02MTE7ZS5jY2Fyb249NDQ0O2UuYXJpbmc9NTAwO2UuTmNvbW1hYWNjZW50PTY2NztlLmxhY3V0ZT0yNzg7ZS5hZ3JhdmU9NTAwO2UuVGNvbW1hYWNjZW50PTU1NjtlLkNhY3V0ZT02Njc7ZS5hdGlsZGU9NTAwO2UuRWRvdGFjY2VudD02MTE7ZS5zY2Fyb249Mzg5O2Uuc2NlZGlsbGE9Mzg5O2UuaWFjdXRlPTI3ODtlLmxvemVuZ2U9NDcxO2UuUmNhcm9uPTYxMTtlLkdjb21tYWFjY2VudD03MjI7ZS51Y2lyY3VtZmxleD01MDA7ZS5hY2lyY3VtZmxleD01MDA7ZS5BbWFjcm9uPTYxMTtlLnJjYXJvbj0zODk7ZS5jY2VkaWxsYT00NDQ7ZS5aZG90YWNjZW50PTU1NjtlLlRob3JuPTYxMTtlLk9tYWNyb249NzIyO2UuUmFjdXRlPTYxMTtlLlNhY3V0ZT01MDA7ZS5kY2Fyb249NTQ0O2UuVW1hY3Jvbj03MjI7ZS51cmluZz01MDA7ZS50aHJlZXN1cGVyaW9yPTMwMDtlLk9ncmF2ZT03MjI7ZS5BZ3JhdmU9NjExO2UuQWJyZXZlPTYxMTtlLm11bHRpcGx5PTY3NTtlLnVhY3V0ZT01MDA7ZS5UY2Fyb249NTU2O2UucGFydGlhbGRpZmY9NDc2O2UueWRpZXJlc2lzPTQ0NDtlLk5hY3V0ZT02Njc7ZS5pY2lyY3VtZmxleD0yNzg7ZS5FY2lyY3VtZmxleD02MTE7ZS5hZGllcmVzaXM9NTAwO2UuZWRpZXJlc2lzPTQ0NDtlLmNhY3V0ZT00NDQ7ZS5uYWN1dGU9NTAwO2UudW1hY3Jvbj01MDA7ZS5OY2Fyb249NjY3O2UuSWFjdXRlPTMzMztlLnBsdXNtaW51cz02NzU7ZS5icm9rZW5iYXI9Mjc1O2UucmVnaXN0ZXJlZD03NjA7ZS5HYnJldmU9NzIyO2UuSWRvdGFjY2VudD0zMzM7ZS5zdW1tYXRpb249NjAwO2UuRWdyYXZlPTYxMTtlLnJhY3V0ZT0zODk7ZS5vbWFjcm9uPTUwMDtlLlphY3V0ZT01NTY7ZS5aY2Fyb249NTU2O2UuZ3JlYXRlcmVxdWFsPTU0OTtlLkV0aD03MjI7ZS5DY2VkaWxsYT02Njc7ZS5sY29tbWFhY2NlbnQ9Mjc4O2UudGNhcm9uPTMwMDtlLmVvZ29uZWs9NDQ0O2UuVW9nb25laz03MjI7ZS5BYWN1dGU9NjExO2UuQWRpZXJlc2lzPTYxMTtlLmVncmF2ZT00NDQ7ZS56YWN1dGU9Mzg5O2UuaW9nb25laz0yNzg7ZS5PYWN1dGU9NzIyO2Uub2FjdXRlPTUwMDtlLmFtYWNyb249NTAwO2Uuc2FjdXRlPTM4OTtlLmlkaWVyZXNpcz0yNzg7ZS5PY2lyY3VtZmxleD03MjI7ZS5VZ3JhdmU9NzIyO2UuRGVsdGE9NjEyO2UudGhvcm49NTAwO2UudHdvc3VwZXJpb3I9MzAwO2UuT2RpZXJlc2lzPTcyMjtlLm11PTUwMDtlLmlncmF2ZT0yNzg7ZS5vaHVuZ2FydW1sYXV0PTUwMDtlLkVvZ29uZWs9NjExO2UuZGNyb2F0PTUwMDtlLnRocmVlcXVhcnRlcnM9NzUwO2UuU2NlZGlsbGE9NTAwO2UubGNhcm9uPTMwMDtlLktjb21tYWFjY2VudD02Njc7ZS5MYWN1dGU9NTU2O2UudHJhZGVtYXJrPTk4MDtlLmVkb3RhY2NlbnQ9NDQ0O2UuSWdyYXZlPTMzMztlLkltYWNyb249MzMzO2UuTGNhcm9uPTYxMTtlLm9uZWhhbGY9NzUwO2UubGVzc2VxdWFsPTU0OTtlLm9jaXJjdW1mbGV4PTUwMDtlLm50aWxkZT01MDA7ZS5VaHVuZ2FydW1sYXV0PTcyMjtlLkVhY3V0ZT02MTE7ZS5lbWFjcm9uPTQ0NDtlLmdicmV2ZT01MDA7ZS5vbmVxdWFydGVyPTc1MDtlLlNjYXJvbj01MDA7ZS5TY29tbWFhY2NlbnQ9NTAwO2UuT2h1bmdhcnVtbGF1dD03MjI7ZS5kZWdyZWU9NDAwO2Uub2dyYXZlPTUwMDtlLkNjYXJvbj02Njc7ZS51Z3JhdmU9NTAwO2UucmFkaWNhbD00NTM7ZS5EY2Fyb249NzIyO2UucmNvbW1hYWNjZW50PTM4OTtlLk50aWxkZT02Njc7ZS5vdGlsZGU9NTAwO2UuUmNvbW1hYWNjZW50PTYxMTtlLkxjb21tYWFjY2VudD01NTY7ZS5BdGlsZGU9NjExO2UuQW9nb25laz02MTE7ZS5BcmluZz02MTE7ZS5PdGlsZGU9NzIyO2UuemRvdGFjY2VudD0zODk7ZS5FY2Fyb249NjExO2UuSW9nb25laz0zMzM7ZS5rY29tbWFhY2NlbnQ9NDQ0O2UubWludXM9Njc1O2UuSWNpcmN1bWZsZXg9MzMzO2UubmNhcm9uPTUwMDtlLnRjb21tYWFjY2VudD0yNzg7ZS5sb2dpY2Fsbm90PTY3NTtlLm9kaWVyZXNpcz01MDA7ZS51ZGllcmVzaXM9NTAwO2Uubm90ZXF1YWw9NTQ5O2UuZ2NvbW1hYWNjZW50PTUwMDtlLmV0aD01MDA7ZS56Y2Fyb249Mzg5O2UubmNvbW1hYWNjZW50PTUwMDtlLm9uZXN1cGVyaW9yPTMwMDtlLmltYWNyb249Mjc4O2UuRXVybz01MDB9KTtlLlphcGZEaW5nYmF0cz1nZXRMb29rdXBUYWJsZUZhY3RvcnkoZnVuY3Rpb24oZSl7ZS5zcGFjZT0yNzg7ZS5hMT05NzQ7ZS5hMj05NjE7ZS5hMjAyPTk3NDtlLmEzPTk4MDtlLmE0PTcxOTtlLmE1PTc4OTtlLmExMTk9NzkwO2UuYTExOD03OTE7ZS5hMTE3PTY5MDtlLmExMT05NjA7ZS5hMTI9OTM5O2UuYTEzPTU0OTtlLmExND04NTU7ZS5hMTU9OTExO2UuYTE2PTkzMztlLmExMDU9OTExO2UuYTE3PTk0NTtlLmExOD05NzQ7ZS5hMTk9NzU1O2UuYTIwPTg0NjtlLmEyMT03NjI7ZS5hMjI9NzYxO2UuYTIzPTU3MTtlLmEyND02Nzc7ZS5hMjU9NzYzO2UuYTI2PTc2MDtlLmEyNz03NTk7ZS5hMjg9NzU0O2UuYTY9NDk0O2UuYTc9NTUyO2UuYTg9NTM3O2UuYTk9NTc3O2UuYTEwPTY5MjtlLmEyOT03ODY7ZS5hMzA9Nzg4O2UuYTMxPTc4ODtlLmEzMj03OTA7ZS5hMzM9NzkzO2UuYTM0PTc5NDtlLmEzNT04MTY7ZS5hMzY9ODIzO2UuYTM3PTc4OTtlLmEzOD04NDE7ZS5hMzk9ODIzO2UuYTQwPTgzMztlLmE0MT04MTY7ZS5hNDI9ODMxO2UuYTQzPTkyMztlLmE0ND03NDQ7ZS5hNDU9NzIzO2UuYTQ2PTc0OTtlLmE0Nz03OTA7ZS5hNDg9NzkyO2UuYTQ5PTY5NTtlLmE1MD03NzY7ZS5hNTE9NzY4O2UuYTUyPTc5MjtlLmE1Mz03NTk7ZS5hNTQ9NzA3O2UuYTU1PTcwODtlLmE1Nj02ODI7ZS5hNTc9NzAxO2UuYTU4PTgyNjtlLmE1OT04MTU7ZS5hNjA9Nzg5O2UuYTYxPTc4OTtlLmE2Mj03MDc7ZS5hNjM9Njg3O2UuYTY0PTY5NjtlLmE2NT02ODk7ZS5hNjY9Nzg2O2UuYTY3PTc4NztlLmE2OD03MTM7ZS5hNjk9NzkxO2UuYTcwPTc4NTtlLmE3MT03OTE7ZS5hNzI9ODczO2UuYTczPTc2MTtlLmE3ND03NjI7ZS5hMjAzPTc2MjtlLmE3NT03NTk7ZS5hMjA0PTc1OTtlLmE3Nj04OTI7ZS5hNzc9ODkyO2UuYTc4PTc4ODtlLmE3OT03ODQ7ZS5hODE9NDM4O2UuYTgyPTEzODtlLmE4Mz0yNzc7ZS5hODQ9NDE1O2UuYTk3PTM5MjtlLmE5OD0zOTI7ZS5hOTk9NjY4O2UuYTEwMD02Njg7ZS5hODk9MzkwO2UuYTkwPTM5MDtlLmE5Mz0zMTc7ZS5hOTQ9MzE3O2UuYTkxPTI3NjtlLmE5Mj0yNzY7ZS5hMjA1PTUwOTtlLmE4NT01MDk7ZS5hMjA2PTQxMDtlLmE4Nj00MTA7ZS5hODc9MjM0O2UuYTg4PTIzNDtlLmE5NT0zMzQ7ZS5hOTY9MzM0O2UuYTEwMT03MzI7ZS5hMTAyPTU0NDtlLmExMDM9NTQ0O2UuYTEwND05MTA7ZS5hMTA2PTY2NztlLmExMDc9NzYwO2UuYTEwOD03NjA7ZS5hMTEyPTc3NjtlLmExMTE9NTk1O2UuYTExMD02OTQ7ZS5hMTA5PTYyNjtlLmExMjA9Nzg4O2UuYTEyMT03ODg7ZS5hMTIyPTc4ODtlLmExMjM9Nzg4O2UuYTEyND03ODg7ZS5hMTI1PTc4ODtlLmExMjY9Nzg4O2UuYTEyNz03ODg7ZS5hMTI4PTc4ODtlLmExMjk9Nzg4O2UuYTEzMD03ODg7ZS5hMTMxPTc4ODtlLmExMzI9Nzg4O2UuYTEzMz03ODg7ZS5hMTM0PTc4ODtlLmExMzU9Nzg4O2UuYTEzNj03ODg7ZS5hMTM3PTc4ODtlLmExMzg9Nzg4O2UuYTEzOT03ODg7ZS5hMTQwPTc4ODtlLmExNDE9Nzg4O2UuYTE0Mj03ODg7ZS5hMTQzPTc4ODtlLmExNDQ9Nzg4O2UuYTE0NT03ODg7ZS5hMTQ2PTc4ODtlLmExNDc9Nzg4O2UuYTE0OD03ODg7ZS5hMTQ5PTc4ODtlLmExNTA9Nzg4O2UuYTE1MT03ODg7ZS5hMTUyPTc4ODtlLmExNTM9Nzg4O2UuYTE1ND03ODg7ZS5hMTU1PTc4ODtlLmExNTY9Nzg4O2UuYTE1Nz03ODg7ZS5hMTU4PTc4ODtlLmExNTk9Nzg4O2UuYTE2MD04OTQ7ZS5hMTYxPTgzODtlLmExNjM9MTAxNjtlLmExNjQ9NDU4O2UuYTE5Nj03NDg7ZS5hMTY1PTkyNDtlLmExOTI9NzQ4O2UuYTE2Nj05MTg7ZS5hMTY3PTkyNztlLmExNjg9OTI4O2UuYTE2OT05Mjg7ZS5hMTcwPTgzNDtlLmExNzE9ODczO2UuYTE3Mj04Mjg7ZS5hMTczPTkyNDtlLmExNjI9OTI0O2UuYTE3ND05MTc7ZS5hMTc1PTkzMDtlLmExNzY9OTMxO2UuYTE3Nz00NjM7ZS5hMTc4PTg4MztlLmExNzk9ODM2O2UuYTE5Mz04MzY7ZS5hMTgwPTg2NztlLmExOTk9ODY3O2UuYTE4MT02OTY7ZS5hMjAwPTY5NjtlLmExODI9ODc0O2UuYTIwMT04NzQ7ZS5hMTgzPTc2MDtlLmExODQ9OTQ2O2UuYTE5Nz03NzE7ZS5hMTg1PTg2NTtlLmExOTQ9NzcxO2UuYTE5OD04ODg7ZS5hMTg2PTk2NztlLmExOTU9ODg4O2UuYTE4Nz04MzE7ZS5hMTg4PTg3MztlLmExODk9OTI3O2UuYTE5MD05NzA7ZS5hMTkxPTkxOH0pfSks
101JHI9Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2UuQ291cmllcj17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0Oi00MjZ9O2VbIkNvdXJpZXItQm9sZCJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDM5fTtlWyJDb3VyaWVyLU9ibGlxdWUiXT17YXNjZW50OjYyOSxkZXNjZW50Oi0xNTcsY2FwSGVpZ2h0OjU2Mix4SGVpZ2h0OjQyNn07ZVsiQ291cmllci1Cb2xkT2JsaXF1ZSJdPXthc2NlbnQ6NjI5LGRlc2NlbnQ6LTE1NyxjYXBIZWlnaHQ6NTYyLHhIZWlnaHQ6NDI2fTtlLkhlbHZldGljYT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGQiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUzMn07ZVsiSGVsdmV0aWNhLU9ibGlxdWUiXT17YXNjZW50OjcxOCxkZXNjZW50Oi0yMDcsY2FwSGVpZ2h0OjcxOCx4SGVpZ2h0OjUyM307ZVsiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIl09e2FzY2VudDo3MTgsZGVzY2VudDotMjA3LGNhcEhlaWdodDo3MTgseEhlaWdodDo1MzJ9O2VbIlRpbWVzLVJvbWFuIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NjIseEhlaWdodDo0NTB9O2VbIlRpbWVzLUJvbGQiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY3Nix4SGVpZ2h0OjQ2MX07ZVsiVGltZXMtSXRhbGljIl09e2FzY2VudDo2ODMsZGVzY2VudDotMjE3LGNhcEhlaWdodDo2NTMseEhlaWdodDo0NDF9O2VbIlRpbWVzLUJvbGRJdGFsaWMiXT17YXNjZW50OjY4MyxkZXNjZW50Oi0yMTcsY2FwSGVpZ2h0OjY2OSx4SGVpZ2h0OjQ2Mn07ZS5TeW1ib2w9e2FzY2VudDpNYXRoLk5hTixkZXNjZW50Ok1hdGguTmFOLGNhcEhlaWdodDpNYXRoLk5hTix4SGVpZ2h0Ok1hdGguTmFOfTtlLlphcGZEaW5nYmF0cz17YXNjZW50Ok1hdGguTmFOLGRlc2NlbnQ6TWF0aC5OYU4sY2FwSGVpZ2h0Ok1hdGguTmFOLHhIZWlnaHQ6TWF0aC5OYU59fSk7Y2xhc3MgR2x5ZlRhYmxle2NvbnN0cnVjdG9yKHtnbHlmVGFibGU6ZSxpc0dseXBoTG9jYXRpb25zTG9uZzp0LGxvY2FUYWJsZTphLG51bUdseXBoczpyfSl7dGhpcy5nbHlwaHM9W107Y29uc3QgaT1uZXcgRGF0YVZpZXcoYS5idWZmZXIsYS5ieXRlT2Zmc2V0LGEuYnl0ZUxlbmd0aCksbj1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCkscz10PzQ6MjtsZXQgbz10P2kuZ2V0VWludDMyKDApOjIqaS5nZXRVaW50MTYoMCksYz0wO2ZvcihsZXQgZT0wO2U8cjtlKyspe2MrPXM7Y29uc3QgZT10P2kuZ2V0VWludDMyKGMpOjIqaS5nZXRVaW50MTYoYyk7aWYoZT09PW8pe3RoaXMuZ2x5cGhzLnB1c2gobmV3IEdseXBoKHt9KSk7Y29udGludWV9Y29uc3QgYT1HbHlwaC5wYXJzZShvLG4pO3RoaXMuZ2x5cGhzLnB1c2goYSk7bz1lfX1nZXRTaXplKCl7cmV0dXJuIE1hdGguc3VtUHJlY2lzZSh0aGlzLmdseXBocy5tYXAoZT0+ZS5nZXRTaXplKCkrMyYtNCkpfXdyaXRlKCl7Y29uc3QgZT10aGlzLmdldFNpemUoKSx0PW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoZSkpLGE9ZT4xMzEwNzAscj1hPzQ6MixpPW5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoKHRoaXMuZ2x5cGhzLmxlbmd0aCsxKSpyKSk7YT9pLnNldFVpbnQzMigwLDApOmkuc2V0VWludDE2KDAsMCk7bGV0IG49MCxzPTA7Zm9yKGNvbnN0IGUgb2YgdGhpcy5nbHlwaHMpe24rPWUud3JpdGUobix0KTtuPW4rMyYtNDtzKz1yO2E/aS5zZXRVaW50MzIocyxuKTppLnNldFVpbnQxNihzLG4+PjEpfXJldHVybntpc0xvY2F0aW9uTG9uZzphLGxvY2E6bmV3IFVpbnQ4QXJyYXkoaS5idWZmZXIpLGdseWY6bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIpfX1zY2FsZShlKXtmb3IobGV0IHQ9MCxhPXRoaXMuZ2x5cGhzLmxlbmd0aDt0PGE7dCsrKXRoaXMuZ2x5cGhzW3RdLnNjYWxlKGVbdF0pfX1jbGFzcyBHbHlwaHtjb25zdHJ1Y3Rvcih7aGVhZGVyOmU9bnVsbCxzaW1wbGU6dD1udWxsLGNvbXBvc2l0ZXM6YT1udWxsfSl7dGhpcy5oZWFkZXI9ZTt0aGlzLnNpbXBsZT10O3RoaXMuY29tcG9zaXRlcz1hfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0W2Escl09R2x5cGhIZWFkZXIucGFyc2UoZSx0KTtlKz1hO2lmKHIubnVtYmVyT2ZDb250b3VyczwwKXtjb25zdCBhPVtdO2Zvcig7Oyl7Y29uc3RbcixpXT1Db21wb3NpdGVHbHlwaC5wYXJzZShlLHQpO2UrPXI7YS5wdXNoKGkpO2lmKCEoMzImaS5mbGFncykpYnJlYWt9cmV0dXJuIG5ldyBHbHlwaCh7aGVhZGVyOnIsY29tcG9zaXRlczphfSl9Y29uc3QgaT1TaW1wbGVHbHlwaC5wYXJzZShlLHQsci5udW1iZXJPZkNvbnRvdXJzKTtyZXR1cm4gbmV3IEdseXBoKHtoZWFkZXI6cixzaW1wbGU6aX0pfWdldFNpemUoKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgZT10aGlzLnNpbXBsZT90aGlzLnN
101pbXBsZS5nZXRTaXplKCk6TWF0aC5zdW1QcmVjaXNlKHRoaXMuY29tcG9zaXRlcy5tYXAoZT0+ZS5nZXRTaXplKCkpKTtyZXR1cm4gdGhpcy5oZWFkZXIuZ2V0U2l6ZSgpK2V9d3JpdGUoZSx0KXtpZighdGhpcy5oZWFkZXIpcmV0dXJuIDA7Y29uc3QgYT1lO2UrPXRoaXMuaGVhZGVyLndyaXRlKGUsdCk7aWYodGhpcy5zaW1wbGUpZSs9dGhpcy5zaW1wbGUud3JpdGUoZSx0KTtlbHNlIGZvcihjb25zdCBhIG9mIHRoaXMuY29tcG9zaXRlcyllKz1hLndyaXRlKGUsdCk7cmV0dXJuIGUtYX1zY2FsZShlKXtpZighdGhpcy5oZWFkZXIpcmV0dXJuO2NvbnN0IHQ9KHRoaXMuaGVhZGVyLnhNaW4rdGhpcy5oZWFkZXIueE1heCkvMjt0aGlzLmhlYWRlci5zY2FsZSh0LGUpO2lmKHRoaXMuc2ltcGxlKXRoaXMuc2ltcGxlLnNjYWxlKHQsZSk7ZWxzZSBmb3IoY29uc3QgYSBvZiB0aGlzLmNvbXBvc2l0ZXMpYS5zY2FsZSh0LGUpfX1jbGFzcyBHbHlwaEhlYWRlcntjb25zdHJ1Y3Rvcih7bnVtYmVyT2ZDb250b3VyczplLHhNaW46dCx5TWluOmEseE1heDpyLHlNYXg6aX0pe3RoaXMubnVtYmVyT2ZDb250b3Vycz1lO3RoaXMueE1pbj10O3RoaXMueU1pbj1hO3RoaXMueE1heD1yO3RoaXMueU1heD1pfXN0YXRpYyBwYXJzZShlLHQpe3JldHVyblsxMCxuZXcgR2x5cGhIZWFkZXIoe251bWJlck9mQ29udG91cnM6dC5nZXRJbnQxNihlKSx4TWluOnQuZ2V0SW50MTYoZSsyKSx5TWluOnQuZ2V0SW50MTYoZSs0KSx4TWF4OnQuZ2V0SW50MTYoZSs2KSx5TWF4OnQuZ2V0SW50MTYoZSs4KX0pXX1nZXRTaXplKCl7cmV0dXJuIDEwfXdyaXRlKGUsdCl7dC5zZXRJbnQxNihlLHRoaXMubnVtYmVyT2ZDb250b3Vycyk7dC5zZXRJbnQxNihlKzIsdGhpcy54TWluKTt0LnNldEludDE2KGUrNCx0aGlzLnlNaW4pO3Quc2V0SW50MTYoZSs2LHRoaXMueE1heCk7dC5zZXRJbnQxNihlKzgsdGhpcy55TWF4KTtyZXR1cm4gMTB9c2NhbGUoZSx0KXt0aGlzLnhNaW49TWF0aC5yb3VuZChlKyh0aGlzLnhNaW4tZSkqdCk7dGhpcy54TWF4PU1hdGgucm91bmQoZSsodGhpcy54TWF4LWUpKnQpfX1jbGFzcyBDb250b3Vye2NvbnN0cnVjdG9yKHtmbGFnczplLHhDb29yZGluYXRlczp0LHlDb29yZGluYXRlczphfSl7dGhpcy54Q29vcmRpbmF0ZXM9dDt0aGlzLnlDb29yZGluYXRlcz1hO3RoaXMuZmxhZ3M9ZX19Y2xhc3MgU2ltcGxlR2x5cGh7Y29uc3RydWN0b3Ioe2NvbnRvdXJzOmUsaW5zdHJ1Y3Rpb25zOnR9KXt0aGlzLmNvbnRvdXJzPWU7dGhpcy5pbnN0cnVjdGlvbnM9dH1zdGF0aWMgcGFyc2UoZSx0LGEpe2NvbnN0IHI9W107Zm9yKGxldCBpPTA7aTxhO2krKyl7Y29uc3QgYT10LmdldFVpbnQxNihlKTtlKz0yO3IucHVzaChhKX1jb25zdCBpPXJbYS0xXSsxLG49dC5nZXRVaW50MTYoZSk7ZSs9Mjtjb25zdCBzPW5ldyBVaW50OEFycmF5KHQpLnNsaWNlKGUsZStuKTtlKz1uO2NvbnN0IG89W107Zm9yKGxldCBhPTA7YTxpO2UrKyxhKyspe2xldCByPXQuZ2V0VWludDgoZSk7by5wdXNoKHIpO2lmKDgmcil7Y29uc3QgaT10LmdldFVpbnQ4KCsrZSk7cl49ODtmb3IobGV0IGU9MDtlPGk7ZSsrKW8ucHVzaChyKTthKz1pfX1jb25zdCBjPVtdO2xldCBsPVtdLGg9W10sdT1bXTtjb25zdCBkPVtdO2xldCBmPTAsZz0wO2ZvcihsZXQgYT0wO2E8aTthKyspe2NvbnN0IGk9b1thXTtpZigyJmkpe2NvbnN0IGE9dC5nZXRVaW50OChlKyspO2crPTE2Jmk/YTotYTtsLnB1c2goZyl9ZWxzZSBpZigxNiZpKWwucHVzaChnKTtlbHNle2crPXQuZ2V0SW50MTYoZSk7ZSs9MjtsLnB1c2goZyl9aWYocltmXT09PWEpe2YrKztjLnB1c2gobCk7bD1bXX19Zz0wO2Y9MDtmb3IobGV0IGE9MDthPGk7YSsrKXtjb25zdCBpPW9bYV07aWYoNCZpKXtjb25zdCBhPXQuZ2V0VWludDgoZSsrKTtnKz0zMiZpP2E6LWE7aC5wdXNoKGcpfWVsc2UgaWYoMzImaSloLnB1c2goZyk7ZWxzZXtnKz10LmdldEludDE2KGUpO2UrPTI7aC5wdXNoKGcpfXUucHVzaCgxJml8NjQmaSk7aWYocltmXT09PWEpe2w9Y1tmXTtmKys7ZC5wdXNoKG5ldyBDb250b3VyKHtmbGFnczp1LHhDb29yZGluYXRlczpsLHlDb29yZGluYXRlczpofSkpO2g9W107dT1bXX19cmV0dXJuIG5ldyBTaW1wbGVHbHlwaCh7Y29udG91cnM6ZCxpbnN0cnVjdGlvbnM6c30pfWdldFNpemUoKXtsZXQgZT0yKnRoaXMuY29udG91cnMubGVuZ3RoKzIrdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoLHQ9MCxhPTA7Zm9yKGNvbnN0IHIgb2YgdGhpcy5jb250b3Vycyl7ZSs9ci5mbGFncy5sZW5ndGg7Zm9yKGxldCBpPTAsbj1yLnhDb29yZGluYXRlcy5sZW5ndGg7aTxuO2krKyl7Y29uc3Qgbj1yLnhDb29yZGluYXRlc1tpXSxzPXIueUNvb3JkaW5hdGVzW2ldO2xldCBvPU1hdGguYWJzKG4tdCk7bz4yNTU/ZSs9MjpvPjAmJihlKz0xKTt0PW47bz1NYXRoLmFicyhzLWEpO28+MjU1P2UrPTI6bz4wJiYoZSs9MSk7YT1zfX1yZXR1cm4gZX13cml0ZShlLHQpe2NvbnN0IGE9ZSxyPVtdLGk9W10sbj1bXTtsZXQgcz0wLG89MDtmb3IoY29uc3QgYSBvZiB0aGlzLmNvbnRvdXJzKXtmb3IobGV0IGU9MCx0PWEueENvb3JkaW5hdGVzLmxlbmd0aDtlPHQ7ZSsrKXtsZXQgdD1hLmZsYWdzW2VdO2NvbnN0IGM9YS54Q29vcmRpbmF0ZXNbZV07bGV0IGw9Yy1zO2lmKDA9PT1sKXt0fD0xNjtyLnB1c2goMCl9ZWxzZXtjb25zdCBlPU1hdGguYWJzKGwpO2lmKGU8PTI1NSl7dHw9bD49MD8xODoyO3IucHVzaChlKX1lbHNlIHIucHVzaChsKX1zPWM7Y29uc3QgaD1hLnlDb29yZGluYXRlc1tlXTtsPWgtbztpZigwPT09bCl7dHw9MzI7aS5wdXNoKDApfWVsc2V7Y29uc3QgZT1NYXRoLmFicyhsKTtpZihlPD0yNTUpe3R8PWw+PTA/MzY6NDtpLnB1c2goZSl9ZWxzZSBpLnB1c2gobCl9bz1oO24ucHVzaCh0KX10LnNldFVpbnQxNihlLHIubGVuZ3RoLTEpO2UrPTJ9dC5zZXRVaW50MTYoZSx0aGlzLmluc3RydWN0aW9ucy5sZW5ndGgpO2UrPTI7aWYodGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKXtuZXcgVWludDhBcnJheSh0LmJ1ZmZlciwwLHQuYnVmZmVyLmJ5dGVMZW5ndGgpLnNldCh0aGlzLmluc3RydWN0aW9ucyxlKTtlKz10aGlzLmluc3RydWN0aW9ucy5sZW5ndGh9Zm9yKGNvbnN0IGEgb2Ygbil0LnNldFVpbnQ4KGUrKyxhKTtmb3IobGV0IGE9MCxpPXIubGVuZ3RoO2E8aTthKyspe2NvbnN0IGk9clthXSxzPW5bYV07aWYoMiZzKXQuc2V0VWludDgoZSsrLGkpO2Vsc2UgaWYoISgxNiZzKSl7dC5zZXRJbnQ
101xNihlLGkpO2UrPTJ9fWZvcihsZXQgYT0wLHI9aS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1pW2FdLHM9blthXTtpZig0JnMpdC5zZXRVaW50OChlKysscik7ZWxzZSBpZighKDMyJnMpKXt0LnNldEludDE2KGUscik7ZSs9Mn19cmV0dXJuIGUtYX1zY2FsZShlLHQpe2Zvcihjb25zdCBhIG9mIHRoaXMuY29udG91cnMpaWYoMCE9PWEueENvb3JkaW5hdGVzLmxlbmd0aClmb3IobGV0IHI9MCxpPWEueENvb3JkaW5hdGVzLmxlbmd0aDtyPGk7cisrKWEueENvb3JkaW5hdGVzW3JdPU1hdGgucm91bmQoZSsoYS54Q29vcmRpbmF0ZXNbcl0tZSkqdCl9fWNsYXNzIENvbXBvc2l0ZUdseXBoe2NvbnN0cnVjdG9yKHtmbGFnczplLGdseXBoSW5kZXg6dCxhcmd1bWVudDE6YSxhcmd1bWVudDI6cix0cmFuc2Y6aSxpbnN0cnVjdGlvbnM6bn0pe3RoaXMuZmxhZ3M9ZTt0aGlzLmdseXBoSW5kZXg9dDt0aGlzLmFyZ3VtZW50MT1hO3RoaXMuYXJndW1lbnQyPXI7dGhpcy50cmFuc2Y9aTt0aGlzLmluc3RydWN0aW9ucz1ufXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0IGE9ZSxyPVtdO2xldCBpPXQuZ2V0VWludDE2KGUpO2NvbnN0IG49dC5nZXRVaW50MTYoZSsyKTtlKz00O2xldCBzLG87aWYoMSZpKXtpZigyJmkpe3M9dC5nZXRJbnQxNihlKTtvPXQuZ2V0SW50MTYoZSsyKX1lbHNle3M9dC5nZXRVaW50MTYoZSk7bz10LmdldFVpbnQxNihlKzIpfWUrPTQ7aV49MX1lbHNle2lmKDImaSl7cz10LmdldEludDgoZSk7bz10LmdldEludDgoZSsxKX1lbHNle3M9dC5nZXRVaW50OChlKTtvPXQuZ2V0VWludDgoZSsxKX1lKz0yfWlmKDgmaSl7ci5wdXNoKHQuZ2V0VWludDE2KGUpKTtlKz0yfWVsc2UgaWYoNjQmaSl7ci5wdXNoKHQuZ2V0VWludDE2KGUpLHQuZ2V0VWludDE2KGUrMikpO2UrPTR9ZWxzZSBpZigxMjgmaSl7ci5wdXNoKHQuZ2V0VWludDE2KGUpLHQuZ2V0VWludDE2KGUrMiksdC5nZXRVaW50MTYoZSs0KSx0LmdldFVpbnQxNihlKzYpKTtlKz04fWxldCBjPW51bGw7aWYoMjU2Jmkpe2NvbnN0IGE9dC5nZXRVaW50MTYoZSk7ZSs9MjtjPW5ldyBVaW50OEFycmF5KHQpLnNsaWNlKGUsZSthKTtlKz1hfXJldHVybltlLWEsbmV3IENvbXBvc2l0ZUdseXBoKHtmbGFnczppLGdseXBoSW5kZXg6bixhcmd1bWVudDE6cyxhcmd1bWVudDI6byx0cmFuc2Y6cixpbnN0cnVjdGlvbnM6Y30pXX1nZXRTaXplKCl7bGV0IGU9NCsyKnRoaXMudHJhbnNmLmxlbmd0aDsyNTYmdGhpcy5mbGFncyYmKGUrPTIrdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yOzImdGhpcy5mbGFncz90aGlzLmFyZ3VtZW50MT49LTEyOCYmdGhpcy5hcmd1bWVudDE8PTEyNyYmdGhpcy5hcmd1bWVudDI+PS0xMjgmJnRoaXMuYXJndW1lbnQyPD0xMjd8fChlKz0yKTp0aGlzLmFyZ3VtZW50MT49MCYmdGhpcy5hcmd1bWVudDE8PTI1NSYmdGhpcy5hcmd1bWVudDI+PTAmJnRoaXMuYXJndW1lbnQyPD0yNTV8fChlKz0yKTtyZXR1cm4gZX13cml0ZShlLHQpe2NvbnN0IGE9ZTsyJnRoaXMuZmxhZ3M/dGhpcy5hcmd1bWVudDE+PS0xMjgmJnRoaXMuYXJndW1lbnQxPD0xMjcmJnRoaXMuYXJndW1lbnQyPj0tMTI4JiZ0aGlzLmFyZ3VtZW50Mjw9MTI3fHwodGhpcy5mbGFnc3w9MSk6dGhpcy5hcmd1bWVudDE+PTAmJnRoaXMuYXJndW1lbnQxPD0yNTUmJnRoaXMuYXJndW1lbnQyPj0wJiZ0aGlzLmFyZ3VtZW50Mjw9MjU1fHwodGhpcy5mbGFnc3w9MSk7dC5zZXRVaW50MTYoZSx0aGlzLmZsYWdzKTt0LnNldFVpbnQxNihlKzIsdGhpcy5nbHlwaEluZGV4KTtlKz00O2lmKDEmdGhpcy5mbGFncyl7aWYoMiZ0aGlzLmZsYWdzKXt0LnNldEludDE2KGUsdGhpcy5hcmd1bWVudDEpO3Quc2V0SW50MTYoZSsyLHRoaXMuYXJndW1lbnQyKX1lbHNle3Quc2V0VWludDE2KGUsdGhpcy5hcmd1bWVudDEpO3Quc2V0VWludDE2KGUrMix0aGlzLmFyZ3VtZW50Mil9ZSs9NH1lbHNle3Quc2V0VWludDgoZSx0aGlzLmFyZ3VtZW50MSk7dC5zZXRVaW50OChlKzEsdGhpcy5hcmd1bWVudDIpO2UrPTJ9aWYoMjU2JnRoaXMuZmxhZ3Mpe3Quc2V0VWludDE2KGUsdGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RoKTtlKz0yO2lmKHRoaXMuaW5zdHJ1Y3Rpb25zLmxlbmd0aCl7bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsMCx0LmJ1ZmZlci5ieXRlTGVuZ3RoKS5zZXQodGhpcy5pbnN0cnVjdGlvbnMsZSk7ZSs9dGhpcy5pbnN0cnVjdGlvbnMubGVuZ3RofX1yZXR1cm4gZS1hfXNjYWxlKGUsdCl7fX1mdW5jdGlvbiB3cml0ZUludDE2KGUsdCxhKXtlW3RdPWE+PjgmMjU1O2VbdCsxXT0yNTUmYX1mdW5jdGlvbiB3cml0ZUludDMyKGUsdCxhKXtlW3RdPWE+PjI0JjI1NTtlW3QrMV09YT4+MTYmMjU1O2VbdCsyXT1hPj44JjI1NTtlW3QrM109MjU1JmF9ZnVuY3Rpb24gd3JpdGVEYXRhKGUsdCxhKXtpZihhIGluc3RhbmNlb2YgVWludDhBcnJheSllLnNldChhLHQpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBhKWZvcihsZXQgcj0wLGk9YS5sZW5ndGg7cjxpO3IrKyllW3QrK109MjU1JmEuY2hhckNvZGVBdChyKTtlbHNlIGZvcihjb25zdCByIG9mIGEpZVt0KytdPTI1NSZyfWNsYXNzIE9wZW5UeXBlRmlsZUJ1aWxkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5zZm50PWU7dGhpcy50YWJsZXM9T2JqZWN0LmNyZWF0ZShudWxsKX1zdGF0aWMgZ2V0U2VhcmNoUGFyYW1zKGUsdCl7bGV0IGE9MSxyPTA7Zm9yKDsoYV5lKT5hOyl7YTw8PTE7cisrfWNvbnN0IGk9YSp0O3JldHVybntyYW5nZTppLGVudHJ5OnIscmFuZ2VTaGlmdDp0KmUtaX19dG9BcnJheSgpe2xldCBlPXRoaXMuc2ZudDtjb25zdCB0PXRoaXMudGFibGVzLGE9T2JqZWN0LmtleXModCk7YS5zb3J0KCk7Y29uc3Qgcj1hLmxlbmd0aDtsZXQgaSxuLHMsbyxjLGw9MTIrMTYqcjtjb25zdCBoPVtsXTtmb3IoaT0wO2k8cjtpKyspe289dFthW2ldXTtsKz0oby5sZW5ndGgrMyYtNCk+Pj4wO2gucHVzaChsKX1jb25zdCB1PW5ldyBVaW50OEFycmF5KGwpO2ZvcihpPTA7aTxyO2krKyl7bz10W2FbaV1dO3dyaXRlRGF0YSh1LGhbaV0sbyl9InRydWUiPT09ZSYmKGU9c3RyaW5nMzIoNjU1MzYpKTt1WzBdPTI1NSZlLmNoYXJDb2RlQXQoMCk7dVsxXT0yNTUmZS5jaGFyQ29kZUF0KDEpO3VbMl09MjU1JmUuY2hhckNvZGVBdCgyKTt1Wz
101NdPTI1NSZlLmNoYXJDb2RlQXQoMyk7d3JpdGVJbnQxNih1LDQscik7Y29uc3QgZD1PcGVuVHlwZUZpbGVCdWlsZGVyLmdldFNlYXJjaFBhcmFtcyhyLDE2KTt3cml0ZUludDE2KHUsNixkLnJhbmdlKTt3cml0ZUludDE2KHUsOCxkLmVudHJ5KTt3cml0ZUludDE2KHUsMTAsZC5yYW5nZVNoaWZ0KTtsPTEyO2ZvcihpPTA7aTxyO2krKyl7Yz1hW2ldO3VbbF09MjU1JmMuY2hhckNvZGVBdCgwKTt1W2wrMV09MjU1JmMuY2hhckNvZGVBdCgxKTt1W2wrMl09MjU1JmMuY2hhckNvZGVBdCgyKTt1W2wrM109MjU1JmMuY2hhckNvZGVBdCgzKTtsZXQgZT0wO2ZvcihuPWhbaV0scz1oW2krMV07bjxzO24rPTQpe2U9ZStyZWFkVWludDMyKHUsbik+Pj4wfXdyaXRlSW50MzIodSxsKzQsZSk7d3JpdGVJbnQzMih1LGwrOCxoW2ldKTt3cml0ZUludDMyKHUsbCsxMix0W2NdLmxlbmd0aCk7bCs9MTZ9cmV0dXJuIHV9YWRkVGFibGUoZSx0KXtpZihlIGluIHRoaXMudGFibGVzKXRocm93IG5ldyBFcnJvcigiVGFibGUgIitlKyIgYWxyZWFkeSBleGlzdHMiKTt0aGlzLnRhYmxlc1tlXT10fX1jb25zdCBHcj1bNF0sVnI9WzVdLEtyPVs2XSxKcj1bN10sWXI9WzhdLFpyPVsxMiwzNV0sUXI9WzE0XSxlaT1bMjFdLHRpPVsyMl0sYWk9WzMwXSxyaT1bMzFdO2NsYXNzIFR5cGUxQ2hhclN0cmluZ3tjb25zdHJ1Y3Rvcigpe3RoaXMud2lkdGg9MDt0aGlzLmxzYj0wO3RoaXMuZmxleGluZz0hMTt0aGlzLm91dHB1dD1bXTt0aGlzLnN0YWNrPVtdfWNvbnZlcnQoZSx0LGEpe2NvbnN0IHI9ZS5sZW5ndGg7bGV0IGksbixzLG89ITE7Zm9yKGxldCBjPTA7YzxyO2MrKyl7bGV0IHI9ZVtjXTtpZihyPDMyKXsxMj09PXImJihyPShyPDw4KStlWysrY10pO3N3aXRjaChyKXtjYXNlIDE6Y2FzZSAzOmNhc2UgOTpjYXNlIDMwNzI6Y2FzZSAzMDczOmNhc2UgMzA3NDpjYXNlIDMxMDU6dGhpcy5zdGFjaz1bXTticmVhaztjYXNlIDQ6aWYodGhpcy5mbGV4aW5nKXtpZih0aGlzLnN0YWNrLmxlbmd0aDwxKXtvPSEwO2JyZWFrfWNvbnN0IGU9dGhpcy5zdGFjay5wb3AoKTt0aGlzLnN0YWNrLnB1c2goMCxlKTticmVha31vPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxHcik7YnJlYWs7Y2FzZSA1Om89dGhpcy5leGVjdXRlQ29tbWFuZCgyLFZyKTticmVhaztjYXNlIDY6bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEsS3IpO2JyZWFrO2Nhc2UgNzpvPXRoaXMuZXhlY3V0ZUNvbW1hbmQoMSxKcik7YnJlYWs7Y2FzZSA4Om89dGhpcy5leGVjdXRlQ29tbWFuZCg2LFlyKTticmVhaztjYXNlIDEwOmlmKHRoaXMuc3RhY2subGVuZ3RoPDEpe289ITA7YnJlYWt9cz10aGlzLnN0YWNrLnBvcCgpO2lmKCF0W3NdKXtvPSEwO2JyZWFrfW89dGhpcy5jb252ZXJ0KHRbc10sdCxhKTticmVhaztjYXNlIDExOnJldHVybiBvO2Nhc2UgMTM6aWYodGhpcy5zdGFjay5sZW5ndGg8Mil7bz0hMDticmVha31pPXRoaXMuc3RhY2sucG9wKCk7bj10aGlzLnN0YWNrLnBvcCgpO3RoaXMubHNiPW47dGhpcy53aWR0aD1pO3RoaXMuc3RhY2sucHVzaChpLG4pO289dGhpcy5leGVjdXRlQ29tbWFuZCgyLHRpKTticmVhaztjYXNlIDE0OnRoaXMub3V0cHV0LnB1c2goUXJbMF0pO2JyZWFrO2Nhc2UgMjE6aWYodGhpcy5mbGV4aW5nKWJyZWFrO289dGhpcy5leGVjdXRlQ29tbWFuZCgyLGVpKTticmVhaztjYXNlIDIyOmlmKHRoaXMuZmxleGluZyl7dGhpcy5zdGFjay5wdXNoKDApO2JyZWFrfW89dGhpcy5leGVjdXRlQ29tbWFuZCgxLHRpKTticmVhaztjYXNlIDMwOm89dGhpcy5leGVjdXRlQ29tbWFuZCg0LGFpKTticmVhaztjYXNlIDMxOm89dGhpcy5leGVjdXRlQ29tbWFuZCg0LHJpKTticmVhaztjYXNlIDMwNzg6aWYoYSl7Y29uc3QgZT10aGlzLnN0YWNrLmF0KC01KTt0aGlzLnNlYWM9dGhpcy5zdGFjay5zcGxpY2UoLTQsNCk7dGhpcy5zZWFjWzBdKz10aGlzLmxzYi1lO289dGhpcy5leGVjdXRlQ29tbWFuZCgwLFFyKX1lbHNlIG89dGhpcy5leGVjdXRlQ29tbWFuZCg0LFFyKTticmVhaztjYXNlIDMwNzk6aWYodGhpcy5zdGFjay5sZW5ndGg8NCl7bz0hMDticmVha310aGlzLnN0YWNrLnBvcCgpO2k9dGhpcy5zdGFjay5wb3AoKTtjb25zdCBlPXRoaXMuc3RhY2sucG9wKCk7bj10aGlzLnN0YWNrLnBvcCgpO3RoaXMubHNiPW47dGhpcy53aWR0aD1pO3RoaXMuc3RhY2sucHVzaChpLG4sZSk7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDMsZWkpO2JyZWFrO2Nhc2UgMzA4NDppZih0aGlzLnN0YWNrLmxlbmd0aDwyKXtvPSEwO2JyZWFrfWNvbnN0IGM9dGhpcy5zdGFjay5wb3AoKSxsPXRoaXMuc3RhY2sucG9wKCk7dGhpcy5zdGFjay5wdXNoKGwvYyk7YnJlYWs7Y2FzZSAzMDg4OmlmKHRoaXMuc3RhY2subGVuZ3RoPDIpe289ITA7YnJlYWt9cz10aGlzLnN0YWNrLnBvcCgpO2NvbnN0IGg9dGhpcy5zdGFjay5wb3AoKTtpZigwPT09cyYmMz09PWgpe2NvbnN0IGU9dGhpcy5zdGFjay5zcGxpY2UoLTE3LDE3KTt0aGlzLnN0YWNrLnB1c2goZVsyXStlWzBdLGVbM10rZVsxXSxlWzRdLGVbNV0sZVs2XSxlWzddLGVbOF0sZVs5XSxlWzEwXSxlWzExXSxlWzEyXSxlWzEzXSxlWzE0XSk7bz10aGlzLmV4ZWN1dGVDb21tYW5kKDEzLFpyLCEwKTt0aGlzLmZsZXhpbmc9ITE7dGhpcy5zdGFjay5wdXNoKGVbMTVdLGVbMTZdKX1lbHNlIDE9PT1zJiYwPT09aCYmKHRoaXMuZmxleGluZz0hMCk7YnJlYWs7Y2FzZSAzMDg5OmJyZWFrO2RlZmF1bHQ6d2FybignVW5rbm93biB0eXBlIDEgY2hhcnN0cmluZyBjb21tYW5kIG9mICInK3IrJyInKX1pZihvKWJyZWFrfWVsc2V7cjw9MjQ2P3ItPTEzOTpyPXI8PTI1MD8yNTYqKHItMjQ3KStlWysrY10rMTA4OnI8PTI1ND8tMjU2KihyLTI1MSktZVsrK2NdLTEwODooMjU1JmVbKytjXSk8PDI0fCgyNTUmZVsrK2NdKTw8MTZ8KDI1NSZlWysrY10pPDw4fDI1NSZlWysrY107dGhpcy5zdGFjay5wdXNoKHIpfX1yZXR1cm4gb31leGVjdXRlQ29tbWFuZChlLHQsYSl7Y29uc3Qgcj10aGlzLnN0YWNrLmxlbmd0aDtpZihlPnIpcmV0dXJuITA7Y29uc3QgaT1yLWU7Zm9yKGxldCBlPWk7ZTxyO2UrKyl7bGV0IHQ9dGhpcy5zdGFja1tlXTtpZihOdW1iZXIuaXNJbnRlZ2VyKHQpKXRoaXMub3V0cHV0LnB1c2goMjgsdD4+OCYyNTUsMjU1JnQpO2Vsc2V7dD02NTUzNip0fDA7dGhpcy5vdXRwdXQucHVzaCgyNTUsdD4+MjQmMjU1LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdCl9fXRoaXMub3V0cHV0LnB1c2goLi4udCk7YT90aGlzLnN0YWNrLnNwbGljZShpLGUpOnRoaXMuc3RhY2subGVuZ3RoPTA7cmV0dXJuITF9fWZ1bmN0aW9uIGlzSGV4RGlnaXQoZSl7cmV0dXJuIGU+PTQ4JiZlPD01N3x8ZT49NjUmJmU8PTcwfHxlPj05NyYmZTw9MTAyfWZ1bmN0aW9uIGRlY3J5cHQoZSx0LGEpe2lmKGE+PWUubGVuZ3RoKXJldHVybi
101BuZXcgVWludDhBcnJheSgwKTtsZXQgcixpLG49MHx0O2ZvcihyPTA7cjxhO3IrKyluPTUyODQ1KihlW3JdK24pKzIyNzE5JjY1NTM1O2NvbnN0IHM9ZS5sZW5ndGgtYSxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihyPWEsaT0wO2k8cztyKyssaSsrKXtjb25zdCB0PWVbcl07b1tpXT10Xm4+Pjg7bj01Mjg0NSoodCtuKSsyMjcxOSY2NTUzNX1yZXR1cm4gb31mdW5jdGlvbiBpc1NwZWNpYWwoZSl7cmV0dXJuIDQ3PT09ZXx8OTE9PT1lfHw5Mz09PWV8fDEyMz09PWV8fDEyNT09PWV8fDQwPT09ZXx8NDE9PT1lfWNsYXNzIFR5cGUxUGFyc2Vye2NvbnN0cnVjdG9yKGUsdCxhKXtpZih0KXtjb25zdCB0PWUuZ2V0Qnl0ZXMoKSxhPSEoKGlzSGV4RGlnaXQodFswXSl8fGlzV2hpdGVTcGFjZSh0WzBdKSkmJmlzSGV4RGlnaXQodFsxXSkmJmlzSGV4RGlnaXQodFsyXSkmJmlzSGV4RGlnaXQodFszXSkmJmlzSGV4RGlnaXQodFs0XSkmJmlzSGV4RGlnaXQodFs1XSkmJmlzSGV4RGlnaXQodFs2XSkmJmlzSGV4RGlnaXQodFs3XSkpO2U9bmV3IFN0cmVhbShhP2RlY3J5cHQodCw1NTY2NSw0KTpmdW5jdGlvbiBkZWNyeXB0QXNjaWkoZSx0LGEpe2xldCByPTB8dDtjb25zdCBpPWUubGVuZ3RoLG49bmV3IFVpbnQ4QXJyYXkoaT4+PjEpO2xldCBzLG87Zm9yKHM9MCxvPTA7czxpO3MrKyl7Y29uc3QgdD1lW3NdO2lmKCFpc0hleERpZ2l0KHQpKWNvbnRpbnVlO3MrKztsZXQgYTtmb3IoO3M8aSYmIWlzSGV4RGlnaXQoYT1lW3NdKTspcysrO2lmKHM8aSl7Y29uc3QgZT1wYXJzZUludChTdHJpbmcuZnJvbUNoYXJDb2RlKHQsYSksMTYpO25bbysrXT1lXnI+Pjg7cj01Mjg0NSooZStyKSsyMjcxOSY2NTUzNX19cmV0dXJuIG4uc2xpY2UoYSxvKX0odCw1NTY2NSw0KSl9dGhpcy5zZWFjQW5hbHlzaXNFbmFibGVkPSEhYTt0aGlzLnN0cmVhbT1lO3RoaXMubmV4dENoYXIoKX1yZWFkTnVtYmVyQXJyYXkoKXt0aGlzLmdldFRva2VuKCk7Y29uc3QgZT1bXTtmb3IoOzspe2NvbnN0IHQ9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT10fHwiXSI9PT10fHwifSI9PT10KWJyZWFrO2UucHVzaChwYXJzZUZsb2F0KHR8fDApKX1yZXR1cm4gZX1yZWFkTnVtYmVyKCl7Y29uc3QgZT10aGlzLmdldFRva2VuKCk7cmV0dXJuIHBhcnNlRmxvYXQoZXx8MCl9cmVhZEludCgpe2NvbnN0IGU9dGhpcy5nZXRUb2tlbigpO3JldHVybiAwfHBhcnNlSW50KGV8fDAsMTApfXJlYWRCb29sZWFuKCl7cmV0dXJuInRydWUiPT09dGhpcy5nZXRUb2tlbigpPzE6MH1uZXh0Q2hhcigpe3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1wcmV2Q2hhcigpe3RoaXMuc3RyZWFtLnNraXAoLTIpO3JldHVybiB0aGlzLmN1cnJlbnRDaGFyPXRoaXMuc3RyZWFtLmdldEJ5dGUoKX1nZXRUb2tlbigpe2xldCBlPSExLHQ9dGhpcy5jdXJyZW50Q2hhcjtmb3IoOzspe2lmKC0xPT09dClyZXR1cm4gbnVsbDtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9aWYoaXNTcGVjaWFsKHQpKXt0aGlzLm5leHRDaGFyKCk7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodCl9bGV0IGE9IiI7ZG97YSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0KTt0PXRoaXMubmV4dENoYXIoKX13aGlsZSh0Pj0wJiYhaXNXaGl0ZVNwYWNlKHQpJiYhaXNTcGVjaWFsKHQpKTtyZXR1cm4gYX1yZWFkQ2hhclN0cmluZ3MoZSx0KXtyZXR1cm4tMT09PXQ/ZTpkZWNyeXB0KGUsNDMzMCx0KX1leHRyYWN0Rm9udFByb2dyYW0oZSl7Y29uc3QgdD10aGlzLnN0cmVhbSxhPVtdLHI9W10saT1PYmplY3QuY3JlYXRlKG51bGwpO2kubGVuSVY9NDtjb25zdCBuPXtzdWJyczpbXSxjaGFyc3RyaW5nczpbXSxwcm9wZXJ0aWVzOntwcml2YXRlRGF0YTppfX07bGV0IHMsbyxjLGw7Zm9yKDtudWxsIT09KHM9dGhpcy5nZXRUb2tlbigpKTspaWYoIi8iPT09cyl7cz10aGlzLmdldFRva2VuKCk7c3dpdGNoKHMpe2Nhc2UiQ2hhclN0cmluZ3MiOnRoaXMuZ2V0VG9rZW4oKTt0aGlzLmdldFRva2VuKCk7dGhpcy5nZXRUb2tlbigpO3RoaXMuZ2V0VG9rZW4oKTtmb3IoOzspe3M9dGhpcy5nZXRUb2tlbigpO2lmKG51bGw9PT1zfHwiZW5kIj09PXMpYnJlYWs7aWYoIi8iIT09cyljb250aW51ZTtjb25zdCBlPXRoaXMuZ2V0VG9rZW4oKTtvPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjPW8+MD90LmdldEJ5dGVzKG8pOm5ldyBVaW50OEFycmF5KDApO2w9bi5wcm9wZXJ0aWVzLnByaXZhdGVEYXRhLmxlbklWO2NvbnN0IGE9dGhpcy5yZWFkQ2hhclN0cmluZ3MoYyxsKTt0aGlzLm5leHRDaGFyKCk7cz10aGlzLmdldFRva2VuKCk7Im5vYWNjZXNzIj09PXM/dGhpcy5nZXRUb2tlbigpOiIvIj09PXMmJnRoaXMucHJldkNoYXIoKTtyLnB1c2goe2dseXBoOmUsZW5jb2RlZDphfSl9YnJlYWs7Y2FzZSJTdWJycyI6dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2Zvcig7ImR1cCI9PT10aGlzLmdldFRva2VuKCk7KXtjb25zdCBlPXRoaXMucmVhZEludCgpO289dGhpcy5yZWFkSW50KCk7dGhpcy5nZXRUb2tlbigpO2M9bz4wP3QuZ2V0Qnl0ZXMobyk6bmV3IFVpbnQ4QXJyYXkoMCk7bD1uLnByb3BlcnRpZXMucHJpdmF0ZURhdGEubGVuSVY7Y29uc3Qgcj10aGlzLnJlYWRDaGFyU3RyaW5ncyhjLGwpO3RoaXMubmV4dENoYXIoKTtzPXRoaXMuZ2V0VG9rZW4oKTsibm9hY2Nlc3MiPT09cyYmdGhpcy5nZXRUb2tlbigpO2FbZV09cn1icmVhaztjYXNlIkJsdWVWYWx1ZXMiOmNhc2UiT3RoZXJCbHVlcyI6Y2FzZSJGYW1pbHlCbHVlcyI6Y2FzZSJGYW1pbHlPdGhlckJsdWVzIjpjb25zdCBlPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5sZW5ndGg+MCYmZS5sZW5ndGgsMDticmVhaztjYXNlIlN0ZW1TbmFwSCI6Y2FzZSJTdGVtU25hcFYiOm4ucHJv
101cGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXJBcnJheSgpO2JyZWFrO2Nhc2UiU3RkSFciOmNhc2UiU3RkVlciOm4ucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXJBcnJheSgpWzBdO2JyZWFrO2Nhc2UiQmx1ZVNoaWZ0IjpjYXNlImxlbklWIjpjYXNlIkJsdWVGdXp6IjpjYXNlIkJsdWVTY2FsZSI6Y2FzZSJMYW5ndWFnZUdyb3VwIjpuLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkTnVtYmVyKCk7YnJlYWs7Y2FzZSJFeHBhbnNpb25GYWN0b3IiOm4ucHJvcGVydGllcy5wcml2YXRlRGF0YVtzXT10aGlzLnJlYWROdW1iZXIoKXx8LjA2O2JyZWFrO2Nhc2UiRm9yY2VCb2xkIjpuLnByb3BlcnRpZXMucHJpdmF0ZURhdGFbc109dGhpcy5yZWFkQm9vbGVhbigpfX1mb3IoY29uc3R7ZW5jb2RlZDp0LGdseXBoOml9b2Ygcil7Y29uc3Qgcj1uZXcgVHlwZTFDaGFyU3RyaW5nLHM9ci5jb252ZXJ0KHQsYSx0aGlzLnNlYWNBbmFseXNpc0VuYWJsZWQpO2xldCBvPXIub3V0cHV0O3MmJihvPVsxNF0pO2NvbnN0IGM9e2dseXBoTmFtZTppLGNoYXJzdHJpbmc6byx3aWR0aDpyLndpZHRoLGxzYjpyLmxzYixzZWFjOnIuc2VhY307Ii5ub3RkZWYiPT09aT9uLmNoYXJzdHJpbmdzLnVuc2hpZnQoYyk6bi5jaGFyc3RyaW5ncy5wdXNoKGMpO2lmKGUuYnVpbHRJbkVuY29kaW5nKXtjb25zdCB0PWUuYnVpbHRJbkVuY29kaW5nLmluZGV4T2YoaSk7dD4tMSYmdm9pZCAwPT09ZS53aWR0aHNbdF0mJnQ+PWUuZmlyc3RDaGFyJiZ0PD1lLmxhc3RDaGFyJiYoZS53aWR0aHNbdF09ci53aWR0aCl9fXJldHVybiBufWV4dHJhY3RGb250SGVhZGVyKGUpe2xldCB0O2Zvcig7bnVsbCE9PSh0PXRoaXMuZ2V0VG9rZW4oKSk7KWlmKCIvIj09PXQpe3Q9dGhpcy5nZXRUb2tlbigpO3N3aXRjaCh0KXtjYXNlIkZvbnRNYXRyaXgiOmNvbnN0IGE9dGhpcy5yZWFkTnVtYmVyQXJyYXkoKTtlLmZvbnRNYXRyaXg9YTticmVhaztjYXNlIkVuY29kaW5nIjpjb25zdCByPXRoaXMuZ2V0VG9rZW4oKTtsZXQgaTtpZigvXlxkKyQvLnRlc3Qocikpe2k9W107Y29uc3QgZT0wfHBhcnNlSW50KHIsMTApO3RoaXMuZ2V0VG9rZW4oKTtmb3IobGV0IGE9MDthPGU7YSsrKXt0PXRoaXMuZ2V0VG9rZW4oKTtmb3IoOyJkdXAiIT09dCYmImRlZiIhPT10Oyl7dD10aGlzLmdldFRva2VuKCk7aWYobnVsbD09PXQpcmV0dXJufWlmKCJkZWYiPT09dClicmVhaztjb25zdCBlPXRoaXMucmVhZEludCgpO3RoaXMuZ2V0VG9rZW4oKTtjb25zdCBhPXRoaXMuZ2V0VG9rZW4oKTtpW2VdPWE7dGhpcy5nZXRUb2tlbigpfX1lbHNlIGk9Z2V0RW5jb2Rpbmcocik7ZS5idWlsdEluRW5jb2Rpbmc9aTticmVhaztjYXNlIkZvbnRCQm94Ijpjb25zdCBuPXRoaXMucmVhZE51bWJlckFycmF5KCk7ZS5hc2NlbnQ9TWF0aC5tYXgoblszXSxuWzFdKTtlLmRlc2NlbnQ9TWF0aC5taW4oblsxXSxuWzNdKTtlLmFzY2VudFNjYWxlZD0hMH19fX1mdW5jdGlvbiBmaW5kQmxvY2soZSx0LGEpe2NvbnN0IHI9ZS5sZW5ndGgsaT10Lmxlbmd0aCxuPXItaTtsZXQgcz1hLG89ITE7Zm9yKDtzPG47KXtsZXQgYT0wO2Zvcig7YTxpJiZlW3MrYV09PT10W2FdOylhKys7aWYoYT49aSl7cys9YTtmb3IoO3M8ciYmaXNXaGl0ZVNwYWNlKGVbc10pOylzKys7bz0hMDticmVha31zKyt9cmV0dXJue2ZvdW5kOm8sbGVuZ3RoOnN9fWNsYXNzIFR5cGUxRm9udHtjb25zdHJ1Y3RvcihlLHQsYSl7bGV0IHI9YS5sZW5ndGgxLGk9YS5sZW5ndGgyLG49dC5wZWVrQnl0ZXMoNik7Y29uc3Qgcz0xMjg9PT1uWzBdJiYxPT09blsxXTtpZihzKXt0LnNraXAoNik7cj1uWzVdPDwyNHxuWzRdPDwxNnxuWzNdPDw4fG5bMl19Y29uc3Qgbz1mdW5jdGlvbiBnZXRIZWFkZXJCbG9jayhlLHQpe2NvbnN0IGE9WzEwMSwxMDEsMTIwLDEwMSw5OV0scj1lLnBvcztsZXQgaSxuLHMsbzt0cnl7aT1lLmdldEJ5dGVzKHQpO249aS5sZW5ndGh9Y2F0Y2h7fWlmKG49PT10KXtzPWZpbmRCbG9jayhpLGEsdC0yKmEubGVuZ3RoKTtpZihzLmZvdW5kJiZzLmxlbmd0aD09PXQpcmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGkpLGxlbmd0aDp0fX13YXJuKCdJbnZhbGlkICJMZW5ndGgxIiBwcm9wZXJ0eSBpbiBUeXBlMSBmb250IC0tIHRyeWluZyB0byByZWNvdmVyLicpO2UucG9zPXI7Zm9yKDs7KXtzPWZpbmRCbG9jayhlLnBlZWtCeXRlcygyMDQ4KSxhLDApO2lmKDA9PT1zLmxlbmd0aClicmVhaztlLnBvcys9cy5sZW5ndGg7aWYocy5mb3VuZCl7bz1lLnBvcy1yO2JyZWFrfX1lLnBvcz1yO2lmKG8pcmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGUuZ2V0Qnl0ZXMobykpLGxlbmd0aDpvfTt3YXJuKCdVbmFibGUgdG8gcmVjb3ZlciAiTGVuZ3RoMSIgcHJvcGVydHkgaW4gVHlwZTEgZm9udCAtLSB1c2luZyBhcyBpcy4nKTtyZXR1cm57c3RyZWFtOm5ldyBTdHJlYW0oZS5nZXRCeXRlcyh0KSksbGVuZ3RoOnR9fSh0LHIpO25ldyBUeXBlMVBhcnNlcihvLnN0cmVhbSwhMSx3cikuZXh0cmFjdEZvbnRIZWFkZXIoYSk7aWYocyl7bj10LmdldEJ5dGVzKDYpO2k9bls1XTw8MjR8bls0XTw8MTZ8blszXTw8OHxuWzJdfWNvbnN0IGM9ZnVuY3Rpb24gZ2V0RWV4ZWNCbG9jayhlLHQpe2NvbnN0IGE9ZS5nZXRCeXRlcygpO2lmKDA9PT1hLmxlbmd0aCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImdldEVleGVjQmxvY2sgLSBubyBmb250IHByb2dyYW0gZm91bmQuIik7cmV0dXJue3N0cmVhbTpuZXcgU3RyZWFtKGEpLGxlbmd0aDphLmxlbmd0aH19KHQpLGw9bmV3IFR5cGUxUGFyc2VyKGMuc3RyZWFtLCEwLHdyKS5leHRyYWN0Rm9udFByb2dyYW0oYSk7Zm9yKGNvbnN0IGUgaW4gbC5wcm9wZXJ0aWVzKWFbZV09bC5wcm9wZXJ0aWVzW2VdO2NvbnN0IGg9bC5jaGFyc3RyaW5ncyx1PXRoaXMuZ2V0VHlwZTJDaGFyc3RyaW5ncy
101hoKSxkPXRoaXMuZ2V0VHlwZTJTdWJycyhsLnN1YnJzKTt0aGlzLmNoYXJzdHJpbmdzPWg7dGhpcy5kYXRhPXRoaXMud3JhcChlLHUsdGhpcy5jaGFyc3RyaW5ncyxkLGEpO3RoaXMuc2VhY3M9dGhpcy5nZXRTZWFjcyhsLmNoYXJzdHJpbmdzKX1nZXQgbnVtR2x5cGhzKCl7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3MubGVuZ3RoKzF9Z2V0Q2hhcnNldCgpe2NvbnN0IGU9WyIubm90ZGVmIl07Zm9yKGNvbnN0e2dseXBoTmFtZTp0fW9mIHRoaXMuY2hhcnN0cmluZ3MpZS5wdXNoKHQpO3JldHVybiBlfWdldEdseXBoTWFwcGluZyhlKXtjb25zdCB0PXRoaXMuY2hhcnN0cmluZ3M7aWYoZS5jb21wb3NpdGUpe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IobGV0IHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspe2FbZS5jTWFwLmNoYXJDb2RlT2YocildPXIrMX1yZXR1cm4gYX1jb25zdCBhPVsiLm5vdGRlZiJdO2xldCByLGk7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylhLnB1c2godFtpXS5nbHlwaE5hbWUpO2NvbnN0IG49ZS5idWlsdEluRW5jb2Rpbmc7aWYobil7cj1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBlIGluIG4pe2k9YS5pbmRleE9mKG5bZV0pO2k+PTAmJihyW2VdPWkpfX1yZXR1cm4gdHlwZTFGb250R2x5cGhNYXBwaW5nKGUscixhKX1oYXNHbHlwaElkKGUpe2lmKGU8MHx8ZT49dGhpcy5udW1HbHlwaHMpcmV0dXJuITE7aWYoMD09PWUpcmV0dXJuITA7cmV0dXJuIHRoaXMuY2hhcnN0cmluZ3NbZS0xXS5jaGFyc3RyaW5nLmxlbmd0aD4wfWdldFNlYWNzKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtjb25zdCByPWVbYV07ci5zZWFjJiYodFthKzFdPXIuc2VhYyl9cmV0dXJuIHR9Z2V0VHlwZTJDaGFyc3RyaW5ncy
101hlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpdC5wdXNoKGEuY2hhcnN0cmluZyk7cmV0dXJuIHR9Z2V0VHlwZTJTdWJycyhlKXtsZXQgdD0wO2NvbnN0IGE9ZS5sZW5ndGg7dD1hPDExMzM/MTA3OmE8MzM3Njk/MTEzMTozMjc2ODtjb25zdCByPVtdO2xldCBpO2ZvcihpPTA7aTx0O2krKylyLnB1c2goWzExXSk7Zm9yKGk9MDtpPGE7aSsrKXIucHVzaChlW2ldKTtyZXR1cm4gcn13cmFwKGUsdCxhLHIsaSl7Y29uc3Qgbj1uZXcgQ0ZGO24uaGVhZGVyPW5ldyBDRkZIZWFkZXIoMSwwLDQsNCk7bi5uYW1lcz1bZV07Y29uc3Qgcz1uZXcgQ0ZGVG9wRGljdDtzLnNldEJ5TmFtZSgidmVyc2lvbiIsMzkxKTtzLnNldEJ5TmFtZSgiTm90aWNlIiwzOTIpO3Muc2V0QnlOYW1lKCJGdWxsTmFtZSIsMzkzKTtzLnNldEJ5TmFtZSgiRmFtaWx5TmFtZSIsMzk0KTtzLnNldEJ5TmFtZSgiV2VpZ2h0IiwzOTUpO3Muc2V0QnlOYW1lKCJFbmNvZGluZyIsbnVsbCk7cy5zZXRCeU5hbWUoIkZvbnRNYXRyaXgiLGkuZm9udE1hdHJpeCk7cy5zZXRCeU5hbWUoIkZvbnRCQm94IixpLmJib3gpO3Muc2V0QnlOYW1lKCJjaGFyc2V0IixudWxsKTtzLnNldEJ5TmFtZSgiQ2hhclN0cmluZ3MiLG51bGwpO3Muc2V0QnlOYW1lKCJQcml2YXRlIixudWxsKTtuLnRvcERpY3Q9cztjb25zdCBvPW5ldyBDRkZTdHJpbmdzO28uYWRkKCJWZXJzaW9uIDAuMTEiKTtvLmFkZCgiU2VlIG9yaWdpbmFsIG5vdGljZSIpO28uYWRkKGUpO28uYWRkKGUpO28uYWRkKCJNZWRpdW0iKTtuLnN0cmluZ3M9bztuLmdsb2JhbFN1YnJJbmRleD1uZXcgQ0ZGSW5kZXg7Y29uc3QgYz10Lmxlbmd0aCxsPVsiLm5vdGRlZiJdO2xldCBoLHU7Zm9yKGg9MDtoPGM7aCsrKXtjb25zdCBlPWFbaF0uZ2x5cGhOYW1lOy0xPT09T3IuaW5kZXhPZihlKSYmby5hZGQoZSk7bC5wdXNoKGUpfW4uY2hhcnNldD1uZXcgQ0ZGQ2hhcnNldCghMSwwLGwpO2NvbnN0IGQ9bmV3IENGRkluZGV4O2QuYWRkKFsxMzksMTRdKTtmb3IoaD0wO2g8YztoKyspZC5hZGQodFtoXSk7bi5jaGFyU3RyaW5ncz1kO2NvbnN0IGY9bmV3IENGRlByaXZhdGVEaWN0O2Yuc2V0QnlOYW1lKCJTdWJycyIsbnVsbCk7Y29uc3QgZz1bIkJsdWVWYWx1ZXMiLCJPdGhlckJsdWVzIiwiRmFtaWx5Qmx1ZXMiLCJGYW1pbHlPdGhlckJsdWVzIiwiU3RlbVNuYXBIIiwiU3RlbVNuYXBWIiwiQmx1ZVNoaWZ0IiwiQmx1ZUZ1enoiLCJCbHVlU2NhbGUiLCJMYW5ndWFnZUdyb3VwIiwiRXhwYW5zaW9uRmFjdG9yIiwiRm9yY2VCb2xkIiwiU3RkSFciLCJTdGRWVyJdO2ZvcihoPTAsdT1nLmxlbmd0aDtoPHU7aCsrKXtjb25zdCBlPWdbaF07aWYoIShlIGluIGkucHJpdmF0ZURhdGEpKWNvbnRpbnVlO2NvbnN0IHQ9aS5wcml2YXRlRGF0YVtlXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihsZXQgZT10Lmxlbmd0aC0xO2U+MDtlLS0pdFtlXS09dFtlLTFdO2Yuc2V0QnlOYW1lKGUsdCl9bi50b3BEaWN0LnByaXZhdGVEaWN0PWY7Y29uc3QgcD1uZXcgQ0ZGSW5kZXg7Zm9yKGg9MCx1PXIubGVuZ3RoO2g8dTtoKyspcC5hZGQocltoXSk7Zi5zdWJyc0luZGV4PXA7cmV0dXJuIG5ldyBDRkZDb21waWxlcihuKS5jb21waWxlKCl9fWNvbnN0IGlpPVtbNTczNDQsNjM3NDNdLFsxMDQ4NTc2LDExMTQxMDldXSxuaT0xZTMsc2k9WyJhc2NlbnQiLCJiYm94IiwiYmxhY2siLCJib2xkIiwiY2hhclByb2NPcGVyYXRvckxpc3QiLCJjc3NGb250SW5mbyIsImRhdGEiLCJkZWZhdWx0Vk1ldHJpY3MiLCJkZWZhdWx0V2lkdGgiLCJkZXNjZW50IiwiZGlzYWJsZUZvbnRGYWNlIiwiZmFsbGJhY2tOYW1lIiwiZm9udEV4dHJhUHJvcGVydGllcyIsImZvbnRNYXRyaXgiLCJpc0ludmFsaWRQREZqc0ZvbnQiLCJpc1R5cGUzRm9udCIsIml0YWxpYyIsImxvYWRlZE5hbWUiLCJtaW1ldHlwZSIsIm1pc3NpbmdGaWxlIiwibmFtZSIsInJlbWVhc3VyZSIsInN5c3RlbUZvbnRJbmZvIiwidmVydGljYWwiXSxvaT1bImNNYXAiLCJjb21wb3NpdGUiLCJkZWZhdWx0RW5jb2RpbmciLCJkaWZmZXJlbmNlcyIsImlzTW9ub3NwYWNlIiwiaXNTZXJpZkZvbnQiLCJpc1N5bWJvbGljRm9udCIsInNlYWNNYXAiLCJzdWJ0eXBlIiwidG9Gb250Q2hhciIsInRvVW5pY29kZSIsInR5cGUiLCJ2bWV0cmljcyIsIndpZHRocyJdO2Z1bmN0aW9uIGFkanVzdFdpZHRocyhlKXtpZighZS5mb250TWF0cml4KXJldHVybjtpZihlLmZvbnRNYXRyaXhbMF09PT10WzBdKXJldHVybjtjb25zdCBhPS4wMDEvZS5mb250TWF0cml4WzBdLHI9ZS53aWR0aHM7Zm9yKGNvbnN0IGUgaW4gcilyW2VdKj1hO2UuZGVmYXVsdFdpZHRoKj1hfWZ1bmN0aW9uIGFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoZSl7aWYoIWUuZmFsbGJhY2tUb1VuaWNvZGUpcmV0dXJuO2lmKGUudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXApcmV0dXJuO2NvbnN0IHQ9W107Zm9yKGNvbnN0IGEgaW4gZS5mYWxsYmFja1RvVW5pY29kZSllLnRvVW5pY29kZS5oYXMoYSl8fCh0W2FdPWUuZmFsbGJhY2tUb1VuaWNvZGVbYV0pO3QubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKHQpfWNsYXNzIGZvbnRzX0dseXBoe2NvbnN0cnVjdG9yKGUsdCxhLHIsaSxuLHMsbyxjKXt0aGlzLm9yaWdpbmFsQ2hhckNvZGU9ZTt0aGlzLmZvbnRDaGFyPXQ7dGhpcy51bmljb2RlPWE7dGhpcy5hY2NlbnQ9cjt0aGlzLndpZHRoPWk7dGhpcy52bWV0cmljPW47dGhpcy5vcGVyYXRvckxpc3RJZD1zO3RoaXMuaXNTcGFjZT1vO3RoaXMuaXNJbkZvbnQ9Y31nZXQgY2F0ZWdvcnkoKXtyZXR1cm4gc2hhZG93KHRoaXMsImNhdGVnb3J5IixmdW5jdGlvbiBnZXRDaGFyVW5pY29kZUNhdGVnb3J5KGUpe2NvbnN0IHQ9eXIuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgYT1lLm1hdGNoKGJyKSxyPXtpc1doaXRlc3BhY2U6ISFhPy5bMV0saXNaZXJvV2lkdGhEaWFjcml0aWM6ISFhPy5bMl0saXNJbnZpc2libGVGb3JtYXRNYXJrOiEhYT8uWzNdfTt5ci5zZXQoZSxyKTtyZXR1cm4gcn0odGhpcy51bmljb2RlKSwhMCl9fWZ1bmN0aW9uIGludDE2KGUsdCl7cmV0dXJuKGU8PDgpK3R9ZnVuY3Rpb24gd3JpdGVTaWduZWRJbnQxNihlLHQsYSl7ZVt0KzFdPWE7ZVt0XT1hPj4+OH1mdW5jdGlvbiBzaWduZWRJbnQxNihlLHQpe2NvbnN0IGE9KGU8PDgpK3Q7cmV0dXJuIDMyNzY4JmE/YS02NTUzNjphfWZ1bmN0aW9uIHN0cmluZzE2KGUpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBzYWZlU3RyaW5nMTYoZSl7ZT4zMjc2Nz9lPTMyNzY3OmU8LTMyNzY4JiYoZT0tMzI3NjgpO3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGU+PjgmMjU1LDI1NSZlKX1mdW5jdGlvbiBpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUoZSl7cmV0dXJuInR0Y2YiPT09Ynl0ZXNUb1N0cmluZyhlLnBlZWtCeXRlcyg0KSl9ZnVuY3Rpb24gZ2V0Rm9udEZpbGVUeXBlKGUse3R5cGU6dCxzdWJ0eXBlOmEsY29tcG9zaXRlOnJ9KXtsZXQgaSxuO2lmKGZ1bmN0aW9uIGlzVHJ1ZVR5cGVGaWxlKGUpe2NvbnN0IHQ9ZS5wZWVrQnl0ZXMoNCk7cmV0dXJuIDY1NTM2PT09cmVhZFVpbnQzMih0LDApfHwidHJ1ZSI9PT1ieXRlc1RvU3RyaW5nKHQpfShlKXx8aXNUcnVlVHlwZUNvbGxlY3Rpb25GaWxlKGUpKWk9cj8iQ0lERm9udFR5cGUyIjoiVHJ1ZVR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNPcGVuVHlwZUZpbGUoZSl7cmV0dXJuIk9UVE8iPT09Ynl0ZXNUb1N0cmluZyhlLnBlZWtCeXRlcyg0KSl9KGUpKWk9cj8iQ0lERm9udFR5cGUyIjoiT3BlblR5cGUiO2Vsc2UgaWYoZnVuY3Rpb24gaXNUeXBlMUZpbGUoZSl7Y29uc3QgdD1lLnBlZWtCeXRlcygyKTtyZXR1cm4gMzc9PT10WzBdJiYzMz09PXRbMV18fDEyOD09PXRbMF0mJjE9PT10WzFdfShlKSlpPXI/IkNJREZvbnRUeXBlMCI6Ik1NVHlwZTEiPT09dD8iTU1UeXBlMSI6IlR5cGUxIjtlbHNlIGlmKGZ1bmN0aW9uIGlzQ0ZGRmlsZShlKXtjb25zdCB0PWUucGVla0J5dGVzKDQpO3JldHVybiB0WzBdPj0xJiZ0WzNdPj0xJiZ0WzNdPD00fShlKSlpZihyKXtpPSJDSURGb250VHlwZTAiO249IkNJREZvbnRUeXBlMEMifWVsc2V7aT0iTU1UeXBlMSI9PT10PyJNTVR5cGUxIjoiVHlwZTEiO249IlR5cGUxQyJ9ZWxzZXt3YXJuKCJnZXRGb250RmlsZVR5cGU6IFVuYWJsZSB0byBkZXRlY3QgY29ycmVjdCBmb250IGZpbGUgVHlwZS9TdWJ0eXBlLiIpO2k9dDtuPWF9cmV0dXJuW2ksbl19ZnVuY3Rpb24gYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChlLHQpe2Zvcihjb25zdCBhIGluIHQpZVsrYV09dFthXX1mdW5jdGlvbiBidWlsZFRvRm9udENoYXIoZSx0LGEpe2NvbnN0IHI9W107bGV0IGk7Zm9yKGxldCBhPTAsbj1lLmxlbmd0aDthPG47YSsrKXtpPWdldFVuaWNvZGVGb3JHbHlwaChlW2FdLHQpOy0xIT09aSYmKHJbYV09aSl9Zm9yKGNvbnN0IGUgaW4gYSl7aT1nZXRVbmljb2RlRm9yR2x5cGgoYVtlXSx0KTstMSE9PWkmJihyWytlXT1pKX1yZXR1cm4gcn1mdW5jdGlvbiBpc01hY05hbWVSZWNvcmQoZSl7cmV0dXJuIDE9PT1lLnBsYXRmb3JtJiYwPT09ZS5lbmNvZGluZyYmMD09PWUubGFuZ3VhZ2V9ZnVuY3Rpb24gaXNXaW5OYW1lUmVjb3JkKGUpe3JldHVybiAzPT09ZS5wbGF0Zm9ybSYmMT09PWUuZW5jb2RpbmcmJjEwMzM9PT1lLmxhbmd1YWdlfWZ1bmN0aW9uIGNvbnZlcnRDaWRTdHJpbmcoZSx0LGE9ITEpe3N3aXRjaC
101h0Lmxlbmd0aCl7Y2FzZSAxOnJldHVybiB0LmNoYXJDb2RlQXQoMCk7Y2FzZSAyOnJldHVybiB0LmNoYXJDb2RlQXQoMCk8PDh8dC5jaGFyQ29kZUF0KDEpfWNvbnN0IHI9YFVuc3VwcG9ydGVkIENJRCBzdHJpbmcgKGNoYXJDb2RlICR7ZX0pOiAiJHt0fSIuYDtpZihhKXRocm93IG5ldyBGb3JtYXRFcnJvcihyKTt3YXJuKHIpO3JldHVybiB0fWZ1bmN0aW9uIGFkanVzdE1hcHBpbmcoZSx0LGEscil7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpLG49bmV3IE1hcCxzPVtdLG89bmV3IFNldDtsZXQgYz0wO2xldCBsPWlpW2NdWzBdLGg9aWlbY11bMV07Y29uc3QgaXNJblByaXZhdGVBcmVhPWU9PmlpWzBdWzBdPD1lJiZlPD1paVswXVsxXXx8aWlbMV1bMF08PWUmJmU8PWlpWzFdWzFdO2xldCB1PW51bGw7Zm9yKGNvbnN0IGQgaW4gZSl7bGV0IGY9ZVtkXTtpZighdChmKSljb250aW51ZTtpZihsPmgpe2MrKztpZihjPj1paS5sZW5ndGgpe3dhcm4oIlJhbiBvdXQgb2Ygc3BhY2UgaW4gZm9udCBwcml2YXRlIHVzZSBhcmVhLiIpO2JyZWFrfWw9aWlbY11bMF07aD1paVtjXVsxXX1jb25zdCBnPWwrKzswPT09ZiYmKGY9YSk7bGV0IHA9ci5nZXQoZCk7aWYoInN0cmluZyI9PXR5cGVvZiBwKWlmKDE9PT1wLmxlbmd0aClwPXAuY29kZVBvaW50QXQoMCk7ZWxzZXtpZighdSl7dT1uZXcgTWFwO2ZvcihsZXQgZT02NDI1NjtlPD02NDMzNTtlKyspe2NvbnN0IHQ9U3RyaW5nLmZyb21DaGFyQ29kZShlKS5ub3JtYWxpemUoIk5GS0QiKTt0Lmxlbmd0aD4xJiZ1LnNldCh0LGUpfX1wPXUuZ2V0KHApfHxwLmNvZGVQb2ludEF0KDApfWlmKHAmJiFpc0luUHJpdmF0ZUFyZWEocCkmJiFvLmhhcyhmKSl7bi5zZXQocCxmKTtvLmFkZChmKX1pW2ddPWY7c1tkXT1nfXJldHVybnt0b0ZvbnRDaGFyOnMsY2hhckNvZGVUb0dseXBoSWQ6aSx0b1VuaWNvZGVFeHRyYU1hcDpuLG5leHRBdmFpbGFibGVGb250Q2hhckNvZGU6bH19ZnVuY3Rpb24gY3JlYXRlQ21hcFRhYmxlKGUsdCxhKXtjb25zdCByPWZ1bmN0aW9uIGdldFJhbmdlcyhlLHQsYSl7Y29uc3Qgcj1bXTtmb3IoY29uc3QgdCBpbiBlKWVbdF0+PWF8fHIucHVzaCh7Zm9udENoYXJDb2RlOjB8dCxnbHlwaElkOmVbdF19KTtpZih0KWZvcihjb25zdFtlLGldb2YgdClpPj1hfHxyLnB1c2goe2ZvbnRDaGFyQ29kZTplLGdseXBoSWQ6aX0pOzA9PT1yLmxlbmd0aCYmci5wdXNoKHtmb250Q2hhckNvZGU6MCxnbHlwaElkOjB9KTtyLnNvcnQoKGUsdCk9PmUuZm9udENoYXJDb2RlLXQuZm9udENoYXJDb2RlKTtjb25zdCBpPVtdLG49ci5sZW5ndGg7Zm9yKGxldCBlPTA7ZTxuOyl7Y29uc3QgdD1yW2VdLmZvbnRDaGFyQ29kZSxhPVtyW2VdLmdseXBoSWRdOysrZTtsZXQgcz10O2Zvcig7ZTxuJiZzKzE9PT1yW2VdLmZvbnRDaGFyQ29kZTspe2EucHVzaChyW2VdLmdseXBoSWQpOysrczsrK2U7aWYoNjU1MzU9PT1zKWJyZWFrfWkucHVzaChbdCxzLGFdKX1yZXR1cm4gaX0oZSx0LGEpLGk9ci5hdCgtMSlbMV0+NjU1MzU/MjoxO2xldCBuLHMsbyxjLGw9IlwwXDAiK3N0cmluZzE2KGkpKyJcMANcMAEiK3N0cmluZzMyKDQrOCppKTtmb3Iobj1yLmxlbmd0aC0xO24+PTAmJiEocltuXVswXTw9NjU1MzUpOy0tbik7Y29uc3QgaD1uKzE7cltuXVswXTw2NTUzNSYmNjU1MzU9PT1yW25dWzFdJiYocltuXVsxXT02NTUzNCk7Y29uc3QgdT1yW25dWzFdPDY1NTM1PzE6MCxkPWgrdSxmPU9wZW5UeXBlRmlsZUJ1aWxkZXIuZ2V0U2VhcmNoUGFyYW1zKGQsMik7bGV0IGcscCxtLGIseT0iIix3PSIiLHg9IiIsUz0iIixrPSIiLEM9MDtmb3Iobj0wLHM9aDtuPHM7bisrKXtnPXJbbl07cD1nWzBdO209Z1sxXTt5Kz1zdHJpbmcxNihwKTt3Kz1zdHJpbmcxNihtKTtiPWdbMl07bGV0IGU9ITA7Zm9yKG89MSxjPWIubGVuZ3RoO288YzsrK28paWYoYltvXSE9PWJbby0xXSsxKXtlPSExO2JyZWFrfWlmKGUpe3grPXN0cmluZzE2KGJbMF0tcCY2NTUzNSk7Uys9c3RyaW5nMTYoMCl9ZWxzZXtjb25zdCBlPTIqKGQtbikrMipDO0MrPW0tcCsxO3grPXN0cmluZzE2KDApO1MrPXN0cmluZzE2KGUpO2ZvcihvPTAsYz1iLmxlbmd0aDtvPGM7KytvKWsrPXN0cmluZzE2KGJbb10pfX1pZih1PjApe3crPSLDv8O/Ijt5Kz0iw7/DvyI7eCs9IlwwASI7Uys9IlwwXDAifWNvbnN0IHY9IlwwXDAiK3N0cmluZzE2KDIqZCkrc3RyaW5nMTYoZi5yYW5nZSkrc3RyaW5nMTYoZi5lbnRyeSkrc3RyaW5nMTYoZi5yYW5nZVNoaWZ0KSt3KyJcMFwwIit5K3grUytrO2xldCBGPSIiLFQ9IiI7aWYoaT4xKXtsKz0iXDADXDBcbiIrc3RyaW5nMzIoNCs4KmkrNCt2Lmxlbmd0aCk7Rj0iIjtmb3Iobj0wLHM9ci5sZW5ndGg7bjxzO24rKyl7Zz1yW25dO3A9Z1swXTtiPWdbMl07bGV0IGU9YlswXTtmb3Iobz0xLGM9Yi5sZW5ndGg7bzxjOysrbylpZihiW29dIT09YltvLTFdKzEpe209Z1swXStvLTE7Ris9c3RyaW5nMzIocCkrc3RyaW5nMzIobSkrc3RyaW5nMzIoZSk7cD1tKzE7ZT1iW29dfUYrPXN0cmluZzMyKHApK3N0cmluZzMyKGdbMV0pK3N0cmluZzMyKGUpfVQ9IlwwXGZcMFwwIitzdHJpbmczMihGLmxlbmd0aCsxNikrIlwwXDBcMFwwIitzdHJpbmczMihGLmxlbmd0aC8xMil9cmV0dXJuIGwrIlwwBCIrc3RyaW5nMTYodi5sZW5ndGgrNCkrditUK0Z9ZnVuY3Rpb24gY3JlYXRlT1MyVGFibGUoZSx0LGEpe2F8fD17dW5pdHNQZXJFbTowLHlNYXg6MCx5TWluO
101jAsYXNjZW50OjAsZGVzY2VudDowfTtsZXQgcj0wLGk9MCxuPTAscz0wLG89bnVsbCxjPTAsbD0tMTtpZih0KXtmb3IobGV0IGUgaW4gdCl7ZXw9MDsobz5lfHwhbykmJihvPWUpO2M8ZSYmKGM9ZSk7bD1nZXRVbmljb2RlUmFuZ2VGb3IoZSxsKTtpZihsPDMyKXJ8PTE8PGw7ZWxzZSBpZihsPDY0KWl8PTE8PGwtMzI7ZWxzZSBpZihsPDk2KW58PTE8PGwtNjQ7ZWxzZXtpZighKGw8MTIzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVuaWNvZGUgcmFuZ2VzIEJpdHMgPiAxMjMgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2FnZSIpO3N8PTE8PGwtOTZ9fWM+NjU1MzUmJihjPTY1NTM1KX1lbHNle289MDtjPTI1NX1jb25zdCBoPWUuYmJveHx8WzAsMCwwLDBdLHU9YS51bml0c1BlckVtfHwoZS5mb250TWF0cml4PzEvTWF0aC5tYXgoLi4uZS5mb250TWF0cml4LnNsaWNlKDAsNCkubWFwKE1hdGguYWJzKSk6MWUzKSxkPWUuYXNjZW50U2NhbGVkPzE6dS9uaSxmPWEuYXNjZW50fHxNYXRoLnJvdW5kKGQqKGUuYXNjZW50fHxoWzNdKSk7bGV0IGc9YS5kZXNjZW50fHxNYXRoLnJvdW5kKGQqKGUuZGVzY2VudHx8aFsxXSkpO2c+MCYmZS5kZXNjZW50PjAmJmhbMV08MCYmKGc9LWcpO2NvbnN0IHA9YS55TWF4fHxmLG09LWEueU1pbnx8LWc7cmV0dXJuIlwwAwIkAcO0XDAFXDBcMALCigLCu1wwXDBcMMKMAsKKAsK7XDBcMAHDn1x4MDAxAQJcMFwwXDBcMAYiK1N0cmluZy5mcm9tQ2hhckNvZGUoZS5maXhlZFBpdGNoPzk6MCkrIlwwXDBcMFwwXDBcMCIrc3RyaW5nMzIocikrc3RyaW5nMzIoaSkrc3RyaW5nMzIobikrc3RyaW5nMzIocykrIioyMSoiK3N0cmluZzE2KGUuaXRhbGljQW5nbGU
101/MTowKStzdHJpbmcxNihvfHxlLmZpcnN0Q2hhcikrc3RyaW5nMTYoY3x8ZS5sYXN0Q2hhcikrc3RyaW5nMTYoZikrc3RyaW5nMTYoZykrIlwwZCIrc3RyaW5nMTYocCkrc3RyaW5nMTYobSkrIlwwXDBcMFwwXDBcMFwwXDAiK3N0cmluZzE2KGUueEhlaWdodCkrc3RyaW5nMTYoZS5jYXBIZWlnaHQpK3N0cmluZzE2KDApK3N0cmluZzE2KG98fGUuZmlyc3RDaGFyKSsiXDADIn1mdW5jdGlvbiBjcmVhdGVQb3N0VGFibGUoZSl7cmV0dXJuIlwwA1wwXDAiK3N0cmluZzMyKE1hdGguZmxvb3IoNjU1MzYqZS5pdGFsaWNBbmdsZSkpKyJcMFwwXDBcMCIrc3RyaW5nMzIoZS5maXhlZFBpdGNoPzE6MCkrIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIn1mdW5jdGlvbiBjcmVhdGVQb3N0c2NyaXB0TmFtZShlKXtyZXR1cm4gZS5yZXBsYWNlQWxsKC9bXlx4MjEtXHg3RV18W1tcXSgpe308Pi8lXS9nLCIiKS5zbGljZSgwLDYzKX1mdW5jdGlvbiBjcmVhdGVOYW1lVGFibGUoZSx0KXt0fHwodD1bW10sW11dKTtjb25zdCBhPVt0WzBdWzBdfHwiT3JpZ2luYWwgbGljZW5jZSIsdFswXVsxXXx8ZSx0WzBdWzJdfHwiVW5rbm93biIsdFswXVszXXx8InVuaXF1ZUlEIix0WzBdWzRdfHxlLHRbMF1bNV18fCJWZXJzaW9uIDAuMTEiLHRbMF1bNl18fGNyZWF0ZVBvc3RzY3JpcHROYW1lKGUpLHRbMF1bN118fCJVbmtub3duIix0WzBdWzhdfHwiVW5rbm93biIsdFswXVs5XXx8IlVua25vd24iXSxyPVtdO2xldCBpLG4scyxvLGM7Zm9yKGk9MCxuPWEubGVuZ3RoO2k8bjtpKyspe2M9dFsxXVtpXXx8YVtpXTtjb25zdCBlPVtdO2ZvcihzPTAsbz1jLmxlbmd0aDtzPG87cysrKWUucHVzaChzdHJpbmcxNihjLmNoYXJDb2RlQXQocykpKTtyLnB1c2goZS5qb2luKCIiKSl9Y29uc3QgbD1bYSxyXSxoPVsiXDABIiwiXDADIl0sdT1bIlwwXDAiLCJcMAEiXSxkPVsiXDBcMCIsIgRcdCJdLGY9YS5sZW5ndGgqaC5sZW5ndGg7bGV0IGc9IlwwXDAiK3N0cmluZzE2KGYpK3N0cmluZzE2KDEyKmYrNikscD0wO2ZvcihpPTAsbj1oLmxlbmd0aDtpPG47aSsrKXtjb25zdCBlPWxbaV07Zm9yKHM9MCxvPWUubGVuZ3RoO3M8bztzKyspe2M9ZVtzXTtnKz1oW2ldK3VbaV0rZFtpXStzdHJpbmcxNihzKStzdHJpbmcxNihjLmxlbmd0aCkrc3RyaW5nMTYocCk7cCs9Yy5sZW5ndGh9fWcrPWEuam9pbigiIikrci5qb2luKCIiKTtyZXR1cm4gZ31jbGFzcyBGb250e2NvbnN0cnVjdG9yKGUsdCxhLHIpe3RoaXMubmFtZT1lO3RoaXMucHNOYW1lPW51bGw7dGhpcy5taW1ldHlwZT1udWxsO3RoaXMuZGlzYWJsZUZvbnRGYWNlPXIuZGlzYWJsZUZvbnRGYWNlO3RoaXMuZm9udEV4dHJhUHJvcGVydGllcz1yLmZvbnRFeHRyYVByb3BlcnRpZXM7dGhpcy5sb2FkZWROYW1lPWEubG9hZGVkTmFtZTt0aGlzLmlzVHlwZTNGb250PWEuaXNUeXBlM0ZvbnQ7dGhpcy5taXNzaW5nRmlsZT0hMTt0aGlzLmNzc0ZvbnRJbmZvPWEuY3NzRm9udEluZm87dGhpcy5fY2hhcnNDYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuX2dseXBoQ2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgaT0hIShhLmZsYWdzJlNyKTtpZighaSYmIWEuaXNTaW11bGF0ZWRGbGFncyl7Y29uc3QgdD1McigpLGE9VXIoKSxyPWpyKCk7Zm9yKGNvbnN0IG4gb2YgZS5zcGxpdCgiKyIpKXtsZXQgZT1uLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2U9dFtlXXx8YVtlXXx8ZTtlPWUuc3BsaXQoIi0iLDEpWzBdO2lmKHJbZV0pe2k9ITA7YnJlYWt9fX10aGlzLmlzU2VyaWZGb250PWk7dGhpcy5pc1N5bWJvbGljRm9udD0hIShhLmZsYWdzJkFyKTt0aGlzLmlzTW9ub3NwYWNlPSEhKGEuZmxhZ3MmeHIpO2xldHt0eXBlOm4sc3VidHlwZTpzfT1hO3RoaXMudHlwZT1uO3RoaXMuc3VidHlwZT1zO3RoaXMuc3lzdGVtRm9udEluZm89YS5zeXN0ZW1Gb250SW5mbztjb25zdCBvPWUubWF0Y2goL15JbnZhbGlkUERGanNGb250XyguKilfXGQrJC8pO3RoaXMuaXNJbnZhbGlkUERGanNGb250PSEhbzt0aGlzLmlzSW52YWxpZFBERmpzRm9udD90aGlzLmZhbGxiYWNrTmFtZT1vWzFdOnRoaXMuaXNNb25vc3BhY2U/dGhpcy5mYWxsYmFja05hbWU9Im1vbm9zcGFjZSI6dGhpcy5pc1NlcmlmRm9udD90aGlzLmZhbGxiYWNrTmFtZT0ic2VyaWYiOnRoaXMuZmFsbGJhY2tOYW1lPSJzYW5zLXNlcmlmIjtpZih0aGlzLnN5c3RlbUZvbnRJbmZvPy5ndWVzc0ZhbGxiYWNrKXt0aGlzLnN5c3RlbUZvbnRJbmZvLmd1ZXNzRmFsbGJhY2s9ITE7dGhpcy5zeXN0ZW1Gb250SW5mby5jc3MrPWAsJHt0aGlzLmZhbGxiYWNrTmFtZX1gfXRoaXMuZGlmZmVyZW5jZXM9YS5kaWZmZXJlbmNlczt0aGlzLndpZHRocz1hLndpZHRoczt0aGlzLmRlZmF1bHRXaWR0aD1hLmRlZmF1bHRXaWR0aDt0aGlzLmNvbXBvc2l0ZT1hLmNvbXBvc2l0ZTt0aGlzLmNNYXA9YS5jTWFwO3RoaXMuY2FwSGVpZ2h0PWEuY2FwSGVpZ2h0L25pO3RoaXMuYXNjZW50PWEuYXNjZW50L25pO3RoaXMuZGVzY2VudD1hLmRlc2NlbnQvbmk7dGhpcy5saW5lSGVpZ2h0PXRoaXMuYXNjZW50LXRoaXMuZGVzY2VudDt0aGlzLmZvbnRNYXRyaXg9YS5mb250TWF0cml4O3RoaXMuYmJveD1hLmJib3g7dGhpcy5kZWZhdWx0RW5jb2Rpbmc9YS5kZWZhdWx0RW5jb2Rpbmc7dGhpcy50b1VuaWNvZGU9YS50b1VuaWNvZGU7dGhpcy50b0ZvbnRDaGFyPVtdO2lmKCJUeXBlMyI9PT1hLnR5cGUpe2ZvcihsZXQgZT0wO2U8MjU2O2UrKyl0aGlzLnRvRm9udENoYXJbZV09dGhpcy5kaWZmZXJlbmNlc1tlXXx8YS5kZWZhdWx0RW5jb2RpbmdbZV07cmV0dXJufXRoaXMuY2lkRW5jb2Rpbmc9YS5jaWRFbmNvZGluZ3x8IiI7dGhpcy52ZXJ0aWNhbD0hIWEudmVydGljYWw7aWYodGhpcy52ZXJ0aWNhbCl7dGhpcy52bWV0cmljcz1hLnZtZXRyaWNzO3RoaXMuZGVmYXVsdFZNZXRyaWNzPWEuZGVmYXVsdFZNZXRyaWNzfWlmKCF0fHx0LmlzRW1wdHkpe3QmJndhcm4oJ0ZvbnQgZmlsZSBpcyBlbXB0eSBpbiAiJytlKyciICgnK3RoaXMubG9hZGVkTmFtZSsiKSIpO3RoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoYSk7cmV0dXJufVtuLHNdPWdldEZvbnRGaWxlVHlwZSh0LGEpO249PT10aGlzLnR5cGUmJnM9PT10aGlzLnN1YnR5cGV8fGluZm8oYEluY29uc2lzdGVudCBmb250IGZpbGUgVHlwZS9TdWJUeXBlLCBleHBlY3RlZDogJHt0aGlzLnR5cGV9LyR7dGhpcy5zdWJ0eXBlfSBidXQgZm91bmQ6ICR7bn0vJHtzfS5gKTtsZXQgYzt0cnl7c3dpdGNoKG4pe2Nhc2UiTU1UeXBlMSI6aW5mbygiTU1UeXBlMSBmb250ICgiK2UrIiksIGZhbGxpbmcgYmFjayB0byBUeXBlMS4iKTtjYXNlIlR5cGUxIjpjYXNlIkNJREZvbnRUeXBlMCI6dGhpcy5taW1ldHlwZT0iZm9udC9vcGVudHlwZSI7Y29uc3Qgcj0iVHlwZTFDIj09PXN8fCJDSURGb250VHlwZTBDIj09PXM
101/bmV3IENGRkZvbnQodCxhKTpuZXcgVHlwZTFGb250KGUsdCxhKTthZGp1c3RXaWR0aHMoYSk7Yz10aGlzLmNvbnZlcnQoZSxyLGEpO2JyZWFrO2Nhc2UiT3BlblR5cGUiOmNhc2UiVHJ1ZVR5cGUiOmNhc2UiQ0lERm9udFR5cGUyIjp0aGlzLm1pbWV0eXBlPSJmb250L29wZW50eXBlIjtjPXRoaXMuY2hlY2tBbmRSZXBhaXIoZSx0LGEpO2FkanVzdFdpZHRocyhhKTt0aGlzLmlzT3BlblR5cGUmJihuPSJPcGVuVHlwZSIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBGb250ICR7bn0gaXMgbm90IHN1cHBvcnRlZGApfX1jYXRjaChlKXt3YXJuKGUpO3RoaXMuZmFsbGJhY2tUb1N5c3RlbUZvbnQoYSk7cmV0dXJufWFtZW5kRmFsbGJhY2tUb1VuaWNvZGUoYSk7dGhpcy5kYXRhPWM7dGhpcy50eXBlPW47dGhpcy5zdWJ0eXBlPXM7dGhpcy5mb250TWF0cml4PWEuZm9udE1hdHJpeDt0aGlzLndpZHRocz1hLndpZHRoczt0aGlzLmRlZmF1bHRXaWR0aD1hLmRlZmF1bHRXaWR0aDt0aGlzLnRvVW5pY29kZT1hLnRvVW5pY29kZTt0aGlzLnNlYWNNYXA9YS5zZWFjTWFwfWdldCByZW5kZXJlcigpe3JldHVybiBzaGFkb3codGhpcywicmVuZGVyZXIiLEZvbnRSZW5kZXJlckZhY3RvcnkuY3JlYXRlKHRoaXMsd3IpKX1leHBvcnREYXRhKCl7Y29uc3QgZT1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCB0IG9mIHNpKXtjb25zdCBhPXRoaXNbdF07dm9pZCAwIT09YSYmKGVbdF09YSl9aWYoIXRoaXMuZm9udEV4dHJhUHJvcGVydGllcylyZXR1cm57ZGF0YTplfTtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IGUgb2Ygb2kpe2NvbnN0IGE9dGhpc1tlXTt2b2lkIDAhPT1hJiYodFtlXT1hKX1yZXR1cm57ZGF0YTplLGV4dHJhOnR9fWZhbGxiYWNrVG9TeXN0ZW1Gb250KGUpe3RoaXMubWlzc2luZ0ZpbGU9ITA7Y29uc3R7bmFtZTp0LHR5cGU6YX09dGhpcztsZXQgcj1ub3JtYWxpem
101VGb250TmFtZSh0KTtjb25zdCBpPUxyKCksbj1VcigpLHM9ISFpW3JdLG89ISghbltyXXx8IWlbbltyXV0pO3I9aVtyXXx8bltyXXx8cjtjb25zdCBjPSRyKClbcl07aWYoYyl7aXNOYU4odGhpcy5hc2NlbnQpJiYodGhpcy5hc2NlbnQ9Yy5hc2NlbnQvbmkpO2lzTmFOKHRoaXMuZGVzY2VudCkmJih0aGlzLmRlc2NlbnQ9Yy5kZXNjZW50L25pKTtpc05hTih0aGlzLmNhcEhlaWdodCkmJih0aGlzLmNhcEhlaWdodD1jLmNhcEhlaWdodC9uaSl9dGhpcy5ib2xkPS9ib2xkL2dpLnRlc3Qocik7dGhpcy5pdGFsaWM9L29ibGlxdWV8aXRhbGljL2dpLnRlc3Qocik7dGhpcy5ibGFjaz0vQmxhY2svZy50ZXN0KHQpO2NvbnN0IGw9L05hcnJvdy9nLnRlc3QodCk7dGhpcy5yZW1lYXN1cmU9KCFzfHxsKSYmT2JqZWN0LmtleXModGhpcy53aWR0aHMpLmxlbmd0aD4wO2lmKChzfHxvKSYmIkNJREZvbnRUeXBlMiI9PT1hJiZ0aGlzLmNpZEVuY29kaW5nLnN0YXJ0c1dpdGgoIklkZW50aXR5LSIpKXtjb25zdCBhPWUuY2lkVG9HaWRNYXAscj1bXTthcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKHIscXIoKSk7L0FyaWFsLT9CbGFjay9pLnRlc3QodCk/YXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLEhyKCkpOi9DYWxpYnJpL2kudGVzdCh0KSYmYXBwbHlTdGFuZGFyZEZvbnRHbHlwaE1hcChyLFdyKCkpO2lmKGEpe2Zvcihjb25zdCBlIGluIHIpe2NvbnN0IHQ9cltlXTt2b2lkIDAhPT1hW3RdJiYoclsrZV09YVt0XSl9YS5sZW5ndGghPT10aGlzLnRvVW5pY29kZS5sZW5ndGgmJmUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlIGluc3RhbmNlb2YgSWRlbnRpdHlUb1VuaWNvZGVNYXAmJnRoaXMudG9Vbmljb2RlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtjb25zdCBpPXJbZV07dm9pZCAwPT09YVtpXSYmKHJbK2VdPXQpfSl9dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcHx8dGhpcy50b1VuaWNvZGUuZm9yRWFjaChmdW5jdGlvbihlLHQpe3JbK2VdPXR9KTt0aGlzLnRvRm9udENoYXI9cjt0aGlzLnRvVW5pY29kZT1uZXcgVG9Vbmljb2RlTWFwKHIpfWVsc2UgaWYoL1N5bWJvbC9pLnRlc3QocikpdGhpcy50b0ZvbnRDaGFyPWJ1aWxkVG9Gb250Q2hhcih1cixmcigpLHRoaXMuZGlmZmVyZW5jZXMpO2Vsc2UgaWYoL0RpbmdiYXRzL2kudGVzdChyKSl0aGlzLnRvRm9udENoYXI9YnVpbGRUb0ZvbnRDaGFyKGRyLGdyKCksdGhpcy5kaWZmZXJlbmNlcyk7ZWxzZSBpZihzfHxvKXtjb25zdCBlPWJ1aWxkVG9Gb250Q2hhcih0aGlzLmRlZmF1bHRFbmNvZGluZyxmcigpLHRoaXMuZGlmZmVyZW5jZXMpOyJDSURGb250VHlwZTIiIT09YXx8dGhpcy5jaWRFbmNvZGluZy5zdGFydHNXaXRoKCJJZGVudGl0eS0iKXx8dGhpcy50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcHx8dGhpcy50b1VuaWNvZGUuZm9yRWFjaChmdW5jdGlvbih0LGEpe2VbK3RdPWF9KTt0aGlzLnRvRm9udENoYXI9ZX1lbHNle2NvbnN0IGU9ZnIoKSxhPVtdO3RoaXMudG9Vbmljb2RlLmZvckVhY2goKHQscik9PntpZighdGhpcy5jb21wb3NpdGUpe2NvbnN0IGE9Z2V0VW5pY29kZUZvckdseXBoKHRoaXMuZGlmZmVyZW5jZXNbdF18fHRoaXMuZGVmYXVsdEVuY29kaW5nW3RdLGUpOy0xIT09YSYmKHI9YSl9YVsrdF09cn0pO3RoaXMuY29tcG9zaXRlJiZ0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwJiYvVGFob21hfFZlcmRhbmEvaS50ZXN0KHQpJiZhcHBseVN0YW5kYXJkRm9udEdseXBoTWFwKGEscXIoKSk7dGhpcy50b0ZvbnRDaGFyPWF9YW1lbmRGYWxsYmFja1RvVW5pY29kZShlKTt0aGlzLmxvYWRlZE5hbWU9ci5zcGxpdCgiLSIsMSlbMF19Y2hlY2tBbmRSZXBhaXIoZSx0LGEpe2NvbnN0IHI9WyJPUy8yIiwiY21hcCIsImhlYWQiLCJoaGVhIiwiaG10eCIsIm1heHAiLCJuYW1lIiwicG9zdCIsImxvY2EiLCJnbHlmIiwiZnBnbSIsInByZXAiLCJjdnQgIiwiQ0ZGICJdO2Z1bmN0aW9uIHJlYWRUYWJsZXMoZSx0KXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7YVsiT1MvMiJdPW51bGw7YS5jbWFwPW51bGw7YS5oZWFkPW51bGw7YS5oaGVhPW51bGw7YS5obXR4PW51bGw7YS5tYXhwPW51bGw7YS5uYW1lPW51bGw7YS5wb3N0PW51bGw7Zm9yKGxldCBpPTA7aTx0O2krKyl7Y29uc3QgdD1yZWFkVGFibGVFbnRyeShlKTtyLmluY2x1ZGVzKHQudGFnKSYmKDAhPT10Lmxlbmd0aCYmKGFbdC50YWddPXQpKX1yZXR1cm4gYX1mdW5jdGlvbiByZWFkVGFibGVFbnRyeShlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpLGE9ZS5nZXRJbnQzMigpPj4+MCxyPWUuZ2V0SW50MzIoKT4+PjAsaT1lLmdldEludDMyKCk+Pj4wLG49ZS5wb3M7ZS5wb3M9ZS5zdGFydHx8MDtlLnNraXAocik7Y29uc3Qgcz1lLmdldEJ5dGVzKGkpO2UucG9zPW47aWYoImhlYWQiPT09dCl7c1s4XT1zWzldPXNbMTBdPXNbMTFdPTA7c1sxN118PTMyfXJldHVybnt0YWc6dCxjaGVja3N1bTphLGxlbmd0aDppLG9mZnNldDpyLGRhdGE6c319ZnVuY3Rpb24gcmVhZE9wZW5UeXBlSGVhZGVyKGUpe3JldHVybnt2ZXJzaW9uOmUuZ2V0U3RyaW5nKDQpLG51bVRhYmxlczplLmdldFVpbnQxNigpLHNlYXJjaFJhbmdlOmUuZ2V0VWludDE2KCksZW50cnlTZWxlY3RvcjplLmdldFVpbnQxNigpLHJhbmdlU2hpZnQ6ZS5nZXRVaW50MTYoKX19ZnVuY3Rpb24gc2FuaXRpemVHbHlwaChlLHQsYSxyLGksbil7Y29uc3Qgcz17bGVuZ3RoOjAsc2l6ZU9mSW5zdHJ1Y3Rpb25zOjB9O2lmKHQ8MHx8dD49ZS5sZW5ndGh8fGE+ZS5sZW5ndGh8fGEtdDw9MTIpcmV0dXJuIHM7Y29uc3Qgbz1lLnN1YmFycmF5KHQsYSksYz1zaWduZWRJbnQxNihvWzJdLG9bM10pLGw9c2lnbmVkSW50MTYob1s0XSxvWzVdKSxoPXNpZ25lZEludDE2KG9bNl0sb1s3XSksdT1zaWduZWRJbnQxNihvWzhdLG9bOV0pO2lmKGM+aCl7d3JpdGVTaWduZWRJbnQxNihvLDIsaCk7d3JpdGVTaWduZWRJbnQxNihvLDYsYyl9aWYobD51KXt3cml0ZVNpZ25lZEludDE2KG8sNCx1KTt3cml0ZVNpZ25lZEludDE2KG8sOCxsKX1jb25zdCBkPXNpZ25lZEludDE2KG9bMF0sb1sxXSk7aWYoZDwwKXtpZihkPC0xKXJldHVybi
101BzO3Iuc2V0KG8saSk7cy5sZW5ndGg9by5sZW5ndGg7cmV0dXJuIHN9bGV0IGYsZz0xMCxwPTA7Zm9yKGY9MDtmPGQ7ZisrKXtwPShvW2ddPDw4fG9bZysxXSkrMTtnKz0yfWNvbnN0IG09ZyxiPW9bZ108PDh8b1tnKzFdO3Muc2l6ZU9mSW5zdHJ1Y3Rpb25zPWI7Zys9MitiO2NvbnN0IHk9ZztsZXQgdz0wO2ZvcihmPTA7ZjxwO2YrKyl7Y29uc3QgZT1vW2crK107MTkyJmUmJihvW2ctMV09NjMmZSk7bGV0IHQ9MjsyJmU/dD0xOjE2JmUmJih0PTApO2xldCBhPTI7NCZlP2E9MTozMiZlJiYoYT0wKTtjb25zdCByPXQrYTt3Kz1yO2lmKDgmZSl7Y29uc3QgZT1vW2crK107MD09PWUmJihvW2ctMV1ePTgpO2YrPWU7dys9ZSpyfX1pZigwPT09dylyZXR1cm4gcztsZXQgeD1nK3c7aWYoeD5vLmxlbmd0aClyZXR1cm4gcztpZighbiYmYj4wKXtyLnNldChvLnN1YmFycmF5KDAsbSksaSk7ci5zZXQoWzAsMF0saSttKTtyLnNldChvLnN1YmFycmF5KHkseCksaSttKzIpO3gtPWI7by5sZW5ndGgteD4zJiYoeD14KzMmLTQpO3MubGVuZ3RoPXg7cmV0dXJuIHN9aWYoby5sZW5ndGgteD4zKXt4PXgrMyYtNDtyLnNldChvLnN1YmFycmF5KDAseCksaSk7cy5sZW5ndGg9eDtyZXR1cm4gc31yLnNldChvLGkpO3MubGVuZ3RoPW8ubGVuZ3RoO3JldHVybiBzfWZ1bmN0aW9uIHJlYWROYW1lVGFibGUoZSl7Y29uc3QgYT0odC5zdGFydHx8MCkrZS5vZmZzZXQ7dC5wb3M9YTtjb25zdCByPVtbXSxbXV0saT1bXSxuPWUubGVuZ3RoLHM9YStuO2lmKDAhPT10LmdldFVpbnQxNigpfHxuPDYpcmV0dXJuW3IsaV07Y29uc3Qgbz10LmdldFVpbnQxNigpLGM9dC5nZXRVaW50MTYoKTtsZXQgbCxoO2ZvcihsPTA7bDxvJiZ0LnBvcysxMjw9cztsKyspe2NvbnN0IGU9e3BsYXRmb3JtOnQuZ2V0VWludDE2KCksZW5jb2Rpbmc6dC5nZXRVaW50MTYoKSxsYW5ndWFnZTp0LmdldFVpbnQxNigpLG5hbWU6dC5nZXRVaW50MTYoKSxsZW5ndGg6dC5nZXRVaW50MTYoKSxvZmZzZXQ6dC5nZXRVaW50MTYoKX07KGlzTWFjTmFtZVJlY29yZChlKXx8aXNXaW5OYW1lUmVjb3JkKGUpKSYmaS5wdXNoKGUpfWZvcihsPTAsaD1pLmxlbmd0aDtsPGg7bCsrKXtjb25zdCBlPWlbbF07aWYoZS5sZW5ndGg8PTApY29udGludWU7Y29uc3Qgbj1hK2MrZS5vZmZzZXQ7aWYobitlLmxlbmd0aD5zKWNvbnRpbnVlO3QucG9zPW47Y29uc3Qgbz1lLm5hbWU7aWYoZS5lbmNvZGluZyl7bGV0IGE9IiI7Zm9yKGxldCByPTAsaT1lLmxlbmd0aDtyPGk7cis9MilhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQuZ2V0VWludDE2KCkpO3JbMV1bb109YX1lbHNlIHJbMF1bb109dC5nZXRTdHJpbmcoZS5sZW5ndGgpfXJldHVybltyLGldfWNvbnN0IGk9WzAsMCwwLDAsMCwwLDAsMCwtMiwtMiwtMiwtMiwwLDAsLTIsLTUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsLTEsLTEsMSwtMSwtOTk5LDAsMSwwLC0xLC0yLDAsLTEsLTIsLTEsLTEsMCwtMSwtMSwwLDAsLTk5OSwtOTk5LC0xLC0xLC0xLC0xLC0yLC05OTksLTIsLTIsLTk5OSwwLC0yLC0yLDAsMCwtMiwwLC0yLDAsMCwwLC0yLC0xLC0xLDEsMSwwLDAsLTEsLTEsLTEsLTEsLTEsLTEsLTEsMCwwLC0xLDAsLTEsLTEsMCwtOTk5LC0xLC0xLC0xLC0xLC0xLC0xLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0yLC05OTksLTk5OSwtOTk5LC05OTksLTk5OSwtMSwtMSwtMiwtMiwwLDAsMCwwLC0xLC0xLC05OTksLTIsLTIsMCwwLC0xLC0yLC0yLDAsMCwwLC0xLC0xLC0xLC0yXTtmdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbShlLHQpe2xldCBhLHIsbixzLG8sYz1lLmRhdGEsbD0wLGg9MCx1PTA7Y29uc3QgZD1bXSxmPVtdLGc9W107bGV0IHA9dC50b29Db21wbGV4VG9Gb2xsb3dGdW5jdGlvbnMsbT0hMSxiPTAseT0wO2ZvcihsZXQgZT1jLmxlbmd0aDtsPGU7KXtjb25zdCBlPWNbbCsrXTtpZig2ND09PWUpe3I9Y1tsKytdO2lmKG18fHkpbCs9cjtlbHNlIGZvcihhPTA7YTxyO2ErKylkLnB1c2goY1tsKytdKX1lbHNlIGlmKDY1PT09ZSl7cj1jW2wrK107aWYobXx8eSlsKz0yKnI7ZWxzZSBmb3IoYT0wO2E8cjthKyspe249Y1tsKytdO2QucHVzaChuPDw4fGNbbCsrXSl9fWVsc2UgaWYoMTc2PT0oMjQ4JmUpKXtyPWUtMTc2KzE7aWYobXx8eSlsKz1yO2Vsc2UgZm9yKGE9MDthPHI7YSsrKWQucHVzaChjW2wrK10pfWVsc2UgaWYoMTg0PT0oMjQ4JmUpKXtyPWUtMTg0KzE7aWYobXx8eSlsKz0yKnI7ZWxzZSBmb3IoYT0wO2E8cjthKyspe249Y1tsKytdO2QucHVzaChzaWduZWRJbnQxNihuLGNbbCsrXSkpfX1lbHNlIGlmKDQzIT09ZXx8cClpZig0NCE9PWV8fHApe2lmKDQ1PT09ZSlpZihtKXttPSExO2g9bH1lbHNle289Zi5wb3AoKTtpZighbyl7d2FybigiVFQ6IEVOREYgYmFkIHN0YWNrIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1zPWcucG9wKCk7Yz1vLmRhdGE7bD1vLmk7dC5mdW5jdGlvbnNTdGFja0RlbHRhc1tzXT1kLmxlbmd0aC1vLnN0YWNrVG9wfWVsc2UgaWYoMTM3PT09ZSl7aWYobXx8eSl7d2FybigiVFQ6IG5lc3RlZCBJREVGcyBub3QgYWxsb3dlZCIpO3A9ITB9bT0hMDt1PWx9ZWxzZSBpZig4OD09PWUpKytiO2Vsc2UgaWYoMjc9PT1lKXk9YjtlbHNlIGlmKDg5PT09ZSl7eT09PWImJih5PTApOy0tYn1lbHNlIGlmKDI4PT09ZSYmIW0mJiF5KXtjb25zdCBlPWQuYXQoLTEpO2U+MCYmKGwrPWUtMSl9fWVsc2V7aWYobXx8eSl7d2FybigiVFQ6IG5lc3RlZCBGREVGcyBub3QgYWxsb3dlZCIpO3A9ITB9bT0hMDt1PWw7cz1kLnBvcCgpO3QuZnVuY3Rpb25zRGVmaW5lZFtzXT17ZGF0YTpjLGk6bH19ZWxzZSBpZighbSYmIXkpe3M9ZC5hdCgtMSk7aWYoaXNOYU4ocykpaW5mbygiVFQ6IENBTEwgZW1wdHkgc3RhY2sgKG9yIGludmFsaWQgZW50cnkpLiIpO2Vsc2V7dC5mdW5jdGlvbnNVc2VkW3NdPSEwO2lmKHMgaW4gdC5mdW5jdGlvbnNTdGFja0RlbHRhcyl7Y29uc3QgZT1kLmxlbmd0aCt0LmZ1bmN0aW9uc1N0YWNrRGVsdGFzW3NdO2lmKGU8MCl7d2FybigiVFQ6IENBTEwgaW52YWxpZCBmdW5jdGlvbnMgc3RhY2sgZGVsdGEuIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1kLmxlbmd0aD1lfWVsc2UgaWYocyBpbiB0LmZ1bmN0aW9uc0RlZmluZWQmJiFnLmluY2x1ZGVzKHMpKXtmLnB1c2goe2RhdGE6YyxpOmwsc3RhY2tUb3A6ZC5sZW5ndGgtMX0pO2cucHVzaChzKTtvPXQuZnVuY3Rpb25zRGVmaW5lZFtzXTtpZighbyl7d2FybigiVFQ6IENBTEwgbm9uLWV4aXN0ZW50IGZ1bmN0aW9uIik7dC5oaW50c1ZhbGlkPSExO3JldHVybn1jPW8uZGF0YTtsPW8uaX19fWlmKCFtJiYheSl7bGV0IHQ9MDtlPD0xNDI/dD1pW2VdOmU+PTE5MiYmZTw9MjIzP3Q9LTE6ZT49MjI0JiYodD0tMik7aWYoZT49MTEzJiZlPD0xMTcpe3I9ZC5wb3AoKTtpc05hTihyKXx8KHQ9Miotcil9Zm9yKDt0PDAmJmQubGVuZ3RoPjA7KXtkLnBvcCgpO3QrK31mb3IoO3Q+MDspe2QucHVzaChOYU4pO3QtLX19fXQudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zPXA7Y29uc3Qgdz1bY107bD5jLmxlbmd0aCYmdy5wdXNoKG5ldyBVaW50OEFycmF5KGwtYy5sZW5ndGgpKTtpZih1Pmgpe3dhcm4oIlRUOiBjb21wbGVtZW50aW5nIGEgbWlzc2luZyBmdW5jdGlvbiB0YWlsIik7dy5wdXNoKG5ldyBVaW50OEFycmF5KFszNCw0NV0pKX0hZnVuY3Rpb24gZm9sZFRUVGFibGUoZSx0KXtpZih0Lmxlbmd0aD4xKXtsZXQgYSxyLGk9MDtmb3IoYT0wLHI9dC5sZW5ndGg7YTxyO2ErKylpKz10W2FdLmxlbmd0aDtpPWkrMyYtNDtjb25zdCBuPW5ldyBVaW50OEFycmF5KGkpO2xldCBzPTA7Zm9yKGE9MCxyPXQubGVuZ3RoO2E8cjthKyspe24uc2V0KHRbYV0scyk7cys9dFthXS5sZW5ndGh9ZS5kYXRhPW47ZS5sZW5ndGg9aX19KGUsdyl9bGV0IG4scztpZihpc1RydWVUeXBlQ29sbGVjdGlvbkZpbGUodD1uZXcgU3RyZWFtKG5ldyBVaW50OEFycmF5KHQuZ2V0Qnl0ZXMoKSkpKSl7Y29uc3QgZT1mdW5jdGlvbiByZWFkVHJ1ZVR5cGVDb2xsZWN0aW9uRGF0YShlLHQpe2NvbnN0e251bUZvbnRzOmEsb2Zmc2V0VGFibGU6cn09ZnVuY3Rpb24gcmVhZFRydWVUeXBlQ29sbGVjdGlvbkhlYWRlcihlKXtjb25zdCB0PWUuZ2V0U3RyaW5nKDQpO2Fzc2VydCgidHRjZiI9PT10LCJNdXN0IGJlIGEgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250LiIpO2NvbnN0IGE9ZS5nZXRVaW50MTYoKSxyPWUuZ2V0VWludDE2KCksaT1lLmdldEludDMyKCk+Pj4wLG49W107Zm9yKGxldCB0PTA7dDxpO3QrKyluLnB1c2goZS5nZXRJbnQzMigpPj4+MCk7Y29uc3Qgcz17dHRjVGFnOnQsbWFqb3JWZXJzaW9uOmEsbWlub3JWZXJzaW9uOnIsbnVtRm9udHM6aSxvZmZzZXRUYWJsZTpufTtzd2l0Y2goYSl7Y2FzZSAxOnJldHVybi
101BzO2Nhc2UgMjpzLmRzaWdUYWc9ZS5nZXRJbnQzMigpPj4+MDtzLmRzaWdMZW5ndGg9ZS5nZXRJbnQzMigpPj4+MDtzLmRzaWdPZmZzZXQ9ZS5nZXRJbnQzMigpPj4+MDtyZXR1cm4gc310aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBtYWpvclZlcnNpb246ICR7YX0uYCl9KGUpLGk9dC5zcGxpdCgiKyIpO2xldCBuO2ZvcihsZXQgcz0wO3M8YTtzKyspe2UucG9zPShlLnN0YXJ0fHwwKStyW3NdO2NvbnN0IGE9cmVhZE9wZW5UeXBlSGVhZGVyKGUpLG89cmVhZFRhYmxlcyhlLGEubnVtVGFibGVzKTtpZighby5uYW1lKXRocm93IG5ldyBGb3JtYXRFcnJvcignVHJ1ZVR5cGUgQ29sbGVjdGlvbiBmb250IG11c3QgY29udGFpbiBhICJuYW1lIiB0YWJsZS4nKTtjb25zdFtjXT1yZWFkTmFtZVRhYmxlKG8ubmFtZSk7Zm9yKGxldCBlPTAscj1jLmxlbmd0aDtlPHI7ZSsrKWZvcihsZXQgcj0wLHM9Y1tlXS5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgcz1jW2VdW3JdPy5yZXBsYWNlQWxsKC9ccy9nLCIiKTtpZihzKXtpZihzPT09dClyZXR1cm57aGVhZGVyOmEsdGFibGVzOm99O2lmKCEoaS5sZW5ndGg8MikpZm9yKGNvbnN0IGUgb2YgaSlzPT09ZSYmKG49e25hbWU6ZSxoZWFkZXI6YSx0YWJsZXM6b30pfX19aWYobil7d2FybihgVHJ1ZVR5cGUgQ29sbGVjdGlvbiBkb2VzIG5vdCBjb250YWluICIke3R9IiBmb250LCBmYWxsaW5nIGJhY2sgdG8gIiR7bi5uYW1lfSIgZm9udCBpbnN0ZWFkLmApO3JldHVybntoZWFkZXI6bi5oZWFkZXIsdGFibGVzOm4udGFibGVzfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFRydWVUeXBlIENvbGxlY3Rpb24gZG9lcyBub3QgY29udGFpbiAiJHt0fSIgZm9udC5gKX0odCx0aGlzLm5hbWUpO249ZS5oZWFkZXI7cz1lLnRhYmxlc31lbHNle249cmVhZE9wZW5UeXBlSGVhZGVyKHQpO3M9cmVhZFRhYmxlcyh0LG4ubnVtVGFibGVzKX1jb25zdCBvPSFzWyJDRkYgIl07aWYobyl7aWYoIXMubG9jYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJ1JlcXVpcmVkICJsb2NhIiB0YWJsZSBpcyBub3QgZm91bmQnKTtpZighcy5nbHlmKXt3YXJuKCdSZXF1aXJlZCAiZ2x5ZiIgdGFibGUgaXMgbm90IGZvdW5kIC0tIHRyeWluZyB0byByZWNvdmVyLicpO3MuZ2x5Zj17dGFnOiJnbHlmIixkYXRhOm5ldyBVaW50OEFycmF5KDApfX10aGlzLmlzT3BlblR5cGU9ITF9ZWxzZXtpZigiT1RUTyI9PT1uLnZlcnNpb24mJiFhLmNvbXBvc2l0ZXx8IXMuaGVhZHx8IXMuaGhlYXx8IXMubWF4cHx8IXMucG9zdClyZXR1cm4gdGhpcy5jb252ZXJ0KGUsbmV3IENGRkZvbnQobmV3IFN0cmVhbShzWyJDRkYgIl0uZGF0YSksYSksYSk7ZGVsZXRlIHMuZ2x5ZjtkZWxldGUgcy5sb2NhO2RlbGV0ZSBzLmZwZ207ZGVsZXRlIHMucHJlcDtkZWxldGUgc1siY3Z0ICJdO3RoaXMuaXNPcGVuVHlwZT0hMH1pZighcy5tYXhwKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgIm1heHAiIHRhYmxlIGlzIG5vdCBmb3VuZCcpO2xldCBjO2lmKCFvKXRyeXtjb25zdCBlPW5ldyBDRkZQYXJzZXIobmV3IFN0cmVhbShzWyJDRkYgIl0uZGF0YSksYSx3cikucGFyc2UoKTtlLmR1cGxpY2F0ZUZpcnN0R2x5cGgoKTtjb25zdCB0PW5ldyBDRkZDb21waWxlcihlKTtzWyJDRkYgIl0uZGF0YT10LmNvbXBpbGUoKTtjPWUuY2hhclN0cmluZ0NvdW50fWNhdGNoe3dhcm4oIkZhaWxlZCB0byBjb21waWxlIGZvbnQgIithLmxvYWRlZE5hbWUpfXQucG9zPSh0LnN0YXJ0fHwwKStzLm1heHAub2Zmc2V0O2xldCBsPXQuZ2V0SW50MzIoKTtjb25zdCBoPWM/P3QuZ2V0VWludDE2KCk7aWYoMjA0ODA9PT1sJiY2IT09cy5tYXhwLmxlbmd0aCl7cy5tYXhwLmRhdGE9cy5tYXhwLmRhdGEuc3ViYXJyYXkoMCw2KTtzLm1heHAubGVuZ3RoPTZ9aWYoNjU1MzYhPT1sJiYyMDQ4MCE9PWwpe2lmKDY9PT1zLm1heHAubGVuZ3RoKWw9MjA0ODA7ZWxzZXtpZighKHMubWF4cC5sZW5ndGg+PTMyKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoJyJtYXhwIiB0YWJsZSBoYXMgYSB3cm9uZyB2ZXJzaW9uIG51bWJlcicpO2w9NjU1MzZ9IWZ1bmN0aW9uIHdyaXRlVWludDMyKGUsdCxhKXtlW3QrM109MjU1JmE7ZVt0KzJdPWE+Pj44O2VbdCsxXT1hPj4+MTY7ZVt0XT1hPj4+MjR9KHMubWF4cC5kYXRhLDAsbCl9bGV0IHU9aW50MTYocy5oZWFkLmRhdGFbNTBdLHMuaGVhZC5kYXRhWzUxXSk7aWYocy5sb2NhKXtjb25zdCBlPXU/NCooaCsxKToyKihoKzEpO2lmKHMubG9jYS5sZW5ndGghPT1lKXt3YXJuKCJJbmNvcnJlY3QgJ2xvY2EnIHRhYmxlIGxlbmd0aCAtLSBhdHRlbXB0aW5nIHRvIGZpeCBpdC4iKTtjb25zdCBhPU9iamVjdC52YWx1ZXMocykuZmlsdGVyKEJvb2xlYW4pLnNvcnQoKGUsdCk9PmUub2Zmc2V0LXQub2Zmc2V0KSxyPWEuaW5kZXhPZihzLmxvY2EpLGk9YVtyKzFdfHxudWxsO2lmKGkmJnMubG9jYS5vZmZzZXQrZTxpLm9mZnNldCl7Y29uc3QgYT10LnBvczt0LnBvcz10LnN0YXJ0fHwwO3Quc2tpcChzLmxvY2Eub2Zmc2V0KTtzLmxvY2EuZGF0YT10LmdldEJ5dGVzKGUpO3MubG9jYS5sZW5ndGg9ZTt0LnBvcz1hfX19aWYoYS5zY2FsZUZhY3RvcnM/Lmxlbmd0aD09PWgmJm8pe2NvbnN0e3NjYWxlRmFjdG9yczplfT1hLHQ9bmV3IEdseWZUYWJsZSh7Z2x5ZlRhYmxlOnMuZ2x5Zi5kYXRhLGlzR2x5cGhMb2NhdGlvbnNMb25nOnUsbG9jYVRhYmxlOnMubG9jYS5kYXRhLG51bUdseXBoczpofSk7dC5zY2FsZShlKTtjb25zdHtnbHlmOnIsbG9jYTppLGlzTG9jYXRpb25Mb25nOm59PXQud3JpdGUoKTtzLmdseWYuZGF0YT1yO3MubG9jYS5kYXRhPWk7aWYobiE9PSEhdSl7cy5oZWFkLmRhdGFbNTBdPTA7dT1zLmhlYWQuZGF0YVs1MV09bj8xOjB9Y29uc3Qgbz1zLmhtdHguZGF0YTtmb3IobGV0IHQ9MDt0PGg7dCsrKXtjb25zdCBhPTQqdCxyPU1hdGgucm91bmQoZVt0XSppbnQxNihvW2FdLG9bYSsxXSkpO29bYV09cj4+OCYyNTU7b1thKzFdPTI1NSZyO3dyaXRlU2lnbmVkSW50MTYobyxhKzIsTWF0aC5yb3VuZChlW3RdKnNpZ25lZEludDE2KG9bYSsyXSxvW2ErM10pKSl9fWxldCBkPWgrMSxmPSEwO2lmKGQ+NjU1MzUpe2Y9ITE7ZD1oO3dhcm4oIk5vdCBlbm91Z2ggc3BhY2UgaW4gZ2x5ZnMgdG8gZHVwbGljYXRlIGZpcnN0IGdseXBoLiIpfWxldCBnPTAscD0wO2lmKGw+PTY1NTM2JiZzLm1heHAubGVuZ3RoPj0zMil7dC5wb3MrPTg7aWYodC5nZXRVaW50MTYoKT4yKXtzLm1heHAuZGF0YVsxNF09MDtzLm1heHAuZGF0YVsxNV09Mn10LnBvcys9NDtnPXQuZ2V0VWludDE2KCk7dC5wb3MrPTQ7cD10LmdldFVpbnQxNigpfXMubWF4cC5kYXRhWzRdPWQ+Pjg7cy5tYXhwLmRhdGFbNV09MjU1JmQ7Y29uc3QgbT1mdW5jdGlvbiBzYW5pdGl6ZVRUUHJvZ3JhbXM
101oZSx0LGEscil7Y29uc3QgaT17ZnVuY3Rpb25zRGVmaW5lZDpbXSxmdW5jdGlvbnNVc2VkOltdLGZ1bmN0aW9uc1N0YWNrRGVsdGFzOltdLHRvb0NvbXBsZXhUb0ZvbGxvd0Z1bmN0aW9uczohMSxoaW50c1ZhbGlkOiEwfTtlJiZzYW5pdGl6ZVRUUHJvZ3JhbShlLGkpO3QmJnNhbml0aXplVFRQcm9ncmFtKHQsaSk7ZSYmZnVuY3Rpb24gY2hlY2tJbnZhbGlkRnVuY3Rpb25zKGUsdCl7aWYoIWUudG9vQ29tcGxleFRvRm9sbG93RnVuY3Rpb25zKWlmKGUuZnVuY3Rpb25zRGVmaW5lZC5sZW5ndGg+dCl7d2FybigiVFQ6IG1vcmUgZnVuY3Rpb25zIGRlZmluZWQgdGhhbiBleHBlY3RlZCIpO2UuaGludHNWYWxpZD0hMX1lbHNlIGZvcihsZXQgYT0wLHI9ZS5mdW5jdGlvbnNVc2VkLmxlbmd0aDthPHI7YSsrKXtpZihhPnQpe3dhcm4oIlRUOiBpbnZhbGlkIGZ1bmN0aW9uIGlkOiAiK2EpO2UuaGludHNWYWxpZD0hMTtyZXR1cm59aWYoZS5mdW5jdGlvbnNVc2VkW2FdJiYhZS5mdW5jdGlvbnNEZWZpbmVkW2FdKXt3YXJuKCJUVDogdW5kZWZpbmVkIGZ1bmN0aW9uOiAiK2EpO2UuaGludHNWYWxpZD0hMTtyZXR1cm59fX0oaSxyKTtpZihhJiYxJmEubGVuZ3RoKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KGEubGVuZ3RoKzEpO2Uuc2V0KGEuZGF0YSk7YS5kYXRhPWV9cmV0dXJuIGkuaGludHNWYWxpZH0ocy5mcGdtLHMucHJlcCxzWyJjdnQgIl0sZyk7aWYoIW0pe2RlbGV0ZSBzLmZwZ207ZGVsZXRlIHMucHJlcDtkZWxldGUgc1siY3Z0ICJdfSFmdW5jdGlvbiBzYW5pdGl6ZU1ldHJpY3MoZSx0LGEscixpLG4pe2lmKCF0KXthJiYoYS5kYXRhPW51bGwpO3JldHVybn1lLnBvcz0oZS5zdGFydHx8MCkrdC5vZmZzZXQ7ZS5wb3MrPTQ7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7ZS5wb3MrPTI7Y29uc3Qgcz1lLmdldFVpbnQxNigpO2UucG9zKz04O2UucG9zKz0yO2xldCBvPWUuZ2V0VWludDE2KCk7aWYoMCE9PXMpe2lmKCEoMiZpbnQxNihyLmRhdGFbNDRdLHIuZGF0YVs0NV0pKSl7dC5kYXRhWzIyXT0wO3QuZGF0YVsyM109MH19aWYobz5pKXtpbmZvKGBUaGUgbnVtT2ZNZXRyaWNzICgke299KSBzaG91bGQgbm90IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtR2x5cGhzICgke2l9KS5gKTtvPWk7dC5kYXRhWzM0XT0oNjUyODAmbyk+Pjg7dC5kYXRhWzM1XT0yNTUmb31jb25zdCBjPWktby0oYS5sZW5ndGgtNCpvPj4xKTtpZihjPjApe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoYS5sZW5ndGgrMipjKTtlLnNldChhLmRhdGEpO2lmKG4pe2VbYS5sZW5ndGhdPWEuZGF0YVsyXTtlW2EubGVuZ3RoKzFdPWEuZGF0YVszXX1hLmRhdGE9ZX19KHQscy5oaGVhLHMuaG10eCxzLmhlYWQsZCxmKTtpZighcy5oZWFkKXRocm93IG5ldyBGb3JtYXRFcnJvcignUmVxdWlyZWQgImhlYWQiIHRhYmxlIGlzIG5vdCBmb3VuZCcpOyFmdW5jdGlvbiBzYW5pdGl6ZUhlYWQoZSx0LGEpe2NvbnN0IHI9ZS5kYXRhLGk9ZnVuY3Rpb24gaW50MzIoZSx0LGEscil7cmV0dXJuKGU8PDI0KSsodDw8MTYpKyhhPDw4KStyfShyWzBdLHJbMV0sclsyXSxyWzNdKTtpZihpPj4xNiE9MSl7aW5mbygiQXR0ZW1wdGluZyB0byBmaXggaW52YWxpZCB2ZXJzaW9uIGluIGhlYWQgdGFibGU6ICIraSk7clswXT0wO3JbMV09MTtyWzJdPTA7clszXT0wfWNvbnN0IG49aW50MTYocls1MF0scls1MV0pO2lmKG48MHx8bj4xKXtpbmZvKCJBdHRlbXB0aW5nIHRvIGZpeCBpbnZhbGlkIGluZGV4VG9Mb2NGb3JtYXQgaW4gaGVhZCB0YWJsZTogIituKTtjb25zdCBlPXQrMTtpZihhPT09ZTw8MSl7cls1MF09MDtyWzUxXT0wfWVsc2V7aWYoYSE9PWU8PDIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJDb3VsZCBub3QgZml4IGluZGV4VG9Mb2NGb3JtYXQ6ICIrbik7cls1MF09MDtyWzUxXT0xfX19KHMuaGVhZCxoLG8/cy5sb2NhLmxlbmd0aDowKTtsZXQgYj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKG8pe2NvbnN0IGU9ZnVuY3Rpb24gc2FuaXRpemVHbHlwaExvY2F0aW9ucyhlLHQsYSxyLGksbixzKXtsZXQgbyxjLGw7aWYocil7bz00O2M9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGVMb25nKGUsdCl7cmV0dXJuIGVbdF08PDI0fGVbdCsxXTw8MTZ8ZVt0KzJdPDw4fGVbdCszXX07bD1mdW5jdGlvbiBmb250SXRlbUVuY29kZUxvbmcoZSx0LGEpe2VbdF09YT4+PjI0JjI1NTtlW3QrMV09YT4+MTYmMjU1O2VbdCsyXT1hPj44JjI1NTtlW3QrM109MjU1JmF9fWVsc2V7bz0yO2M9ZnVuY3Rpb24gZm9udEl0ZW1EZWNvZGUoZSx0KXtyZXR1cm4gZVt0XTw8OXxlW3QrMV08PDF9O2w9ZnVuY3Rpb24gZm9udEl0ZW1FbmNvZGUoZSx0LGEpe2VbdF09YT4+OSYyNTU7ZVt0KzFdPWE+PjEmMjU1fX1jb25zdCBoPW4/YSsxOmEsdT1vKigxK2gpLGQ9bmV3IFVpbnQ4QXJyYXkodSk7ZC5zZXQoZS5kYXRhLnN1YmFycmF5KDAsdSkpO2UuZGF0YT1kO2NvbnN0IGY9dC5kYXRhLGc9Zi5sZW5ndGgscD1uZXcgVWludDhBcnJheShnKTtsZXQgbSxiO2NvbnN0IHk9W107Zm9yKG09MCxiPTA7bTxhKzE7bSsrLGIrPW8pe2xldCBlPWMoZCxiKTtlPmcmJihlPWcpO3kucHVzaCh7aW5kZXg6bSxvZmZzZXQ6ZSxlbmRPZmZzZXQ6MH0pfXkuc29ydCgoZSx0KT0+ZS5vZmZzZXQtdC5vZmZzZXQpO2ZvcihtPTA7bTxhO20rKyl5W21dLmVuZE9mZnNldD15W20rMV0ub2Zmc2V0O3kuc29ydCgoZSx0KT0+ZS5pbmRleC10LmluZGV4KTtmb3IobT0wO208YTttKyspe2NvbnN0e29mZnNldDplLGVuZE9mZnNldDp0fT15W21dO2lmKDAhPT1lfHwwIT09dClicmVhaztjb25zdCBhPXlbbSsxXS5vZmZzZXQ7aWYoMCE9PWEpe3lbbV0uZW5kT2Zmc2V0PWE7YnJlYWt9fWNvbnN0IHc9eS5hdCgtMik7MCE9PXcub2Zmc2V0JiYwPT09dy5lbmRPZmZzZXQmJih3LmVuZE9mZnNldD1nKTtjb25zdCB4PU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IFM9MDtsKGQsMCxTKTtmb3IobT0wLGI9bzttPGE7bSsrLGIrPW8pe2NvbnN0IGU9c2FuaXRpemVHbHlwaChmLHlbbV0ub2Zmc2V0LHlbbV0uZW5kT2Zmc2V0LHAsUyxpKSx0PWUubGVuZ3RoOzA9PT10JiYoeFttXT0hMCk7ZS5zaXplT2ZJbnN0cnVjdGlvbnM+cyYmKHM9ZS5zaXplT2ZJbnN0cnVjdGlvbnMpO1MrPXQ7bChkLGIsUyl9aWYoMD09PVMpe2NvbnN0IGU9bmV3IFVpbnQ4QXJyYXkoWzAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0OSwwXSk7Zm9yKG09MCxiPW87bTxoO20rKyxiKz1vKWwoZCxiLGUubGVuZ3RoKTt0LmRhdGE9ZX1lbHNlIGlmKG4pe2NvbnN0IGE9YyhkLG8pO2lmKHAubGVuZ3RoPmErUyl0LmRhdGE9cC5zdWJhcnJheSgwLGErUyk7ZWxzZXt0LmRhdGE9bmV3IFVpbnQ4QXJyYXkoYStTKTt0LmRhdGEuc2V0KHAuc3ViYXJyYXkoMCxTKSl9dC5kYXRhLnNldChwLnN1YmFycmF5KDAsYSksUyk7bChlLmRhdGEsZC5sZW5ndGgtbyxTK2EpfWVsc2UgdC5kYXRhPXAuc3ViYXJyYXkoMCxTKTtyZXR1cm57bWlzc2luZ0dseXBoczp4LG1heFNpem
101VPZkluc3RydWN0aW9uczpzfX0ocy5sb2NhLHMuZ2x5ZixoLHUsbSxmLHApO2I9ZS5taXNzaW5nR2x5cGhzO2lmKGw+PTY1NTM2JiZzLm1heHAubGVuZ3RoPj0zMil7cy5tYXhwLmRhdGFbMjZdPWUubWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zPj44O3MubWF4cC5kYXRhWzI3XT0yNTUmZS5tYXhTaXplT2ZJbnN0cnVjdGlvbnN9fWlmKCFzLmhoZWEpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCdSZXF1aXJlZCAiaGhlYSIgdGFibGUgaXMgbm90IGZvdW5kJyk7aWYoMD09PXMuaGhlYS5kYXRhWzEwXSYmMD09PXMuaGhlYS5kYXRhWzExXSl7cy5oaGVhLmRhdGFbMTBdPTI1NTtzLmhoZWEuZGF0YVsxMV09MjU1fWNvbnN0IHk9e3VuaXRzUGVyRW06aW50MTYocy5oZWFkLmRhdGFbMThdLHMuaGVhZC5kYXRhWzE5XSkseU1heDpzaWduZWRJbnQxNihzLmhlYWQuZGF0YVs0Ml0scy5oZWFkLmRhdGFbNDNdKSx5TWluOnNpZ25lZEludDE2KHMuaGVhZC5kYXRhWzM4XSxzLmhlYWQuZGF0YVszOV0pLGFzY2VudDpzaWduZWRJbnQxNihzLmhoZWEuZGF0YVs0XSxzLmhoZWEuZGF0YVs1XSksZGVzY2VudDpzaWduZWRJbnQxNihzLmhoZWEuZGF0YVs2XSxzLmhoZWEuZGF0YVs3XSksbGluZUdhcDpzaWduZWRJbnQxNihzLmhoZWEuZGF0YVs4XSxzLmhoZWEuZGF0YVs5XSl9O3RoaXMuYXNjZW50PXkuYXNjZW50L3kudW5pdHNQZXJFbTt0aGlzLmRlc2NlbnQ9eS5kZXNjZW50L3kudW5pdHNQZXJFbTt0aGlzLmxpbmVHYXA9eS5saW5lR2FwL3kudW5pdHNQZXJFbTtpZih0aGlzLmNzc0ZvbnRJbmZvPy5saW5lSGVpZ2h0KXt0aGlzLmxpbmVIZWlnaHQ9dGhpcy5jc3NGb250SW5mby5tZXRyaWNzLmxpbmVIZWlnaHQ7dGhpcy5saW5lR2FwPXRoaXMuY3NzRm9udEluZm8ubWV0cmljcy5saW5lR2FwfWVsc2UgdGhpcy5saW5lSGVpZ2h0PXRoaXMuYXNjZW50LXRoaXMuZGVzY2VudCt0aGlzLmxpbmVHYXA7cy5wb3N0JiZmdW5jdGlvbiByZWFkUG9zdFNjcmlwdFRhYmxlKGUsYSxyKXtjb25zdCBpPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1pO2NvbnN0IG49aStlLmxlbmd0aCxzPXQuZ2V0SW50MzIoKTt0LnNraXAoMjgpO2xldCBvLGMsbD0hMDtzd2l0Y2gocyl7Y2FzZSA2NTUzNjpvPUNyO2JyZWFrO2Nhc2UgMTMxMDcyOmNvbnN0IGU9dC5nZXRVaW50MTYoKTtpZihlIT09cil7bD0hMTticmVha31jb25zdCBpPVtdO2ZvcihjPTA7YzxlOysrYyl7Y29uc3QgZT10LmdldFVpbnQxNigpO2lmKGU+PTMyNzY4KXtsPSExO2JyZWFrfWkucHVzaChlKX1pZighbClicmVhaztjb25zdCBoPVtdLHU9W107Zm9yKDt0LnBvczxuOyl7Y29uc3QgZT10LmdldEJ5dGUoKTt1Lmxlbmd0aD1lO2ZvcihjPTA7YzxlOysrYyl1W2NdPVN0cmluZy5mcm9tQ2hhckNvZGUodC5nZXRCeXRlKCkpO2gucHVzaCh1LmpvaW4oIiIpKX1vPVtdO2ZvcihjPTA7YzxlOysrYyl7Y29uc3QgZT1pW2NdO2U8MjU4P28ucHVzaChDcltlXSk6by5wdXNoKGhbZS0yNThdKX1icmVhaztjYXNlIDE5NjYwODpicmVhaztkZWZhdWx0Ondhcm4oIlVua25vd24vdW5zdXBwb3J0ZWQgcG9zdCB0YWJsZSB2ZXJzaW9uICIrcyk7bD0hMTthLmRlZmF1bHRFbmNvZGluZyYmKG89YS5kZWZhdWx0RW5jb2RpbmcpfWEuZ2x5cGhOYW1lcz1vO3JldHVybiBsfShzLnBvc3QsYSxoKTtzLnBvc3Q9e3RhZzoicG9zdCIsZGF0YTpjcmVhdGVQb3N0VGFibGUoYSl9O2NvbnN0IHc9T2JqZWN0LmNyZWF0ZShudWxsKTtmdW5jdGlvbiBoYXNHbHlwaChlKXtyZXR1cm4hYltlXX1pZihhLmNvbXBvc2l0ZSl7Y29uc3QgZT1hLmNpZFRvR2lkTWFwfHxbXSx0PTA9PT1lLmxlbmd0aDthLmNNYXAuZm9yRWFjaChmdW5jdGlvbihhLHIpeyJzdHJpbmciPT10eXBlb2YgciYmKHI9Y29udmVydENpZFN0cmluZyhhLHIsITApKTtpZihyPjY1NTM1KXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWF4IHNpemUgb2YgQ0lEIGlzIDY1LDUzNSIpO2xldCBpPS0xO3Q/aT1yOnZvaWQgMCE9PWVbcl0mJihpPWVbcl0pO2k+PTAmJmk8aCYmaGFzR2x5cGgoaSkmJih3W2FdPWkpfSl9ZWxzZXtjb25zdCBlPWZ1bmN0aW9uIHJlYWRDbWFwVGFibGUoZSx0LGEscil7aWYoIWUpe3dhcm4oIk5vIGNtYXAgdGFibGUgYXZhaWxhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1sZXQgaSxuPSh0LnN0YXJ0fHwwKStlLm9mZnNldDt0LnBvcz1uO3Quc2tpcCgyKTtjb25zdCBzPXQuZ2V0VWludDE2KCk7bGV0IG8sYz0hMTtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCBpPXQuZ2V0VWludDE2KCksbj10LmdldFVpbnQxNigpLGw9dC5nZXRJbnQzMigpPj4+MDtsZXQgaD0hMTtpZihvPy5wbGF0Zm9ybUlkIT09aXx8bz8uZW5jb2RpbmdJZCE9PW4pe2lmKDAhPT1pfHwwIT09biYmMSE9PW4mJjMhPT1uKWlmKDE9PT1pJiYwPT09biloPSEwO2Vsc2UgaWYoMyE9PWl8fDEhPT1ufHwhciYmbyl7aWYoYSYmMz09PWkmJjA9PT1uKXtoPSEwO2xldCBhPSEwO2lmKGU8cy0xKXtjb25zdCBlPXQucGVla0J5dGVzKDIpO2ludDE2KGVbMF0sZVsxXSk8aSYmKGE9ITEpfWEmJihjPSEwKX19ZWxzZXtoPSEwO2F8fChjPSEwKX1lbHNlIGg9ITA7aCYmKG89e3BsYXRmb3JtSWQ6aSxlbmNvZGluZ0lkOm4sb2Zmc2V0Omx9KTtpZihjKWJyZWFrfX1vJiYodC5wb3M9bitvLm9mZnNldCk7aWYoIW98fC0xPT09dC5wZWVrQnl0ZSgpKXt3YXJuKCJDb3VsZCBub3QgZmluZCBhIHByZWZlcnJlZCBjbWFwIHRhYmxlLiIpO3JldHVybntwbGF0Zm9ybUlkOi0xLGVuY29kaW5nSWQ6LTEsbWFwcGluZ3M6W10saGFzU2hvcnRDbWFwOiExfX1jb25zdCBsPXQuZ2V0VWludDE2KCk7bGV0IGg9ITE7Y29uc3QgdT1bXTtsZXQgZCxmO2lmKDA9PT1sKXt0LnNraXAoNCk7Zm9yKGQ9MDtkPDI1NjtkKyspe2NvbnN0IGU9dC5nZXRCeXRlKCk7ZSYmdS5wdXNoKHtjaGFyQ29kZTpkLGdseXBoSWQ6ZX0pfWg9ITB9ZWxzZSBpZigyPT09bCl7dC5za2lwKDQpO2NvbnN0IGU9W107bGV0IGE9MDtmb3IobGV0IHI9MDtyPDI1NjtyKyspe2NvbnN0IHI9dC5nZXRVaW50MTYoKT4+MztlLnB1c2gocik7YT1NYXRoLm1heChyLGEpfWNvbnN0IHI9W107Zm9yKGxldCBlPTA7ZTw9YTtlKyspci5wdXNoKHtmaXJzdENvZGU6dC5nZXRVaW50MTYoKSxlbnRyeUNvdW50OnQuZ2V0VWludDE2KCksaWREZWx0YTpzaWduZWRJbnQxNih0LmdldEJ5dGUoKSx0LmdldEJ5dGUoKSksaWRSYW5nZVBvczp0LnBvcyt0LmdldFVpbnQxNigpfSk7Zm9yKGxldCBhPTA7YTwyNTY7YSsrKWlmKDA9PT1lW2FdKXt0LnBvcz1yWzBdLmlkUmFuZ2VQb3MrMiphO2Y9dC5nZXRVaW50MTYoKTt1LnB1c2goe2NoYXJDb2RlOmEsZ2x5cGhJZDpmfSl9ZWxzZXtjb25zdCBpPXJbZVthXV07Zm9yKGQ9MDtkPGkuZW50cnlDb3VudDtkKyspe2NvbnN0IGU9KGE8PDgpK2QraS5maXJzdENvZGU7dC5wb3M9aS5pZFJhbmdlUG9zKzIqZDtmPXQuZ2V0VWludDE2KCk7MCE9PWYmJihmPShmK2kuaWREZWx0YSklNjU1MzYpO3UucHVzaCh7Y2hhckNvZGU6ZSxnbHlwaElkOmZ9KX19fWVsc2UgaWYoND09PWwpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCk+PjE7dC5za2lwKDYpO2NvbnN0IGE9W107bGV0IHI7Zm9yKHI9MDtyPGU7cisrKWEucHVzaCh7ZW5kOnQuZ2V0VWludDE2KCl9KTt0LnNraXAoMik7Zm9yKHI9MDtyPGU7cisrKWFbcl0uc3RhcnQ9dC5nZXRVaW50MTYoKTtmb3Iocj0wO3I8ZTtyKyspYVtyXS5kZWx0YT10LmdldFVpbnQxNigpO2xldCBzLG89MDtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtjb25zdCBuPXQuZ2V0VWludDE2KCk7aWYobil7cz0obj4+MSktKGUtcik7aS5vZmZzZXRJbmRleD1zO289TWF0aC5tYXgobyxzK2kuZW5kLWkuc3RhcnQrMSl9ZWxzZSBpLm9mZnNldEluZGV4PS0xfWNvbnN0IGM9W107Zm9yKGQ9MDtkPG87ZCsrKWMucHVzaCh0LmdldFVpbnQxNigpKTtmb3Iocj0wO3I8ZTtyKyspe2k9YVtyXTtuPWkuc3RhcnQ7Y29uc3QgZT1pLmVuZCx0PWkuZGVsdGE7cz1pLm9mZnNldEluZGV4O2ZvcihkPW47ZDw9ZTtkKyspaWYoNjU1MzUhPT1kKXtmPXM8MD9kOmNb
101cytkLW5dO2Y9Zit0JjY1NTM1O3UucHVzaCh7Y2hhckNvZGU6ZCxnbHlwaElkOmZ9KX19fWVsc2UgaWYoNj09PWwpe3Quc2tpcCg0KTtjb25zdCBlPXQuZ2V0VWludDE2KCksYT10LmdldFVpbnQxNigpO2ZvcihkPTA7ZDxhO2QrKyl7Zj10LmdldFVpbnQxNigpO2NvbnN0IGE9ZStkO3UucHVzaCh7Y2hhckNvZGU6YSxnbHlwaElkOmZ9KX19ZWxzZXtpZigxMiE9PWwpe3dhcm4oImNtYXAgdGFibGUgaGFzIHVuc3VwcG9ydGVkIGZvcm1hdDogIitsKTtyZXR1cm57cGxhdGZvcm1JZDotMSxlbmNvZGluZ0lkOi0xLG1hcHBpbmdzOltdLGhhc1Nob3J0Q21hcDohMX19e3Quc2tpcCgxMCk7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wO2ZvcihkPTA7ZDxlO2QrKyl7Y29uc3QgZT10LmdldEludDMyKCk+Pj4wLGE9dC5nZXRJbnQzMigpPj4+MDtsZXQgcj10LmdldEludDMyKCk+Pj4wO2ZvcihsZXQgdD1lO3Q8PWE7dCsrKXUucHVzaCh7Y2hhckNvZGU6dCxnbHlwaElkOnIrK30pfX19dS5zb3J0KChlLHQpPT5lLmNoYXJDb2RlLXQuY2hhckNvZGUpO2NvbnN0IGc9W10scD1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIHUpe2NvbnN0e2NoYXJDb2RlOnR9PWU7aWYoIXAuaGFzKHQpKXtwLmFkZCh0KTtnLnB1c2goZSl9fXJldHVybntwbGF0Zm9ybUlkOm8ucGxhdGZvcm1JZCxlbmNvZGluZ0lkOm8uZW5jb2RpbmdJZCxtYXBwaW5nczpnLGhhc1Nob3J0Q21hcDpofX0ocy5jbWFwLHQsdGhpcy5pc1N5bWJvbGljRm9udCxhLmhhc0VuY29kaW5nKSxyPWUucGxhdGZvcm1JZCxpPWUuZW5jb2RpbmdJZCxuPWUubWFwcGluZ3M7bGV0IG89W10sYz0hMTshYS5oYXNFbmNvZGluZ3x8Ik1hY1JvbWFuRW5jb2RpbmciIT09YS5iYXNlRW5jb2RpbmdOYW1lJiYiV2luQW5zaUVuY29kaW5nIiE9PWEuYmFzZUVuY29kaW5nTmFtZXx8KG89Z2V0RW5jb2RpbmcoYS5iYXNlRW5jb2RpbmdOYW1lKSk7aWYoYS5oYXNFbmNvZGluZyYmIXRoaXMuaXNTeW1ib2xpY0ZvbnQmJigzPT09ciYmMT09PWl8fDE9PT1yJiYwPT09aSkpe2NvbnN0IGU9ZnIoKTtmb3IobGV0IHQ9MDt0PDI1Njt0Kyspe2xldCBzO3M9dm9pZCAwIT09dGhpcy5kaWZmZXJlbmNlc1t0XT90aGlzLmRpZmZlcmVuY2VzW3RdOm8ubGVuZ3RoJiYiIiE9PW9bdF0/b1t0XTpsclt0XTtpZighcyljb250aW51ZTtjb25zdCBjPXJlY292ZXJHbHlwaE5hbWUocyxlKTtsZXQgbDszPT09ciYmMT09PWk/bD1lW2NdOjE9PT1yJiYwPT09aSYmKGw9Y3IuaW5kZXhPZihjKSk7aWYodm9pZCAwPT09bCl7aWYoIWEuZ2x5cGhOYW1lcyYmYS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCYmISh0aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKSl7Y29uc3QgZT10aGlzLnRvVW5pY29kZS5nZXQodCk7ZSYmKGw9ZS5jb2RlUG9pbnRBdCgwKSl9aWYodm9pZCAwPT09bCljb250aW51ZX1mb3IoY29uc3QgZSBvZiBuKWlmKGUuY2hhckNvZGU9PT1sKXt3W3RdPWUuZ2x5cGhJZDticmVha319fWVsc2UgaWYoMD09PXIpe2Zvcihjb25zdCBlIG9mIG4pd1tlLmNoYXJDb2RlXT1lLmdseXBoSWQ7Yz0hMH1lbHNlIGlmKDM9PT1yJiYwPT09aSlmb3IoY29uc3QgZSBvZiBuKXtsZXQgdD1lLmNoYXJDb2RlO3Q+PTYxNDQwJiZ0PD02MTY5NSYmKHQmPTI1NSk7d1t0XT1lLmdseXBoSWR9ZWxzZSBmb3IoY29uc3QgZSBvZiBuKXdbZS5jaGFyQ29kZV09ZS5nbHlwaElkO2lmKGEuZ2x5cGhOYW1lcyYmKG8ubGVuZ3RofHx0aGlzLmRpZmZlcmVuY2VzLmxlbmd0aCkpZm9yKGxldCBlPTA7ZTwyNTY7KytlKXtpZighYyYmdm9pZCAwIT09d1tlXSljb250aW51ZTtjb25zdCB0PXRoaXMuZGlmZmVyZW5jZXNbZV18fG9bZV07aWYoIXQpY29udGludWU7Y29uc3Qgcj1hLmdseXBoTmFtZXMuaW5kZXhPZih0KTtyPjAmJmhhc0dseXBoKHIpJiYod1tlXT1yKX19MD09PXcubGVuZ3RoJiYod1swXT0wKTtsZXQgeD1kLTE7Znx8KHg9MCk7aWYoIWEuY3NzRm9udEluZm8pe2NvbnN0IGU9YWRqdXN0TWFwcGluZyh3LGhhc0dseXBoLHgsdGhpcy50b1VuaWNvZGUpO3RoaXMudG9Gb250Q2hhcj1lLnRvRm9udENoYXI7cy5jbWFwPXt0YWc6ImNtYXAiLGRhdGE6Y3JlYXRlQ21hcFRhYmxlKGUuY2hhckNvZGVUb0dseXBoSWQsZS50b1VuaWNvZGVFeHRyYU1hcCxkKX07c1siT1MvMiJdJiZmdW5jdGlvbiB2YWxpZGF0ZU9TMlRhYmxlKGUsdCl7dC5wb3M9KHQuc3RhcnR8fDApK2Uub2Zmc2V0O2NvbnN0IGE9dC5nZXRVaW50MTYoKTt0LnNraXAoNjApO2NvbnN0IHI9dC5nZXRVaW50MTYoKTtpZihhPDQmJjc2OCZyKXJldHVybiExO2lmKHQuZ2V0VWludDE2KCk+dC5nZXRVaW50MTYoKSlyZXR1cm4hMTt0LnNraXAoNik7aWYoMD09PXQuZ2V0VWludDE2KCkpcmV0dXJuITE7ZS5kYXRhWzhdPWUuZGF0YVs5XT0wO3JldHVybiEwfShzWyJPUy8yIl0sdCl8fChzWyJPUy8yIl09e3RhZzoiT1MvMiIsZGF0YTpjcmVhdGVPUzJUYWJsZShhLGUuY2hhckNvZGVUb0dseXBoSWQseSl9KX1pZihzLm5hbWUpe2NvbnN0W3Qscl09cmVhZE5hbWVUYWJsZShzLm5hbWUpO3MubmFtZS5kYXRhPWNyZWF0ZU5hbWVUYWJsZShlLHQpO3RoaXMucHNOYW1lPXRbMF1bNl18fG51bGw7YS5jb21wb3NpdGV8fGZ1bmN0aW9uIGFkanVzdFRydWVUeXBlVG9Vbmljb2RlKGUsdCxhKXtpZihlLmlzSW50ZXJuYWxGb250KXJldHVybjtpZihlLmhhc0luY2x1ZGVkVG9Vbmljb2RlTWFwKXJldHVybjtpZihlLmhhc0VuY29kaW5nKXJldHVybjtpZihlLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwKXJldHVybjtpZighdClyZXR1cm47aWYoMD09PWEubGVuZ3RoKXJldHVybjtpZihlLmRlZmF1bHRFbmNvZGluZz09PWhyKXJldHVybjtmb3IoY29uc3QgZSBvZiBhKWlmKCFpc1dpbk5hbWVSZWNvcmQoZSkpcmV0dXJuO2NvbnN0IHI9aHIsaT1bXSxuPWZyKCk7Zm9yKGNvbnN0IGUgaW4gcil7Y29uc3QgdD1yW2VdO2lmKCIiPT09dCljb250aW51ZTtjb25zdCBhPW5bdF07dm9pZCAwIT09YSYmKGlbZV09U3RyaW5nLmZyb21DaGFyQ29kZShhKSl9aS5sZW5ndGg+MCYmZS50b1VuaWNvZGUuYW1lbmQoaSl9KGEsdGhpcy5pc1N5bWJvbGljRm9udCxyKX1lbHNlIHMubmFtZT17dGFnOiJuYW1lIixkYXRhOmNyZWF0ZU5hbWVUYWJsZSh0aGlzLm5hbWUpfTtjb25zdCBTPW5ldyBPcGVuVHlwZUZpbGVCdWlsZGVyKG4udmVyc2lvbik7Zm9yKGNvbnN0IGUgaW4gcylTLmFkZFRhYmxlKGUsc1tlXS5kYXRhKTtyZXR1cm4gUy50b0FycmF5KCl9Y29udmVydChlLGEscil7ci5maXhlZFBpdGNoPSExO3IuYnVpbHRJbkVuY29kaW5nJiZmdW5jdGlvbiBhZGp1c3RUeXBlMVRvVW5pY29kZShlLHQpe2lmKGUuaXNJbnRlcm5hbEZvbnQpcmV0dXJuO2lmKGUuaGFzSW5jbHVkZWRUb1VuaWNvZGVNYXApcmV0dXJuO2lmKHQ9PT1lLmRlZmF1bHRFbmNvZGluZylyZXR1cm47aWYoZS50b1VuaWNvZGUgaW5zdGFuY2VvZiBJZGVudGl0eVRvVW5pY29kZU1hcClyZXR1cm47Y29uc3QgYT1bXSxyPWZyKCk7Zm9yKGNvbnN0IGkgaW4gdCl7aWYoZS5oYXNFbmNvZGluZyYmKGUuYmFzZUVuY29kaW5nTmFtZXx8dm9pZCAwIT09ZS5kaWZmZXJlbmNlc1tpXSkpY29udGludWU7Y29uc3Qgbj1nZXRVbmljb2RlRm9yR2x5cGgodFtpXSxyKTstMSE9PW4mJihhW2ldPVN0cmluZy5mcm9tQ2hhckNvZGUobikpfWEubGVuZ3RoPjAmJmUudG9Vbmljb2RlLmFtZW5kKGEpfShyLHIuYnVpbHRJbkVuY29kaW5nKTtsZXQgaT0xO2EgaW5zdGFuY2VvZiBDRkZGb250JiYoaT1hLm51bUdseXBocy0xKTtjb25zdCBuPWEuZ2V0R2x5cGhNYXBwaW5nKHIpO2xldCBzPW51bGwsbz1uLGM9bnVsbDtpZighci5jc3NGb250SW5mbyl7cz1hZGp1c3RNYXBwaW5nKG4sYS5oYXNHbHlwaElkLmJpbmQoYSksaSx0aGlzLnRvVW5pY29kZSk7dGhpcy50b0ZvbnRDaGFyPXMudG9Gb250Q2hhcjtvPXMuY2hhckNvZGVUb0dseXBoSWQ7Yz1zLnRvVW5pY29kZUV4dHJhTWFwfWNvbnN0IGw9YS5udW1HbHlwaHM7ZnVuY3Rpb24gZ2V0Q2hhckNvZGVzKGUsdCl7bGV0IGE9bnVsbDtmb3IoY29uc3QgciBpbiBlKXQ9PT1lW3JdJiYoYXx8PVtdKS5wdXNoKDB8cik7cmV0dXJuIGF9ZnVuY3Rpb24gY3JlYXRlQ2hhckNvZGUoZSx0KXtmb3IoY29uc3QgYSBpbiBlKWlmKHQ9PT1lW2FdKXJldHVybiAwfGE7cy5jaGFyQ29kZVRvR2x5cGhJZFtzLm5leHRBdmFpbGFibGVGb250Q2hhckNvZGVdPXQ7cmV0dXJuIHMubmV4dEF2YWlsYWJsZUZvbnRDaGFyQ29kZSsrfWNvbnN0IGg9YS5zZWFjcztpZihzJiZoPy5sZW5ndGgpe2NvbnN0IGU9ci5mb250TWF0cml4fHx0LGk9YS5nZXRDaGFyc2V0KCksbz1PYmplY3QuY3JlYXRlKG51bGwpO2ZvcihsZXQgdCBpbiBoKXt0fD0wO2NvbnN0IGE9aFt0XSxyPWxyW2FbMl1dLGM9bHJbYVszXV0sbD1pLmluZGV4T2YociksdT1pLmluZGV4T2YoYyk7aWYobDwwfHx1PDApY29udGludWU7Y29uc3QgZD17eDphWzBdKmVbMF0rYVsxXSplWzJdK2VbNF0seTphWzBdKmVbMV0rYVsxXSplWzNdK2VbNV19LGY9Z2V0Q2hhckNvZGVzKG4sdCk7aWYoZilmb3IoY29uc3QgZSBvZiBmKXtjb25zdCB0PXMuY2hhckNvZGVUb0dseXBoSWQsYT1jcmVhdGVDaGFyQ29kZSh0LGwpLHI9Y3JlYXRlQ2hhckNvZGUodCx1KTtvW2VdPXtiYXNlRm9udENoYXJDb2RlOmEsYWNjZW50Rm9udENoYXJDb2RlOnIsYWNjZW50T2Zmc2V0OmR9fX1yLnNlYWNNYXA9b31jb25zdCB1PXIuZm9udE1hdHJpeD8xL01hdGgubWF4KC4uLnIuZm9udE1hdHJpeC5zbGljZSgwLDQpLm1hcChNYXRoLmFicykpOjFlMyxkPW5ldyBPcGVuVHlwZUZpbGVCdWlsZGVyKCJPVFRPIik7ZC5hZGRUYWJsZSgiQ0ZGICIsYS5kYXRhKTtkLmFkZFRhYmxlKCJPUy8yIixjcmVhdGVPUzJUYWJsZShyLG8pKTtkLmFkZFRhYmxlKCJjbWFwIixjcmVhdGVDbWFwVGFibGUobyxjLGwpKTtkLmFkZFRhYmxlKCJoZWFkIiwiXDABXDBcMFwwXDAQXDBcMFwwXDBcMF8PPMO1XDBcMCIrc2FmZVN0cmluZzE2KHUpKyJcMFwwXDBcMMKeXHZ+J1wwXDBcMFwwwp5cdn4nXDBcMCIrc2FmZVN0cmluZzE2KHIuZGVzY2VudCkrIg/DvyIrc2FmZVN0cmluZzE2KHIuYXNjZW50KStzdHJpbmcxNihyLml0YWxpY0FuZ2xlPzI6MCkrIlwwEVwwXD
101BcMFwwXDBcMCIpO2QuYWRkVGFibGUoImhoZWEiLCJcMAFcMFwwIitzYWZlU3RyaW5nMTYoci5hc2NlbnQpK3NhZmVTdHJpbmcxNihyLmRlc2NlbnQpKyJcMFwww7/Dv1wwXDBcMFwwXDBcMCIrc2FmZVN0cmluZzE2KHIuY2FwSGVpZ2h0KStzYWZlU3RyaW5nMTYoTWF0aC50YW4oci5pdGFsaWNBbmdsZSkqci54SGVpZ2h0KSsiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwIitzdHJpbmcxNihsKSk7ZC5hZGRUYWJsZSgiaG10eCIsZnVuY3Rpb24gZm9udEZpZWxkc0htdHgoKXtjb25zdCBlPWEuY2hhcnN0cmluZ3MsdD1hLmNmZj9hLmNmZi53aWR0aHM6bnVsbDtsZXQgcj0iXDBcMFwwXDAiO2ZvcihsZXQgYT0xLGk9bDthPGk7YSsrKXtsZXQgaT0wO2lmKGUpe2NvbnN0IHQ9ZVthLTFdO2k9IndpZHRoImluIHQ/dC53aWR0aDowfWVsc2UgdCYmKGk9TWF0aC5jZWlsKHRbYV18fDApKTtyKz1zdHJpbmcxNihpKStzdHJpbmcxNigwKX1yZXR1cm4gcn0oKSk7ZC5hZGRUYWJsZSgibWF4cCIsIlwwXDBQXDAiK3N0cmluZzE2KGwpKTtkLmFkZFRhYmxlKCJuYW1lIixjcmVhdGVOYW1lVGFibGUoZSkpO2QuYWRkVGFibGUoInBvc3QiLGNyZWF0ZVBvc3RUYWJsZShyKSk7cmV0dXJuIGQudG9BcnJheSgpfWdldCBfc3BhY2VXaWR0aCgpe2NvbnN0IGU9WyJzcGFjZSIsIm1pbnVzIiwib25lIiwiaSIsIkkiXTtsZXQgdDtmb3IoY29uc3QgYSBvZiBlKXtpZihhIGluIHRoaXMud2lkdGhzKXt0PXRoaXMud2lkdGhzW2FdO2JyZWFrfWNvbnN0IGU9ZnIoKVthXTtsZXQgcj0wO2lmKHRoaXMuY29tcG9zaXRlJiZ0aGlzLmNNYXAuY29udGFpbnMoZSkpe3I9dGhpcy5jTWFwLmxvb2t1cChlKTsic3RyaW5nIj09dHlwZW9mIHImJihyPWNvbnZlcnRDaWRTdHJpbmcoZSxyKSl9IXImJnRoaXMudG9Vbmljb2RlJiYocj10aGlzLnRvVW5pY29kZS5jaGFyQ29kZU9mKGUpKTtyPD0wJiYocj1lKTt0PXRoaXMud2lkdGhzW3JdO2lmKHQpYnJlYWt9cmV0dXJuIHNoYWRvdyh0aGlzLCJfc3BhY2VXaWR0aCIsdHx8dGhpcy5kZWZhdWx0V2lkdGgpfV9jaGFyVG9HbHlwaChlLHQ9ITEpe2xldCBhLHIsaSxuPXRoaXMuX2dseXBoQ2FjaGVbZV07aWYobj8uaXNTcGFjZT09PXQpcmV0dXJuIG47bGV0IHM9ZTtpZih0aGlzLmNNYXA/LmNvbnRhaW5zKGUpKXtzPXRoaXMuY01hcC5sb29rdXAoZSk7InN0cmluZyI9PXR5cGVvZiBzJiYocz1jb252ZXJ0Q2lkU3RyaW5nKGUscykpfXI9dGhpcy53aWR0aHNbc107Im51bWJlciIhPXR5cGVvZiByJiYocj10aGlzLmRlZmF1bHRXaWR0aCk7Y29uc3Qgbz10aGlzLnZtZXRyaWNzPy5bc107bGV0IGM9dGhpcy50b1VuaWNvZGUuZ2V0KGUpfHxlOyJudW1iZXIiPT10eXBlb2YgYyYmKGM9U3RyaW5nLmZyb21DaGFyQ29kZShjKSk7bGV0IGw9dm9pZCAwIT09dGhpcy50b0ZvbnRDaGFyW2VdO2E9dGhpcy50b0ZvbnRDaGFyW2VdfHxlO2lmKHRoaXMubWlzc2luZ0ZpbGUpe2NvbnN0IHQ9dGhpcy5kaWZmZXJlbmNlc1tlXXx8dGhpcy5kZWZhdWx0RW5jb2RpbmdbZV07aWYoKCIubm90ZGVmIj09PXR8fCIiPT09dCkmJiJUeXBlMSI9PT10aGlzLnR5cGUpe2E9MzI7aWYoIiI9PT10KXtyfHw9dGhpcy5fc3BhY2VXaWR0aDtjPVN0cmluZy5mcm9tQ2hhckNvZGUoYSl9fWE9ZnVuY3Rpb24gbWFwU3BlY2lhbFVuaWNvZGVWYWx1ZXMoZSl7cmV0dXJuIGU+PTY1NTIwJiZlPD02NTUzNT8wOmU+PTYyOTc2JiZlPD02Mzc0Mz9wcigpW2VdfHxlOjE3Mz09PWU/NDU6ZX0oYSl9dGhpcy5pc1R5cGUzRm9udCYmKGk9YSk7bGV0IGg9bnVsbDtpZih0aGlzLnNlYWNNYXA/LltlXSl7bD0hMDtjb25zdCB0PXRoaXMuc2VhY01hcFtlXTthPXQuYmFzZUZvbnRDaGFyQ29kZTtoPXtmb250Q2hhcjpTdHJpbmcuZnJvbUNvZGVQb2ludCh0LmFjY2VudEZvbnRDaGFyQ29kZSksb2Zmc2V0OnQuYWNjZW50T2Zmc2V0fX1sZXQgdT0iIjsibnVtYmVyIj09dHlwZW9mIGEmJihhPD0xMTE0MTExP3U9U3RyaW5nLmZyb21Db2RlUG9pbnQoYSk6d2FybihgY2hhclRvR2x5cGggLSBpbnZhbGlkIGZvbnRDaGFyQ29kZTogJHthfWApKTtpZih0aGlzLm1pc3NpbmdGaWxlJiZ0aGlzLnZlcnRpY2FsJiYxPT09dS5sZW5ndGgpe2NvbnN0IGU9dnIoKVt1LmNoYXJDb2RlQXQoMCldO2UmJih1PWM9U3RyaW5nLmZyb21DaGFyQ29kZShlKSl9bj1uZXcgZm9udHNfR2x5cGgoZSx1LGMsaCxyLG8saSx0LGwpO3JldHVybiB0aGlzLl9nbHlwaENhY2hlW2VdPW59Y2hhcnNUb0dseXBocyhlKXtsZXQgdD10aGlzLl9jaGFyc0NhY2hlW2VdO2lmKHQpcmV0dXJuIHQ7dD1bXTtpZih0aGlzLmNNYXApe2NvbnN0IGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUubGVuZ3RoO2xldCBpPTA7Zm9yKDtpPHI7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUsaSxhKTtjb25zdHtjaGFyY29kZTpyLGxlbmd0aDpufT1hO2krPW47Y29uc3Qgcz10aGlzLl9jaGFyVG9HbHlwaChyLDE9PT1uJiYzMj09PWUuY2hhckNvZGVBdChpLTEpKTt0LnB1c2gocyl9fWVsc2UgZm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7KythKXtjb25zdCByPWUuY2hhckNvZGVBdChhKSxpPXRoaXMuX2NoYXJUb0dseXBoKHIsMzI9PT1yKTt0LnB1c2goaSl9cmV0dXJuIHRoaXMuX2NoYXJzQ2FjaGVbZV09dH1nZXRDaGFyUG9zaXRpb25zKGUpe2NvbnN0IHQ9W107aWYodGhpcy5jTWFwKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHI9MDtmb3IoO3I8ZS5sZW5ndGg7KXt0aGlzLmNNYXAucmVhZENoYXJDb2RlKGUscixhKTtjb25zdCBpPWEubGVuZ3RoO3QucHVzaChbcixyK2ldKTtyKz1pfX1lbHNlIGZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyOysrYSl0LnB1c2goW2EsYSsxXSk7cmV0dXJuIHR9Z2V0IGdseXBoQ2FjaGVWYWx1ZXMoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9nbHlwaENhY2hlKX1lbmNvZGVTdHJpbmcoZSl7Y29uc3QgdD1bXSxhPVtdLGhhc0N1cnJlbnRCdWZFcnJvcnM9KCk9PnQubGVuZ3RoJTI9PTEscj10aGlzLnRvVW5pY29kZSBpbnN0YW5jZW9mIElkZW50aXR5VG9Vbmljb2RlTWFwP2U9PnRoaXMudG9Vbmljb2RlLmNoYXJDb2RlT2YoZSk6ZT0+dGhpcy50b1VuaWNvZGUuY2hhckNvZGVPZihTdHJpbmcuZnJvbUNvZGVQb2ludChlKSk7Zm9yKGxldCBpPTAsbj1lLmxlbmd0aDtpPG47aSsrKXtjb25zdCBuPWUuY29kZVBvaW50QXQ
101oaSk7bj41NTI5NSYmKG48NTczNDR8fG4+NjU1MzMpJiZpKys7aWYodGhpcy50b1VuaWNvZGUpe2NvbnN0IGU9cihuKTtpZigtMSE9PWUpe2lmKGhhc0N1cnJlbnRCdWZFcnJvcnMoKSl7dC5wdXNoKGEuam9pbigiIikpO2EubGVuZ3RoPTB9Zm9yKGxldCB0PSh0aGlzLmNNYXA/dGhpcy5jTWFwLmdldENoYXJDb2RlTGVuZ3RoKGUpOjEpLTE7dD49MDt0LS0pYS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoZT4+OCp0JjI1NSkpO2NvbnRpbnVlfX1pZighaGFzQ3VycmVudEJ1ZkVycm9ycygpKXt0LnB1c2goYS5qb2luKCIiKSk7YS5sZW5ndGg9MH1hLnB1c2goU3RyaW5nLmZyb21Db2RlUG9pbnQobikpfXQucHVzaChhLmpvaW4oIiIpKTtyZXR1cm4gdH19Y2xhc3MgRXJyb3JGb250e2NvbnN0cnVjdG9yKGUpe3RoaXMuZXJyb3I9ZTt0aGlzLmxvYWRlZE5hbWU9ImdfZm9udF9lcnJvciI7dGhpcy5taXNzaW5nRmlsZT0hMH1jaGFyc1RvR2x5cGhzKCl7cmV0dXJuW119ZW5jb2RlU3RyaW5nKGUpe3JldHVybltlXX1leHBvcnREYXRhKCl7cmV0dXJue2Vycm9yOnRoaXMuZXJyb3J9fX1jbGFzcyBDc3NGb250SW5mb3sjUDsjSDsjVztzdGF0aWMgc3RyaW5ncz1bImZvbnRGYW1pbHkiLCJmb250V2VpZ2h0IiwiaXRhbGljQW5nbGUiXTtzdGF0aWMgd3JpdGUoZSl7Y29uc3QgdD1uZXcgVGV4dEVuY29kZXIsYT17fTtsZXQgcj0wO2Zvcihjb25zdCBpIG9mIENzc0ZvbnRJbmZvLnN0cmluZ3Mpe2NvbnN0IG49dC5lbmNvZGUoZVtpXSk7YVtpXT1uO3IrPTQrbi5sZW5ndGh9Y29uc3QgaT1uZXcgQXJyYXlCdWZmZXIociksbj1uZXcgVWludDhBcnJheShpKSxzPW5ldyBEYXRhVmlldyhpKTtsZXQgbz0wO2Zvcihjb25zdCBlIG9mIENzc0ZvbnRJbmZvLnN0cmluZ3Mpe2NvbnN0IHQ9YVtlXSxyPXQubGVuZ3RoO3Muc2V0VWludDMyKG8scik7bi5zZXQodCxvKzQpO28rPTQrcn1hc3NlcnQobz09PWkuYnl0ZUxlbmd0aCwiQ3NzRm9udEluZm8ud3JpdGU6IEJ1ZmZlciBvdmVyZmxvdyIpO3JldHVybiBpfWNvbnN0cnVjdG9yKGUpe3RoaXMuI1A9ZTt0aGlzLiNIPW5ldyBEYXRhVmlldyh0aGlzLiNQKTt0aGlzLiNXPW5ldyBUZXh0RGVjb2Rlcn0jeihlKXthc3NlcnQoZTxDc3NGb250SW5mby5zdHJpbmdzLmxlbmd0aCwiSW52YWxpZCBzdHJpbmcgaW5kZXgiKTtsZXQgdD0wO2ZvcihsZXQgYT0wO2E8ZTthKyspdCs9dGhpcy4jSC5nZXRVaW50MzIodCkrNDtjb25zdCBhPXRoaXMuI0guZ2V0VWludDMyKHQpO3JldHVybiB0aGlzLiNXLmRlY29kZShuZXcgVWludDhBcnJheSh0aGlzLiNQLHQrNCxhKSl9Z2V0IGZvbnRGYW1pbHkoKXtyZXR1cm4gdGhpcy4jeigwKX1nZXQgZm9udFdlaWdodCgpe3JldHVybiB0aGlzLiN6KDEpfWdldCBpdGFsaWNBbmdsZSgpe3JldHVybiB0aGlzLiN6KDIpfX1jbGFzcyBTeXN0ZW1Gb250SW5mb3sjUDsjSDsjVztzdGF0aWMgc3RyaW5ncz1bImNzcyIsImxvYWRlZE5hbWUiLCJiYXNlRm9udE5hbWUiLCJzcmMiXTtzdGF0aWMgd3JpdGUoZSl7Y29uc3QgdD1uZXcgVGV4dEVuY29kZXIsYT17fTtsZXQgcj0wO2Zvcihjb25zdCBpIG9mIFN5c3RlbUZvbnRJbmZvLnN0cmluZ3Mpe2NvbnN0IG49dC5lbmNvZGUoZVtpXSk7YVtpXT1uO3IrPTQrbi5sZW5ndGh9cis9NDtsZXQgaSxuLHM9MStyO2lmKGUuc3R5bGUpe2k9dC5lbmNvZGUoZS5zdHlsZS5zdHlsZSk7bj10LmVuY29kZShlLnN0eWxlLndlaWdodCk7cys9NCtpLmxlbmd0aCs0K24ubGVuZ3RofWNvbnN0IG89bmV3IEFycmF5QnVmZmVyKHMpLGM9bmV3IFVpbnQ4QXJyYXkobyksbD1uZXcgRGF0YVZpZXcobyk7bGV0IGg9MDtsLnNldFVpbnQ4KGgrKyxlLmd1ZXNzRmFsbGJhY2s
101/MTowKTtsLnNldFVpbnQzMihoLDApO2grPTQ7cj0wO2Zvcihjb25zdCBlIG9mIFN5c3RlbUZvbnRJbmZvLnN0cmluZ3Mpe2NvbnN0IHQ9YVtlXSxpPXQubGVuZ3RoO3IrPTQraTtsLnNldFVpbnQzMihoLGkpO2Muc2V0KHQsaCs0KTtoKz00K2l9bC5zZXRVaW50MzIoaC1yLTQscik7aWYoZS5zdHlsZSl7bC5zZXRVaW50MzIoaCxpLmxlbmd0aCk7Yy5zZXQoaSxoKzQpO2grPTQraS5sZW5ndGg7bC5zZXRVaW50MzIoaCxuLmxlbmd0aCk7Yy5zZXQobixoKzQpO2grPTQrbi5sZW5ndGh9YXNzZXJ0KGg8PW8uYnl0ZUxlbmd0aCwiU3Vic3RpdGlvbkluZm8ud3JpdGU6IEJ1ZmZlciBvdmVyZmxvdyIpO3JldHVybiBvLnRyYW5zZmVyVG9GaXhlZExlbmd0aChoKX1jb25zdHJ1Y3RvcihlKXt0aGlzLiNQPWU7dGhpcy4jSD1uZXcgRGF0YVZpZXcodGhpcy4jUCk7dGhpcy4jVz1uZXcgVGV4dERlY29kZXJ9Z2V0IGd1ZXNzRmFsbGJhY2soKXtyZXR1cm4gMCE9PXRoaXMuI0guZ2V0VWludDgoMCl9I3ooZSl7YXNzZXJ0KGU8U3lzdGVtRm9udEluZm8uc3RyaW5ncy5sZW5ndGgsIkludmFsaWQgc3RyaW5nIGluZGV4Iik7bGV0IHQ9NTtmb3IobGV0IGE9MDthPGU7YSsrKXQrPXRoaXMuI0guZ2V0VWludDMyKHQpKzQ7Y29uc3QgYT10aGlzLiNILmdldFVpbnQzMih0KTtyZXR1cm4gdGhpcy4jVy5kZWNvZGUobmV3IFVpbnQ4QXJyYXkodGhpcy4jUCx0KzQsYSkpfWdldCBjc3MoKXtyZXR1cm4gdGhpcy4jeigwKX1nZXQgbG9hZGVkTmFtZSgpe3JldHVybiB0aGlzLiN6KDEpfWdldCBiYXNlRm9udE5hbWUoKXtyZXR1cm4gdGhpcy4jeigyKX1nZXQgc3JjKCl7cmV0dXJuIHRoaXMuI3ooMyl9Z2V0IHN0eWxlKCl7bGV0IGU9MTtlKz00K3RoaXMuI0guZ2V0VWludDMyKGUpO2NvbnN0IHQ9dGhpcy4jSC5nZXRVaW50MzIoZSksYT10aGlzLiNXLmRlY29kZShuZXcgVWludDhBcnJheSh0aGlzLiNQLGUrNCx0KSk7ZSs9NCt0O2NvbnN0IHI9dGhpcy4jSC5nZXRVaW50MzIoZSk7cmV0dXJue3N0eWxlOmEsd2VpZ2h0OnRoaXMuI1cuZGVjb2RlKG5ldyBVaW50OEFycmF5KHRoaXMuI1AsZSs0LHIpKX19fWNsYXNzIEZvbnRJbmZve3N0YXRpYyBib29scz1bImJsYWNrIiwiYm9sZCIsImRpc2FibGVGb250RmFjZSIsImZvbnRFeHRyYVByb3BlcnRpZXMiLCJpc0ludmFsaWRQREZqc0ZvbnQiLCJpc1R5cGUzRm9udCIsIml0YWxpYyIsIm1pc3NpbmdGaWxlIiwicmVtZWFzdXJlIiwidmVydGljYWwiXTtzdGF0aWMgbnVtYmVycz1bImFzY2VudCIsImRlZmF1bHRXaWR0aCIsImRlc2NlbnQiXTtzdGF0aWMgc3RyaW5ncz1bImZhbGxiYWNrTmFtZSIsImxvYWRlZE5hbWUiLCJtaW1ldHlwZSIsIm5hbWUiXTtzdGF0aWMjJD1NYXRoLmNlaWwoMip0aGlzLmJvb2xzLmxlbmd0aC84KTtzdGF0aWMjRz10aGlzLiMkKzgqdGhpcy5udW1iZXJzLmxlbmd0aDtzdGF0aWMjVj10aGlzLiNHKzErODtzdGF0aWMjSz10aGlzLiNWKzErNDg7c3RhdGljI0o9dGhpcy4jSysxKzY7I1A7I1c7I0g7Y29uc3RydWN0b3Ioe2RhdGE6ZSxleHRyYTp0fSl7dGhpcy4jUD1lO3RoaXMuI1c9bmV3IFRleHREZWNvZGVyO3RoaXMuI0g9bmV3IERhdGFWaWV3KHRoaXMuI1ApO3QmJk9iamVjdC5hc3NpZ24odGhpcyx0KX0jWShlKXthc3NlcnQoZTxGb250SW5mby5ib29scy5sZW5ndGgsIkludmFsaWQgYm9vbGVhbiBpbmRleCIpO2NvbnN0IHQ9TWF0aC5mbG9vcihlLzQpLGE9MiplJTgscj10aGlzLiNILmdldFVpbnQ4KHQpPj5hJjM7cmV0dXJuIDA9PT1yP3ZvaWQgMDoyPT09cn1nZXQgYmxhY2soKXtyZXR1cm4gdGhpcy4jWSgwKX1nZXQgYm9sZCgpe3JldHVybiB0aGlzLiNZKDEpfWdldCBkaXNhYmxlRm9udEZhY2UoKXtyZXR1cm4gdGhpcy4jWSgyKX1nZXQgZm9udEV4dHJhUHJvcGVydGllcygpe3JldHVybiB0aGlzLiNZKDMpfWdldCBpc0ludmFsaWRQREZqc0ZvbnQoKXtyZXR1cm4gdGhpcy4jWSg0KX1nZXQgaXNUeXBlM0ZvbnQoKXtyZXR1cm4gdGhpcy4jWSg1KX1nZXQgaXRhbGljKCl7cmV0dXJuIHRoaXMuI1koNil9Z2V0IG1pc3NpbmdGaWxlKCl7cmV0dXJuIHRoaXMuI1koNyl9Z2V0IHJlbWVhc3VyZSgpe3JldHVybiB0aGlzLiNZKDgpfWdldCB2ZXJ0aWNhbCgpe3JldHVybiB0aGlzLiNZKDkpfSNaKGUpe2Fzc2VydChlPEZvbnRJbmZvLm51bWJlcnMubGVuZ3RoLCJJbnZhbGlkIG51bWJlciBpbmRleCIpO3JldHVybiB0aGlzLiNILmdldEZsb2F0NjQoRm9udEluZm8uIyQrOCplKX1nZXQgYXNjZW50KCl7cmV0dXJuIHRoaXMuI1ooMCl9Z2V0IGRlZmF1bHRXaWR0aCgpe3JldHVybiB0aGlzLiNaKDEpfWdldCBkZXNjZW50KCl7cmV0dXJuIHRoaXMuI1ooMil9Z2V0IGJib3goKXtsZXQgZT1Gb250SW5mby4jRztpZigwPT09dGhpcy4jSC5nZXRVaW50OChlKSlyZXR1cm47ZSs9MTtjb25zdCB0PVtdO2ZvcihsZXQgYT0wO2E8NDthKyspe3QucHVzaCh0aGlzLiNILmdldEludDE2KGUsITApKTtlKz0yfXJldHVybiB0fWdldCBmb250TWF0cml4KCl7bGV0IGU9Rm9udEluZm8uI1Y7aWYoMD09PXRoaXMuI0guZ2V0VWludDgoZSkpcmV0dXJuO2UrPTE7Y29uc3QgdD1bXTtmb3IobGV0IGE9MDthPDY7YSsrKXt0LnB1c2godGhpcy4jSC5nZXRGbG9hdDY0KGUsITApKTtlKz04fXJldHVybiB0fWdldCBkZWZhdWx0Vk1ldHJpY3MoKXtsZXQgZT1Gb250SW5mby4jSztpZigwPT09dGhpcy4jSC5nZXRVaW50OChlKSlyZXR1cm47ZSs9MTtjb25zdCB0PVtdO2ZvcihsZXQgYT0wO2E8MzthKyspe3QucHVzaCh0aGlzLiNILmdldEludDE2KGUsITApKTtlKz0yfXJldHVybiB0fSN6KGUpe2Fzc2VydChlPEZvbnRJbmZvLnN0cmluZ3MubGVuZ3RoLCJJbnZhbGlkIHN0cmluZyBpbmRleCIpO2xldCB0PUZvbnRJbmZvLiNKKzQ7Zm9yKGxldCBhPTA7YTxlO2ErKyl0Kz10aGlzLiNILmdldFVpbnQzMih0KSs0O2NvbnN0IGE9dGhpcy4jSC5nZXRVaW50MzIodCkscj1uZXcgVWludDhBcnJheShhKTtyLnNldChuZXcgVWludDhBcnJheSh0aGlzLiNQLHQrNCxhKSk7cmV0dXJuIHRoaXMuI1cuZGVjb2RlKHIpfWdldCBmYWxsYmFja05hbWUoKXtyZXR1cm4gdGhpcy4jeigwKX1nZXQgbG9hZGVkTmFtZSgpe3JldHVybiB0aGlzLiN6KDEpfWdldCBtaW1ldHlwZSgpe3JldHVybiB0aGlzLiN6KDIpfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMuI3ooMyl9Z2V0IGRhdGEoKXtsZXQgZT1Gb250SW5mby4jSjtlKz00K3RoaXMuI0guZ2V0VWludDMyKGUpO2UrPTQrdGhpcy4jSC5nZXRVaW50MzIoZSk7ZSs9
101NCt0aGlzLiNILmdldFVpbnQzMihlKTtjb25zdCB0PXRoaXMuI0guZ2V0VWludDMyKGUpO2lmKDAhPT10KXJldHVybiBuZXcgVWludDhBcnJheSh0aGlzLiNQLGUrNCx0KX1jbGVhckRhdGEoKXtsZXQgZT1Gb250SW5mby4jSjtlKz00K3RoaXMuI0guZ2V0VWludDMyKGUpO2UrPTQrdGhpcy4jSC5nZXRVaW50MzIoZSk7ZSs9NCt0aGlzLiNILmdldFVpbnQzMihlKTtjb25zdCB0PXRoaXMuI0guZ2V0VWludDMyKGUpO25ldyBVaW50OEFycmF5KHRoaXMuI1AsZSs0LHQpLmZpbGwoMCk7dGhpcy4jSC5zZXRVaW50MzIoZSwwKX1nZXQgY3NzRm9udEluZm8oKXtsZXQgZT1Gb250SW5mby4jSjtlKz00K3RoaXMuI0guZ2V0VWludDMyKGUpO2UrPTQrdGhpcy4jSC5nZXRVaW50MzIoZSk7Y29uc3QgdD10aGlzLiNILmdldFVpbnQzMihlKTtpZigwPT09dClyZXR1cm4gbnVsbDtjb25zdCBhPW5ldyBVaW50OEFycmF5KHQpO2Euc2V0KG5ldyBVaW50OEFycmF5KHRoaXMuI1AsZSs0LHQpKTtyZXR1cm4gbmV3IENzc0ZvbnRJbmZvKGEuYnVmZmVyKX1nZXQgc3lzdGVtRm9udEluZm8oKXtsZXQgZT1Gb250SW5mby4jSjtlKz00K3RoaXMuI0guZ2V0VWludDMyKGUpO2NvbnN0IHQ9dGhpcy4jSC5nZXRVaW50MzIoZSk7aWYoMD09PXQpcmV0dXJuIG51bGw7Y29uc3QgYT1uZXcgVWludDhBcnJheSh0KTthLnNldChuZXcgVWludDhBcnJheSh0aGlzLiNQLGUrNCx0KSk7cmV0dXJuIG5ldyBTeXN0ZW1Gb250SW5mbyhhLmJ1ZmZlcil9c3RhdGljIHdyaXRlKGUpe2NvbnN0IHQ9ZS5zeXN0ZW1Gb250SW5mbz9TeXN0ZW1Gb250SW5mby53cml0ZShlLnN5c3RlbUZvbnRJbmZvKTpudWxsLGE9ZS5jc3NGb250SW5mbz9Dc3NGb250SW5mby53cml0ZShlLmNzc0ZvbnRJbmZvKTpudWxsLHI9bmV3IFRleHRFbmNvZGVyLGk9e307bGV0IG49MDtmb3IoY29uc3QgdCBvZiBGb250SW5mby5zdHJpbmdzKXtpW3RdPXIuZW5jb2RlKGVbdF0pO24rPTQraVt0XS5sZW5ndGh9Y29uc3Qgcz1Gb250SW5mby4jSis0K24rNCsodD90LmJ5dGVMZW5ndGg6MCkrNCsoYT9hLmJ5dGVMZW5ndGg6MCkrNCsoZS5kYXRhP2UuZGF0YS5sZW5ndGg6MCksbz1uZXcgQXJyYXlCdWZmZXIocyksYz1uZXcgVWludDhBcnJheShvKSxsPW5ldyBEYXRhVmlldyhvKTtsZXQgaD0wO2NvbnN0IHU9Rm9udEluZm8uYm9vbHMubGVuZ3RoO2xldCBkPTAsZj0wO2ZvcihsZXQgdD0wO3Q8dTt0Kyspe2NvbnN0IGE9ZVtGb250SW5mby5ib29sc1t0XV07ZHw9KHZvaWQgMD09PWE/MDphPzI6MSk8PGY7Zis9MjtpZig4PT09Znx8dD09PXUtMSl7bC5zZXRVaW50OChoKyssZCk7ZD0wO2Y9MH19YXNzZXJ0KGg9PT1Gb250SW5mby4jJCwiRm9udEluZm8ud3JpdGU6IEJvb2xlYW4gcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtmb3IoY29uc3QgdCBvZiBGb250SW5mby5udW1iZXJzKXtsLnNldEZsb2F0NjQoaCxlW3RdKTtoKz04fWFzc2VydChoPT09Rm9udEluZm8uI0csIkZvbnRJbmZvLndyaXRlOiBOdW1iZXIgcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtpZihlLmJib3gpe2wuc2V0VWludDgoaCsrLDQpO2Zvcihjb25zdCB0IG9mIGUuYmJveCl7bC5zZXRJbnQxNihoLHQsITApO2grPTJ9fWVsc2V7bC5zZXRVaW50OChoKyssMCk7aCs9OH1hc3NlcnQoaD09PUZvbnRJbmZvLiNWLCJGb250SW5mby53cml0ZTogQkJveCBwcm9wZXJ0aWVzIG9mZnNldCBtaXNtYXRjaCIpO2lmKGUuZm9udE1hdHJpeCl7bC5zZXRVaW50OChoKyssNik7Zm9yKGNvbnN0IHQgb2YgZS5mb250TWF0cml4KXtsLnNldEZsb2F0NjQoaCx0LCEwKTtoKz04fX1lbHNle2wuc2V0VWludDgoaCsrLDApO2grPTQ4fWFzc2VydChoPT09Rm9udEluZm8uI0ssIkZvbnRJbmZvLndyaXRlOiBGb250TWF0cml4IHByb3BlcnRpZXMgb2Zmc2V0IG1pc21hdGNoIik7aWYoZS5kZWZhdWx0Vk1ldHJpY3Mpe2wuc2V0VWludDgoaCsrLDEpO2Zvcihjb25zdCB0IG9mIGUuZGVmYXVsdFZNZXRyaWNzKXtsLnNldEludDE2KGgsdCwhMCk7aCs9Mn19ZWxzZXtsLnNldFVpbnQ4KGgrKywwKTtoKz02fWFzc2VydChoPT09Rm9udEluZm8uI0osIkZvbnRJbmZvLndyaXRlOiBEZWZhdWx0Vk1ldHJpY3MgcHJvcGVydGllcyBvZmZzZXQgbWlzbWF0Y2giKTtsLnNldFVpbnQzMihGb250SW5mby4jSiwwKTtoKz00O2Zvcihjb25zdCBlIG9mIEZvbnRJbmZvLnN0cmluZ3Mpe2NvbnN0IHQ9aVtlXSxhPXQubGVuZ3RoO2wuc2V0VWludDMyKGgsYSk7Yy5zZXQodCxoKzQpO2grPTQrYX1sLnNldFVpbnQzMihGb250SW5mby4jSixoLUZvbnRJbmZvLiNKLTQpO2lmKHQpe2NvbnN0IGU9dC5ieXRlTGVuZ3RoO2wuc2V0VWludDMyKGgsZSk7YXNzZXJ0KGgrNCtlPD1vLmJ5dGVMZW5ndGgsIkZvbnRJbmZvLndyaXRlOiBCdWZmZXIgb3ZlcmZsb3cgYXQgc3lzdGVtRm9udEluZm8iKTtjLnNldChuZXcgVWludDhBcnJheSh0KSxoKzQpO2grPTQrZX1lbHNle2wuc2V0VWludDMyKGgsMCk7aCs9NH1pZihhKXtjb25zdCBlPWEuYnl0ZUxlbmd0aDtsLnNldFVpbnQzMihoLGUpO2Fzc2VydChoKzQrZTw9by5ieXRlTGVuZ3RoLCJGb250SW5mby53cml0ZTogQnVmZmVyIG92ZXJmbG93IGF0IGNzc0ZvbnRJbmZvIik7Yy5zZXQobmV3IFVpbnQ4QXJyYXkoYSksaCs0KTtoKz00K2V9ZWxzZXtsLnNldFVpbnQzMihoLDApO2grPTR9aWYodm9pZCAwPT09ZS5kYXRhKXtsLnNldFVpbnQzMihoLDApO2grPTR9ZWxzZXtsLnNldFVpbnQzMihoLGUuZGF0YS5sZW5ndGgpO2Muc2V0KGUuZGF0YSxoKzQpO2grPTQrZS5kYXRhLmxlbmd0aH1hc3NlcnQoaDw9by5ieXRlTGVuZ3RoLCJGb250SW5mby53cml0ZTogQnVmZmVyIG92ZXJmbG93Iik7cmV0dXJuIG8udHJhbnNmZXJUb0ZpeGVkTGVuZ3RoKGgpfX1jbGFzcyBQYXR0ZXJuSW5mb3tzdGF0aWMjUT0wO3N0YXRpYyNlZT0xO3N0YXRpYyN0ZT0yO3N0YXRpYyNhZT0zO3N0YXRpYyNyZT00O3N0YXRpYyNpZT04O3N0YXRpYyNuZT0xMjtzdGF0aWMjc2U9MTY7Y29uc3RydWN0b3IoZSl7dGhpcy5idWZmZXI9ZTt0aGlzLnZpZXc9bmV3IERhdGFWaWV3KGUpO3RoaXMuZGF0YT1uZXcgVWludDhBcnJheShlKX1zdGF0aWMgd3JpdGUoZSl7bGV0IHQsYT1udWxsLHI9W10saT1bXSxuPVtdLHM9W10sbz1udWxsLGM9bnVsbDtzd2l0Y2goZVswXSl7Y2FzZSJSYWR
101pYWxBeGlhbCI6dD0iYXhpYWwiPT09ZVsxXT8xOjI7YT1lWzJdO249ZVszXTsxPT09dD9yLnB1c2goLi4uZVs0XSwuLi5lWzVdKTpyLnB1c2goZVs0XVswXSxlWzRdWzFdLGVbNl0sZVs1XVswXSxlWzVdWzFdLGVbN10pO2JyZWFrO2Nhc2UiTWVzaCI6dD0zO289ZVsxXTtyPWVbMl07aT1lWzNdO3M9ZVs0XXx8W107YT1lWzZdO2M9ZVs3XTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcGF0dGVybiB0eXBlOiAke2VbMF19YCl9Y29uc3QgbD1NYXRoLmZsb29yKHIubGVuZ3RoLzIpLGg9TWF0aC5mbG9vcihpLmxlbmd0aC8zKSx1PW4ubGVuZ3RoLGQ9cy5sZW5ndGg7bGV0IGY9MDtmb3IoY29uc3QgZSBvZiBzKXtmKz0xO2Y9NCpNYXRoLmNlaWwoZi80KTtmKz00KzQqZS5jb29yZHMubGVuZ3RoO2YrPTQrNCplLmNvbG9ycy5sZW5ndGg7dm9pZCAwIT09ZS52ZXJ0aWNlc1BlclJvdyYmKGYrPTQpfWNvbnN0IGc9bmV3IEFycmF5QnVmZmVyKDIwKzgqbCszKmgrOCp1KyhhPzE2OjApKyhjPzM6MCkrZikscD1uZXcgRGF0YVZpZXcoZyksbT1uZXcgVWludDhBcnJheShnKTtwLnNldFVpbnQ4KFBhdHRlcm5JbmZvLiNRLHQpO3Auc2V0VWludDgoUGF0dGVybkluZm8uI2VlLGE/MTowKTtwLnNldFVpbnQ4KFBhdHRlcm5JbmZvLiN0ZSxjPzE6MCk7cC5zZXRVaW50OChQYXR0ZXJuSW5mby4jYWUsbyk7cC5zZXRVaW50MzIoUGF0dGVybkluZm8uI3JlLGwsITApO3Auc2V0VWludDMyKFBhdHRlcm5JbmZvLiNpZSxoLCEwKTtwLnNldFVpbnQzMihQYXR0ZXJuSW5mby4jbmUsdSwhMCk7cC5zZXRVaW50MzIoUGF0dGVybkluZm8uI3NlLGQsITApO2xldCBiPTIwO25ldyBGbG9hdDMyQXJyYXkoZyxiLDIqbCkuc2V0KHIpO2IrPTgqbDttLnNldChpLGIpO2IrPTMqaDtmb3IoY29uc3RbZSx0XW9mIG4pe3Auc2V0RmxvYXQzMihiLGUsITApO2IrPTQ7cC5zZXRVaW50MzIoYixwYXJzZUludCh0LnNsaWNlKDEpLDE2KSwhMCk7Yis9NH1pZihhKWZvcihjb25zdCBlIG9mIGEpe3Auc2V0RmxvYXQzMihiLGUsITApO2IrPTR9aWYoYyl7bS5zZXQoYyxiKTtiKz0zfWZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSsrKXtjb25zdCB0PXNbZV07cC5zZXRVaW50OChiLHQudHlwZSk7Yis9MTtiPTQqTWF0aC5jZWlsKGIvNCk7cC5zZXRVaW50MzIoYix0LmNvb3Jkcy5sZW5ndGgsITApO2IrPTQ7bmV3IEludDMyQXJyYXkoZyxiLHQuY29vcmRzLmxlbmd0aCkuc2V0KHQuY29vcmRzKTtiKz00KnQuY29vcmRzLmxlbmd0aDtwLnNldFVpbnQzMihiLHQuY29sb3JzLmxlbmd0aCwhMCk7Yis9NDtuZXcgSW50MzJBcnJheShnLGIsdC5jb2xvcnMubGVuZ3RoKS5zZXQodC5jb2xvcnMpO2IrPTQqdC5jb2xvcnMubGVuZ3RoO2lmKHZvaWQgMCE9PXQudmVydGljZXNQZXJSb3cpe3Auc2V0VWludDMyKGIsdC52ZXJ0aWNlc1BlclJvdywhMCk7Yis9NH19cmV0dXJuIGd9Z2V0SVIoKXtjb25zdCBlPXRoaXMudmlldyx0PXRoaXMuZGF0YVtQYXR0ZXJuSW5mby4jUV0sYT0hIXRoaXMuZGF0YVtQYXR0ZXJuSW5mby4jZWVdLHI9ISF0aGlzLmRhdGFbUGF0dGVybkluZm8uI3RlXSxpPWUuZ2V0VWludDMyKFBhdHRlcm5JbmZvLiNyZSwhMCksbj1lLmdldFVpbnQzMihQYXR0ZXJuSW5mby4jaWUsITApLHM9ZS5nZXRVaW50MzIoUGF0dGVybkluZm8uI25lLCEwKSxvPWUuZ2V0VWludDMyKFBhdHRlcm5JbmZvLiNzZSwhMCk7bGV0IGM9MjA7Y29uc3QgbD1uZXcgRmxvYXQzMkFycmF5KHRoaXMuYnVmZmVyLGMsMippKTtjKz04Kmk7Y29uc3QgaD1uZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlcixjLDMqbik7Yys9MypuO2NvbnN0IHU9W107Zm9yKGxldCB0PTA7dDxzOysrdCl7Y29uc3QgdD1lLmdldEZsb2F0MzIoYywhMCk7Yys9NDtjb25zdCBhPWUuZ2V0VWludDMyKGMsITApO2MrPTQ7dS5wdXNoKFt0LGAjJHthLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg2LCIwIil9YF0pfWxldCBkPW51bGw7aWYoYSl7ZD1bXTtmb3IobGV0IHQ9MDt0PDQ7Kyt0KXtkLnB1c2goZS5nZXRGbG9hdDMyKGMsITApKTtjKz00fX1sZXQgZj1udWxsO2lmKHIpe2Y9bmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXIsYywzKTtjKz0zfWNvbnN0IGc9W107Zm9yKGxldCB0PTA7dDxvOysrdCl7Y29uc3QgdD1lLmdldFVpbnQ4KGMpO2MrPTE7Yz00Kk1hdGguY2VpbChjLzQpO2NvbnN0IGE9ZS5nZXRVaW50MzIoYywhMCk7Yys9NDtjb25zdCByPW5ldyBJbnQzMkFycmF5KHRoaXMuYnVmZmVyLGMsYSk7Yys9NCphO2NvbnN0IGk9ZS5nZXRVaW50MzIoYywhMCk7Yys9NDtjb25zdCBuPW5ldyBJbnQzMkFycmF5KHRoaXMuYnVmZmVyLGMsaSk7Yys9NCppO2NvbnN0IHM9e3R5cGU6dCxjb29yZHM6cixjb2xvcnM6bn07aWYodD09PVMpe3MudmVydGljZXNQZXJSb3c9ZS5nZXRVaW50MzIoYywhMCk7Yys9NH1nLnB1c2gocyl9aWYoMT09PXQpcmV0dXJuWyJSYWRpYWxBeGlhbCIsImF4aWFsIixkLHUsQXJyYXkuZnJvbShsLnNsaWNlKDAsMikpLEFycmF5LmZyb20obC5zbGljZSgyLDQpKSxudWxsLG51bGxdO2lmKDI9PT10KXJldHVyblsiUmFkaWFsQXhpYWwiLCJyYWRpYWwiLGQsdSxbbFswXSxsWzFdXSxbbFszXSxsWzRdXSxsWzJdLGxbNV1dO2lmKDM9PT10KXtjb25zdCBlPXRoaXMuZGF0YVtQYXR0ZXJuSW5mby4jYWVdO2xldCB0PW51bGw7aWYobC5sZW5ndGg+MCl7bGV0IGU9bFswXSxhPWxbMF0scj1sWzFdLGk9bFsxXTtmb3IobGV0IHQ9MDt0PGwubGVuZ3RoO3QrPTIpe2NvbnN0IG49bFt0XSxzPWxbdCsxXTtlPWU+bj9uOmU7cj1yPnM/czpyO2E9YTxuP246YTtpPWk8cz9zOml9dD1bZSxyLGEsaV19cmV0dXJuWyJNZXNoIixlLGwsaCxnLHQsZCxmXX10aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHBhdHRlcm4ga2luZDogJHt0fWApfX1jbGFzcyBGb250UGF0aEluZm97c3RhdGljIHdyaXRlKGUpe2xldCB0LGE7aWYoRmVhdHVyZVRlc3QuaXNGbG9hdDE2QXJyYXlTdXBwb3J0ZWQpe2E9bmV3IEFycmF5QnVmZmVyKDIqZS5sZW5ndGgpO3Q9bmV3IEZsb2F0MTZBcnJheShhKX1lbHNle2E9bmV3IEFycmF5QnVmZmVyKDQqZS5sZW5ndGgpO3Q9bmV3IEZsb2F0MzJBcnJheShhKX10LnNldChl
101KTtyZXR1cm4gYX0jUDtjb25zdHJ1Y3RvcihlKXt0aGlzLiNQPWV9Z2V0IHBhdGgoKXtyZXR1cm4gRmVhdHVyZVRlc3QuaXNGbG9hdDE2QXJyYXlTdXBwb3J0ZWQ/bmV3IEZsb2F0MTZBcnJheSh0aGlzLiNQKTpuZXcgRmxvYXQzMkFycmF5KHRoaXMuI1ApfX1jb25zdCBjaT0yLGxpPTMsaGk9NCx1aT01LGRpPTYsZmk9NztjbGFzcyBQYXR0ZXJue2NvbnN0cnVjdG9yKCl7dW5yZWFjaGFibGUoIkNhbm5vdCBpbml0aWFsaXplIFBhdHRlcm4uIil9c3RhdGljIHBhcnNlU2hhZGluZyhlLHQsYSxyLGksbil7Y29uc3Qgcz1lIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lLmRpY3Q6ZSxvPXMuZ2V0KCJTaGFkaW5nVHlwZSIpO3RyeXtzd2l0Y2gobyl7Y2FzZSBjaTpjYXNlIGxpOnJldHVybiBuZXcgUmFkaWFsQXhpYWxTaGFkaW5nKHMsdCxhLHIsaSxuKTtjYXNlIGhpOmNhc2UgdWk6Y2FzZSBkaTpjYXNlIGZpOnJldHVybiBuZXcgTWVzaFNoYWRpbmcoZSx0LGEscixpLG4pO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbnN1cHBvcnRlZCBTaGFkaW5nVHlwZTogIitvKX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihlKTtyZXR1cm4gbmV3IER1bW15U2hhZGluZ319fWNsYXNzIEJhc2VTaGFkaW5ne3N0YXRpYyBTTUFMTF9OVU1CRVI9MWUtNjtnZXRJUigpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGdldElSYCBjYWxsZWQuIil9fWNsYXNzIFJhZGlhbEF4aWFsU2hhZGluZyBleHRlbmRzIEJhc2VTaGFkaW5ne2NvbnN0cnVjdG9yKGUsdCxhLHIsaSxuKXtzdXBlcigpO3RoaXMuc2hhZGluZ1R5cGU9ZS5nZXQoIlNoYWRpbmdUeXBlIik7bGV0IHM9MDt0aGlzLnNoYWRpbmdUeXBlPT09Y2k/cz00OnRoaXMuc2hhZGluZ1R5cGU9PT1saSYmKHM9Nik7dGhpcy5jb29yZHNBcnI9ZS5nZXRBcnJheSgiQ29vcmRzIik7aWYoIWlzTnVtYmVyQXJyYXkodGhpcy5jb29yZHNBcnIscykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJSYWRpYWxBeGlhbFNoYWRpbmc6IEludmFsaWQgL0Nvb3JkcyBhcnJheS4iKTtjb25zdCBvPUNvbG9yU3BhY2VVdGlscy5wYXJzZSh7Y3M6ZS5nZXRSYXcoIkNTIil8fGUuZ2V0UmF3KCJDb2xvclNwYWNlIikseHJlZjp0LHJlc291cmNlczphLHBkZkZ1bmN0aW9uRmFjdG9yeTpyLGdsb2JhbENvbG9yU3BhY2VDYWNoZTppLGxvY2FsQ29sb3JTcGFjZUNhY2hlOm59KTt0aGlzLmJib3g9bG9va3VwTm9ybWFsUmVjdChlLmdldEFycmF5KCJCQm94IiksbnVsbCk7bGV0IGM9MCxsPTE7Y29uc3QgaD1lLmdldEFycmF5KCJEb21haW4iKTtpc051bWJlckFycmF5KGgsMikmJihbYyxsXT1oKTtsZXQgdT0hMSxkPSExO2NvbnN0IGY9ZS5nZXRBcnJheSgiRXh0ZW5kIik7KGZ1bmN0aW9uIGlzQm9vbGVhbkFycmF5KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJihudWxsPT09dHx8ZS5sZW5ndGg9PT10KSYmZS5ldmVyeShlPT4iYm9vbGVhbiI9PXR5cGVvZiBlKX0pKGYsMikmJihbdSxkXT1mKTtpZighKHRoaXMuc2hhZGluZ1R5cGUhPT1saXx8dSYmZCkpe2NvbnN0W2UsdCxhLHIsaSxuXT10aGlzLmNvb3Jkc0FycixzPU1hdGguaHlwb3QoZS1yLHQtaSk7YTw9bitzJiZuPD1hK3MmJndhcm4oIlVuc3VwcG9ydGVkIHJhZGlhbCBncmFkaWVudC4iKX10aGlzLmV4dGVuZFN0YXJ0PXU7dGhpcy5leHRlbmRFbmQ9ZDtjb25zdCBnPWUuZ2V0UmF3KCJGdW5jdGlvbiIpLHA9ci5jcmVhdGUoZywhMCksbT0obC1jKS84NDAsYj10aGlzLmNvbG9yU3RvcHM9W107aWYoYz49bHx8bTw9MCl7aW5mbygiQmFkIHNoYWRpbmcgZG9tYWluLiIpO3JldHVybn1jb25zdCB5PW5ldyBGbG9hdDMyQXJyYXkoby5udW1Db21wcyksdz1uZXcgRmxvYXQzMkFycmF5KDEpO2xldCB4PTA7d1swXT1jO3AodywwLHksMCk7Y29uc3QgUz1uZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7by5nZXRSZ2IoeSwwLFMpO2xldFtrLEMsdl09UztiLnB1c2goWzAsVXRpbC5tYWtlSGV4Q29sb3IoayxDLHYpXSk7bGV0IEY9MTt3WzBdPWMrbTtwKHcsMCx5LDApO28uZ2V0UmdiKHksMCxTKTtsZXRbVCxPLERdPVMsTT1ULWsrMSxSPU8tQysxLE49RC12KzEsRT1ULWstMSxMPU8tQy0xLF89RC12LTE7Zm9yKGxldCBlPTI7ZTw4NDA7ZSsrKXt3WzBdPWMrZSptO3AodywwLHksMCk7by5nZXRSZ2IoeSwwLFMpO2NvbnN0W3QsYSxyXT1TLGk9ZS14O009TWF0aC5taW4oTSwodC1rKzEpL2kpO1I9TWF0aC5taW4oUiwoYS1DKzEpL2
101kpO049TWF0aC5taW4oTiwoci12KzEpL2kpO0U9TWF0aC5tYXgoRSwodC1rLTEpL2kpO0w9TWF0aC5tYXgoTCwoYS1DLTEpL2kpO189TWF0aC5tYXgoXywoci12LTEpL2kpO2lmKCEoRTw9TSYmTDw9UiYmXzw9Tikpe2NvbnN0IGU9VXRpbC5tYWtlSGV4Q29sb3IoVCxPLEQpO2IucHVzaChbRi84NDAsZV0pO009dC1UKzE7Uj1hLU8rMTtOPXItRCsxO0U9dC1ULTE7TD1hLU8tMTtfPXItRC0xO3g9RjtrPVQ7Qz1PO3Y9RH1GPWU7VD10O089YTtEPXJ9Yi5wdXNoKFsxLFV0aWwubWFrZUhleENvbG9yKFQsTyxEKV0pO2xldCBVPSJ0cmFuc3BhcmVudCI7ZS5oYXMoIkJhY2tncm91bmQiKSYmKFU9by5nZXRSZ2JIZXgoZS5nZXQoIkJhY2tncm91bmQiKSwwKSk7aWYoIXUpe2IudW5zaGlmdChbMCxVXSk7YlsxXVswXSs9QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSfWlmKCFkKXtiLmF0KC0xKVswXS09QmFzZVNoYWRpbmcuU01BTExfTlVNQkVSO2IucHVzaChbMSxVXSl9dGhpcy5jb2xvclN0b3BzPWJ9Z2V0SVIoKXtjb25zdHtjb29yZHNBcnI6ZSxzaGFkaW5nVHlwZTp0fT10aGlzO2xldCBhLHIsaSxuLHM7aWYodD09PWNpKXtyPVtlWzBdLGVbMV1dO2k9W2VbMl0sZVszXV07bj1udWxsO3M9bnVsbDthPSJheGlhbCJ9ZWxzZSBpZih0PT09bGkpe3I9W2VbMF0sZVsxXV07aT1bZVszXSxlWzRdXTtuPWVbMl07cz1lWzVdO2E9InJhZGlhbCJ9ZWxzZSB1bnJlYWNoYWJsZShgZ2V0UGF0dGVybiB0eXBlIHVua25vd246ICR7dH1gKTtyZXR1cm5bIlJhZGlhbEF4aWFsIixhLHRoaXMuYmJveCx0aGlzLmNvbG9yU3RvcHMscixpLG4sc119fWNsYXNzIE1lc2hTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnN0cmVhbT1lO3RoaXMuY29udGV4dD10O3RoaXMuYnVmZmVyPTA7dGhpcy5idWZmZXJMZW5ndGg9MDtjb25zdCBhPXQubnVtQ29tcHM7dGhpcy50bXBDb21wc0J1Zj1uZXcgRmxvYXQzMkFycmF5KGEpO2NvbnN0IHI9dC5jb2xvclNwYWNlLm51bUNvbXBzO3RoaXMudG1wQ3NDb21wc0J1Zj10LmNvbG9yRm4/bmV3IEZsb2F0MzJBcnJheShyKTp0aGlzLnRtcENvbXBzQnVmfWdldCBoYXNEYXRhKCl7aWYodGhpcy5zdHJlYW0uZW5kKXJldHVybiB0aGlzLnN0cmVhbS5wb3M8dGhpcy5zdHJlYW0uZW5kO2lmKHRoaXMuYnVmZmVyTGVuZ3RoPjApcmV0dXJuITA7Y29uc3QgZT10aGlzLnN0cmVhbS5nZXRCeXRlKCk7aWYoZTwwKXJldHVybiExO3RoaXMuYnVmZmVyPWU7dGhpcy5idWZmZXJMZW5ndGg9ODtyZXR1cm4hMH1yZWFkQml0cyhlKXtjb25zdHtzdHJlYW06dH09dGhpcztsZXR7YnVmZmVyOmEsYnVmZmVyTGVuZ3RoOnJ9PXRoaXM7aWYoMzI9PT1lKXtpZigwPT09cilyZXR1cm4gdC5nZXRJbnQzMigpPj4+MDthPWE8PDI0fHQuZ2V0Qnl0ZSgpPDwxNnx0LmdldEJ5dGUoKTw8OHx0LmdldEJ5dGUoKTtjb25zdCBlPXQuZ2V0Qnl0ZSgpO3RoaXMuYnVmZmVyPWUmKDE8PHIpLTE7cmV0dXJuKGE8PDgtcnwoMjU1JmUpPj5yKT4+PjB9aWYoOD09PWUmJjA9PT1yKXJldHVybiB0LmdldEJ5dGUoKTtmb3IoO3I8ZTspe2E9YTw8OHx0LmdldEJ5dGUoKTtyKz04fXItPWU7dGhpcy5idWZmZXJMZW5ndGg9cjt0aGlzLmJ1ZmZlcj1hJigxPDxyKS0xO3JldHVybiBhPj5yfWFsaWduKCl7dGhpcy5idWZmZXI9MDt0aGlzLmJ1ZmZlckxlbmd0aD0wfXJlYWRGbGFnKCl7cmV0dXJuIHRoaXMucmVhZEJpdHModGhpcy5jb250ZXh0LmJpdHNQZXJGbGFnKX1yZWFkQ29vcmRpbmF0ZSgpe2NvbnN0e2JpdHNQZXJDb29yZGluYXRlOmUsZGVjb2RlOnR9PXRoaXMuY29udGV4dCxhPXRoaXMucmVhZEJpdHMoZSkscj10aGlzLnJlYWRCaXRzKGUpLGk9ZTwzMj8xLygoMTw8ZSktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMDtyZXR1cm5bYSppKih0WzFdLXRbMF0pK3RbMF0scippKih0WzNdLXRbMl0pK3RbMl1dfXJlYWRDb21wb25lbnRzKCl7Y29uc3R7Yml0c1BlckNvbXBvbmVudDplLGNvbG9yRm46dCxjb2xvclNwYWNlOmEsZGVjb2RlOnIsbnVtQ29tcHM6aX09dGhpcy5jb250ZXh0LG49ZTwzMj8xLygoMTw8ZSktMSk6Mi4zMjgzMDY0MzY1Mzg2OTYzZS0xMCxzPXRoaXMudG1wQ29tcHNCdWY7Zm9yKGxldCB0PTAsYT00O3Q8aTt0KyssYSs9Mil7Y29uc3QgaT10aGlzLnJlYWRCaXRzKGUpO3NbdF09aSpuKihyW2ErMV0tclthXSkrclthXX1jb25zdCBvPXRoaXMudG1wQ3NDb21wc0J1Zjt0Py4ocywwLG8sMCk7cmV0dXJuIGEuZ2V0UmdiKG8sMCl9fWxldCBnaT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIGdldEIoZSl7cmV0dXJuIGdpW2VdfHw9ZnVuY3Rpb24gYnVpbGRCKGUpe2NvbnN0IHQ9W107Zm9yKGxldCBhPTA7YTw9ZTthKyspe2NvbnN0IHI9YS9lLGk9MS1yO3QucHVzaChuZXcgRmxvYXQzMkFycmF5KFtpKiozLDMqcippKioyLDMqcioqMippLHIqKjNdKSl9cmV0dXJuIHR9KGUpfWNsYXNzIE1lc2hTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7c3RhdGljIE1JTl9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTM7c3RhdGljIE1BWF9TUExJVF9QQVRDSF9DSFVOS1NfQU1PVU5UPTIwO3N0YXRpYyBUUklBTkdMRV9ERU5TSVRZPTIwO2NvbnN0cnVjdG9yKGUsdCxhLHIsaSxuKXtzdXBlcigpO2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTWVzaCBkYXRhIGlzIG5vdCBhIHN0cmVhbSIpO2NvbnN0IHM9ZS5kaWN0O3RoaXMuc2hhZGluZ1R5cGU9cy5nZXQoIlNoYWRpbmdUeXBlIik7dGhpcy5iYm94PWxvb2t1cE5vcm1hbFJlY3Qocy5nZXRBcnJheSgiQkJveCIpLG51bGwpO2NvbnN0IG89Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczpzLmdldFJhdygiQ1MiKXx8cy5nZXRSYXcoIkNvbG9yU3BhY2UiKSx4cmVmOnQscmVzb3VyY2VzOmEscGRmRnVuY3Rpb25GYWN0b3J5OnIsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmksbG9jYWxDb2xvclNwYWNlQ2FjaGU6bn0pO3RoaXMuYmFja2dyb3VuZD1zLmhhcygiQmFja2dyb3VuZCIpP28uZ2V0UmdiKHMuZ2V0KCJCYWNrZ3JvdW5kIiksMCk6bnVsbDtjb25zdCBjPXMuZ2V0UmF3KCJGdW5jdGlvbiIpLGw9Yz9yLmNyZWF0ZShjLCEwKTpudWxsO3RoaXMuY29vcmRzPVtdO3RoaXMuY29sb3JzPVtdO3RoaXMuZmlndXJlcz1bXTtjb25zdCBoPXtiaXRzUGVyQ29vcmRpbmF0ZTpzLmdldCgiQml0c1BlckNvb3JkaW5hdGUiKSxiaXRzUGVyQ29tcG9uZW50OnMuZ2V0KCJCaXRzUGVyQ29tcG9uZW50IiksYml0c1BlckZsYWc6cy5nZXQoIkJpdHNQZXJGbGFnIiksZGVjb2RlOnMuZ2V0QXJyYXkoIkRlY29kZSIpLGNvbG9yRm46bCxjb2xvclNwYWNlOm8sbnVtQ29tcHM6bD8xOm8ubnVtQ29tcHN9LHU9bmV3IE1lc2hTdHJlYW1SZWFkZXIoZSxoKTtsZXQgZD0hMTtzd2l0Y2godGhpcy5zaGFkaW5nVHlwZSl7Y2FzZSBoaTp0aGlzLl9kZWNvZGVUeXBlNFNoYWRpbmcodSk7YnJlYWs7Y2FzZSB1aTpjb25zdCBlPTB8cy5nZXQoIlZlcnRpY2VzUGVyUm93Iik7aWYoZTwyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBWZXJ0aWNlc1BlclJvdyIpO3RoaXMuX2RlY29kZVR5cGU1U2hhZGluZyh1LGUpO2JyZWFrO2Nhc2UgZGk6dGhpcy5fZGVjb2RlVHlwZTZTaGFkaW5nKHUpO2Q9ITA7YnJlYWs7Y2FzZSBmaTp0aGlzLl9kZWNvZGVUeXBlN1NoYWRpbmcodSk7ZD0hMDticmVhaztkZWZhdWx0OnVucmVhY2hhYmxlKCJVbnN1cHBvcnRlZCBtZXNoIHR5cGUuIil9aWYoZCl7dGhpcy5fdXBkYXRlQm91bmRzKCk7Zm9yKGxldCBlPTAsdD10aGlzLmZpZ3VyZXMubGVuZ3RoO2U8dDtlKyspdGhpcy5fYnVpbGRGaWd1cmVGcm9tUGF0Y2goZSl9dGhpcy5fdXBkYXRlQm91bmRzKCk7dGhpcy5fcGFja0RhdGEoKX1fZGVjb2RlVHlwZTRTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxyPVtdLGk9W107bGV0IG49MDtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IHM9ZS5yZWFkRmxhZygpLG89ZS5yZWFkQ29vcmRpbmF0ZSgpLGM9ZS5yZWFkQ29tcG9uZW50cygpO2lmKDA9PT1uKXtpZighKDA8PXMmJnM8PTIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlNCBmbGFnIik7c3dpdGNoKHMpe2Nhc2UgMDpuPTM7YnJlYWs7Y2FzZSAxOmkucHVzaChpLmF0KC0yKSxpLmF0KC0xKSk7bj0xO2JyZWFrO2Nhc2UgMjppLnB1c2goaS5hdCgtMyksaS5hdCgtMSkpO249MX1yLnB1c2gocyl9aS5wdXNoKHQubGVuZ3RoKTt0LnB1c2gobyk7YS5wdXNoKGMpO24tLTtlLmFsaWduKCl9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6eCxjb29yZHM6bmV3IEludDMyQXJyYXkoaSksY29sb3JzOm5ldyBJbnQzMkFycmF
1015KGkpfSl9X2RlY29kZVR5cGU1U2hhZGluZyhlLHQpe2NvbnN0IGE9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxpPVtdO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3QgdD1lLnJlYWRDb29yZGluYXRlKCksbj1lLnJlYWRDb21wb25lbnRzKCk7aS5wdXNoKGEubGVuZ3RoKTthLnB1c2godCk7ci5wdXNoKG4pfXRoaXMuZmlndXJlcy5wdXNoKHt0eXBlOlMsY29vcmRzOm5ldyBJbnQzMkFycmF5KGkpLGNvbG9yczpuZXcgSW50MzJBcnJheShpKSx2ZXJ0aWNlc1BlclJvdzp0fSl9X2RlY29kZVR5cGU2U2hhZGluZyhlKXtjb25zdCB0PXRoaXMuY29vcmRzLGE9dGhpcy5jb2xvcnMscj1uZXcgSW50MzJBcnJheSgxNiksaT1uZXcgSW50MzJBcnJheSg0KTtmb3IoO2UuaGFzRGF0YTspe2NvbnN0IG49ZS5yZWFkRmxhZygpO2lmKCEoMDw9biYmbjw9MykpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIHR5cGU2IGZsYWciKTtjb25zdCBzPXQubGVuZ3RoO2ZvcihsZXQgYT0wLHI9MCE9PW4/ODoxMjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IG89YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09bj8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgYyxsLGgsdTtzd2l0Y2gobil7Y2FzZSAwOnJbMTJdPXMrMztyWzEzXT1zKzQ7clsxNF09cys1O3JbMTVdPXMrNjtyWzhdPXMrMjtyWzExXT1zKzc7cls0XT1zKzE7cls3XT1zKzg7clswXT1zO3JbMV09cysxMTtyWzJdPXMrMTA7clszXT1zKzk7aVsyXT1vKzE7aVszXT1vKzI7aVswXT1vO2lbMV09byszO2JyZWFrO2Nhc2UgMTpjPXJbMTJdO2w9clsxM107aD1yWzE0XTt1PXJbMTVdO3JbMTJdPXU7clsxM109cyswO3JbMTRdPXMrMTtyWzE1XT1zKzI7cls4XT1oO3JbMTFdPXMrMztyWzRdPWw7cls3XT1zKzQ7clswXT1jO3JbMV09cys3O3JbMl09cys2O3JbM109cys1O2M9aVsyXTtsPWlbM107aVsyXT1sO2lbM109bztpWzBdPWM7aVsxXT1vKzE7YnJlYWs7Y2FzZSAyOmM9clsxNV07bD1yWzExXTtyWzEyXT1yWzNdO3JbMTNdPXMrMDtyWzE0XT1zKzE7clsxNV09cysyO3JbOF09cls3XTtyWzExXT1zKzM7cls0XT1sO3JbN109cys0O3JbMF09YztyWzFdPXMrNztyWzJdPXMrNjtyWzNdPXMrNTtjPWlbM107aVsyXT1pWzFdO2lbM109bztpWzBdPWM7aVsxXT1vKzE7YnJlYWs7Y2FzZSAzOnJbMTJdPXJbMF07clsxM109cyswO3JbMTRdPXMrMTtyWzE1XT1zKzI7cls4XT1yWzFdO3JbMTFdPXMrMztyWzRdPXJbMl07cls3XT1zKzQ7clswXT1yWzNdO3JbMV09cys3O3JbMl09cys2O3JbM109cys1O2lbMl09aVswXTtpWzNdPW87aVswXT1pWzFdO2lbMV09bysxfXJbNV09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtyWzBdXVswXS10W3JbMTVdXVswXSs2Kih0W3JbNF1dWzBdK3RbclsxXV1bMF0pLTIqKHRbclsxMl1dWzBdK3RbclszXV1bMF0pKzMqKHRbclsxM11dWzBdK3Rbcls3XV1bMF0pKS85LCgtNCp0W3JbMF1dWzFdLXRbclsxNV1dWzFdKzYqKHRbcls0XV1bMV0rdFtyWzFdXVsxXSktMioodFtyWzEyXV1bMV0rdFtyWzNdXVsxXSkrMyoodFtyWzEzXV1bMV0rdFtyWzddXVsxXSkpLzldKTtyWzZdPXQubGVuZ3RoO3QucHVzaChbKC00KnRbclszXV1bMF0tdFtyWzEyXV1bMF0rNioodFtyWzJdXVswXSt0W3JbN11dWzBdKS0yKih0W3JbMF1dWzBdK3RbclsxNV1dWzBdKSszKih0W3JbNF1dWzBdK3RbclsxNF1dWzBdKSkvOSwoLTQqdFtyWzNdXVsxXS10W3JbMTJdXVsxXSs2Kih0W3JbMl1dWzFdK3Rbcls3XV1bMV0pLTIqKHRbclswXV1bMV0rdFtyWzE1XV1bMV0pKzMqKHRbcls0XV1bMV0rdFtyWzE0XV1bMV0pKS85XSk7cls5XT10Lmxlbmd0aDt0LnB1c2goWygtNCp0W3JbMTJdXVswXS10W3JbM11dWzBdKzYqKHRbcls4XV1bMF0rdFtyWzEzXV1bMF0pLTIqKHRbclswXV1bMF0rdFtyWzE1XV1bMF0pKzMqKHRbclsxMV1dWzBdK3RbclsxXV1bMF0pKS85LCgtNCp0W3JbMTJdXVsxXS10W3JbM11dWzFdKzYqKHRbcls4XV1bMV0rdFtyWzEzXV1bMV0pLTIqKHRbclswXV1bMV0rdFtyWzE1XV1bMV0pKzMqKHRbclsxMV1dWzFdK3RbclsxXV1bMV0pKS85XSk7clsxMF09dC5sZW5ndGg7dC5wdXNoKFsoLTQqdFtyWzE1XV1bMF0tdFtyWzBdXVswXSs2Kih0W3JbMTFdXVswXSt0W3JbMTRdXVswXSktMioodFtyWzEyXV1bMF0rdFtyWzNdXVswXSkrMyoodFtyWzJdXVswXSt0W3JbOF1dWzBdKSkvOSwoLTQqdFtyWzE1XV1bMV0tdFtyWzBdXVsxXSs2Kih0W3JbMTFdXVsxXSt0W3JbMTRdXVsxXSktMioodFtyWzEyXV1bMV0rdFtyWzNdXVsxXSkrMyoodFtyWzJdXVsxXSt0W3JbOF1dWzFdKSkvOV0pO3RoaXMuZmlndXJlcy5wdXNoKHt0eXBlOmssY29vcmRzOm5ldyBJbnQzMkFycmF5KHIpLGNvbG9yczpuZXcgSW50MzJBcnJheShpKX0pfX1fZGVjb2RlVHlwZTdTaGFkaW5nKGUpe2NvbnN0IHQ9dGhpcy5jb29yZHMsYT10aGlzLmNvbG9ycyxyPW5ldyBJbnQzMkFycmF5KDE2KSxpPW5ldyBJbnQzMkFycmF5KDQpO2Zvcig7ZS5oYXNEYXRhOyl7Y29uc3Qgbj1lLnJlYWRGbGFnKCk7aWYoISgwPD1uJiZuPD0zKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gdHlwZTcgZmxhZyIpO2NvbnN0IHM9dC5sZW5ndGg7Zm9yKGxldCBhPTAscj0wIT09bj8xMjoxNjthPHI7YSsrKXQucHVzaChlLnJlYWRDb29yZGluYXRlKCkpO2NvbnN0IG89YS5sZW5ndGg7Zm9yKGxldCB0PTAscj0wIT09bj8yOjQ7dDxyO3QrKylhLnB1c2goZS5yZWFkQ29tcG9uZW50cygpKTtsZXQgYyxsLGgsdTtzd2l0Y2gobil7Y2FzZSAwOnJbMTJdPXMrMztyWzEzXT1zKzQ7clsxNF09cys1O3JbMTVdPXMrNjtyWzhdPXMrMjtyWzldPXMrMTM7clsxMF09cysxNDtyWzExXT1zKzc7cls0XT1zKzE7cls1XT1zKzEyO3JbNl09cysxNTtyWzddPXMrODtyWzBdPXM7clsxXT1zKzExO3JbMl09cysxMDtyWzNdPXMrOTtpWzJdPW8rMTtpWzNdPW8rMjtpWzBdPW87aVsxXT1vKzM7YnJlYWs7Y2FzZSAxOmM9clsxMl07bD1yWzEzXTtoPXJbMTRdO3U9clsxNV07clsxMl09dTtyWzEzXT1zKzA7clsxNF09cysxO3JbMTVdPXMrMjtyWzhdPWg7cls5XT1zKzk7clsxMF09cysxMDtyWzExXT1zKzM7cls0XT1sO3JbNV09cys4O3JbNl09cysxMTtyWzddPXMrNDtyWzBdPWM7clsxXT1zKzc7clsyXT1zKzY7clszXT1zKzU7Yz1pWzJdO2w9aVszXTtpWzJdPWw7aVszXT1vO2lbMF09YztpWzFdPW8rMTticmVhaztjYXNlIDI6Yz1yWzE1XTtsPXJbMTFdO3JbMTJdPXJbM107clsxM109cyswO3JbMTRdPXMrMTtyWzE1XT1zKzI7cls4XT1yWzddO3JbOV09cys5O3JbMTBdPXMrMTA7clsxMV09cyszO3JbNF09bDtyWzVdPXMrODtyWzZdPXMrMTE7cls3XT1zKzQ7cl
101swXT1jO3JbMV09cys3O3JbMl09cys2O3JbM109cys1O2M9aVszXTtpWzJdPWlbMV07aVszXT1vO2lbMF09YztpWzFdPW8rMTticmVhaztjYXNlIDM6clsxMl09clswXTtyWzEzXT1zKzA7clsxNF09cysxO3JbMTVdPXMrMjtyWzhdPXJbMV07cls5XT1zKzk7clsxMF09cysxMDtyWzExXT1zKzM7cls0XT1yWzJdO3JbNV09cys4O3JbNl09cysxMTtyWzddPXMrNDtyWzBdPXJbM107clsxXT1zKzc7clsyXT1zKzY7clszXT1zKzU7aVsyXT1pWzBdO2lbM109bztpWzBdPWlbMV07aVsxXT1vKzF9dGhpcy5maWd1cmVzLnB1c2goe3R5cGU6ayxjb29yZHM6bmV3IEludDMyQXJyYXkociksY29sb3JzOm5ldyBJbnQzMkFycmF5KGkpfSl9fV9idWlsZEZpZ3VyZUZyb21QYXRjaChlKXtjb25zdCB0PXRoaXMuZmlndXJlc1tlXTthc3NlcnQodC50eXBlPT09aywiVW5leHBlY3RlZCBwYXRjaCBtZXNoIGZpZ3VyZSIpO2NvbnN0IGE9dGhpcy5jb29yZHMscj10aGlzLmNvbG9ycyxpPXQuY29vcmRzLG49dC5jb2xvcnMscz1NYXRoLm1pbihhW2lbMF1dWzBdLGFbaVszXV1bMF0sYVtpWzEyXV1bMF0sYVtpWzE1XV1bMF0pLG89TWF0aC5taW4oYVtpWzBdXVsxXSxhW2lbM11dWzFdLGFbaVsxMl1dWzFdLGFbaVsxNV1dWzFdKSxjPU1hdGgubWF4KGFbaVswXV1bMF0sYVtpWzNdXVswXSxhW2lbMTJdXVswXSxhW2lbMTVdXVswXSksbD1NYXRoLm1heChhW2lbMF1dWzFdLGFbaVszXV1bMV0sYVtpWzEyXV1bMV0sYVtpWzE1XV1bMV0pO2xldCBoPU1hdGguY2VpbCgoYy1zKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1syXS10aGlzLmJvdW5kc1swXSkpO2g9TWF0aENsYW1wKGgsTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQpO2xldCB1PU1hdGguY2VpbCgobC1vKSpNZXNoU2hhZGluZy5UUklBTkdMRV9ERU5TSVRZLyh0aGlzLmJvdW5kc1szXS10aGlzLmJvdW5kc1sxXSkpO3U9TWF0aENsYW1wKHUsTWVzaFNoYWRpbmcuTUlOX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQsTWVzaFNoYWRpbmcuTUFYX1NQTElUX1BBVENIX0NIVU5LU19BTU9VTlQpO2NvbnN0IGQ9aCsxLGY9bmV3IEludDMyQXJyYXkoKHUrMSkqZCksZz1uZXcgSW50MzJBcnJheSgodSsxKSpkKTtsZXQgcD0wO2NvbnN0IG09bmV3IFVpbnQ4QXJyYXkoMyksYj1uZXcgVWludDhBcnJheSgzKSx5PXJbblswXV0sdz1yW25bMV1dLHg9cltuWzJdXSxDPXJbblszXV0sdj1nZXRCKHUpLEY9Z2V0QihoKTtmb3IobGV0IGU9MDtlPD11O2UrKyl7bVswXT0oeVswXSoodS1lKSt4WzBdKmUpL3V8MDttWzFdPSh5WzFdKih1LWUpK3hbMV0qZSkvdXwwO21bMl09KHlbMl0qKHUtZSkreFsyXSplKS91fDA7YlswXT0od1swXSoodS1lKStDWzBdKmUpL3V8MDtiWzFdPSh3WzFdKih1LWUpK0NbMV0qZSkvdXwwO2JbMl09KHdbMl0qKHUtZSkrQ1syXSplKS91fDA7Zm9yKGxldCB0PTA7dDw9aDt0KysscCsrKXtpZighKDAhPT1lJiZlIT09dXx8MCE9PXQmJnQhPT1oKSljb250aW51ZTtsZXQgbj0wLHM9MCxvPTA7Zm9yKGxldCByPTA7cjw9MztyKyspZm9yKGxldCBjPTA7Yzw9MztjKyssbysrKXtjb25zdCBsPXZbZV1bcl0qRlt0XVtjXTtuKz1hW2lbb11dWzBdKmw7cys9YVtpW29dXVsxXSpsfWZbcF09YS5sZW5ndGg7YS5wdXNoKFtuLHNdKTtnW3BdPXIubGVuZ3RoO2NvbnN0IGM9bmV3IFVpbnQ4QXJyYXkoMyk7Y1swXT0obVswXSooaC10KStiWzBdKnQpL2h8MDtjWzFdPShtWzFdKihoLXQpK2JbMV0qdCkvaHwwO2NbMl09KG1bMl0qKGgtdCkrYlsyXSp0KS9ofDA7ci5wdXNoKGMpfX1mWzBdPWlbMF07Z1swXT1uWzBdO2ZbaF09aVszXTtnW2hdPW5bMV07ZltkKnVdPWlbMTJdO2dbZCp1XT1uWzJdO2ZbZCp1K2hdPWlbMTVdO2dbZCp1K2hdPW5bM107dGhpcy5maWd1cmVzW2VdPXt0eXBlOlMsY29vcmRzOmYsY29sb3JzOmcsdmVydGljZXNQZXJSb3c6ZH19X3VwZGF0ZUJvdW5kcygpe2xldCBlPXRoaXMuY29vcmRzWzBdWzBdLHQ9dGhpcy5jb29yZHNbMF1bMV0sYT1lLHI9dDtmb3IobGV0IGk9MSxuPXRoaXMuY29vcmRzLmxlbmd0aDtpPG47aSsrKXtjb25zdCBuPXRoaXMuY29vcmRzW2ldWzBdLHM9dGhpcy5jb29yZHNbaV1bMV07ZT1lPm4/bjplO3Q9dD5zP3M6dDthPWE8bj9uOmE7cj1yPHM/czpyfXRoaXMuYm91bmRzPVtlLHQsYSxyXX1fcGFja0RhdGEoKXtsZXQgZSx0LGEscjtjb25zdCBpPXRoaXMuY29vcmRzLG49bmV3IEZsb2F0MzJBcnJheSgyKmkubGVuZ3RoKTtmb3IoZT0wLGE9MCx0PWkubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9aVtlXTtuW2ErK109dFswXTtuW2ErK109dFsxXX10aGlzLmNvb3Jkcz1uO2NvbnN0IHM9dGhpcy5jb2xvcnMsbz1uZXcgVWludDhBcnJheSgzKnMubGVuZ3RoKTtmb3IoZT0wLGE9MCx0PXMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9c1tlXTtvW2ErK109dFswXTtvW2ErK109dFsxXTtvW2ErK109dFsyXX10aGlzLmNvbG9ycz1vO2NvbnN0IGM9dGhpcy5maWd1cmVzO2ZvcihlPTAsdD1jLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PWNbZV0saT10LmNvb3JkcyxuPXQuY29sb3JzO2ZvcihhPTAscj1pLmxlbmd0aDthPHI7YSsrKXtpW2FdKj0yO25bYV0qPTN9fX1nZXRJUigpe2NvbnN0e2JvdW5kczplfT10aGlzO2lmKGVbMl0tZVswXT09PTB8fGVbM10tZVsxXT09PTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIE1lc2hTaGFkaW5nIGJvdW5kczogWyR7ZX1dLmApO3JldHVyblsiTWVzaCIsdGhpcy5zaGFkaW5nVHlwZSx0aGlzLmNvb3Jkcyx0aGlzLmNvbG9ycyx0aGlzLmZpZ3VyZXMsZSx0aGlzLmJib3gsdGhpcy5iYWNrZ3JvdW5kXX19Y2xhc3MgRHVtbXlTaGFkaW5nIGV4dGVuZHMgQmFzZVNoYWRpbmd7Z2V0SVIoKXtyZXR1cm5bIkR1bW15Il19fWZ1bmN0aW9uIGdldFRpbGluZ1BhdHRlcm5JUihlLHQsYSl7Y29uc3Qgcj1sb29rdXBNYXRyaXgodC5nZXRBcnJheSgiTWF0cml4IiksZmEpLGk9bG9va3VwTm9ybWFsUmVjdCh0LmdldEFycmF5KCJCQm94IiksbnVsbCk7aWYoIWl8fGlbMl0taVswXT09PTB8fGlbM10taVsxXT09PTApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIGdldFRpbGluZ1BhdHRlcm5JUiAvQkJveCBhcnJheS4iKTtjb25zdCBuPXQuZ2V0KCJYU3RlcCIpO2lmKCJudW1iZXIiIT10eXBlb2Ygb
101il0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9YU3RlcCB2YWx1ZS4iKTtjb25zdCBzPXQuZ2V0KCJZU3RlcCIpO2lmKCJudW1iZXIiIT10eXBlb2Ygcyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9ZU3RlcCB2YWx1ZS4iKTtjb25zdCBvPXQuZ2V0KCJQYWludFR5cGUiKTtpZighTnVtYmVyLmlzSW50ZWdlcihvKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgZ2V0VGlsaW5nUGF0dGVybklSIC9QYWludFR5cGUgdmFsdWUuIik7Y29uc3QgYz10LmdldCgiVGlsaW5nVHlwZSIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGMpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBnZXRUaWxpbmdQYXR0ZXJuSVIgL1RpbGluZ1R5cGUgdmFsdWUuIik7cmV0dXJuWyJUaWxpbmdQYXR0ZXJuIixhLGUscixpLG4scyxvLGNdfWNvbnN0IHBpPVsxLjM4NzcsMSwxLDEsLjk3ODAxLC45MjQ4MiwuODk1NTIsLjkxMTMzLC44MTk4OCwuOTc1NjYsLjk4MTUyLC45MzU0OCwuOTM1NDgsMS4yNzk4LC44NTI4NCwuOTI3OTQsMSwuOTYxMzQsMS41NDY1NywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjgyODQ1LC44Mjg0NSwuODUyODQsLjg1Mjg0LC44NTI4NCwuNzU4NTksLjkyMTM4LC44MzkwOCwuNzc2MiwuNzMyOTMsLjg3Mjg5LC43MzEzMywuNzUxNCwuODE5MjEsLjg3MzU2LC45NTk1OCwuNTk1MjYsLjc1NzI3LC42OTIyNSwxLjA0OTI0LC45MTIxLC44Njk0MywuNzk3OTUsLjg4MTk4LC43Nzk1OCwuNzA4NjQsLjgxMDU1LC45MDM5OSwuODg2NTMsLjk2MDE3LC44MjU3NywuNzc4OTIsLjc4MjU3LC45NzUwNywxLjU0NjU3LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuODg3NjIsLjg3ODUsLjc1MjQxLC44Nzg1LC45MDUxOCwuOTUwMTUsLjc3NjE4LC44Nzg1LC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTE0ODgsLjg3ODUsLjg4MDEsLjg3ODUsLjg3ODUsLjkxMzQzLC43MTczLDEuMDQxMDYsLjg3ODUsLjg1MDc1LC45NTc5NCwuODI2MTYsLjg1MTYyLC43OTQ5MiwuODgzMzEsMS42OTgwOCwuODgzMzEsLjg1Mjg0LC45NzgwMSwuODk1NTIsLjkxMTMzLC44OTU1MiwuOTExMzMsMS43ODAxLC44OTU1MiwxLjI0NDg3LDEuMTMyNTQsMS4xMjQwMSwuOTY4MzksLjg1Mjg0LC42ODc4NywuNzA2NDUsLjg1NTkyLC45MDc0NywxLjAxNDY2LDEuMDA4OCwuOTAzMjMsMSwxLjA3NDYzLDEsLjkxMDU2LC43NTgwNiwxLjE5MTE4LC45NjgzOSwuNzg4NjQsLjgyODQ1LC44NDEzMywuNzU4NTksLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjc3NTM5LC43MzI5MywuNzMxMzMsLjczMTMzLC43MzEzMywuNzMxMzMsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjk1OTU4LC44ODUwNiwuOTEyMSwuODY5NDMsLjg2OTQzLC44Njk0MywuODY5NDMsLjg2OTQzLC44NTI4NCwuODc1MDgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC44ODc2MiwuODg3NjIsLjg4NzYyLC44ODc2MiwuODg3NjIsLjg4NzYyLC44NzE1LC43NTI0MSwuOTA1MTgsLjkwNTE4LC45MDUxOCwuOTA1MTgsLjg4NDAxLC44ODQwMSwuODg0MDEsLjg4NDAxLC44Nzg1LC44Nzg1LC44ODAxLC44ODAxLC44ODAxLC44ODAxLC44ODAxLC45MDc0NywuODkwNDksLjg3ODUsLjg3ODUsLjg3ODUsLjg3ODUsLjg1MTYyLC44Nzg1LC44NTE2MiwuODM5MDgsLjg4NzYyLC44MzkwOCwuODg3NjIsLjgzOTA4LC44ODc2MiwuNzMyOTMsLjc1MjQxLC43MzI5MywuNzUyNDEsLjczMjkzLC43NTI0MSwuNzMyOTMsLjc1MjQxLC44NzI4OSwuODMwMTYsLjg4NTA2LC45MzEyNSwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjczMTMzLC45MDUxOCwuNzMxMzMsLjkwNTE4LC43MzEzMywuOTA1MTgsLjgxOTIxLC43NzYxOCwuODE5MjEsLjc3NjE4LC44MTkyMSwuNzc2MTgsMSwxLC44NzM1NiwuODc4NSwuOTEwNzUsLjg5NjA4LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzYyMjksLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc5NDY4LC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTEyMSwuODc4NSwxLDEsLjkxMjEsLjg3ODUsLjg3ODAyLC44ODY1NiwuODc4NSwuODY5NDMsLjg4MDEsLjg2OTQzLC44ODAxLC44Njk0MywuODgwMSwuODc0MDIsLjg5MjkxLC43Nzk1OCwuOTEzNDMsMSwxLC43Nzk1OCwuOTEzNDMsLjcwODY0LC43MTczLC43MDg2NCwuNzE3MywuNzA4NjQsLjcxNzMsLjcwODY0LC43MTczLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45MDM5OSwuODc4NSwuOTAzOTksLjg3ODUsLjkwMzk5LC44Nzg1LC45NjAxNywuOTU3OTQsLjc3ODkyLC44NTE2MiwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuODg3NjIsLjc3NTM5LC44NzE1LC44NzUwOCwuODkwNDksMSwxLC44MTA1NSwxLjA0MTA2LDEuMjA1MjgsMS4yMDUyOCwxLDEuMTU1NDMsLjcwNjc0LC45ODM4NywuOTQ3MjEsMS4zMzQzMSwxLjQ1ODk0LC45NTE2MSwxLjA2MzAzLC44MzkwOCwuODAzNTIsLjU3MTg0LC42OTY1LC41NjI4OSwuODIwMDEsLjU2MDI5LC44MTIzNSwxLjAyOTg4LC44MzkwOCwuNzc2MiwuNjgxNTYsLjgwMzY3LC43MzEzMywuNzgyNTcsLjg3MzU2LC44Njk0MywuOTU5NTgsLjc1NzI3LC44OTAxOSwxLjA0OTI0LC45MTIxLC43NjQ4LC44Njk0MywuODczNTYsLjc5Nzk1LC43ODI3NSwuODEwNTUsLjc3ODkyLC45NzYyLC44MjU3NywuOTk4MTksLjg0ODk2LC45NTk1OCwuNzc4OTIsLjk2MTA4LDEuMDE0MDcsLjg5MDQ5LDEuMDI5ODgsLjk0MjExLC45NjEwOCwuODkzNiwuODQwMjEsLjg3ODQyLC45NjM5OSwuNzkxMDksLjg5MDQ5LDEuMDA4MTMsMS4wMjk4OCwuODYwNzcsLjg3NDQ1LC45MjA5OSwuODQ3MjMsLjg2
101NTEzLC44ODAxLC43NTYzOCwuODU3MTQsLjc4MjE2LC43OTU4NiwuODc5NjUsLjk0MjExLC45Nzc0NywuNzgyODcsLjk3OTI2LC44NDk3MSwxLjAyOTg4LC45NDIxMSwuODgwMSwuOTQyMTEsLjg0OTcxLC43MzEzMywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTAyNjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjkwNTE4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDU0OCwxLDEsMSwxLDEsMSwuOTYwMTcsLjk1Nzk0LC45NjAxNywuOTU3OTQsLjk2MDE3LC45NTc5NCwuNzc4OTIsLjg1MTYyLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMzYzLC45Mjc5NCwuOTI3OTQsLjkyNzk0LC45Mjc5NCwuODcwMTIsLjg3MDEyLC44NzAxMiwuODk1NTIsLjg5NTUyLDEuNDIyNTksLjcxMTQzLDEuMDYxNTIsMSwxLDEuMDMzNzIsMS4wMzM3MiwuOTcxNzEsMS40OTU2LDIuMjgwNywuOTM4MzUsLjgzNDA2LC45MTEzMywuODQxMDcsLjkxMTMzLDEsMSwxLC43MjAyMSwxLDEuMjMxMDgsLjgzNDg5LC44ODUyNSwuODg1MjUsLjgxNDk5LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMzEwMDYsMS41MzcxMSwuOTQ0MzQsMS4wODY5NiwxLC45NTAxOCwuNzcxOTIsLjg1Mjg0LC45MDc0NywxLjE3NTM0LC42OTgyNSwuOTcxNiwxLjM3MDc3LC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wODAwNCwuOTEwMjcsMSwxLDEsLjk5ODYyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDcyNywuOTA3MjcsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLG1pPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxiaT1bMS4zODc3LDEsMSwxLC45NzgwMSwuOTI0ODIsLjg5NTUyLC45MTEzMywuODE5ODgsLjk3NTY2LC45ODE1MiwuOTM1NDgsLjkzNTQ4LDEuMjc5OCwuODUyODQsLjkyNzk0LDEsLjk2MTM0LDEuNTYyMzksLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC44Mjg0NSwuODI4NDUsLjg1Mjg0LC44NTI4NCwuODUyODQsLjc1ODU5LC45MjEzOCwuODM5MDgsLjc3NjIsLjcxODA1LC44NzI4OSwuNzMxMzMsLjc1MTQsLjgxOTIxLC44NzM1NiwuOTU5NTgsLjU5NTI2LC43NTcyNywuNjkyMjUsMS4wNDkyNCwuOTA4NzIsLjg1OTM4LC43OTc5NSwuODcwNjgsLjc3OTU4LC42OTc2NiwuODEwNTUsLjkwMzk5LC44ODY1MywuOTYwNjgsLjgyNTc3LC43Nzg5MiwuNzgyNTcsLjk3NTA3LDEuNTI5LC45NzUwNywuODUyODQsLjg5NTUyLC45MDE3NiwuOTQ5MDgsLjg2NDExLC43NDAxMiwuODY0MTEsLjg4MzIzLC45NTAxNSwuODY0MTEsLjg2MzMxLC44ODQwMSwuOTE5MTYsLjg2MzA0LC44ODQwMSwuOTAzOSwuODYzMzEsLjg2MzMxLC44NjQxMSwuODY0MTEsLjkwNDY0LC43MDg1MiwxLjA0MTA2LC44NjMzMSwuODQzNzIsLjk1Nzk0LC44MjYxNiwuODQ1NDgsLjc5NDkyLC44ODMzMSwxLjY5ODA4LC44ODMzMSwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjc4MDEsLjg5NTUyLDEuMjQ0ODcsMS4xMzI1NCwxLjE5MTI5LC45NjgzOSwuODUyODQsLjY4Nzg3LC43MDY0NSwuODU1OTIsLjkwNzQ3LDEuMDE0NjYsMS4wMDg4LC45MDMyMywxLDEuMDc0NjMsMSwuOTEwNTYsLjc1ODA2LDEuMTkxMTgsLjk2ODM5LC43ODg2NCwuODI4NDUsLjg0MTMzLC43NTg1OSwuODM5MDgsLjgzOTA4LC44MzkwOCwuODM5MDgsLjgzOTA4LC44MzkwOCwuNzc1MzksLjcxODA1LC43MzEzMywuNzMxMzMsLjczMTMzLC43MzEzMywuOTU5NTgsLjk1OTU4LC45NTk1OCwuOTU5NTgsLjg4NTA2LC45MDg3MiwuODU5MzgsLjg1OTM4LC44NTkzOCwuODU5MzgsLjg1OTM4LC44NTI4NCwuODcwNjgsLjkwMzk5LC45MDM5OSwuOTAzOTksLjkwMzk5LC43Nzg5MiwuNzk3OTUsLjkwODA3LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC45NDkwOCwuOTQ5MDgsLjk0OTA4LC44NTg4NywuNzQwMTIsLjg4MzIzLC44ODMyMywuODgzMjMsLjg4MzIzLC44ODQwMSwuODg0MDEsLjg4NDAxLC44ODQwMSwuODc4NSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuOTA3NDcsLjg5MDQ5LC44NjMzMSwuODYzMzEsLjg2MzMxLC44NjMzMSwuODQ1NDgsLjg2NDExLC44NDU0OCwuODM5MDgsLjk0OTA4LC44MzkwOCwuOTQ5MDgsLjgzOTA4LC45NDkwOCwuNzE4MDUsLjc0MDEyLC43MTgwNSwuNzQwMTIsLjcxODA1LC43NDAxMiwuNzE4MDUsLjc0MDEyLC44NzI4OSwuNzk1MzgsLjg4NTA2LC45MjcyNiwuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjczMTMzLC44ODMyMywuNzMxMzMsLjg4MzIzLC43MzEzMywuODgzMjMsLjgxOTIxLC44NjQxMSwuODE5MjEsLjg2NDExLC44MTkyMSwuODY0MTEsMSwxLC44NzM1NiwuODYzMzEsLjkxMDc1LC44Nzc3LC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuOTU5NTgsLjg4NDAxLC45NTk1OCwuODg0MDEsLjk1OTU4LC44ODQwMSwuNzY0NjcsLjkwMTY3LC41OTUyNiwuOTE5MTYsMSwxLC44NjMwNCwuNjkyMjUsLjg4NDAxLDEsMSwuNzA0MjQsLjc3MzEyLC45MTkyNiwuODgxNzUsLjcwODIzLC45NDkwMywuOTA4NzIsLjg2MzMxLDEsMSwuOTA4NzIsLjg2MzMxLC44NjkwNiwuODgxMTYsLjg2MzMxLC44NTkzOCwuODYzMzEsLjg1OTM4LC44NjMzMSwuODU5MzgsLjg2MzMxLC44NzQwMiwuODY1NDksLjc3OTU4LC45MDQ2NCwxLDEsLjc3OTU4LC45MDQ2NCwuNjk3NjYsLjcwODUyLC42OTc2NiwuNzA4NTIsLjY5NzY2LC43MDg1MiwuNjk3NjYsLjcwODUyLDEsMSwuODEwNTUsLjc1ODQxLC44MTA1NSwxLjA2NDUyLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45MDM5OSwuODYzMzEsLjkwMzk5LC44NjMzMSwuOTAzOTksLjg2MzMxLC45NjA2OCwuOTU3OTQsLjc3ODkyLC44NDU0OCwuNzc4OTIsLjc4MjU3LC43OTQ5MiwuNzgyNTcsLjc5NDkyLC43ODI1NywuNzk0OTIsLjkyOTcsLjU2ODkyLC44MzkwOCwuOTQ5MDgsLjc3NTM5LC44NTg4NywuODcwNjgsLjg5MDQ5LDEsMSwuODEwNTUsMS4wNDEwNiwxLjIwNTI4LDEuMjA1MjgsMSwxLjE1NTQzLC43MDA4OCwuOTgzODcsLjk0NzIxLDEuMzM0MzEsMS40NTg5NCwuOTUxNjEsMS40ODM4NywuODM5MDgsLjgwMzUyLC41NzExOCwuNjk2NSwuNTYzNDcsLjc5MTc5LC41NTg1MywuODAzNDYsMS4wMjk4OCwuODM5MDgsLjc3NjIsLjY3MTc0LC44NjAzNiwuNzMxMzMsLjc4MjU3LC44NzM1NiwuODY0NDEsLjk1OTU4LC43NTcyNywuODkwMTksMS4wNDkyNCwuOTA4NzIsLjc0ODg5LC44NTkzOCwuODc4OTEsLjc5Nzk1LC43OTU3LC44MTA1NSwuNzc4OTIsLjk3NDQ3LC44MjU3NywuOTc0NjYsLjg3MTc5LC45NTk1OCwuNzc4OTIsLjk0MjUyLC45NTYxMiwuODc1MywxLjAyOTg4LC45MjczMywuOTQyNTIsLjg3N
101DExLC44NDAyMSwuODcyOCwuOTU2MTIsLjc0MDgxLC44NzUzLDEuMDIxODksMS4wMjk4OCwuODQ4MTQsLjg3NDQ1LC45MTgyMiwuODQ3MjMsLjg1NjY4LC44NjMzMSwuODEzNDQsLjg3NTgxLC43NjQyMiwuODIwNDYsLjk2MDU3LC45MjczMywuOTkzNzUsLjc4MDIyLC45NTQ1MiwuODYwMTUsMS4wMjk4OCwuOTI3MzMsLjg2MzMxLC45MjczMywuODYwMTUsLjczMTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45MDYzMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODgzMjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg1MTc0LDEsMSwxLDEsMSwxLC45NjA2OCwuOTU3OTQsLjk2MDY4LC45NTc5NCwuOTYwNjgsLjk1Nzk0LC43Nzg5MiwuODQ1NDgsMSwxLC44OTU1MiwuOTA1MjcsMSwuOTAzNjMsLjkyNzk0LC45Mjc5NCwuOTI3OTQsLjg5ODA3LC44NzAxMiwuODcwMTIsLjg3MDEyLC44OTU1MiwuODk1NTIsMS40MjI1OSwuNzEwOTQsMS4wNjE1MiwxLDEsMS4wMzM3MiwxLjAzMzcyLC45NzE3MSwxLjQ5NTYsMi4yODA3LC45Mjk3MiwuODM0MDYsLjkxMTMzLC44MzMyNiwuOTExMzMsMSwxLDEsLjcyMDIxLDEsMS4yMzEwOCwuODM0ODksLjg4NTI1LC44ODUyNSwuODE0OTksLjkwNjE2LDEuODEwNTUsLjkwNTI3LDEuODEwNTUsMS4zMTA3LDEuNTM3MTEsLjk0NDM0LDEuMDg2OTYsMSwuOTUwMTgsLjc3MTkyLC44NTI4NCwuOTA3NDcsMS4xNzUzNCwuNjk4MjUsLjk3MTYsMS4zNzA3NywuOTA3NDcsLjkwNzQ3LC44NTM1NiwuOTA3NDcsLjkwNzQ3LDEuNDQ5NDcsLjg1Mjg0LC44OTQxLC44OTQxLC43MDU3MiwuOCwuNzA1NzIsLjcwNTcyLC43MDU3MiwuNzA1NzIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45OTg2MiwuOTk4NjIsMSwxLDEsMSwxLDEuMDgwMDQsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA3MjcsLjkwNzI3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSx5aT17bGluZUhlaWdodDoxLjIyMDcsbGluZUdhcDouMjIwN30sd2k9WzEuMzg3NywxLDEsMSwxLjE3MjIzLDEuMTI5MywuODk1NTIsLjkxMTMzLC44MDM5NSwxLjAyMjY5LDEuMTU2MDEsLjkxMDU2LC45MTA1NiwxLjI3OTgsLjg1Mjg0LC44OTgwNywxLC45MDg2MSwxLjM5NTQzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTYzMDksLjk2MzA5LC44NTI4NCwuODUyODQsLjg1Mjg0LC44MzMxOSwuODgwNzEsLjg2NzUsLjgxNTUyLC43MjM0NiwuODUxOTMsLjczMjA2LC43NTIyLC44MTEwNSwuODYyNzUsLjkwNjg1LC42Mzc3LC43Nzg5MiwuNzU1OTMsMS4wMjYzOCwuODkyNDksLjg0MTE4LC43NzQ1MiwuODUzNzQsLjc1MTg2LC42Nzc4OSwuNzk3NzYsLjg4ODQ0LC44NTA2NiwuOTQzMDksLjc3ODE4LC43MzA2LC43NjY1OSwxLjEwMzY5LDEuMzgzMTMsMS4xMDM2OSwxLjA2MTM5LC44OTU1MiwuODczOSwuOTI0NSwuOTI0NSwuODMyMDMsLjkyNDUsLjg1ODY1LDEuMDk4NDIsLjkyNDUsLjkyNDUsMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NDk1OSwuOTI0NSwuOTIyNzQsLjkyNDUsLjkyNDUsMS4wMjkzMywuNzc4MzIsMS4yMDU2MiwuOTI0NSwuODkxNiwuOTg5ODYsLjg2NjIxLC44OTQ1MywuNzkwMDQsLjk0MTUyLDEuNzcyNTYsLjk0MTUyLC44NTI4NCwuOTc4MDEsLjg5NTUyLC45MTEzMywuODk1NTIsLjkxMTMzLDEuOTE3MjksLjg5NTUyLDEuMTc4ODksMS4xMzI1NCwxLjE2MzU5LC45MjA5OCwuODUyODQsLjY4Nzg3LC43MTM1MywuODQ3MzcsLjkwNzQ3LDEuMDA4OCwxLjAwNDQsLjg3NjgzLDEsMS4wOTA5MSwxLC45MjIyOSwuNzM5LDEuMTU2NDIsLjkyMDk4LC43NjI4OCwuODA1MDQsLjgwOTcyLC43NTg1OSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuODY3NSwuNzYzMTgsLjcyMzQ2LC43MzIwNiwuNzMyMDYsLjczMjA2LC43MzIwNiwuOTA2ODUsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjg2NDc3LC44OTI0OSwuODQxMTgsLjg0MTE4LC44NDExOCwuODQxMTgsLjg0MTE4LC44NTI4NCwuODQ1NTcsLjg4ODQ0LC44ODg0NCwuODg4NDQsLjg4ODQ0LC43MzA2LC43NzQ1MiwuODYzMzEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg0ODQzLC44MzIwMywuODU4NjUsLjg1ODY1LC44NTg2NSwuODU4NjUsLjgyNjAxLC44MjYwMSwuODI2MDEsLjgyNjAxLC45NDQ2OSwuOTI0NSwuOTIyNzQsLjkyMjc0LC45MjI3NCwuOTIyNzQsLjkyMjc0LC45MDc0NywuODY2NTEsLjkyNDUsLjkyNDUsLjkyNDUsLjkyNDUsLjg5NDUzLC45MjQ1LC44OTQ1MywuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuODY3NSwuOTI0NSwuNzIzNDYsLjgzMjAzLC43MjM0NiwuODMyMDMsLjcyMzQ2LC44MzIwMywuNzIzNDYsLjgzMjAzLC44NTE5MywuODg3NSwuODY0NzcsLjk5MDM0LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuNzMyMDYsLjg1ODY1LC43MzIwNiwuODU4NjUsLjczMjA2LC44NTg2NSwuODExMDUsLjkyNDUsLjgxMTA1LC45MjQ1LC44MTEwNSwuOTI0NSwxLDEsLjg2Mjc1LC45MjQ1LC45MDg3MiwuOTM1OTEsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc4OTYsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTM3NSwuOTgxNTYsLjkzNDA3LC43NzI2MSwxLjExNDI5LC44OTI0OSwuOTI0NSwxLDEsLjg5MjQ5LC45MjQ1LC45MjUzNCwuODY2OTgsLjkyNDUsLjg0MTE4LC45MjI3NCwuODQxMTgsLjkyMjc0LC44NDExOCwuOTIyNzQsLjg2NjcsLjg2MjkxLC43NTE4NiwxLjAyOTMzLDEsMSwuNzUxODYsMS4wMjkzMywuNjc3ODksLjc3ODMyLC42Nzc4OSwuNzc4MzIsLjY3Nzg5LC43NzgzMiwuNjc3ODksLjc3ODMyLDEsMSwuNzk3
101NzYsLjk3NjU1LC43OTc3NiwxLjIzMDIzLC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC44ODg0NCwuOTI0NSwuODg4NDQsLjkyNDUsLjg4ODQ0LC45MjQ1LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLC43MzA2LC43NjY1OSwuNzkwMDQsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LDEuMDkyMzEsLjU0ODczLC44Njc1LC45MjQ1LC43NjMxOCwuODQ4NDMsLjg0NTU3LC44NjY1MSwxLDEsLjc5Nzc2LDEuMjA1NjIsMS4xODYyMiwxLjE4NjIyLDEsMS4xNDM3LC42NzAwOSwuOTYzMzQsLjkzNjk1LDEuMzUxOTEsMS40MDkwOSwuOTUxNjEsMS40ODM4NywuODY3NSwuOTA4NjEsLjYxOTIsLjczNjMsLjY0ODI0LC44MjQxMSwuNTYzMjEsLjg1Njk2LDEuMjM1MTYsLjg2NzUsLjgxNTUyLC43Mjg2LC44NDEzNCwuNzMyMDYsLjc2NjU5LC44NjI3NSwuODQzNjksLjkwNjg1LC43Nzg5MiwuODU4NzEsMS4wMjYzOCwuODkyNDksLjc1ODI4LC44NDExOCwuODU5ODQsLjc3NDUyLC43NjQ2NiwuNzk3NzYsLjczMDYsLjkwNzgyLC43NzgxOCwuOTAzLC44NzI5MSwuOTA2ODUsLjczMDYsLjk5MDU4LDEuMDM2NjcsLjk0NjM1LDEuMjM1MTYsLjk4NDksLjk5MDU4LC45MjM5MywuODkxNiwuOTQyLDEuMDM2NjcsLjc1MDI2LC45NDYzNSwxLjAyOTcsMS4yMzUxNiwuOTA5MTgsLjk0MDQ4LC45ODIxNywuODk3NDYsLjg0MTUzLC45MjI3NCwuODI1MDcsLjg4ODMyLC44NDQzOCwuODgxNzgsMS4wMzUyNSwuOTg0OSwxLjAwMjI1LC43ODA4NiwuOTcyNDgsLjg5NDA0LDEuMjM1MTYsLjk4NDksLjkyMjc0LC45ODQ5LC44OTQwNCwuNzMyMDYsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg5NjkzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44NTg2NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTA5MzMsMSwxLDEsMSwxLDEsLjk0MzA5LC45ODk4NiwuOTQzMDksLjk4OTg2LC45NDMwOSwuOTg5ODYsLjczMDYsLjg5NDUzLDEsMSwuODk1NTIsLjkwNTI3LDEsLjkwMTg2LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMTIzMDgsMS4yNTY2LDEuMjU2NiwxLjI1NjYsLjg5NTUyLC44OTU1MiwxLjQyMjU5LC42ODk5NCwxLjAzODA5LDEsMSwxLjAxNzYsMS4wMTc2LDEuMTE1MjMsMS40OTU2LDIuMDE0NjIsLjk3ODU4LC44MjYxNiwuOTExMzMsLjgzNDM3LC45MTEzMywxLDEsMSwuNzA1MDgsMSwxLjIzMTA4
101LC43OTgwMSwuODQ0MjYsLjg0NDI2LC43NzQsLjkwNTcyLDEuODEwNTUsLjkwNzQ5LDEuODEwNTUsMS4yODgwOSwxLjU1NDY5LC45NDQzNCwxLjA3ODA2LDEsLjk3MDk0LC43NTg5LC44NTI4NCwuOTA3NDcsMS4xOTY1OCwuNjk4MjUsLjk3NjIyLDEuMzM1MTIsLjkwNzQ3LC45MDc0NywuODUyODQsLjkwNzQ3LC45MDc0NywxLjQ0OTQ3LC44NTI4NCwuODk0MSwuODk0MSwuNzA1NzIsLjgsLjcwNTcyLC43MDU3MiwuNzA1NzIsLjcwNTcyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTk4NjIsLjk5ODYyLDEsMSwxLDEsMSwxLjAzMzYsLjkxMDI3LDEsMSwxLC45OTg2MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1ODU5LDEuMDU4NTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLHhpPXtsaW5lSGVpZ2h0OjEuMjIwNyxsaW5lR2FwOi4yMjA3fSxTaT1bMS4zODc3LDEsMSwxLDEuMTcyMjMsMS4xMjkzLC44OTU1MiwuOTExMzMsLjgwMzk1LDEuMDIyNjksMS4xNTYwMSwuOTEwNTYsLjkxMDU2LDEuMjc5OCwuODUyODQsLjg5ODA3LDEsLjkwODYxLDEuMzkwMTYsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45MTEzMywuOTExMzMsLjkxMTMzLC45NjMwOSwuOTYzMDksLjg1Mjg0LC44NTI4NCwuODUyODQsLjgzMzE5LC44ODA3MSwuODY3NSwuODE1NTIsLjczODM0LC44NTE5MywuNzMyMDYsLjc1MjIsLjgxMTA1LC44NjI3NSwuOTA2ODUsLjYzNzcsLjc3ODkyLC43NTU5MywxLjAyNjM4LC44OTM4NSwuODUxMjIsLjc3NDUyLC44NjUwMywuNzUxODYsLjY4ODg3LC43OTc3NiwuODg4NDQsLjg1MDY2LC45NDI1OCwuNzc4MTgsLjczMDYsLjc2NjU5LDEuMTAzNjksMS4zOTAxNiwxLjEwMzY5LDEuMDYxMzksLjg5NTUyLC44NzM5LC44NjEyOCwuOTQ0NjksLjg0NTcsLjk0NDY5LC44OTQ2NCwxLjA5ODQyLC44NDYzNiwuOTQ0NjksMS4wMzI5NywxLjA3NjkyLC45MDkxOCwxLjAzMjk3LC45NTg5NywuOTQ0NjksLjk0ODIsLjk0NDY5LC45NDQ2OSwxLjA0NjkyLC43ODIyMywxLjIwNTYyLC45NDQ2OSwuOTAzMzIsLjk4OTg2LC44NjYyMSwuOTA1MjcsLjc5MDA0LC45NDE1MiwxLjc3MjU2LC45NDE1MiwuODUyODQsLjk3ODAxLC44OTU1MiwuOTExMzMsLjg5NTUyLC45MTEzMywxLjkxNzI5LC44OTU1MiwxLjE3ODg5LDEuMTMyNTQsMS4wODcwNywuOTIwOTgsLjg1Mjg0LC42ODc4NywuNzEzNTMsLjg0NzM3LC45MDc0NywxLjAwODgsMS4wMDQ0LC44NzY4MywxLDEuMDkwOTEsMSwuOTIyMjksLjczOSwxLjE1NjQyLC45MjA5OCwuNzYyODgsLjgwNTA0LC44MDk3MiwuNzU4NTksLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjg2NzUsLjc2MzE4LC43MzgzNCwuNzMyMDYsLjczMjA2LC43MzIwNiwuNzMyMDYsLjkwNjg1LC45MDY4NSwuOTA2ODUsLjkwNjg1LC44NjQ3NywuODkzODUsLjg1MTIyLC44NTEyMiwuODUxMjIsLjg1MTIyLC44NTEyMiwuODUyODQsLjg1MzExLC44ODg0NCwuODg4NDQsLjg4ODQ0LC44ODg0NCwuNzMwNiwuNzc0NTIsLjg2MzMxLC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjEyOCwuODYxMjgsLjg2MTI4LC44NjkzLC44NDU3LC44OTQ2NCwuODk0NjQsLjg5NDY0LC44OTQ2NCwuODI2MDEsLjgyNjAxLC44MjYwMSwuODI2MDEsLjk0NDY5LC45NDQ2OSwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTQ4MiwuOTA3NDcsLjg2NjUxLC45NDQ2OSwuOTQ0NjksLjk0NDY5LC45NDQ2OSwuOTA1MjcsLjk0NDY5LC45MDUyNywuODY3NSwuODYxMjgsLjg2NzUsLjg2MTI4LC44Njc1LC44NjEyOCwuNzM4MzQsLjg0NTcsLjczODM0LC44NDU3LC43MzgzNCwuODQ1NywuNzM4MzQsLjg0NTcsLjg1MTkzLC45MjQ1NCwuODY0NzcsLjk5MjEsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC43MzIwNiwuODk0NjQsLjczMjA2LC44OTQ2NCwuNzMyMDYsLjg5NDY0LC44MTEwNSwuODQ2MzYsLjgxMTA1LC44NDYzNiwuODExMDUsLjg0NjM2LDEsMSwuODYyNzUsLjk0NDY5LC45MDg3MiwuOTU3ODYsLjkwNjg1LC44MjYwMSwuOTA2ODUsLjgyNjAxLC45MDY4NSwuODI2MDEsLjkwNjg1LDEuMDMyOTcsLjkwNjg1LC44MjYwMSwuNzc3NDEsMS4wNTYxMSwuNjM3NywxLjA3NjkyLDEsMSwuOTA5MTgsLjc1NTkzLDEuMDMyOTcsMSwxLC43NjAzMiwuOTA0NTIsLjk4MTU2LDEuMTE4NDIsLjc3MjYxLDEuMTE0MjksLjg5Mzg1LC45NDQ2OSwxLDEsLjg5Mzg1LC45NDQ2OSwuOTU4NzcsLjg2OTAxLC45NDQ2OSwuODUxMjIsLjk0ODIsLjg1MTIyLC45NDgyLC44NTEyMiwuOTQ4MiwuODY2NywuOTAwMTYsLjc1MTg2LDEuMDQ2OTIsMSwxLC43NTE4NiwxLjA0NjkyLC42ODg4NywuNzgyMjMsLjY4ODg3LC43ODIyMywuNjg4ODcsLjc4MjIzLC42ODg4NywuNzgyMjMsMSwxLC43OTc3NiwuOTIxODgsLjc5Nzc2LDEuMjMwMjMsLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjg4ODQ0LC45NDQ2OSwuODg4NDQsLjk0NDY5LC44ODg0NCwuOTQ0NjksLjk0MjU4LC45ODk4NiwuNzMwNiwuOTA1MjcsLjczMDYsLjc2NjU5LC43OTAwNCwuNzY2NTksLjc5MDA0LC43NjY1OSwuNzkwMDQsMS4wOTIzMSwuNTQ4NzMsLjg2NzUsLjg2MTI4LC43NjMxOCwuODY5MywuODUzMTEsLjg2NjUxLDEsMSwuNzk3NzYsMS4yMDU2MiwxLjE4NjIyLDEuMTg2MjIsMSwxLjE0MzcsLjY3NzQyLC45NjMzNCwuOTM2OTUsMS4zNTE5MSwxLjQwOTA5LC45NTE2MSwxLjQ4Mzg3LC44NjY4NiwuOTA4NjEsLjYyMjY3LC43NDM1OSwuNjU2NDksLjg1NDk4LC41Njk2MywuODgyNTQsMS4yMzUxNiwuODY3NSwuODE1NTIsLjc1NDQzLC44NDUwMywuNzMyMDYsLjc2NjU5LC44NjI3NSwuODUxMjIsLjkwNjg1LC43Nzg5MiwuODU3NDYsMS4wMjYzOCwuODkzODUsLjc1NjU3LC44NTEyMiwuODYyNzUsLjc3NDUyLC43NDE3MSwuNzk3NzYsLjczMDYsLjk1MTY1LC43NzgxOCwuODk3NzIsLjg4ODMxLC45MDY4NSwuNzMwNiwuOTgxNDIsMS4wMjE5MSwuOTY1NzYsMS4yMzUxNiwuOTkwMTgsLjk4MTQyLC45MjM2LC44OTI1OCwuOTQwMzUsMS4wMjE5MSwuNzg4NDgsLjk2NTc2LC45NTYxLDEuMjM1MTYsLjkwOTE4LC45MjU3OCwuOTU0MjQsLjg5NzQ2LC44Mzk2OSwuOTQ4MiwuODAxMTMsLjg5NDQyLC44NTIwOCwuODYxNTUsLjk4MDIyLC45OTAxOCwxLjAwNDUyLC44MTIwOSwuOTkyNDcsLjg5MTgxLDEuMjM1MTYsLjk5MDE4LC45NDgyLC45OTAxOCwuODkxODEsLjczMjA2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44ODg0NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODk0NjQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NzY2LDEsMSwxLDEsMSwxLC45NDI1OCwuOTg5ODYsLjk0MjU4LC45ODk4NiwuOTQyNTgsLjk4OTg2LC43MzA2LC45MDUyNywxLDEsLjg5NTUyLC45MDUyNywxLC45MDE4NiwxLjEyMzA4LDEuMTIzMDgsMS4xMjMwOCwxLjEyMzA4LDEuMjU2NiwxLjI1NjYsMS4yNTY2LC44OTU1MiwuODk1NTIsMS40MjI1OSwuNjkwNDMsMS4wMzgwOSwxLDEsMS4wMTc2LDEuMDE3NiwxLjExNTIzLDEuNDk1NiwyLjAxNDYyLC45OTMzMSwuODI2MTYsLjkxMTMzLC44NDI4NiwuOTExMzMsMSwxLDEsLjcwNTA4LDEsMS4yMzEwOCwuNzk4MDEsLjg0NDI2LC44NDQyNiwuNzc0LC45MDUyNywxLjgxMDU1LC45MDUyNywxLjgxMDU1LDEuMjg4MDksMS41NTQ2OSwuOTQ0MzQsMS4wNzgwNiwxLC45NzA5NCwuNzU4OSwuODUyODQsLjkwNzQ3LDEuMTk2NTgsLjY5ODI1LC45NzYyMiwxLjMzNTEyLC45MDc0NywuOTA3NDcsLjg1MzU2LC45MDc0NywuOTA3NDcsMS40NDk0NywuODUyODQsLjg5NDEsLjg5NDEsLjcwNTcyLC44LC43MDU3MiwuNzA1NzIsLjcwNTcyLC43MDU3MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk5ODYyLC45OTg2MiwxLDEsMSwxLDEsMS4wMzM2LC45MTAyNywxLDEsMSwuOTk4NjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNTg1OSwxLjA1ODU5LDEsMSwxLDEuMDcxODUsLjk5NDEzLC45NjMzNCwxLjA4MDY1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sQWk9e2xpbmVIZWlnaHQ6MS4yMjA3LGxpbmVHYXA6LjIyMDd9LGtpPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjA
101wMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMzM3NCwuOTk5NzcsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNDIsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTc3LC45OTk3MywuOTk5NzMsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDYsMS4wMDAyNiwxLjAzODI4LDEuMDAwMjYsLjk5OTk5LDEuMDAwMjYsMS4wMDA2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTkzLC45OTk4LDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMSwxLjAwMDE2LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwuOTk5NzcsLjk5OTU5LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjYsLjk5OTk4LDEuMDAwMjYsLjgxMjEsMS4wMDAyNiwuOTk5OTgsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsLjk5OTc3LDEuMDAwMjYsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDA2LC45OTk3MywuOTk5NzcsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMS4wMDAzNCwuOTk5NzcsMSwuOTk5OTcsMS4wMDAyNiwxLjAwMDc4LDEuMDAwMzYsLjk5OTczLDEuMDAwMTMsMS4wMDA2LC45OTk3NywuOTk5NzcsLjk5OTg4LC44NTE0OCwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LC45OTk3NywxLjAwMDAxLC45OTk5OSwuOTk5NzcsMS4wMDA2OSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLC45OTk4NCwxLjAwMDI2LDEuMDAwMDEsMS4wMDAyNCwxLjAwMDAxLC45OTk5LDEsMS4wMDA2LDEuMDAwMDEsMS4wMDA0MSwuOTk5NjIsMS4wMDAyNiwxLjAwMDYsLjk5OTk1LDEuMDAwNDEsLjk5OTQyLC45OTk3MywuOTk5MjcsMS4wMDA4MiwuOTk5MDIsMS4wMDAyNiwxLjAwMDg3LDEuMDAwNiwxLjAwMDY5LC45OTk3MywuOTk4NjcsLjk5OTczLC45OTkzLDEuMDAwMjYsMS4wMDA0OSwxLjAwMDU2LDEsLjk5OTg4LC45OTkzNSwuOTk5OTUsLjk5OTU0LDEuMDAwNTUsLjk5OTQ1LDEuMDAwMzIsMS4wMDA2LC45OTk5NSwxLjAwMDI2LC45OTk5NSwxLjAwMDMyLDEuMDAwMDEsMS4wMDAwOCwuOTk5NzEsMS4wMDAxOSwuOTk5NCwxLjAwMDAxLDEuMDAwNiwxLjAwMDQ0LC45OTk3MywxLjAwMDIzLDEuMDAwNDcsMSwuOTk5NDIsLjk5NTYxLC45OTk4OSwxLjAwMDM1LC45OTk3NywxLjAwMDM1LC45OTk3NywxLjAwMDE5LC45OTk0NCwxLjAwMDAxLDEuMDAwMjEsLjk5OTI2LDEuMDAwMzUsMS4wMDAzNSwuOTk5NDIsMS4wMDA0OCwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAzNSwxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk4OSwxLjAwMDU3LDEuMDAwMDEsLjk5OTM2LDEuMDAwNTIsMS4wMDAxMiwuOTk5OTYsMS4wMDA0MywxLDEuMDAwMzUsLjk5OTQsLjk5OTc2LDEuMDAwMzUsLjk5OTczLDEuMDAwNTIsMS4wMDA0MSwxLjAwMTE5LDEuMDAwMzcsLjk5OTczLDEuMDAwMDIsLjk5OTg2LDEuMDAwNDEsMS4wMDA0MSwuOTk5MDIsLjk5OTYsMS4wMDAzNCwuOTk5OTksMS4wMDAyNiwuOTk5OTksMS4wMDAyNiwuOTk5NzMsMS4wMDA1MiwuOTk5NzMsMSwuOTk5NzMsMS4wMDA0MSwxLjAwMDc1LC45OTk0LDEuMDAwMywuOTk5OTksMSwxLjAwMDQxLC45OTk1NSwxLC45OTkxNSwuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDExOSwuOTk5NTUsLjk5OTczLDEuMDAwNiwuOTk5MTEsMS4wMDA2LDEuMDAwMjYsLjk5OTcyLDEuMDAwMjYsLjk5OTAyLDEuMDAwNDEsLjk5OTczLC45OTk5OSwxLDEsMS4wMDAzOCwxLjAwMDUsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAwMSwuOTk5NzMsMSwxLC45OTk3MywxLDEsLjk5OTU1LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLDEsMSwuOTk5NzMsLjk5OTczLC45OTk3MiwxLDEsMS4wMDEwNiwuOTk5OTksLjk5OTk4LC45OTk5OCwuOTk5OTksLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLC45OTk3MSwxLjAwMDQ3LDEuMDAwMjMsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMSwxLDEsMSwxLDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sQ2k9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LHZpPVsuNzYxMTYsMSwxLDEuMDAwNiwuOTk5OTgsLjk5OTc0LC45OTk3MywuOTk5NzMsLjk5OTgyLC45OTk3NywxLjAwMDg3LC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywxLjAwMDI2LC45OTk5LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMjYsMS4wMDAyMiwuOTk5NzcsMS4wMDA2LC45OTk3MywuOTk5NzcsMS4wMDAyNiwuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5OTgsMS4wMDA2LC45OTk5OCwxLjAwMDAzLC45OTk3MywuOTk5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMjYsLjk5OTczLC45OTk5OCwxLjAwMDI2LDEuMDAwMjYsMS4wMDA2LDEuMDAwNiwuOTk5NzMsMS4wMDA2LC45OTk4MiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk1OSwuOTk5NzMsLjk5OTk4LDEuMDAwMjYsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3MywxLC45OTk1OSwxLjA
101wMDc3LC45OTk1OSwxLjAwMDAzLC45OTk5OCwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3NywuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTczLDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywuOTk5NzcsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwxLjA2NDA5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTk5NzMsMS4wMDAyNiwuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsMS4wMDQ0LC45OTk3NywxLjAwMDI2LDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTcxLC45OTk3MywuOTk5NzMsMS4wMDA2LC45OTk3NywuOTk5NzMsLjk5OTczLDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMDA2LDEuMDAwMjYsMS4wMTAxMSwxLjAwMDI2LC45OTk5OSwxLjAwMDI2LDEuMDAwNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5NzcsMS4wMDAyNiwuOTk5MywuOTk5OCwxLjAwMDI2LDEuMDAwMjIsMS4wMDAyNiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAyMiwxLjAwMDI2LDEsMS4wMDAxNiwuOTk5NzcsLjk5OTU5LC45OTk3NywuOTk5NTksLjk5OTc3LC45OTk1OSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDI2LC45OTk5OCwxLjAwMDI2LC44MTIxLDEuMDAwMjYsLjk5OTk4LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LC45OTk3NywxLjAwMDI2LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDAxLC45OTk3MywxLjAwMDAxLDEuMDAwMjYsMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwNiwuOTk5NzMsLjk5OTc3LC45OTk3MywxLC45OTk4MiwxLjAwMDIyLDEuMDAwMjYsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5NzcsMSwxLDEuMDAwMjYsLjk5OTY5LC45OTk3MiwuOTk5ODEsLjk5OTgsMS4wMDA2LC45OTk3NywuOTk5NzcsMS4wMDAyMiwuOTExNTUsMS4wMDAwMSwxLjAwMDI2LC45OTk3NywxLjAwMDIyLDEuMDAwNiwuOTk5NzcsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTk2NiwxLjAwMDIyLDEuMDAwMzIsMS4wMDAwMSwuOTk5NDQsMS4wMDAyNiwxLjAwMDAxLC45OTk2OCwxLjAwMDAxLDEuMDAwNDcsMSwxLjAwMDYsMS4wMDAwMSwuOTk5ODEsMS4wMDEwMSwxLjAwMDI2LDEuMDAwNiwuOTk5NDgsLjk5OTgxLDEuMDAwNjQsLjk5OTczLC45OTk0MiwxLjAwMTAxLDEuMDAwNjEsMS4wMDAyNiwxLjAwMDY5LDEuMDAwNiwxLjAwMDE0LC45OTk3MywxLjAxMzIyLC45OTk3MywxLjAwMDY1LDEuMDAwMjYsMS4wMDAxMiwuOTk5MjMsMSwxLjAwMDY0LDEuMDAwNzYsLjk5OTQ4LDEuMDAwNTUsMS4wMDA2MywxLjAwMDA3LC45OTk0MywxLjAwMDYsLjk5OTQ4LDEuMDAwMjYsLjk5OTQ4LC45OTk0MywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyOSwxLjAwMDM4LDEuMDAwMzUsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzgsMS4wMDAwMSwxLjAwMDU3LC45OTk4OSwuOTk5NjcsLjk5OTY0LC45OTk2NywuOTk5NzcsLjk5OTk5LC45OTk3NywxLjAwMDM4LC45OTk3NywxLjAwMDAxLC45OTk3MywxLjAwMDY2LC45OTk2NywuOTk5NjcsMS4wMDA0MSwuOTk5OTgsLjk5OTk5LC45OTk3NywxLjAwMDIyLC45OTk2NywxLjAwMDAxLC45OTk3NywxLjAwMDI2LC45OTk2NCwxLjAwMDMxLDEuMDAwMDEsLjk5OTk5LC45OTk5OSwxLDEuMDAwMjMsMSwxLC45OTk5OSwxLjAwMDM1LDEuMDAwMDEsLjk5OTk5LC45OTk3MywuOTk5NzcsLjk5OTk5LDEuMDAwNTgsLjk5OTczLC45OTk3MywuOTk5NTUsLjk5OTUsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMzIsLjk5OTg5LDEuMDAwMzQsLjk5OTk5LDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LC45OTk3MywuNDU5OTgsLjk5OTczLDEuMDAwMjYsLjk5OTczLDEuMDAwMDEsLjk5OTk5LC45OTk4MiwuOTk5OTQsLjk5OTk2LDEsMS4wMDA0MiwxLjAwMDQ0LDEuMDAwMjksMS4wMDAyMywuOTk5NzMsLjk5OTczLDEuMDAwMjYsLjk5OTQ5LDEuMDAwMDIsLjk5OTczLDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3NSwxLjAwMDI2LDEuMDAwMjYsMS4wMDAzMiwuOTg2ODUsLjk5OTczLDEuMDAwMjYsMSwxLC45OTk2NiwxLjAwMDQ0LDEuMDAwMTYsMS4wMDAyMiwxLjAwMDE2LDEuMDAwMjIsMS4wMDAxNiwxLjAwMDIyLDEuMDAwMDEsLjk5OTczLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMSwxLDEsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAxMDYsLjk5OTk5LC45OTk5OCwuOTk5OTgsLjk5OTk5LC45OTk5OCwxLjY2NDc1LDEsLjk5OTczLC45OTk3MywxLC45OTk3MywuOTk5NzEsLjk5OTc4LDEsMSwuOTk5OTEsLjk5OTg0LDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDA5OCwxLDEsMSwxLjAwMDQ5LDEsMSwuOTk5NzIsMSwxLjIwOTg1LDEuMzk3MTMsMS4wMDAwMywxLjAwMDMxLDEuMDAwMTUsMSwuOTk1NjEsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk5OTcyLC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sRmk9e2xpbmVIZWlnaHQ6MS4zNSxsaW5lR2FwOi4yfSxJaT1bLjc2MTE2LDEsMSwxLjAwMDYsMS4wMDA2LDEuMDAwMDYsLjk5OTczLC45OTk3MywuOTk5ODIsMS4wMDAwMSwxLjAwMDQzLC45OTk5OCwuOTk5OTgsLjk5OTU5LDEuMDAwMDMsMS4wMDA2LC45OTk5OCwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMSwxLjAwMDAzLDEuMDAwMDMsMS4wMDAwMywuOTk5NzMsLjk5OTg3LDEuMDAwMDEsMS4wMDAwMSwuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwxLjAwMDIyLC45OTk3NywxLjAwMDYsMSwxLjAwMDAxLC45OTk3MywuOTk5OTksLjk5OTc3LDEuMDAwMjIsMS4wMDAwMSwxLjAwMDIyLC45OTk3NywxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMDEsMS4wMDAxNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NDksLjk5OTczLC45OTk5OCwuOTk5NzMsLjk5OTczLDEsLjk5OTczLC45OTk3MywxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5MjQsLjk5OTI0LDEsLjk5OTI0LC45OTk5OSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTk4LDEsMS4wMDA2LC45OTk3MywxLC45OTk3NywxLDEsMSwxLjAwMDA1LDEuMDAwOSwxLjAwMDA1LDEuMDAwMDMsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDksLjk5OTczLC45OTk5OCwxLjAwMDI1LC45OTk2OCwuOTk5NzMsMS4wMDAwMywxLjAwMDI1LC42MDI5OSwxLjAwMDI0LDEuMDY0MDksMSwxLC45OTk5OCwxLC45OTk4LDEuMDAwNiwuOTk5OTgsMSwuOTk5MzYsLjk5OTczLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMjYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMSwuOTk5NzcsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTc3LC45OTk3NywxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAwMywxLjAwMDIyLC45OTk3NywuOTk5NzcsLjk5OTc3LC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5ODIsMSwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjA2NDA5LDEuMDAwMjYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEsLjk5OTczLDEsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsMS4wMDAwMSwuOTk5NzMsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEsLjk5OTc3LDEuMDI4OCwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsLjk5OTQ2LDEuMDAwMzQsMSwuOTk5MjQsMS4wMDAwMSwxLDEsLjk5OTczLC45OTkyNCwuOTk5NzMsLjk5OTI0LC45OTk3MywxLjA2MzExLC45OTk3MywxLjAwMDI0LC45OTk3MywuOTk5MjQsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsMS4wMDA0MSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44OTU0NywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwxLjAwMDAxLDEsMS4wMDA1NCwuOTk5NzcsMS4wMDA4NCwxLjAwMDA3LC45OTk3MywxLjAwMDEzLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsLjk5OTQ1LC45MTIyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwMSwuOTk5OTksLjk5OTc3LC45OTkzMywxLjAwMDIyLDEuMDAwNTQsMS4wMDAwMSwxLjAwMDY1LDEuMDAwMjYsMS4wMDAwMSwxLjAwMDEsMS4wMDAwMSwxLjAwMDUyLDEsMS4wMDA2LDEuMDAwMDEsLjk5OTQ1LC45OTg5NywuOTk5NjgsLjk5OTI0LDEuMDAwMzYsLjk5OTQ1LC45OTk0OSwxLDEuMDAwNiwuOTk4OTcsLjk5OTE4LC45OTk2OCwuOTk5MTEsLjk5OTI0LDEsLjk5OTYyLDEuMDE0ODcsMSwxLjAwMDUsLjk5OTczLDEuMDAwMTIsMS4wMDA0MywxLC45OTk5NSwuOTk5OTQsMS4wMDAzNiwuOTk5NDcsMS4wMDAxOSwxLjA
101wMDYzLDEuMDAwMjUsLjk5OTI0LDEuMDAwMzYsLjk5OTczLDEuMDAwMzYsMS4wMDAyNSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAyNywxLjAwMDEsMS4wMDA2OCwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwxLjAwMDA4LC45OTk1NywuOTk5NzIsLjk5OTQsLjk5OTU0LC45OTk3NSwxLjAwMDUxLDEuMDAwMDEsMS4wMDAxOSwxLjAwMDAxLDEuMDAwMSwuOTk5ODYsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMzgsLjk5OTU0LC45OTk1NCwuOTk5NCwxLjAwMDY2LC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDU0LDEuMDAwMDEsLjk5OTc3LDEuMDAwMjYsLjk5OTc1LDEuMDAwMSwxLjAwMDAxLC45OTk5MywuOTk5NSwuOTk5NTUsMS4wMDAxNiwuOTk5NzgsLjk5OTc0LDEuMDAwMTksMS4wMDAyMiwuOTk5NTUsMS4wMDA1MywuOTk5NzMsMS4wMDA4OSwxLjAwMDA1LC45OTk2NywxLjAwMDQ4LC45OTk3MywxLjAwMDAyLDEuMDAwMzQsLjk5OTczLC45OTk3MywuOTk5NjQsMS4wMDAwNiwxLjAwMDY2LC45OTk0NywuOTk5NzMsLjk4ODk0LC45OTk3MywxLC40NDg5OCwxLC45OTk0NiwxLDEuMDAwMzksMS4wMDA4MiwuOTk5OTEsLjk5OTkxLC45OTk4NSwxLjAwMDIyLDEuMDAwMjMsMS4wMDA2MSwxLjAwMDA2LC45OTk2NiwuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDE5LDEuMDAwOCwxLC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk4MywxLjAwMDQ0LC45OTk3MywuOTk5NjQsLjk4MzMyLDEsLjk5OTczLDEsMSwuOTk5NjIsLjk5ODk1LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMTYsLjk5OTc3LDEuMDAwMDEsMSwxLDEsLjk5OTczLDEsMSwuOTk5NTUsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTI0LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk3MywuOTk5NzMsLjk5OTcyLDEsMSwxLjAwMjY3LC45OTk5OSwuOTk5OTgsLjk5OTk4LDEsLjk5OTk4LDEuNjY0NzUsMSwuOTk5NzMsLjk5OTczLDEuMDAwMjMsLjk5OTczLDEuMDA0MjMsLjk5OTI1LC45OTk5OSwxLC45OTk5MSwuOTk5ODQsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDQ5LDEsMS4wMDI0NSwxLDEsMSwxLC45NjMyOSwxLDEuMjA5ODUsMS4zOTcxMywxLjAwMDAzLC44MjU0LDEuMDAwMTUsMSwxLjAwMDM1LDEuMDAwMjcsMS4wMDAzMSwxLjAwMDMxLDEuMDAwMDMsMS4wMDAzMSwxLjAwMDMxLC45OTk5OSwxLjAwMDAzLC45OTk5OSwuOTk5OTksMS40MTE0NCwxLjYsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQwNTc5LDEuNDA1NzksMS4zNjYyNSwuOTk5OTksMSwuOTk4NjEsLjk5ODYxLDEsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsMS4wMDAyNiwuOTUzMTcsLjk5OTk5LC45OTk5OSwuOTk5OTksLjk5OTk5LDEuNDA0ODMsMSwuOTk5NzcsMS4wMDA1NCwxLDEsLjk5OTUzLC45OTk2MiwxLjAwMDQyLC45OTk1LDEsMSwxLDEsMSwxLDEsMSwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxUaT17bGluZUhlaWdodDoxLjM1LGxpbmVHYXA6LjJ9LE9pPVsuNzYxMTYsMSwxLDEuMDAwNiwxLjAwMDYsMS4wMDAwNiwuOTk5NzMsLjk5OTczLC45OTk4MiwxLjAwMDAxLDEuMDAwNDMsLjk5OTk4LC45OTk5OCwuOTk5NTksMS4wMDAwMywxLjAwMDYsLjk5OTk4LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwNiwxLDEuMDAwMDMsMS4wMDAwMywxLjAwMDAzLC45OTk3MywuOTk5ODcsMS4wMDAwMSwxLjAwMDAxLC45OTk3NywuOTk5NzcsMS4wMDAwMSwxLjAwMDI2LDEuMDAwMjIsLjk5OTc3LDEuMDAwNiwxLDEuMDAwMDEsLjk5OTczLC45OTk5OSwuOTk5NzcsMS4wMDAyMiwxLjAwMDAxLDEuMDAwMjIsLjk5OTc3LDEuMDAwMDEsMS4wMDAyNiwuOTk5NzcsMS4wMDAwMSwxLjAwMDE2LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LC45OTk0OSwuOTk5NzMsLjk5OTk4LC45OTk3MywuOTk5NzMsMSwuOTk5NzMsLjk5OTczLDEuMDAwNiwuOTk5NzMsLjk5OTczLC45OTkyNCwuOTk5MjQsMSwuOTk5MjQsLjk5OTk5LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5OTgsMSwxLjAwMDYsLjk5OTczLDEsLjk5OTc3LDEsMSwxLDEuMDAwMDUsMS4wMDA5LDEuMDAwMDUsMS4wMDAwMywuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDAwOSwuOTk5NzMsLjk5OTk4LDEuMDAwMjUsLjk5OTY4LC45OTk3MywxLjAwMDAzLDEuMDAwMjUsLjYwMjk5LDEuMDAwMjQsMS4wNjQwOSwxLDEsLjk5OTk4LDEsLjk5OTgsMS4wMDA2LC45OTk5OCwxLC45OTkzNiwuOTk5NzMsMS4wMDAwMiwxLjAwMDAyLDEuMDAwMDIsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLC45OTk3NywxLjAwMDAxLDEuMDAwMDEsMS4wMDAwMSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwuOTk5NzcsLjk5OTc3LDEuMDAwMjIsMS4wMDAyMiwxLjAwMDIyLDEuMDAwMjIsMS4wMDAyMiwxLjAwMDAzLDEuMDAwMjIsLjk5OTc3LC45OTk3NywuOTk5NzcsLjk5OTc3LDEuMDAwMDEsMS4wMDAwMSwxLjAwMDI2LC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk4MiwxLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsLjk5OTczLDEuMDY0
101MDksMS4wMDAyNiwuOTk5NzMsLjk5OTczLC45OTk3MywuOTk5NzMsMSwuOTk5NzMsMSwxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywxLjAwMDAxLC45OTk3MywuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMSwuOTk5NzcsMS4wNDU5NiwuOTk5NzcsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLDEuMDAwMjIsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsMS4wMDA2LDEuMDAwNiwxLjAwMDYsLjk5OTI0LDEuMDAwNiwxLjAwMDYsMS4wMDAxOSwxLjAwMDM0LDEsLjk5OTI0LDEuMDAwMDEsMSwxLC45OTk3MywuOTk5MjQsLjk5OTczLC45OTkyNCwuOTk5NzMsMS4wMjU3MiwuOTk5NzMsMS4wMDAwNSwuOTk5NzMsLjk5OTI0LC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk5OSwuOTk5OCwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMS4wMDAyMiwuOTk5NzMsMSwxLjAwMDE2LC45OTk3NywuOTk5OTgsLjk5OTc3LC45OTk5OCwuOTk5NzcsLjk5OTk4LDEuMDAwMDEsMSwxLjAwMDAxLDEsMS4wMDAwMSwxLDEuMDAwMDEsMSwxLjAwMDI2LDEuMDAwNiwxLjAwMDI2LC44NDUzMywxLjAwMDI2LDEuMDAwNiwuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywuOTk5NzcsLjk5OTczLC45OTk3NywuOTk5NzMsLjk5OTc3LC45OTk3MywxLjAwMDE2LC45OTk3NywxLjAwMDAxLDEsMS4wMDAwMSwxLjAwMDI2LDEsMS4wMDAyNiwxLDEuMDAwMjYsMSwuOTk5MjQsLjk5OTczLDEuMDAwMDEsLjk5OTczLDEsLjk5OTgyLDEuMDAwMjIsMS4wMDAyNiwxLjAwMDAxLDEsMS4wMDAyNiwxLjAwMDYsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTk4LC45OTk5OCwuOTk5MjgsMSwuOTk5NzcsMS4wMDAxMywxLjAwMDU1LC45OTk0NywuOTk5NDUsLjk5OTQxLC45OTkyNCwxLjAwMDAxLDEuMDAwMDEsMS4wMDA0LC45MTYyMSwxLjAwMDAxLDEuMDAwMjYsLjk5OTc3LDEuMDAwMjIsMS4wMDA2LDEuMDAwMDEsMS4wMDAwNSwuOTk5OTksLjk5OTc3LDEuMDAwMTUsMS4wMDAyMiwuOTk5NzcsMS4wMDAwMSwuOTk5NzMsMS4wMDAyNiwxLjAwMDAxLDEuMDAwMTksMS4wMDAwMSwuOTk5NDYsMSwxLjAwMDYsMS4wMDAwMSwuOTk5NzgsMS4wMDA0NSwuOTk5NzMsLjk5OTI0LDEuMDAwMjMsLjk5OTc4LC45OTk2NiwxLDEuMDAwNjUsMS4wMDA0NSwxLjAwMDE5LC45OTk3MywuOTk5NzMsLjk5OTI0LDEsMSwuOTY0OTksMSwxLjAwMDU1LC45OTk3MywxLjAwMDA4LDEuMDAwMjcsMSwuOTk5NywuOTk5OTUsMS4wMDAyMywuOTk5MzMsMS4wMDAxOSwxLjAwMDE1LDEuMDAwMzEsLjk5OTI0LDEuMDAwMjMsLjk5OTczLDEuMDAwMjMsMS4wMDAzMSwxLjAwMDAxLC45OTkyOCwxLjAwMDI5LDEuMDAwOTIsMS4wMDAzNSwxLjAwMDAxLDEuMDAwNiwxLjAwMDYsMSwuOTk5ODgsLjk5OTc1LDEsMS4wMDA4MiwuOTk1NjEsLjk5OTYsMS4wMDAzNSwxLjAwMDAxLC45OTk2MiwxLjAwMDAxLDEuMDAwOTIsLjk5OTY0LDEuMDAwMDEsLjk5OTYzLC45OTk5OSwxLjAwMDM1LDEuMDAwMzUsMS4wMDA4MiwuOTk5NjIsLjk5OTk5LC45OTk3NywxLjAwMDIyLDEuMDAwMzUsMS4wMDAwMSwuOTk5NzcsMS4wMDAyNiwuOTk5NiwuOTk5NjcsMS4wMDAwMSwxLjAwMDM0LDEuMDAwNzQsMS4wMDA1NCwxLjAwMDUzLDEuMDAwNjMsLjk5OTcxLC45OTk2MiwxLjAwMDM1LC45OTk3NSwuOTk5NzcsLjk5OTczLDEuMDAwNDMsLjk5OTUzLDEuMDAwNywuOTk5MTUsLjk5OTczLDEuMDAwMDgsLjk5ODkyLDEuMDAwNzMsMS4wMDA3MywxLjAwMTE0LC45OTkxNSwxLjAwMDczLC45OTk1NSwuOTk5NzMsMS4wMDA5MiwuOTk5NzMsMSwuOTk5OTgsMSwxLjAwMDMsMSwxLjAwMDQzLDEuMDAwMDEsLjk5OTY5LDEuMDAwMywxLDEuMDAwMzUsMS4wMDAwMSwuOTk5NSwxLDEuMDAwOTIsLjk5OTczLC45OTk3MywuOTk5NzMsMS4wMDA3LC45OTk1LDEsLjk5OTI0LDEuMDAwNiwuOTk5MjQsLjk5OTcyLDEuMDAwNjIsLjk5OTczLDEuMDAxMTQsMS4wMDA3MywxLC45OTk1NSwxLDEsMS4wMDA0NywuOTk5NjgsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAxNiwuOTk5NzcsMS4wMDAwMSwxLDEsMSwuOTk5NzMsMSwxLC45OTk1NSwuOTk5MjQsLjk5OTI0LC45OTkyNCwuOTk5MjQsLjk5OTk4LC45OTk5OCwuOTk5OTgsLjk5OTczLC45OTk3MywuOTk5NzIsMSwxLDEuMDAyNjcsLjk5OTk5LC45OTk5OCwuOTk5OTgsMSwuOTk5OTgsMS42NjQ3NSwxLC45OTk3MywuOTk5NzMsMS4wMDAyMywuOTk5NzMsLjk5OTcxLC45OTkyNSwxLjAwMDIzLDEsLjk5OTkxLC45OTk4NCwxLjAwMDAyLDEuMDAwMDIsMS4wMDAwMiwxLjAwMDAyLDEsMSwxLDEsMSwxLDEsLjk2MzI5LDEsMS4yMDk4NSwxLjM5NzEzLDEuMDAwMDMsLjgyNTQsMS4wMDAxNSwxLDEuMDAwMzUsMS4wMDAyNywxLjAwMDMxLDEuMDAwMzEsLjk5OTE1LDEuMDAwMzEsMS4wMDAzMSwuOTk5OTksMS4wMDAwMywuOTk5OTksLjk5OTk5LDEuNDExNDQsMS42LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MTE0NCwxLjQxMTQ0LDEuNDExNDQsMS40MDU3OSwxLjQwNTc5LDEuMzY2MjUsLjk5OTk5LDEsLjk5ODYxLC45OTg2MSwxLDEuMDAwMjYsMS4wMDAyNiwxLjAwMDI2LDEuMDAwMjYsLjk1MzE3LC45OTk5OSwuOTk5OTksLjk5OTk5LC45OTk5OSwxLjQwNDgzLDEsLjk5OTc3LDEuMDAwNTQsMSwxLC45OTk1MywuOTk5NjIsMS4wMDA0MiwuOTk5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLERpPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxNaT1bMzY1LDAsMzMzLDI3OCwzMzMsNDc0LDU1Niw1NTYsODg5LDcyMiwyMzgsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMzMzLDMzMyw1ODQsNTg0LDU4NCw2MTEsOTc1LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDU1Niw3MjIsNjExLDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3L
101DY2Nyw2MTEsMzMzLDI3OCwzMzMsNTg0LDU1NiwzMzMsNTU2LDYxMSw1NTYsNjExLDU1NiwzMzMsNjExLDYxMSwyNzgsMjc4LDU1NiwyNzgsODg5LDYxMSw2MTEsNjExLDYxMSwzODksNTU2LDMzMyw2MTEsNTU2LDc3OCw1NTYsNTU2LDUwMCwzODksMjgwLDM4OSw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyODAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1NTYsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNzIyLDcyMiw3MjIsNzIyLDcyMiw3MjIsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNjExLDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDU0OSw2MTEsNjExLDYxMSw2MTEsNjExLDU1Niw2MTEsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDcxOSw3MjIsNjExLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3NzgsNjExLDcyMiw2MTEsNzIyLDYxMSwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsNzg1LDU1Niw1NTYsMjc4LDcyMiw1NTYsNTU2LDYxMSwyNzgsNjExLDI3OCw2MTEsMzg1LDYxMSw0NzksNjExLDI3OCw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MDgsNzIzLDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSwxZTMsOTQ0LDcyMiwzODksNzIyLDM4OSw3MjIsMzg5LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjExLDMzMyw2MTEsNDc5LDYxMSwzMzMsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsOTQ0LDc3OCw2NjcsNTU2LDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyNzgsNTU2LDcyMiw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1NTYsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsNDY1LDcyMiwzMzMsODUzLDkwNiw0NzQsODI1LDkyNyw4MzgsMjc4LDcyMiw3MjIsNjAxLDcxOSw2NjcsNjExLDcyMiw3NzgsMjc4LDcyMiw2NjcsODMzLDcyMiw2NDQsNzc4LDcyMiw2NjcsNjAwLDYxMSw2NjcsODIxLDY2Nyw4MDksODAyLDI3OCw2NjcsNjE1LDQ1MSw2MTEsMjc4LDU4Miw2MTUsNjEwLDU1Niw2MDYsNDc1LDQ2MCw2MTEsNTQxLDI3OCw1NTgsNTU2LDYxMiw1NTYsNDQ1LDYxMSw3NjYsNjE5LDUyMCw2ODQsNDQ2LDU4Miw3MTUsNTc2LDc1Myw4NDUsMjc4LDU4Miw2MTEsNTgyLDg0NSw2NjcsNjY5LDg4NSw1NjcsNzExLDY2NywyNzgsMjc2LDU1NiwxMDk0LDEwNjIsODc1LDYxMCw3MjIsNjIyLDcxOSw3MjIsNzE5LDcyMiw1NjcsNzEyLDY2Nyw5MDQsNjI2LDcxOSw3MTksNjEwLDcwMiw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjIyLDg1NCw2NjcsNzMwLDcwMywxMDA1LDEwMTksODcwLDk3OSw3MTksNzExLDEwMzEsNzE5LDU1Niw2MTgsNjE1LDQxNyw2MzUsNTU2LDcwOSw0OTcsNjE1LDYxNSw1MDAsNjM1LDc0MCw2MDQsNjExLDYwNCw2MTEsNTU2LDQ5MCw1NTYsODc1LDU1Niw2MTUsNTgxLDgzMyw4NDQsNzI5LDg1NCw2MTUsNTUyLDg1NCw1ODMsNTU2LDU1Niw2MTEsNDE3LDU1Miw1NTYsMjc4LDI4MSwyNzgsOTY5LDkwNiw2MTEsNTAwLDYxNSw1NTYsNjA0LDc3OCw2MTEsNDg3LDQ0Nyw5NDQsNzc4LDk0NCw3NzgsOTQ0LDc3OCw2NjcsNTU2LDMzMywzMzMsNTU2LDFlMywxZTMsNTUyLDI3OCwyNzgsMjc4LDI3OCw1MDAsNTAwLDUwMCw1NTYsNTU2LDM1MCwxZTMsMWUzLDI0MCw0NzksMzMzLDMzMyw2MDQsMzMzLDE2NywzOTYsNTU2LDU1NiwxMDk0LDU1Niw4ODUsNDg5LDExMTUsMWUzLDc2OCw2MDAsODM0LDgzNCw4MzQsODM0LDFlMyw1MDAsMWUzLDUwMCwxZTMsNTAwLDUwMCw0OTQsNjEyLDgyMyw3MTMsNTg0LDU0OSw3MTMsOTc5LDcyMiwyNzQsNTQ5LDU0OSw1ODMsNTQ5LDU0OSw2MDQsNTg0LDYwNCw2MDQsNzA4LDYyNSw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MjksNjA0LDYwNCwzNTQsMzU0LDFlMyw5OTAsOTkwLDk5MCw5OTAsNDk0LDYwNCw2MDQsNjA0LDYwNCwzNTQsMTAyMSwxMDUyLDkxNyw3NTAsNzUwLDUzMSw2NTYsNTk0LDUxMCw1MDAsNzUwLDc1MCw2MTEsNjExLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMjIyLDIyMiwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzXSxSaT1bLTEsLTEsLTEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTc0LDE3NSwxNzYsMTc3LDE3OCwxNzksMTgwLDE4MSwxODIsMTgzLDE4NCwxODUsMTg2LDE4NywxODgsMTg5LDE5MCwxOTEsMTkyLDE5MywxOTQsMTk1LDE5NiwxOTcsMTk4LDE5OSwyMDAsMjAxLDIwMiwyMDMsMjA0LDIwNSwyMDYsMjA3LDIwOCwyMDksMjEwLDIxMSwyMTIsMjEzLDIxNCwyMTUsMjE2LDIxNywyMTgsMjE5LDIyMCwyMjEsMjIyLDIyMywyMjQsMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDIzMiwyMzMsMjM0LDIzNSwyMzYsMjM3LDIzOCwyMzksMjQwLDI0MSwyNDIsMjQzLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDI1MCwyNTEsMjUyLDI1MywyNTQsMjU1LDI1NiwyNTcsMjU4LDI1OSwyNjAsMjYxLDI2MiwyNjMsMjY0LD
101I2NSwyNjYsMjY3LDI2OCwyNjksMjcwLDI3MSwyNzIsMjczLDI3NCwyNzUsMjc2LDI3NywyNzgsMjc5LDI4MCwyODEsMjgyLDI4MywyODQsMjg1LDI4NiwyODcsMjg4LDI4OSwyOTAsMjkxLDI5MiwyOTMsMjk0LDI5NSwyOTYsMjk3LDI5OCwyOTksMzAwLDMwMSwzMDIsMzAzLDMwNCwzMDUsMzA2LDMwNywzMDgsMzA5LDMxMCwzMTEsMzEyLDMxMywzMTQsMzE1LDMxNiwzMTcsMzE4LDMxOSwzMjAsMzIxLDMyMiwzMjMsMzI0LDMyNSwzMjYsMzI3LDMyOCwzMjksMzMwLDMzMSwzMzIsMzMzLDMzNCwzMzUsMzM2LDMzNywzMzgsMzM5LDM0MCwzNDEsMzQyLDM0MywzNDQsMzQ1LDM0NiwzNDcsMzQ4LDM0OSwzNTAsMzUxLDM1MiwzNTMsMzU0LDM1NSwzNTYsMzU3LDM1OCwzNTksMzYwLDM2MSwzNjIsMzYzLDM2NCwzNjUsMzY2LDM2NywzNjgsMzY5LDM3MCwzNzEsMzcyLDM3MywzNzQsMzc1LDM3NiwzNzcsMzc4LDM3OSwzODAsMzgxLDM4MiwzODMsNDAyLDUwNiw1MDcsNTA4LDUwOSw1MTAsNTExLDUzNiw1MzcsNTM4LDUzOSw3MTAsNzExLDcxMyw3MjgsNzI5LDczMCw3MzEsNzMyLDczMyw5MDAsOTAxLDkwMiw5MDMsOTA0LDkwNSw5MDYsOTA4LDkxMCw5MTEsOTEyLDkxMyw5MTQsOTE1LDkxNiw5MTcsOTE4LDkxOSw5MjAsOTIxLDkyMiw5MjMsOTI0LDkyNSw5MjYsOTI3LDkyOCw5MjksOTMxLDkzMiw5MzMsOTM0LDkzNSw5MzYsOTM3LDkzOCw5MzksOTQwLDk0MSw5NDIsOTQzLDk0NCw5NDUsOTQ2LDk0Nyw5NDgsOTQ5LDk1MCw5NTEsOTUyLDk1Myw5NTQsOTU1LDk1Niw5NTcsOTU4LDk1OSw5NjAsOTYxLDk2Miw5NjMsOTY0LDk2NSw5NjYsOTY3LDk2OCw5NjksOTcwLDk3MSw5NzIsOTczLDk3NCwxMDI0LDEwMjUsMTAyNiwxMDI3LDEwMjgsMTAyOSwxMDMwLDEwMzEsMTAzMiwxMDMzLDEwMzQsMTAzNSwxMDM2LDEwMzcsMTAzOCwxMDM5LDEwNDAsMTA0MSwxMDQyLDEwNDMsMTA0NCwxMDQ1LDEwNDYsMTA0NywxMDQ4LDEwNDksMTA1MCwxMDUxLDEwNTIsMTA1MywxMDU0LDEwNTUsMTA1NiwxMDU3LDEwNTgsMTA1OSwxMDYwLDEwNjEsMTA2MiwxMDYzLDEwNjQsMTA2NSwxMDY2LDEwNjcsMTA2OCwxMDY5LDEwNzAsMTA3MSwxMDcyLDEwNzMsMTA3NCwxMDc1LDEwNzYsMTA3NywxMDc4LDEwNzksMTA4MCwxMDgxLDEwODIsMTA4MywxMDg0LDEwODUsMTA4NiwxMDg3LDEwODgsMTA4OSwxMDkwLDEwOTEsMTA5MiwxMDkzLDEwOTQsMTA5NSwxMDk2LDEwOTcsMTA5OCwxMDk5LDExMDAsMTEwMSwxMTAyLDExMDMsMTEwNCwxMTA1LDExMDYsMTEwNywxMTA4LDExMDksMTExMCwxMTExLDExMTIsMTExMywxMTE0LDExMTUsMTExNiwxMTE3LDExMTgsMTExOSwxMTM4LDExMzksMTE2OCwxMTY5LDc4MDgsNzgwOSw3ODEwLDc4MTEsNzgxMiw3ODEzLDc5MjIsNzkyMyw4MjA4LDgyMDksODIxMSw4MjEyLDgyMTMsODIxNSw4MjE2LDgyMTcsODIxOCw4MjE5LDgyMjAsODIyMSw4MjIyLDgyMjQsODIyNSw4MjI2LDgyMzAsODI0MCw4MjQyLDgyNDMsODI0OSw4MjUwLDgyNTIsODI1NCw4MjYwLDgzMTksODM1NSw4MzU2LDgzNTksODM2NCw4NDUzLDg0NjcsODQ3MCw4NDgyLDg0ODYsODQ5NCw4NTM5LDg1NDAsODU0MSw4NTQyLDg1OTIsODU5Myw4NTk0LDg1OTUsODU5Niw4NTk3LDg2MTYsODcwNiw4NzEwLDg3MTksODcyMSw4NzIyLDg3MzAsODczNCw4NzM1LDg3NDUsODc0Nyw4Nzc2LDg4MDAsODgwMSw4ODA0LDg4MDUsODk2Miw4OTc2LDg5OTIsODk5Myw5NDcyLDk0NzQsOTQ4NCw5NDg4LDk0OTIsOTQ5Niw5NTAwLDk1MDgsOTUxNiw5NTI0LDk1MzIsOTU1Miw5NTUzLDk1NTQsOTU1NSw5NTU2LDk1NTcsOTU1OCw5NTU5LDk1NjAsOTU2MSw5NTYyLDk1NjMsOTU2NCw5NTY1LDk1NjYsOTU2Nyw5NTY4LDk1NjksOTU3MCw5NTcxLDk1NzIsOTU3Myw5NTc0LDk1NzUsOTU3Niw5NTc3LDk1NzgsOTU3OSw5NTgwLDk2MDAsOTYwNCw5NjA4LDk2MTIsOTYxNiw5NjE3LDk2MTgsOTYxOSw5NjMyLDk2MzMsOTY0Miw5NjQzLDk2NDQsOTY1MCw5NjU4LDk2NjAsOTY2OCw5Njc0LDk2NzUsOTY3OSw5Njg4LDk2ODksOTcwMiw5Nzg2LDk3ODcsOTc4OCw5NzkyLDk3OTQsOTgyNCw5ODI3LDk4MjksOTgzMCw5ODM0LDk4MzUsOTgzNiw2MTQ0MSw2MTQ0Miw2MTQ0NSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMV0sQmk9WzM2NSwwLDMzMywyNzgsMzMzLDQ3NCw1NTYsNTU2LDg4OSw3MjIsMjM4LDMzMywzMzMsMzg5LDU4NCwyNzgsMzMzLDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDMzMywzMzMsNTg0LDU4NCw1ODQsNjExLDk3NSw3MjIsNzIyLDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1NTYsNzIyLDYxMSw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDMzMywyNzgsMzMzLDU4NCw1NTYsMzMzLDU1Niw2MTEsNTU2LDYxMSw1NTYsMzMzLDYxMSw2MTEsMjc4LDI3OCw1NTYsMjc4LDg4OSw2MTEsNjExLDYxMSw2MTEsMzg5LDU1NiwzMzMsNjExLDU1Niw3NzgsNTU2LDU1Niw1MDAsMzg5LDI4MCwzODksNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjgwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTU2LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDcyMiw3MjIsNzIyLDcyMiw3MjIsNzIyLDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDYxMSw2MTEsNjExLDYxMSw2MTEsNjExLDYxMSw1NDksNjExLDYxMSw2MTEsNjExLDYxMSw1NTYsNjExLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw3NDAsNzIyLDYxMSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsNzc4LDYxMSw3MjIsNjExLDcyMiw2MTEsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDc4Miw1NTYsNTU2LDI3OCw3MjIsNTU2L
101DU1Niw2MTEsMjc4LDYxMSwyNzgsNjExLDM5Niw2MTEsNDc5LDYxMSwyNzgsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzA4LDcyMyw2MTEsNzc4LDYxMSw3NzgsNjExLDc3OCw2MTEsMWUzLDk0NCw3MjIsMzg5LDcyMiwzODksNzIyLDM4OSw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDYxMSwzMzMsNjExLDQ3OSw2MTEsMzMzLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDcyMiw2MTEsNzIyLDYxMSw3MjIsNjExLDk0NCw3NzgsNjY3LDU1Niw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjc4LDU1Niw3MjIsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTU2LDYxMSwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw3MjIsMzMzLDg1NCw5MDYsNDczLDg0NCw5MzAsODQ3LDI3OCw3MjIsNzIyLDYxMCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw3MjIsNjY3LDgzMyw3MjIsNjU3LDc3OCw3MTgsNjY3LDU5MCw2MTEsNjY3LDgyMiw2NjcsODI5LDc4MSwyNzgsNjY3LDYyMCw0NzksNjExLDI3OCw1OTEsNjIwLDYyMSw1NTYsNjEwLDQ3OSw0OTIsNjExLDU1OCwyNzgsNTY2LDU1Niw2MDMsNTU2LDQ1MCw2MTEsNzEyLDYwNSw1MzIsNjY0LDQwOSw1OTEsNzA0LDU3OCw3NzMsODM0LDI3OCw1OTEsNjExLDU5MSw4MzQsNjY3LDY2Nyw4ODYsNjE0LDcxOSw2NjcsMjc4LDI3OCw1NTYsMTA5NCwxMDQyLDg1NCw2MjIsNzE5LDY3Nyw3MTksNzIyLDcwOCw3MjIsNjE0LDcyMiw2NjcsOTI3LDY0Myw3MTksNzE5LDYxNSw2ODcsODMzLDcyMiw3NzgsNzE5LDY2Nyw3MjIsNjExLDY3Nyw3ODEsNjY3LDcyOSw3MDgsOTc5LDk4OSw4NTQsMWUzLDcwOCw3MTksMTA0Miw3MjksNTU2LDYxOSw2MDQsNTM0LDYxOCw1NTYsNzM2LDUxMCw2MTEsNjExLDUwNyw2MjIsNzQwLDYwNCw2MTEsNjExLDYxMSw1NTYsODg5LDU1Niw4ODUsNTU2LDY0Niw1ODMsODg5LDkzNSw3MDcsODU0LDU5NCw1NTIsODY1LDU4OSw1NTYsNTU2LDYxMSw0NjksNTYzLDU1NiwyNzgsMjc4LDI3OCw5NjksOTA2LDYxMSw1MDcsNjE5LDU1Niw2MTEsNzc4LDYxMSw1NzUsNDY3LDk0NCw3NzgsOTQ0LDc3OCw5NDQsNzc4LDY2Nyw1NTYsMzMzLDMzMyw1NTYsMWUzLDFlMyw1NTIsMjc4LDI3OCwyNzgsMjc4LDUwMCw1MDAsNTAwLDU1Niw1NTYsMzUwLDFlMywxZTMsMjQwLDQ3OSwzMzMsMzMzLDYwNCwzMzMsMTY3LDM5Niw1NTYsNTU2LDExMDQsNTU2LDg4NSw1MTYsMTE0NiwxZTMsNzY4LDYwMCw4MzQsODM0LDgzNCw4MzQsOTk5LDUwMCwxZTMsNTAwLDFlMyw1MDAsNTAwLDQ5NCw2MTIsODIzLDcxMyw1ODQsNTQ5LDcxMyw5NzksNzIyLDI3NCw1NDksNTQ5LDU4Myw1NDksNTQ5LDYwNCw1ODQsNjA0LDYwNCw3MDgsNjI1LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcyOSw2MDQsNjA0LDM1NCwzNTQsMWUzLDk5MCw5OTAsOTkwLDk5MCw0OTQsNjA0LDYwNCw2MDQsNjA0LDM1NCwxMDIxLDEwNTIsOTE3LDc1MCw3NTAsNTMxLDY1Niw1OTQsNTEwLDUwMCw3NTAsNzUwLDYxMSw2MTEsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywyMjIsMjIyLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzNdLE5pPVstMSwtMSwtMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCw5OSwxMDAsMTAxLDEwMiwxMDMsMTA0LDEwNSwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwxMTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDE2OSwxNzAsMTcxLDE3MiwxNzQsMTc1LDE3NiwxNzcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxODYsMTg3LDE4OCwxODksMTkwLDE5MSwxOTIsMTkzLDE5NCwxOTUsMTk2LDE5NywxOTgsMTk5LDIwMCwyMDEsMjAyLDIwMywyMDQsMjA1LDIwNiwyMDcsMjA4LDIwOSwyMTAsMjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwyMjUsMjI2LDIyNywyMjgsMjI5LDIzMCwyMzEsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMjM4LDIzOSwyNDAsMjQxLDI0MiwyNDMsMjQ0LDI0NSwyNDYsMjQ3LDI0OCwyNDksMjUwLDI1MSwyNTIsMjUzLDI1NCwyNTUsMjU2LDI1NywyNTgsMjU5LDI2MCwyNjEsMjYyLDI2MywyNjQsMjY1LDI2NiwyNjcsMjY4LDI2OSwyNzAsMjcxLDI3MiwyNzMsMjc0LDI3NSwyNzYsMjc3LDI3OCwyNzksMjgwLDI4MSwyODIsMjgzLDI4NCwyODUsMjg2LDI4NywyODgsMjg5LDI5MCwyOTEsMjkyLDI5MywyOTQsMjk1LDI5NiwyOTcsMjk4LDI5OSwzMDAsMzAxLDMwMiwzMDMsMzA0LDMwNSwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDMxNCwzMTUsMzE2LDMxNywzMTgsMzE5LDMyMCwzMjEsMzIyLDMyMywzMjQsMzI1LDMyNiwzMjcsMzI4LDMyOSwzMzAsMzMxLDMzMiwzMzMsMzM0LDMzNSwzMzYsMzM3LDMzOCwzMzksMzQwLDM0MSwzNDIsMzQzLDM0NCwzNDUsMzQ2LDM0NywzNDgsMzQ5LDM1MCwzNTEsMzUyLDM1MywzNTQsMzU1LDM1NiwzNTcsMzU4LDM1OSwzNjAsMzYxLDM2MiwzNjMsMzY0LDM2NSwzNjYsMzY3LDM2OCwzNjksMzcwLDM3MSwzNzIsMzczLDM3NCwzNzUsMzc2LDM3NywzNzgsMzc5LDM4MCwzODEsMzgyLDM4Myw0MDIsNTA2LDUwNyw1MDgsNTA5LDUxMCw1MTEsNTM2LDUzNyw1MzgsNTM5LDcxMCw3MTEsNzEzLDcyOCw3MjksNzMwLDczMSw3MzIsNzMzLDkwMCw5MDEsOTAyLDkwMyw5MDQsOTA1LDkwNiw5MDgsOTEwLDkxMSw5MTIsOTEzLDkxNCw5MTUsOTE2LDkxNyw5MTgsOTE5LDkyMCw5MjEsOTIyLDkyMyw5MjQsOTI1LDkyNiw5MjcsOTI4LDkyOSw5MzEsOTMyLDkzMyw5MzQsOTM1LDkzNiw5MzcsOTM4LDkzOSw5NDAsOTQxLDk0Miw5NDMsOTQ0LDk0NSw5NDYsOTQ3LDk0OCw5NDksOTUwLDk1MSw5NTIsOTUzLDk1NCw5NTUsOTU2LDk1Nyw5NTgsOTU5LDk2MCw5NjEsOTYyLDk2Myw5NjQsOTY1LDk2Niw5NjcsOTY4LDk2OSw5NzAsOTcxLDk3Miw5NzMsOTc0LDEwMjQsMTAyNSwxMDI2LDEwMjcsMTAyOCwxMDI5LDEwMzAsMTAzMSwxMDMyLDEwMzMsMTAzNCwxMDM1LDEwMzYsMTAzNywxMDM4LDEwMzksMTA0MCwxMDQxLDEwNDIsMTA0MywxMDQ0LDEwNDUsMTA0NiwxMDQ3LDEwNDgsMTA0OSwxMDUwLDEwNTEsMTA1MiwxMDUzLDEwNTQsMTA1NSwxMDU2LDEwNTcsMTA1OCwxMDU5LDEwNjAsMTA2MSwxMDYyLDEwNjMsMTA2NCwxMDY1LDEwNjYsMTA2NywxMDY4LDEwNjksMTA3MCwxMDcxLDEwNzIsMTA3MywxMDc0LDEwNzUsMTA3NiwxMDc3LDEwNzgsMTA3OSwxMDgwLDEwODEsMTA4MiwxMDgzLDEwODQsMTA4NSwxMDg2LDEwODcsMTA4OCwxMDg5LDEwOTAsMTA5MSwxMDkyLDEwOTMsMTA5NCwxMDk1LDEwOTYsMTA5NywxMDk4LDEwOTksMTEwMCwxMTAxLDExMDIsMTEwMywxMTA0LDExMDUsMTEwNiwxMTA3LDExMDgsMTEwOSwxMTEwLDExMTEsMTExMiwxMTEzLDExMTQsMTExNSwxMTE2LDExMTcsMTExOCwxMTE5LDExMzgsMTEzOSwxMTY4LDExNjksNzgwOCw3ODA5LDc4MTAsNzgxMSw3ODEyLDc4MTMsNz
101kyMiw3OTIzLDgyMDgsODIwOSw4MjExLDgyMTIsODIxMyw4MjE1LDgyMTYsODIxNyw4MjE4LDgyMTksODIyMCw4MjIxLDgyMjIsODIyNCw4MjI1LDgyMjYsODIzMCw4MjQwLDgyNDIsODI0Myw4MjQ5LDgyNTAsODI1Miw4MjU0LDgyNjAsODMxOSw4MzU1LDgzNTYsODM1OSw4MzY0LDg0NTMsODQ2Nyw4NDcwLDg0ODIsODQ4Niw4NDk0LDg1MzksODU0MCw4NTQxLDg1NDIsODU5Miw4NTkzLDg1OTQsODU5NSw4NTk2LDg1OTcsODYxNiw4NzA2LDg3MTAsODcxOSw4NzIxLDg3MjIsODczMCw4NzM0LDg3MzUsODc0NSw4NzQ3LDg3NzYsODgwMCw4ODAxLDg4MDQsODgwNSw4OTYyLDg5NzYsODk5Miw4OTkzLDk0NzIsOTQ3NCw5NDg0LDk0ODgsOTQ5Miw5NDk2LDk1MDAsOTUwOCw5NTE2LDk1MjQsOTUzMiw5NTUyLDk1NTMsOTU1NCw5NTU1LDk1NTYsOTU1Nyw5NTU4LDk1NTksOTU2MCw5NTYxLDk1NjIsOTU2Myw5NTY0LDk1NjUsOTU2Niw5NTY3LDk1NjgsOTU2OSw5NTcwLDk1NzEsOTU3Miw5NTczLDk1NzQsOTU3NSw5NTc2LDk1NzcsOTU3OCw5NTc5LDk1ODAsOTYwMCw5NjA0LDk2MDgsOTYxMiw5NjE2LDk2MTcsOTYxOCw5NjE5LDk2MzIsOTYzMyw5NjQyLDk2NDMsOTY0NCw5NjUwLDk2NTgsOTY2MCw5NjY4LDk2NzQsOTY3NSw5Njc5LDk2ODgsOTY4OSw5NzAyLDk3ODYsOTc4Nyw5Nzg4LDk3OTIsOTc5NCw5ODI0LDk4MjcsOTgyOSw5ODMwLDk4MzQsOTgzNSw5ODM2LDYxNDQxLDYxNDQyLDYxNDQ1LC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXSxQaT1bMzY1LDAsMzMzLDI3OCwyNzgsMzU1LDU1Niw1NTYsODg5LDY2NywxOTEsMzMzLDMzMywzODksNTg0LDI3OCwzMzMsMjc4LDI3OCw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCw1ODQsNTg0LDU4NCw1NTYsMTAxNSw2NjcsNjY3LDcyMiw3MjIsNjY3LDYxMSw3NzgsNzIyLDI3OCw1MDAsNjY3LDU1Niw4MzMsNzIyLDc3OCw2NjcsNzc4LDcyMiw2NjcsNjExLDcyMiw2NjcsOTQ0LDY2Nyw2NjcsNjExLDI3OCwyNzgsMjc4LDQ2OSw1NTYsMzMzLDU1Niw1NTYsNTAwLDU1Niw1NTYsMjc4LDU1Niw1NTYsMjIyLDIyMiw1MDAsMjIyLDgzMyw1NTYsNTU2LDU1Niw1NTYsMzMzLDUwMCwyNzgsNTU2LDUwMCw3MjIsNTAwLDUwMCw1MDAsMzM0LDI2MCwzMzQsNTg0LDMzMyw1NTYsNTU2LDU1Niw1NTYsMjYwLDU1NiwzMzMsNzM3LDM3MCw1NTYsNTg0LDczNyw1NTIsNDAwLDU0OSwzMzMsMzMzLDMzMyw1NzYsNTM3LDI3OCwzMzMsMzMzLDM2NSw1NTYsODM0LDgzNCw4MzQsNjExLDY2Nyw2NjcsNjY3LDY2Nyw2NjcsNjY3LDFlMyw3MjIsNjY3LDY2Nyw2NjcsNjY3LDI3OCwyNzgsMjc4LDI3OCw3MjIsNzIyLDc3OCw3NzgsNzc4LDc3OCw3NzgsNTg0LDc3OCw3MjIsNzIyLDcyMiw3MjIsNjY3LDY2Nyw2MTEsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsODg5LDUwMCw1NTYsNTU2LDU1Niw1NTYsMjc4LDI3OCwyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NDksNjExLDU1Niw1NTYsNTU2LDU1Niw1MDAsNTU2LDUwMCw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3MjIsNTAwLDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw2MjUsNzIyLDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3MjIsNTU2LDcyMiw1NTYsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjc4LDIyMiwyNzgsMjc4LDczMyw0NDQsNTAwLDIyMiw2NjcsNTAwLDUwMCw1NTYsMjIyLDU1NiwyMjIsNTU2LDI4MSw1NTYsNDAwLDU1NiwyMjIsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNjE1LDcyMyw1NTYsNzc4LDU1Niw3NzgsNTU2LDc3OCw1NTYsMWUzLDk0NCw3MjIsMzMzLDcyMiwzMzMsNzIyLDMzMyw2NjcsNTAwLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDYxMSwyNzgsNjExLDM1NCw2MTEsMjc4LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDk0NCw3MjIsNjY3LDUwMCw2NjcsNjExLDUwMCw2MTEsNTAwLDYxMSw1MDAsMjIyLDU1Niw2NjcsNTU2LDFlMyw4ODksNzc4LDYxMSw2NjcsNTAwLDYxMSwyNzgsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMyw2NjcsMjc4LDc4OSw4NDYsMzg5LDc5NCw4NjUsNzc1LDIyMiw2NjcsNjY3LDU3MCw2NzEsNjY3LDYxMSw3MjIsNzc4LDI3OCw2NjcsNjY3LDgzMyw3MjIsNjQ4LDc3OCw3MjUsNjY3LDYwMCw2MTEsNjY3LDgzNyw2NjcsODMxLDc2MSwyNzgsNjY3LDU3MCw0MzksNTU1LDIyMiw1NTAsNTcwLDU3MSw1MDAsNTU2LDQzOSw0NjMsNTU1LDU0MiwyMjIsNTAwLDQ5Miw1NDgsNTAwLDQ0Nyw1NTYsNjcwLDU3Myw0ODYsNjAzLDM3NCw1NTAsNjUyLDU0Niw3MjgsNzc5LDIyMiw1NTAsNTU2LDU1MCw3NzksNjY3LDY2Nyw4NDMsNTQ0LDcwOCw2NjcsMjc4LDI3OCw1MDAsMTA2Niw5ODIsODQ0LDU4OSw3MTUsNjM5LDcyNCw2NjcsNjUxLDY2Nyw1NDQsNzA0LDY2Nyw5MTcsNjE0LDcxNSw3MTUsNTg5LDY4Niw4MzMsNzIyLDc3OCw3MjUsNjY3LDcyMiw2MTEsNjM5LDc5NSw2NjcsNzI3LDY3Myw5MjAsOTIzLDgwNSw4ODYsNjUxLDY5NCwxMDIyLDY4Miw1NTYsNTYyLDUyMiw0OTMsNTUzLDU1Niw2ODgsNDY1LDU1Niw1NTYsNDcyLDU2NCw2ODYsNTUwLDU1Niw1NTYsNTU2LDUwMCw4MzMsNTAwLDgzNSw1MDAsNTcyLDUxOCw4MzAsODUxLDYyMSw3MzYsNTI2LDQ5Miw3NTIsNTM0LDU1Niw1NTYsNTU2LDM3OCw0OTYsNTAwLDIyMiwyMjIsMjIyLDkxMCw4MjgsNTU2LDQ3Miw1NjUsNTAwLDU1Niw3NzgsNTU2LDQ5MiwzMzksOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDgzLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDk5OCw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTg0LDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0sRWk9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU
1015LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLF9pPVszNjUsMCwzMzMsMjc4LDI3OCwzNTUsNTU2LDU1Niw4ODksNjY3LDE5MSwzMzMsMzMzLDM4OSw1ODQsMjc4LDMzMywyNzgsMjc4LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDU4NCw1ODQsNTg0LDU1NiwxMDE1LDY2Nyw2NjcsNzIyLDcyMiw2NjcsNjExLDc3OCw3MjIsMjc4LDUwMCw2NjcsNTU2LDgzMyw3MjIsNzc4LDY2Nyw3NzgsNzIyLDY2Nyw2MTEsNzIyLDY2Nyw5NDQsNjY3LDY2Nyw2MTEsMjc4LDI3OCwyNzgsNDY5LDU1NiwzMzMsNTU2LDU1Niw1MDAsNTU2LDU1NiwyNzgsNTU2LDU1NiwyMjIsMjIyLDUwMCwyMjIsODMzLDU1Niw1NTYsNTU2LDU1NiwzMzMsNTAwLDI3OCw1NTYsNTAwLDcyMiw1MDAsNTAwLDUwMCwzMzQsMjYwLDMzNCw1ODQsMzMzLDU1Niw1NTYsNTU2LDU1NiwyNjAsNTU2LDMzMyw3MzcsMzcwLDU1Niw1ODQsNzM3LDU1Miw0MDAsNTQ5LDMzMywzMzMsMzMzLDU3Niw1MzcsMjc4LDMzMywzMzMsMzY1LDU1Niw4MzQsODM0LDgzNCw2MTEsNjY3LDY2Nyw2NjcsNjY3LDY2Nyw2NjcsMWUzLDcyMiw2NjcsNjY3LDY2Nyw2NjcsMjc4LDI3OCwyNzgsMjc4LDcyMiw3MjIsNzc4LDc3OCw3NzgsNzc4LDc3OCw1ODQsNzc4LDcyMiw3MjIsNzIyLDcyMiw2NjcsNjY3LDYxMSw1NTYsNTU2LDU1Niw1NTYsNTU2LDU1Niw4ODksNTAwLDU1Niw1NTYsNTU2LDU1NiwyNzgsMjc4LDI3OCwyNzgsNTU2LDU1Niw1NTYsNTU2LDU1Niw1NTYsNTU2LDU0OSw2MTEsNTU2LDU1Niw1NTYsNTU2LDUwMCw1NTYsNTAwLDY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDcyMiw1MDAsNzIyLDUwMCw3MjIsNTAwLDcyMiw1MDAsNzIyLDYxNSw3MjIsNTU2L
101DY2Nyw1NTYsNjY3LDU1Niw2NjcsNTU2LDY2Nyw1NTYsNjY3LDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1Niw3NzgsNTU2LDcyMiw1NTYsNzIyLDU1NiwyNzgsMjc4LDI3OCwyNzgsMjc4LDI3OCwyNzgsMjIyLDI3OCwyNzgsNzM1LDQ0NCw1MDAsMjIyLDY2Nyw1MDAsNTAwLDU1NiwyMjIsNTU2LDIyMiw1NTYsMjkyLDU1NiwzMzQsNTU2LDIyMiw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw2MDQsNzIzLDU1Niw3NzgsNTU2LDc3OCw1NTYsNzc4LDU1NiwxZTMsOTQ0LDcyMiwzMzMsNzIyLDMzMyw3MjIsMzMzLDY2Nyw1MDAsNjY3LDUwMCw2NjcsNTAwLDY2Nyw1MDAsNjExLDI3OCw2MTEsMzc1LDYxMSwyNzgsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsNzIyLDU1Niw3MjIsNTU2LDcyMiw1NTYsOTQ0LDcyMiw2NjcsNTAwLDY2Nyw2MTEsNTAwLDYxMSw1MDAsNjExLDUwMCwyMjIsNTU2LDY2Nyw1NTYsMWUzLDg4OSw3NzgsNjExLDY2Nyw1MDAsNjExLDI3OCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDY2NywyNzgsNzg0LDgzOCwzODQsNzc0LDg1NSw3NTIsMjIyLDY2Nyw2NjcsNTUxLDY2OCw2NjcsNjExLDcyMiw3NzgsMjc4LDY2Nyw2NjgsODMzLDcyMiw2NTAsNzc4LDcyMiw2NjcsNjE4LDYxMSw2NjcsNzk4LDY2Nyw4MzUsNzQ4LDI3OCw2NjcsNTc4LDQ0Niw1NTYsMjIyLDU0Nyw1NzgsNTc1LDUwMCw1NTcsNDQ2LDQ0MSw1NTYsNTU2LDIyMiw1MDAsNTAwLDU3Niw1MDAsNDQ4LDU1Niw2OTAsNTY5LDQ4Miw2MTcsMzk1LDU0Nyw2NDgsNTI1LDcxMyw3ODEsMjIyLDU0Nyw1NTYsNTQ3LDc4MSw2NjcsNjY3LDg2NSw1NDIsNzE5LDY2NywyNzgsMjc4LDUwMCwxMDU3LDEwMTAsODU0LDU4Myw3MjIsNjM1LDcxOSw2NjcsNjU2LDY2Nyw1NDIsNjc3LDY2Nyw5MjMsNjA0LDcxOSw3MTksNTgzLDY1Niw4MzMsNzIyLDc3OCw3MTksNjY3LDcyMiw2MTEsNjM1LDc2MCw2NjcsNzQwLDY2Nyw5MTcsOTM4LDc5Miw4ODUsNjU2LDcxOSwxMDEwLDcyMiw1NTYsNTczLDUzMSwzNjUsNTgzLDU1Niw2NjksNDU4LDU1OSw1NTksNDM4LDU4Myw2ODgsNTUyLDU1Niw1NDIsNTU2LDUwMCw0NTgsNTAwLDgyMyw1MDAsNTczLDUyMSw4MDIsODIzLDYyNSw3MTksNTIxLDUxMCw3NTAsNTQyLDU1Niw1NTYsNTU2LDM2NSw1MTAsNTAwLDIyMiwyNzgsMjIyLDkwNiw4MTIsNTU2LDQzOCw1NTksNTAwLDU1Miw3NzgsNTU2LDQ4OSw0MTEsOTQ0LDcyMiw5NDQsNzIyLDk0NCw3MjIsNjY3LDUwMCwzMzMsMzMzLDU1NiwxZTMsMWUzLDU1MiwyMjIsMjIyLDIyMiwyMjIsMzMzLDMzMywzMzMsNTU2LDU1NiwzNTAsMWUzLDFlMywxODgsMzU0LDMzMywzMzMsNTAwLDMzMywxNjcsMzY1LDU1Niw1NTYsMTA5NCw1NTYsODg1LDMyMywxMDczLDFlMyw3NjgsNjAwLDgzNCw4MzQsODM0LDgzNCwxZTMsNTAwLDFlMyw1MDAsMWUzLDUwMCw1MDAsNDk0LDYxMiw4MjMsNzEzLDU4NCw1NDksNzEzLDk3OSw3MTksMjc0LDU0OSw1NDksNTgzLDU0OSw1NDksNjA0LDU4NCw2MDQsNjA0LDcwOCw2MjUsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzA4LDcwOCw3MDgsNzI5LDYwNCw2MDQsMzU0LDM1NCwxZTMsOTkwLDk5MCw5OTAsOTkwLDQ5NCw2MDQsNjA0LDYwNCw2MDQsMzU0LDEwMjEsMTA1Miw5MTcsNzUwLDc1MCw1MzEsNjU2LDU5NCw1MTAsNTAwLDc1MCw3NTAsNTAwLDUwMCwzMzMsMzMzLDMzMywzMzMsMzMzLDMzMywzMzMsMzMzLDIyMiwyMjIsMjk0LDI5NCwzMjQsMzI0LDMxNiwzMjgsMzk4LDI4NV0samk9Wy0xLC0xLC0xLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU
1015LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0LDg1LDg2LDg3LDg4LDg5LDkwLDkxLDkyLDkzLDk0LDk1LDk2LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDE2MSwxNjIsMTYzLDE2NCwxNjUsMTY2LDE2NywxNjgsMTY5LDE3MCwxNzEsMTcyLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwyNTYsMjU3LDI1OCwyNTksMjYwLDI2MSwyNjIsMjYzLDI2NCwyNjUsMjY2LDI2NywyNjgsMjY5LDI3MCwyNzEsMjcyLDI3MywyNzQsMjc1LDI3NiwyNzcsMjc4LDI3OSwyODAsMjgxLDI4MiwyODMsMjg0LDI4NSwyODYsMjg3LDI4OCwyODksMjkwLDI5MSwyOTIsMjkzLDI5NCwyOTUsMjk2LDI5NywyOTgsMjk5LDMwMCwzMDEsMzAyLDMwMywzMDQsMzA1LDMwNiwzMDcsMzA4LDMwOSwzMTAsMzExLDMxMiwzMTMsMzE0LDMxNSwzMTYsMzE3LDMxOCwzMTksMzIwLDMyMSwzMjIsMzIzLDMyNCwzMjUsMzI2LDMyNywzMjgsMzI5LDMzMCwzMzEsMzMyLDMzMywzMzQsMzM1LDMzNiwzMzcsMzM4LDMzOSwzNDAsMzQxLDM0MiwzNDMsMzQ0LDM0NSwzNDYsMzQ3LDM0OCwzNDksMzUwLDM1MSwzNTIsMzUzLDM1NCwzNTUsMzU2LDM1NywzNTgsMzU5LDM2MCwzNjEsMzYyLDM2MywzNjQsMzY1LDM2NiwzNjcsMzY4LDM2OSwzNzAsMzcxLDM3MiwzNzMsMzc0LDM3NSwzNzYsMzc3LDM3OCwzNzksMzgwLDM4MSwzODIsMzgzLDQwMiw1MDYsNTA3LDUwOCw1MDksNTEwLDUxMSw1MzYsNTM3LDUzOCw1MzksNzEwLDcxMSw3MTMsNzI4LDcyOSw3MzAsNzMxLDczMiw3MzMsOTAwLDkwMSw5MDIsOTAzLDkwNCw5MDUsOTA2LDkwOCw5MTAsOTExLDkxMiw5MTMsOTE0LDkxNSw5MTYsOTE3LDkxOCw5MTksOTIwLDkyMSw5MjIsOTIzLDkyNCw5MjUsOTI2LDkyNyw5MjgsOTI5LDkzMSw5MzIsOTMzLDkzNCw5MzUsOTM2LDkzNyw5MzgsOTM5LDk0MCw5NDEsOTQyLDk0Myw5NDQsOTQ1LDk0Niw5NDcsOTQ4LDk0OSw5NTAsOTUxLDk1Miw5NTMsOTU0LDk1NSw5NTYsOTU3LDk1OCw5NTksOTYwLDk2MSw5NjIsOTYzLDk2NCw5NjUsOTY2LDk2Nyw5NjgsOTY5LDk3MCw5NzEsOTcyLDk3Myw5NzQsMTAyNCwxMDI1LDEwMjYsMTAyNywxMDI4LDEwMjksMTAzMCwxMDMxLDEwMzIsMTAzMywxMDM0LDEwMzUsMTAzNiwxMDM3LDEwMzgsMTAzOSwxMDQwLDEwNDEsMTA0MiwxMDQzLDEwNDQsMTA0NSwxMDQ2LDEwNDcsMTA0OCwxMDQ5LDEwNTAsMTA1MSwxMDUyLDEwNTMsMTA1NCwxMDU1LDEwNTYsMTA1NywxMDU4LDEwNTksMTA2MCwxMDYxLDEwNjIsMTA2MywxMDY0LDEwNjUsMTA2NiwxMDY3LDEwNjgsMTA2OSwxMDcwLDEwNzEsMTA3MiwxMDczLDEwNzQsMTA3NSwxMDc2LDEwNzcsMTA3OCwxMDc5LDEwODAsMTA4MSwxMDgyLDEwODMsMTA4NCwxMDg1LDEwODYsMTA4NywxMDg4LDEwODksMTA5MCwxMDkxLDEwOTIsMTA5MywxMDk0LDEwOTUsMTA5NiwxMDk3LDEwOTgsMTA5OSwxMTAwLDExMDEsMTEwMiwxMTAzLDExMDQsMTEwNSwxMTA2LDExMDcsMTEwOCwxMTA5LDExMTAsMTExMSwxMTEyLDExMTMsMTExNCwxMTE1LDExMTYsMTExNywxMTE4LDExMTksMTEzOCwxMTM5LDExNjgsMTE2OSw3ODA4LDc4MDksNzgxMCw3ODExLDc4MTIsNzgxMyw3OTIyLDc5MjMsODIwOCw4MjA5LDgyMTEsODIxMiw4MjEzLDgyMTUsODIxNiw4MjE3LDgyMTgsODIxOSw4MjIwLDgyMjEsODIyMiw4MjI0LDgyMjUsODIyNiw4MjMwLDgyNDAsODI0Miw4MjQzLDgyNDksODI1MCw4MjUyLDgyNTQsODI2MCw4MzE5LDgzNTUsODM1Niw4MzU5LDgzNjQsODQ1Myw4NDY3LDg0NzAsODQ4Miw4NDg2LDg0OTQsODUzOSw4NTQwLDg1NDEsODU0Miw4NTkyLDg1OTMsODU5NCw4NTk1LDg1OTYsODU5Nyw4NjE2LDg3MDYsODcxMCw4NzE5LDg3MjEsODcyMiw4NzMwLDg3MzQsODczNSw4NzQ1LDg3NDcsODc3Niw4ODAwLDg4MDEsODgwNCw4ODA1LDg5NjIsODk3Niw4OTkyLDg5OTMsOTQ3Miw5NDc0LDk0ODQsOTQ4OCw5NDkyLDk0OTYsOTUwMCw5NTA4LDk1MTYsOTUyNCw5NTMyLDk1NTIsOTU1Myw5NTU0LDk1NTUsOTU1Niw5NTU3LDk1NTgsOTU1OSw5NTYwLDk1NjEsOTU2Miw5NTYzLDk1NjQsOTU2NSw5NTY2LDk1NjcsOTU2OCw5NTY5LDk1NzAsOTU3MSw5NTcyLDk1NzMsOTU3NCw5NTc1LDk1NzYsOTU3Nyw5NTc4LDk1NzksOTU4MCw5NjAwLDk2MDQsOTYwOCw5NjEyLDk2MTYsOTYxNyw5NjE4LDk2MTksOTYzMiw5NjMzLDk2NDIsOTY0Myw5NjQ0LDk2NTAsOTY1OCw5NjYwLDk2NjgsOTY3NCw5Njc1LDk2NzksOTY4OCw5Njg5LDk3MDIsOTc4Niw5Nzg3LDk3ODgsOTc5Miw5Nzk0LDk4MjQsOTgyNyw5ODI5LDk4MzAsOTgzNCw5ODM1LDk4MzYsNjE0NDEsNjE0NDIsNjE0NDUsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTEsLTFdLFhpPVsxLjM2ODk4LDEsMSwuNzI3MDYsLjgwNDc5LC44MzczNCwuOTg4OTQsLjk5NzkzLC45ODk3LC45Mzg4NCwuODYyMDksLjk0MjkyLC45NDI5MiwxLjE2NjYxLDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xOTEzNywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzI4NTEsLjc4OTY2LC45MDgzOCwuODM2MzcsLjgyMzkxLC45NjM3NiwuODAwNjEsLjg2Mjc1LC44NzY4LC45NTQwNywxLjAyNTgsLjczOTAxLC44NTAy
101MiwuODM2NTUsMS4wMTU2LC45NTU0NiwuOTIxNzksLjg3MTA3LC45MjE3OSwuODIxMTQsLjgwOTYsLjg5NzEzLC45NDQzOCwuOTUzNTMsLjk0MDgzLC45MTkwNSwuOTA0MDYsLjk0NDYsLjk0MjkyLDEuMTg3NzcsLjk0MjkyLDEuMDIwNTgsLjg5OTAzLC45MDA4OCwuOTQ5MzgsLjk3ODk4LC44MTA5MywuOTc1NzEsLjk0OTM4LDEuMDI0LC45NTc3LC45NTkzMywuOTg2MjEsMS4wNDc0LC45NzQ1NSwuOTg5ODEsLjk2NzIsLjk1OTMzLC45NDQ2LC45Nzg5OCwuOTc0MDcsLjk3NjQ2LC43ODAzNiwxLjEwMjA4LC45NTQ0MiwuOTUyOTgsLjk3NTc5LC45MzMyLC45NDAzOSwuOTM4LC44MDY4NywxLjAxMTQ5LC44MDY4NywxLjAyMDU4LC44MDQ3OSwuOTk3OTMsLjk5NzkzLC45OTc5MywuOTk3OTMsMS4wMTE0OSwxLjAwODcyLC45MDA4OCwuOTE4ODIsMS4wMjEzLC44MzYxLDEuMDIwNTgsLjYyMjk1LC41NDMyNCwuODkwMjIsMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk3NDU1LC45MzU4MiwuOTAwODgsMSwxLjA1Njg2LC44MzYxLC45OTY0MiwuOTk2NDIsLjk5NjQyLC43Mjg1MSwuOTA4MzgsLjkwODM4LC45MDgzOCwuOTA4MzgsLjkwODM4LC45MDgzOCwuODY4LC44MjM5MSwuODAwNjEsLjgwMDYxLC44MDA2MSwuODAwNjEsMS4wMjU4LDEuMDI1OCwxLjAyNTgsMS4wMjU4LC45NzQ4NCwuOTU1NDYsLjkyMTc5LC45MjE3OSwuOTIxNzksLjkyMTc5LC45MjE3OSwxLjAyMDU4LC45MjE3OSwuOTQ0MzgsLjk0NDM4LC45NDQzOCwuOTQ0MzgsLjkwNDA2LC44Njk1OCwuOTgyMjUsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTQ5MzgsLjkwMzEsLjgxMDkzLC45NDkzOCwuOTQ5MzgsLjk0OTM4LC45NDkzOCwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTg2MjEsLjkzOTY5LC45NTkzMywuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwuOTQ0NiwxLjA4NTk1LC45NDQ2LC45NTQ0MiwuOTU0NDIsLjk1NDQyLC45NTQ0MiwuOTQwMzksLjk3ODk4LC45NDAzOSwuOTA4MzgsLjk0OTM4LC45MDgzOCwuOTQ5MzgsLjkwODM4LC45NDkzOCwuODIzOTEsLjgxMDkzLC44MjM5MSwuODEwOTMsLjgyMzkxLC44MTA5MywuODIzOTEsLjgxMDkzLC45NjM3NiwuODQzMTMsLjk3NDg0LC45NzU3MSwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjgwMDYxLC45NDkzOCwuODAwNjEsLjk0OTM4LC44MDA2MSwuOTQ5MzgsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsLjg3NjgsLjk1NzcsMSwxLC45NTQwNywuOTU5MzMsLjk3MDY5LC45NTkzMywxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsMS4wMjU4LC45ODYyMSwxLjAyNTgsLjk4NjIxLDEuMDI1OCwuOTg2MjEsLjg4NywxLjAxNTkxLC43MzkwMSwxLjA0NzQsMSwxLC45NzQ1NSwuODM2NTUsLjk4OTgxLDEsMSwuODM2NTUsLjczOTc3LC44MzY1NSwuNzM5MDMsLjg0NjM4LDEuMDMzLC45NTU0NiwuOTU5MzMsMSwxLC45NTU0NiwuOTU5MzMsLjgyNzEsLjk1NDE3LC45NTkzMywuOTIxNzksLjk0NDYsLjkyMTc5LC45NDQ2LC45MjE3OSwuOTQ0NiwuOTM2LC45MTk2NCwuODIxMTQsLjk3NjQ2LDEsMSwuODIxMTQsLjk3NjQ2LC44MDk2LC43ODAzNiwuODA5NiwuNzgwMzYsMSwxLC44MDk2LC43ODAzNiwxLDEsLjg5NzEzLC43NzQ1MiwuODk3MTMsMS4xMDIwOCwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQ0MzgsLjk1NDQyLC45NDQzOCwuOTU0NDIsLjk0NDM4LC45NTQ0MiwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjkwNDA2LC45NDQ2LC45MzgsLjk0NDYsLjkzOCwuOTQ0NiwuOTM4LDEsLjk5NzkzLC45MDgzOCwuOTQ5MzgsLjg2OCwuOTAzMSwuOTIxNzksLjk0NDYsMSwxLC44OTcxMywxLjEwMjA4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDk4OSwuOTM1OCwuOTE5NDUsLjgzMTgxLC43NTI2MSwuODc5OTIsLjgyOTc2LC45NjAzNCwuODM2ODksLjk3MjY4LDEuMDA3OCwuOTA4MzgsLjgzNjM3LC44MDE5LC45MDE1NywuODAwNjEsLjk0NDYsLjk1NDA3LC45MjQzNiwxLjAyNTgsLjg1MDIyLC45NzE1MywxLjAxNTYsLjk1NTQ2LC44OTE5MiwuOTIxNzksLjkyMzYxLC44NzEwNywuOTYzMTgsLjg5NzEzLC45MzcwNCwuOTU2MzgsLjkxOTA1LC45MTcwOSwuOTI3OTYsMS4wMjU4LC45MzcwNCwuOTQ4MzYsMS4wMzczLC45NTkzMywxLjAwNzgsLjk1ODcxLC45NDgzNiwuOTYxNzQsLjkyNjAxLC45NDk4LC45ODYwNywuOTU3NzYsLjk1OTMzLDEuMDU0NTMsMS4wMDc4LC45ODI3NSwuOTMxNCwuOTU2MTcsLjkxNzAxLDEuMDU5OTMsLjk0NDYsLjc4MzY3LC45NTUzLDEsLjg2ODMyLDEuMDEyOCwuOTU4NzEsLjk5Mzk0LC44NzU0OCwuOTYzNjEsLjg2Nzc0LDEuMDA3OCwuOTU4NzEsLjk0NDYsLjk1ODcxLC44Njc3NCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NDA4MywuOTc1NzksLjk0MDgzLC45NzU3OSwuOTQwODMsLjk3NTc5LC45MDQwNiwuOTQwMzksLjk2Njk0LDEsLjg5OTAzLDEsMSwxLC45MzU4MiwuOTM1ODIsLjkzNTgyLDEsLjkwOCwuOTA4LC45MTgsLjk0MjE5LC45NDIxOSwuOTY1NDQsMSwxLjI4NSwxLDEsLjgxMDc5LC44MTA3OSwxLDEsLjc0ODU0LDEsMSwxLDEsLjk5NzkzLDEsMSwxLC42NSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMTcxNzMsMSwuODA1MzUsLjc2MTY5LDEuMDIwNTgsMS4wNzMyLDEuMDU0ODYsMSwxLDEuMzA2OTIsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNjE2MSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxxaT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0sSGk9WzEuMzY4OTgsMSwxLC42NjIyNywuODA3NzksLjgxNjI1LC45NzI3NiwuOTcyNzYsLjk3NzMzLC45MjIyMiwuODMyNjYsLjk0MjkyLC45NDI5MiwxLjE2MTQ4LDEuMDIwNTgsLjkzNTgyLC45NjY5NCwuOTM1ODIsMS4xNzMzNywuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjc4MDc2LC43ODA3NiwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzE1NDEsLjc2ODEzLC44NTU3NiwuODA1OTEsLjgwNzI5LC45NDI5OSwuNzc1MTIsLjgzNjU1LC44NjUyMywuOTIyMjIsLjk4NjIxLC43MTc0MywuODE2OTgsLjc5NzI2LC45ODU1OCwuOTIyMjIsLjkwNjM3LC44MzgwOSwuOTA2MzcsLjgwNzI5LC43NjQ2MywuODYyNzUsLjkwNjk5LC45MTYwNSwuOTE1NCwuODUzMDgsLjg1NDU4LC45MDUzMSwuOTQyOTIsMS4yMTI5NiwuOTQyOTIsMS4wMjA1OCwuODk5MDMsMS4xODYxNiwuOTk2MTMsLjkxNjc3LC43ODIxNiwuOTE2NzcsLjkwMDgzLC45ODc5NiwuOTEzNSwuOTIxNjgsLjk1MzgxLC45ODk4MSwuOTUyOTgsLjk1MzgxLC45MzQ1OSwuOTIxNjgsLjkxNTEzLC45MjAwNCwuOTE2NzcsLjk1MDc3LC43NDgsMS4wNDUwMiwuOTE2NzcsLjkyMDYxLC45NDIzNiwuODk1NDQsLjg5MzY0LC45LC44MDY4NywuODU3OCwuODA2ODcsMS4wMjA1OCwuODA3NzksLjk3Mjc2LC45NzI3NiwuOTcyNzYsLjk3Mjc2LC44NTc4LC45OTk3MywxLjE4NjE2LC45MTMzOSwxLjA4MDc0LC44Mjg5MSwxLjAyMDU4LC41NTUwOSwuNzE1MjYsLjg5MDIyLDEuMDg1OTUsMSwxLDEuMTg2MTYsMSwuOTY3MzYsLjkzNTgyLDEuMTg2MTYsMSwxLjA0ODY0LC44MjcxMSwuOTkwNDMsLjk5MDQzLC45OTA0MywuNzE1NDEsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg1NTc2LC44NTU3NiwuODU1NzYsLjg0NSwuODA3MjksLjc3NTEyLC43NzUxMiwuNzc1MTIsLjc3NTEyLC45ODYyMSwuOTg2MjEsLjk4NjIxLC45ODYyMSwuOTU5NjEsLjkyMjIyLC45MDYzNywuOTA2MzcsLjkwNjM3LC45MDYzNywuOTA2MzcsMS4wMjA1OCwuOTAyNTEsLjkwNjk5LC45MDY5OSwuOTA2OTksLjkwNjk5LC44NTQ1OCwuODM2NTksLjk0OTUxLC45OTYxMywuOTk2MTMsLjk5NjEzLC45OTYxMywuOTk2MTMsLjk5NjEzLC44NTgxMSwuNzgyMTYsLjkwMDgzLC45MDA4MywuOTAwODMsLjkwMDgzLC45NTM4MSwuOTUzODEsLjk1MzgxLC45NTM4MSwuOTEzNSwuOTIxNjgsLjkxNTEzLC45MTUxMywuOTE1MTMsLjkxNTEzLC45MTUxMywxLjA4NTk1LC45MTY3NywuOTE2NzcsLjkxNjc3LC45MTY3NywuOTE2NzcsLjg5MzY0LC45MjMzMiwuODkzNjQsLjg1NTc2LC45OTYxMywuODU1NzYsLjk5NjEzLC44NTU3NiwuOTk2MTMsLjgwNzI5LC43ODIxNiwuODA3MjksLjc4MjE2LC44MDcyOSwuNzgyMTYsLjgwNzI5LC43ODIxNiwuOTQyOTksLjc2NzgzLC45NTk2MSwuOTE2NzcsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC43NzUxMiwuOTAwODMsLjc3NTEyLC45MDA4MywuNzc1MTIsLjkwMDgzLC44NjUyMywuOTEzNSwuODY1MjMsLjkxMzUsLjg2NTIzLC45MTM1LDEsMSwuOTIyMjIsLjkyMTY4LC45MjIyMiwuOTIxNjgsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC45ODYyMSwuOTUzODEsLjk4NjIxLC45NTM4MSwuOTg2MjEsLjk1MzgxLC44NjAzNiwuOTcwOTYsLjcxNzQzLC45ODk4MSwxLDEsLjk1Mjk4LC43OTcyNiwuOTUzODEsMSwxLC43OTcyNiwuNjg5NCwuNzk3MjYsLjc0MzIxLC44MTY5MSwxLjAwMDYsLjkyMjIyLC45MjE2OCwxLDEsLjkyMjIyLC45MjE2OCwuNzk0NjQsLjkyMDk4LC45MjE2OCwuOTA2MzcsLjkxNTEzLC45MDYzNywuOTE1MTMsLjkwNjM3LC45MTUxMywuOTA5LC44NzUxNCwuODA3MjksLjk1MDc3LDEsMSwuODA3MjksLjk1MDc3LC43NjQ2MywuNzQ4LC43NjQ2MywuNzQ4LDEsMSwuNzY0NjMsLjc0OCwxLDEsLjg2Mjc1LC43MjY1MSwuODYyNzUsMS4wNDUwMiwuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTA2OTksLjkxNjc3LC45MDY5OSwuOTE2NzcsLjkwNjk5LC45MTY3NywuOTE1NCwuOTQyMzYsLjg1NDU4LC44OTM2NCwuODU0NTgsLjkwNTMxLC45LC45MDUzMSwuOSwuOTA1MzEsLjksMSwuOTcyNzYsLjg1NTc2LC45OTYxMywuODQ1LC44NTgxMSwuOTAyNTEsLjkxNjc3LDEsMSwuODYyNzUsMS4wNDUwMiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjE4NjE2LDEuMTg2MTYsMS4xODYxNiwxLjAwODk5LDEuMzA2MjgsLjg1NTc2LC44MDE3OCwuNjY4NjIsLjc5MjcsLjY5MzIzLC44ODEyNywuNzI0NTksLjg5NzExLC45NTM4MSwuODU1NzYsLjgwNTkxLC43ODA1LC45NDcyOSwuNzc1MTIsLjkwNTMxLC45MjIyMiwuOTA2MzcsLjk4NjIxLC44MTY5OCwuOTI2NTUsLjk4NTU4LC45MjIyMiwuODUzNTksLjkwNjM3LC45MDk3NiwuODM4MDksLjk0NTIzLC44NjI3NSwuODM1MDksLjkzMTU3LC44NTMwOCwuODMzOTIsLjkyMzQ2LC45ODYyMSwuODM1MDksLjkyODg2LC45MTMyNCwuOTIxNjgsLjk1MzgxLC45MDY0NiwuOTI4ODYsLjkwNTU3LC44Njg0NywuOTAyNzYsLjkxMzI0LC44Njg0MiwuOTIxNjgsLjk5NTMxLC45NTM4MSwuOTIyNCwuODU0MDgsLjkyNjk5LC44Njg0NywxLjAwNTEsLjkxNTEzLC44MDQ4NywuOTM0ODEsMSwuODgxNTksMS4wNTIxNCwuOTA2NDYsLjk3MzU1LC44MTUzOSwuODkzOTgsLjg1OTIzLC45NTM4MSwuOTA2NDYsLjkxNTEzLC45MDY0NiwuODU5MjMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTE1NCwuOTQyMzYsLjkxNTQsLjk0MjM2LC45MTU0LC45NDIzNiwuODU0NTgsLjg5MzY0LC45NjY5NCwxLC44OTkwMywxLDEsMSwuOTE3ODIsLjkxNzgyLC45MTc4MiwxLC44OTYsLjg5NiwuODk2LC45MzMyLC45MzMyLC45NTk3MywxLDEuMjYsMSwxLC44MDQ3OSwuODAxNzgsMSwxLC44NTYzMywxLDEsMSwxLC45NzI3NiwxLDEsMSwuNjk4LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4xNDU0MiwxLC43OTE5OSwuNzg2OTQsMS4wMjA1OCwxLjAzNDkzLDEuMDU0ODYsMSwxLDEuMjMwMjYsMS4wODU5NSwxLjA4NTk1LDEsMS4wODU5NSwxLjA4NTk1LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4yMDAwNiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxXaT17bGluZUhlaWdodDoxLjIsbGluZUdhcDouMn0semk9WzEuMzY4OTgsMSwxLC42NTUwNywuODQ5NDMsLjg1NjM5LC44ODQ2NSwuODg0NjUsLjg2OTM2LC44ODMwNywuODY5NDgsLjg1MjgzLC44NTI4MywxLjA2MzgzLDEuMDIwNTgsLjc1OTQ1LC45MjE5LC43NTk0NSwxLjE3MzM3LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44ODQ2NSwuNzU5NDUsLjc1OTQ1LDEuMDIwNTgsMS4wMjA1OCwxLjAyMDU4LC42OTA0NiwuNzA5MjYsLjg1MTU4LC43NzgxMiwuNzY4NTIsLjg5NTkxLC43MDQ2NiwuNzYxMjUsLjgwMDk0LC44NjgyMiwuODM4NjQsLjcyOCwuNzcyMTIsLjc5NDc1LC45MzYzNywuODc1MTQsLjg1ODgsLjc2MDEzLC44NTg4LC43MjQyMSwuNjk4NjYsLjc3NTk4LC44NTk5MSwuODA4MTEsLjg3ODMyLC43ODExMiwuNzc1MTIsLjg1NjIsMS4wMjIyLDEuMTg0MTcsMS4wMjIyLDEuMjcwMTQsLjg5OTAzLDEuMTUwMTIsLjkzODU5LC45NDM5OSwuODQ2LC45NDM5OSwuODE0NTMsMS4wMTg2LC45NDIxOSwuOTYwMTcsMS4wMzA3NSwxLjAyMTc1LC45MTIsMS4wMzA3NSwuOTY5OTgsLjk2MDE3LC45Mzg1OSwuOTQzOTksLjk0Mzk5LC45NTQ5MywuNzQ2LDEuMTI2NTgsLjk0NTc4LC45MSwuOTc5LC44ODIsLjg4MiwuODMsLjg1MDM0LC44MzUzNywuODUwMzQsMS4wMjA1OCwuNzA4NjksLjg4NDY1LC44ODQ2NSwuODg0NjUsLjg4NDY1LC44MzUzNywuOTAwODMsMS4xNTAxMiwuOTE2MSwuOTQ1NjUsLjczNTQxLDEuMDIwNTgsLjUzNjA5LC42OTM1MywuNzk1MTksMS4wODU5NSwxLDEsMS4xNTAxMiwxLC45MTk3NCwuNzU5NDUsMS4xNTAxMiwxLC45NDQ2LC43MzM2MSwuOTAwNSwuOTAwNSwuOTAwNSwuNjI4NjQsLjg1MTU4LC44NTE1OCwuODUxNTgsLjg1MTU4LC44NTE1OCwuODUxNTgsLjc3MywuNzY4NTIsLjcwNDY2LC43MDQ2NiwuNzA0NjYsLjcwNDY2LC44Mzg2NCwuODM4NjQsLjgzODY0LC44Mzg2NCwuOTA1NjEsLjg3NTE0LC44NTg4LC44NTg4LC44NTg4LC44NTg4LC44NTg4LDEuMDIwNTgsLjg1NzUxLC44NTk5MSwuODU5OTEsLjg1OTkxLC44NTk5MSwuNzc1MTIsLjc2MDEzLC44ODA3NSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuODA3NSwuODQ2LC44MTQ1MywuODE0NTMsLjgxNDUzLC44MTQ1MywuODI0MjQsLjgyNDI0LC44MjQyNCwuODI0MjQsLjkyNzgsLjk2MDE3LC45Mzg1OSwuOTM4NTksLjkzODU5LC45Mzg1OSwuOTM4NTksMS4wODU5NSwuODU2MiwuOTQ1NzgsLjk0NTc4LC45NDU3OCwuOTQ1NzgsLjg4MiwuOTQ1NzgsLjg4MiwuODUxNTgsLjkzODU5LC44NTE1OCwuOTM4NTksLjg1MTU4LC45Mzg1OSwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuNzY4NTIsLjg0NiwuODk1OTEsLjg1NDQsLjkwNTYxLC45NDM5OSwuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjcwNDY2LC44MTQ1MywuNzA0NjYsLjgxNDUzLC43MDQ2NiwuODE0NTMsLjgw
101MDk0LC45NDIxOSwuODAwOTQsLjk0MjE5LC44MDA5NCwuOTQyMTksMSwxLC44NjgyMiwuOTYwMTcsLjg2ODIyLC45NjAxNywuODM4NjQsLjgyNDI0LC44Mzg2NCwuODI0MjQsLjgzODY0LC44MjQyNCwuODM4NjQsMS4wMzA3NSwuODM4NjQsLjgyNDI0LC44MTQwMiwxLjAyNzM4LC43MjgsMS4wMjE3NSwxLDEsLjkxMiwuNzk0NzUsMS4wMzA3NSwxLDEsLjc5NDc1LC44MzkxMSwuNzk0NzUsLjY2MjY2LC44MDU1MywxLjA2Njc2LC44NzUxNCwuOTYwMTcsMSwxLC44NzUxNCwuOTYwMTcsLjg2ODY1LC44NzM5NiwuOTYwMTcsLjg1ODgsLjkzODU5LC44NTg4LC45Mzg1OSwuODU4OCwuOTM4NTksLjg2NywuODQ3NTksLjcyNDIxLC45NTQ5MywxLDEsLjcyNDIxLC45NTQ5MywuNjk4NjYsLjc0NiwuNjk4NjYsLjc0NiwxLDEsLjY5ODY2LC43NDYsMSwxLC43NzU5OCwuODg0MTcsLjc3NTk4LDEuMTI2NTgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg1OTkxLC45NDU3OCwuODU5OTEsLjk0NTc4LC44NTk5MSwuOTQ1NzgsLjg3ODMyLC45NzksLjc3NTEyLC44ODIsLjc3NTEyLC44NTYyLC44MywuODU2MiwuODMsLjg1NjIsLjgzLDEsLjg4NDY1LC44NTE1OCwuOTM4NTksLjc3MywuODA3NSwuODU3NTEsLjg1NjIsMSwxLC43NzU5OCwxLjEyNjU4LDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMTUwMTIsMS4xNTAxMiwxLjE1MzEzLDEuMTUwMTIsMS4xNTAxMiwxLjE1MDEyLDEuMDgxMDYsMS4wMzkwMSwuODUxNTgsLjc3MDI1LC42MjI2NCwuNzY0NiwuNjUzNTEsLjg2MDI2LC42OTQ2MSwuODk5NDcsMS4wMzA3NSwuODUxNTgsLjc3ODEyLC43NjQ0OSwuODg4MzYsLjcwNDY2LC44NTYyLC44NjgyMiwuODU4OCwuODM4NjQsLjc3MjEyLC44NTMwOCwuOTM2MzcsLjg3NTE0LC44MjM1MiwuODU4OCwuODU3MDEsLjc2MDEzLC44OTA1OCwuNzc1OTgsLjgxNTYsLjgyNTY1LC43ODExMiwuNzc4OTksLjg5Mzg2LC44Mzg2NCwuODE1NiwuOTQ4NiwuOTIzODgsLjk2MTg2LDEuMDMwNzUsLjkxMTIzLC45NDg2LC45MzI5OCwuODc4LC45Mzk0MiwuOTIzODgsLjg0NTk2LC45NjE4NiwuOTUxMTksMS4wMzA3NSwuOTIyLC44ODc4NywuOTU4MjksLjg4LC45MzU1OSwuOTM4NTksLjc4ODE1LC45Mzc1OCwxLC44OTIxNywxLjAzNzM3LC45MTEyMywuOTM5NjksLjc3NDg3LC44NTc2OSwuODY3OTksMS4wMzA3NSwuOTExMjMsLjkzODU5LC45MTEyMywuODY3OTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuODc4MzIsLjk3OSwuNzc1MTIsLjg4MiwuOTIxOSwxLC44OTkwMywxLDEsMSwuODczMjEsLjg3MzIxLC44NzMyMSwxLDEuMDI3LDEuMDI3LDEuMDI3LC44Njg0NywuODY4NDcsLjc5MTIxLDEsMS4xMjQsMSwxLC43MzU3MiwuNzM1NzIsMSwxLC44NTAzNCwxLDEsMSwxLC44ODQ2NSwxLDEsMSwuNjY5LDEsMS4zNjE0NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDgyOCwxLC43NDk0OCwuNzUxODcsMS4wMjA1OCwuOTgzOTEsMS4wMjExOSwxLDEsMS4wNjIzMywxLjA4NTk1LDEuMDg1OTUsMSwxLjA4NTk1LDEuMDg1OTUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA1MjMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLCRpPXtsaW5lSGVpZ2h0OjEuMixsaW5lR2FwOi4yfSxHaT1bMS4zNjg5OCwxLDEsLjc2MzA1LC44Mjc4NCwuOTQ5MzUsLjg5MzY0LC45MjI0MSwuODkwNzMsLjkwNzA2LC45ODQ3MiwuODUyODMsLjg1MjgzLDEuMDY2NCwxLjAyMDU4LC43NDUwNSwuOTIxOSwuNzQ1MDUsMS4yMzQ1NiwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIyNDEsLjc0NTA1LC43NDUwNSwxLjAyMDU4LDEuMDIwNTgsMS4wMjA1OCwuNzMwMDIsLjcyNjAxLC45MTc1NSwuODEyNiwuODAzMTQsLjkyMjIyLC43Mzc2NCwuNzk3MjYsLjgzMDUxLC45MDI4NCwuODYwMjMsLjc0LC44MTI2LC44NDg2OSwuOTY1MTgsLjkxMTE1LC44ODU4LC43OTc2MSwuODg1OCwuNzQ0OTgsLjczOTE0LC44MTM2MywuODk1OTEsLjgzNjU5LC44OTYzMywuODU2MDgsLjgxMTEsLjkwNTMxLDEuMDIyMiwxLjIyNzM2LDEuMDIyMiwxLjI3MDE0LC44OTkwMywuOTAwODgsLjg2NjY3LDEuMDIzMSwuODk2LDEuMDE0MTEsLjkwMDgzLDEuMDUwOTksMS4wMDUxMiwuOTk3OTMsMS4wNTMyNiwxLjA5Mzc3LC45MzgsMS4wNjIyNiwxLjAwMTE5LC45OTc5MywuOTg3MTQsMS4wMjMxLDEuMDEyMzEsLjk4MTk2LC43OTIsMS4xOTEzNywuOTkwNzQsLjk2MiwxLjAxOTE1LC45MjYsLjk0MiwuODU2LC44NTAzNCwuOTIwMDYsLjg1MDM0LDEuMDIwNTgsLjY5MDY3LC45MjI0MSwuOTIyNDEsLjkyMjQxLC45MjI0MSwuOTIwMDYsLjkzMzIsLjkwMDg4LC45MTg4MiwuOTM0ODQsLjc1MzM5LDEuMDIwNTgsLjU2ODY2LC41NDMyNCwuNzk1MTksMS4wODU5NSwxLDEsLjkwMDg4LDEsLjk1MzI1LC43NDUwNSwuOTAwODgsMSwuOTcxOTgsLjc1MzM5LC45MTAwOSwuOTEwMDksLjkxMDA5LC42NjQ2NiwuOTE3NTUsLjkxNzU1LC45MTc1NSwuOTE3NTUsLjkxNzU1LC45MTc1NSwuNzg4LC44MDMxNCwuNzM3NjQsLjczNzY0LC43Mzc2NCwuNzM3NjQsLjg2MDIzLC44NjAyMywuODYwMjMsLjg2MDIzLC45MjkxNSwuOTExMTUsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsLjg4NTgsMS4wMjA1OCwuODg1OCwuODk1OTEsLjg5NTkxLC44OTU5MSwuODk1OTEsLjgxMTEsLjc5NjExLC44OTcxMywuODY2NjcsLjg2NjY3LC44NjY2NywuODY2NjcsLjg2NjY3LC44NjY2NywuODY5MzYsLjg5NiwuOTAwODMsLjkwMDgzLC45MDA4MywuOTAwODMsLjg0MjI0LC44NDIyNCwuODQyMjQsLjg0MjI0LC45NzI3NiwuOTk3OTMsLjk4NzE0LC45ODcxNCwuOTg3MTQsLjk4NzE0LC45ODcxNCwxLjA4NTk1LC44OTg3NiwuOTkwNzQsLjk5MDc0LC45OTA3NCwuOTkwNzQsLjk0MiwxLjAyMzEsLjk0MiwuOTE3NTUsLjg2NjY3LC45MTc1NSwuODY2NjcsLjkxNzU1LC44NjY2NywuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuODAzMTQsLjg5NiwuOTIyMjIsLjkzMzcyLC45MjkxNSwxLjAxNDExLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuNzM3NjQsLjkwMDgzLC43Mzc2NCwuOTAwODMsLjczNzY0LC45MDA4MywuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwuODMwNTEsMS4wMDUxMiwxLDEsLjkwMjg0LC45OTc5MywuOTA5NzYsLjk5NzkzLC44NjAyMywuODQyMjQsLjg2MDIzLC44NDIyNCwuODYwMjMsLjg0MjI0LC44NjAyMywxLjA1MzI2LC44NjAyMywuODQyMjQsLjgyODczLDEuMDc0NjksLjc0LDEuMDkzNzcsMSwxLC45MzgsLjg0ODY5LDEuMDYyMjYsMSwxLC44NDg2OSwuODM3MDQsLjg0ODY5LC44MTQ0MSwuODU1ODgsMS4wODkyNywuOTExMTUsLjk5NzkzLDEsMSwuOTExMTUsLjk5NzkzLC45MTg4NywuOTA5OTEsLjk5NzkzLC44ODU4LC45ODcxNCwuODg1OCwuOTg3MTQsLjg4NTgsLjk4NzE0LC44OTQsLjkxNDM0LC43NDQ5OCwuOTgxOTYsMSwxLC43NDQ5OCwuOTgxOTYsLjczOTE0LC43OTIsLjczOTE0LC43OTIsMSwxLC43MzkxNCwuNzkyLDEsMSwuODEzNjMsLjkwNCwuODEzNjMsMS4xOTEzNywuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk1OTEsLjk5MDc0LC44OTU5MSwuOTkwNzQsLjg5NTkxLC45OTA3NCwuODk2MzMsMS4wMTkxNSwuODExMSwuOTQyLC44MTExLC45MDUzMSwuODU2LC45MDUzMSwuODU2LC45MDUzMSwuODU2LDEsLjkyMjQxLC45MTc1NSwuODY2NjcsLjc4OCwuODY5MzYsLjg4NTgsLjg5ODc2LDEsMSwuODEzNjMsMS4xOTEzNywuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAwODgsLjkwMDg4LC45MDA4OCwuOTAzODgsMS4wMzkwMSwuOTIxMzgsLjc4MTA1LC43MTU0LC44NjE2OSwuODA1MTMsLjk0MDA3LC44MjUyOCwuOTg2MTIsMS4wNjIyNiwuOTE3NTUsLjgxMjYsLjgxODg0LC45MjgxOSwuNzM3NjQsLjkwNTMxLC45MDI4NCwuODg1OCwuODYwMjMsLjgxMjYsLjkxMTcyLC45NjUxOCwuOTExMTUsLjgzMDg5LC44ODU4LC44Nzc5MSwuNzk3
101NjEsLjg5Mjk3LC44MTM2MywuODgxNTcsLjg5OTkyLC44NTYwOCwuODE5OTIsLjk0MzA3LC44NjAyMywuODgxNTcsLjk1MzA4LC45ODY5OSwuOTk3OTMsMS4wNjIyNiwuOTU4MTcsLjk1MzA4LC45NzM1OCwuOTI4LC45ODA4OCwuOTg2OTksLjkyNzYxLC45OTc5MywuOTYwMTcsMS4wNjIyNiwuOTg2LC45NDQsLjk1OTc4LC45MzgsLjk2NzA1LC45ODcxNCwuODA0NDIsLjk4OTcyLDEsLjg5NzYyLDEuMDQ1NTIsLjk1ODE3LC45OTAwNywuODcwNjQsLjkxODc5LC44ODg4OCwxLjA2MjI2LC45NTgxNywuOTg3MTQsLjk1ODE3LC44ODg4OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44OTYzMywxLjAxOTE1LC44MTExLC45NDIsLjkyMTksMSwuODk5MDMsMSwxLDEsLjkzMTczLC45MzE3MywuOTMxNzMsMSwxLjA2MzA0LDEuMDYzMDQsMS4wNjkwNCwuODk5MDMsLjg5OTAzLC44MDU0OSwxLDEuMTU2LDEsMSwuNzY1NzUsLjc2NTc1LDEsMSwuNzI0NTgsMSwxLDEsMSwuOTIyNDEsMSwxLDEsLjYxOSwxLDEuMzYxNDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDcyNTcsMSwuNzQ3MDUsLjcxMTE5LDEuMDIwNTgsMS4wMjQsMS4wMjExOSwxLDEsMS4xNTM2LDEuMDg
1011OTUsMS4wODU5NSwxLDEuMDg1OTUsMS4wODU5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDU2MzgsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sVmk9e2xpbmVIZWlnaHQ6MS4yLGxpbmVHYXA6LjJ9LEtpPVsxLjc2NzM4LDEsMSwuOTkyOTcsLjk4MjQsMS4wNDAxNiwxLjA2NDk3LDEuMDM0MjQsLjk3NTI5LDEuMTc2NDcsMS4yMzIwMywxLjEwODUsMS4xMDg1LDEuMTY5MzksMS4yMTA3LC45NzU0LDEuMjE0MDgsLjk3NTQsMS41OTU3OCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LDEuMDM0MjQsMS4wMzQyNCwxLjAzNDI0LC44MTM3OCwuODEzNzgsMS4yMTA3LDEuMjEwNywxLjIxMDcsLjcxNzAzLC45Nzg0NywuOTczNjMsLjg4Nzc2LC44NjQxLDEuMDIwOTYsLjc5Nzk1LC44NTEzMiwuOTE0LDEuMDYwODUsMS4xNDA2LC44MDA3LC44OTg1OCwuODM2OTMsMS4xNDg4OSwxLjA5Mzk4LC45NzQ4OSwuOTIwOTQsLjk3NDg5LC45MDM5OSwuODQwNDEsLjk1OTIzLDEuMDAxMzUsMSwxLjA2NDY3LC45ODI0MywuOTA5OTYsLjk5MzYxLDEuMTA4NSwxLjU2OTQyLDEuMTA4NSwxLjIxMDcsLjc0NjI3LC45NDI4MiwuOTY3NTIsMS4wMTUxOSwuODYzMDQsMS4wMTM1OSwuOTcyNzgsMS4xNTEwMywxLjAxMzU5LC45ODU2MSwxLjAyMjg1LDEuMDIyODUsMS4wMDUyNywxLjAyMjg1LDEuMDMwMiwuOTkwNDEsMS4wMDA4LDEuMDE1MTksMS4wMTM1OSwxLjAyMjU4LC43OTEwNCwxLjE2ODYyLC45OTA0MSwuOTc0NTQsMS4wMjUxMSwuOTkyOTgsLjk2NzUyLC45NTgwMSwuOTQ4NTYsMS4xNjU3OSwuOTQ4NTYsMS4yMTA3LC45ODI0LDEuMDM0MjQsMS4wMzQyNCwxLDEuMDM0MjQsMS4xNjU3OSwuODcyNywxLjM4NzEsMS4xODYyMiwxLjEwODE4LDEuMDQ0NzgsMS4yMTA3LDEuMTg2MjIsLjc1MTU1LC45NDk5NCwxLjI4ODI2LDEuMjE0MDgsMS4yMTQwOCwuOTEwNTYsMSwuOTE1NzIsLjk3NTQsLjY0NjYzLDEuMTgzMjgsMS4yNDg2NiwxLjA0NDc4LDEuMTQxNjksMS4xNTc0OSwxLjE3Mzg5LC43MTcwMywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTM1MDYsLjg2NDEsLjc5Nzk1LC43OTc5NSwuNzk3OTUsLjc5Nzk1LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjAyMDk2LDEuMDkzOTgsLjk3NDI2LC45NzQyNiwuOTc0MjYsLjk3NDI2LC45NzQyNiwxLjIxMDcsLjk3NDg5LDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkwOTk2LC45MjA5NCwxLjAyNzk4LC45Njc1MiwuOTY3NTIsLjk2NzUyLC45Njc1MiwuOTY3NTIsLjk2NzUyLC45MzEzNiwuODYzMDQsLjk3Mjc4LC45NzI3OCwuOTcyNzgsLjk3Mjc4LDEuMDIyODUsMS4wMjI4NSwxLjAyMjg1LDEuMDIyODUsLjk3MTIyLC45OTA0MSwxLDEsMSwxLDEsMS4yODgyNiwxLjAwMDgsLjk5MDQxLC45OTA0MSwuOTkwNDEsLjk5MDQxLC45Njc1MiwxLjAxNTE5LC45Njc1MiwuOTczNjMsLjk2NzUyLC45NzM2MywuOTY3NTIsLjk3MzYzLC45Njc1MiwuODY0MSwuODYzMDQsLjg2NDEsLjg2MzA0LC44NjQxLC44NjMwNCwuODY0MSwuODYzMDQsMS4wMjA5NiwxLjAzMDU3LDEuMDIwOTYsMS4wMzUxNywuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjc5Nzk1LC45NzI3OCwuNzk3OTUsLjk3Mjc4LC43OTc5NSwuOTcyNzgsLjkxNCwxLjAxMzU5LC45MTQsMS4wMTM1OSwuOTE0LDEuMDEzNTksMSwxLDEuMDYwODUsLjk4NTYxLDEuMDYwODUsMS4wMDg3OSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwxLjE0MDYsMS4wMjI4NSwuOTcxMzgsMS4wODY5MiwuODAwNywxLjAyMjg1LDEsMSwxLjAwNTI3LC44MzY5MywxLjAyMjg1LDEsMSwuODM2OTMsLjk0NTUsLjgzNjkzLC45MDQxOCwuODM2OTMsMS4xMzAwNSwxLjA5Mzk4LC45OTA0MSwxLDEsMS4wOTM5OCwuOTkwNDEsLjk2NjkyLDEuMDkyNTEsLjk5MDQxLC45NzQ4OSwxLjAwMDgsLjk3NDg5LDEuMDAwOCwuOTc0ODksMS4wMDA4LC45Mzk5NCwuOTc5MzEsLjkwMzk5LDEuMDIyNTgsMSwxLC45MDM5OSwxLjAyMjU4LC44NDA0MSwuNzkxMDQsLjg0MDQxLC43OTEwNCwuODQwNDEsLjc5MTA0LC44NDA0MSwuNzkxMDQsMSwxLC45NTkyMywxLjA3MDM0LC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDAxMzUsLjk5MDQxLDEuMDY0NjcsMS4wMjUxMSwuOTA5OTYsLjk2NzUyLC45MDk5NiwuOTkzNjEsLjk1ODAxLC45OTM2MSwuOTU4MDEsLjk5MzYxLC45NTgwMSwxLjA3NzMzLDEuMDM0MjQsLjk3MzYzLC45Njc1MiwuOTM1MDYsLjkzMTM2LC45NzQ4OSwxLjAwMDgsMSwxLC45NTkyMywxLjE2ODYyLDEuMTUxMDMsMS4xNTEwMywxLjAxMTczLDEuMDM5NTksLjc1OTUzLC44MTM3OCwuNzk5MTIsMS4xNTEwMywxLjIxOTk0LC45NTE2MSwuODc4MTUsMS4wMTE0OSwuODE1MjUsLjc2NzYsLjk4MTY3LDEuMDExMzQsMS4wMjU0NiwuODQwOTcsMS4wMzA4OSwxLjE4MTAyLC45NzM2MywuODg3NzYsLjg1MTM0LC45NzgyNiwuNzk3OTUsLjk5MzYxLDEuMDYwODUsLjk3NDg5LDEuMTQwNiwuODk4NTgsMS4wMzg4LDEuMTQ4ODksMS4wOTM5OCwuODYwMzksLjk3NDg5LDEuMDU5NSwuOTIwOTQsLjk0NzkzLC45NTkyMywuOTA5OTYsLjk5MzQ2LC45ODI0MywxLjAyMTEyLC45NTQ5MywxLjE0MDYsLjkwOTk2LDEuMDM1NzQsMS4wMjU5NywxLjAwMDgsMS4xODEwMiwxLjA2NjI4LDEuMDM1NzQsMS4wMTkyLDEuMDE5MzIsMS4wMDg4NiwuOTc1MzEsMS4wMTA2LDEuMDAwOCwxLjEzMTg5LDEuMTgxMDIsMS4wMjI3NywuOTg2ODMsMS4wMDE2LC45OTU2MSwxLjA3MjM3LDEuMDAwOCwuOTA0MzQsLjk5OTIxLC45MzgwMywuODk2NSwxLjIzMDg1LDEuMDY2MjgsMS4wNDk4MywuOTYyNjgsMS4wNDk5LC45ODQzOSwxLjE4MTAyLDEuMDY2MjgsMS4wMDA4LDEuMDY2MjgsLjk4NDM5LC43OTc5NSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjA5NDY2LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45NzI3OCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjAyMDY1LDEsMSwxLDEsMSwxLDEuMDY0NjcsMS4wMjUxMSwxLjA2NDY3LDEuMDI1MTEsMS4wNjQ2NywxLjAyNTExLC45MDk5NiwuOTY3NTIsMSwxLjIxNDA4LC44OTkwMywxLDEsLjc1MTU1LDEuMDQzOTQsMS4wNDM5NCwxLjA0Mzk0LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjczMDQ3LC43MzA0NywxLjIwNjQyLC45MTIxMSwxLjI1NjM1LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4xMjQ1NCwuOTM1MDMsMS4wMzQyNCwxLjE5Njg3LDEuMDM0MjQsMSwxLDEsLjc3MSwxLDEsMS4xNTc0OSwxLjE1NzQ5LDEuMTU3NDksMS4xMDk0OCwuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjE2ODk3LDEsLjk2MDg1LC45MDEzNywxLjIxMDcsMS4xODQxNiwxLjEzOTczLC42OTgyNSwuOTcxNiwyLjEwMzM5LDEuMjkwMDQsMS4yOTAwNCwxLjIxMTcyLDEuMjkwMDQsMS4yOTAwNCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuNDI2MDMsMSwuOTk4NjIsLjk5ODYyLDEsLjg3MDI1LC44NzAyNSwuODcwMjUsLjg3MDI1LDEuMTg4NzQsMS40MjYwMywxLDEuNDI2MDMsMS40MjYwMywuOTk4NjIsMSwxLDEsMSwxLDEuMjg4NiwxLjA0MzE1LDEuMTUyOTYsMS4zNDE2MywxLDEsMSwxLjA5MTkzLDEuMDkxOTMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDFdLEppPXtsaW5lSGVpZ2h0OjEuMzMwMDgsbGluZUdhcDowfSxZaT1bMS43NjczOCwxLDEsLjk4OTQ2LDEuMDM5NTksMS4wNDAxNiwxLjAyODA5LDEuMDM2LC45NzYzOSwxLjEwOTUzLDEuMjMyMDMsMS4xMTE0NCwxLjExMTQ0LDEuMTY5MzksMS4yMTIzNywuOTc1NCwxLjIxMjYxLC45NzU0LDEuNTk3NTQsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsMS4wMzYsLjgxMzc4LC44MTM3OCwxLjIxMjM3LDEuMjEyMzcsMS4yMTIzNywuNzM1NDEsLjk3ODQ3LC45NzM2MywuODk3MjMsLjg3ODk3LDEuMDQyNiwuNzk0MjksLjg1MjkyLC45MTE0OSwxLjA1ODE1LDEuMTQwNiwuNzk2MzEsLjkwMTI4LC44Mzg1MywxLjA0Mzk2LDEuMTA2MTUsLjk3NTUyLC45NDQzNiwuOTc1NTIsLjg4NjQxLC44MDUyNywuOTYwODMsMS4wMDEzNSwxLDEuMDY3NzcsLjk4MTcsLjkxMTQyLC45OTM2MSwxLjExMTQ0LDEuNTcyOTMsMS4xMTE0NCwxLjIxMjM3LC43NDYyNywxLjMxODE4LDEuMDY1ODUsLjk3MDQyLC44MzA1NSwuOTcwNDIsLjkzNTAzLDEuMTI2MSwuOTcwNDIsLjk3OTIyLDEuMTQyMzYsLjk0NTUyLDEuMDEwNTQsMS4xNDIzNiwxLjAyNDcxLC45NzkyMiwuOTQxNjUsLjk3MDQyLC45NzA0MiwxLjAyNzYsLjc4OTI5LDEuMTI2MSwuOTc5MjIsLjk1ODc0LDEuMDIxOTcsLjk4NTA3LC45Njc1MiwuOTcxNjgsLjk1MTA3LDEuMTY1NzksLjk1MTA3LDEuMjEyMzcsMS4wMzk1OSwxLjAzNiwxLjAzNiwxLDEuMDM2LDEuMTY1NzksLjg3MzU3LDEuMzE4MTgsMS4xODc1NCwxLjI2NzgxLDEuMDUzNTYsMS4yMTIzNywxLjE4NjIyLC43OTQ4NywuOTQ5OTQsMS4yOTAwNCwxLjI0MDQ3LDEuMjQwNDcsMS4zMTgxOCwxLC45MTQ4NCwuOTc1NCwxLjMxODE4LDEuMTM0OSwxLjI0ODY2LDEuMDUzNTYsMS4xMzkzNCwxLjE1NTc0LDEuMTczODksLjczNTQxLC45NzM2MywuOTczNjMsLjk3MzYzLC45NzM2MywuOTczNjMsLjk3MzYzLC45NDM4NSwuODc4OTcsLjc5NDI5LC43OTQyOSwuNzk0MjksLjc5NDI5LDEuMTQwNiwxLjE0MDYsMS4xNDA2LDEuMTQwNiwxLjA0MjYsMS4xMDYxNSwuOTc1NTIsLjk3NTUyLC45NzU1MiwuOTc1NTIsLjk3NTUyLDEuMjEyMzcsLjk3NTUyLDEuMDAxMzUsMS4wMDEzNSwxLjAwMTM1LDEuMDAxMzUsLjkxMTQyLC45NDQzNiwuOTg3MjEsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsMS4wNjU4NSwxLjA2NTg1LDEuMDY1ODUsLjk2NzA1LC44MzA1NSwuOTM1MDMsLjkzNTAzLC45MzUwMywuOTM1MDMsMS4xNDIzNiwxLjE0MjM2LDEuMTQyMzYsMS4xNDIzNiwuOTMxMjUsLjk3OTIyLC45NDE2NSwuOTQxNjUsLjk0MTY1LC45NDE2NSwuOTQxNjUsMS4yOTAwNCwuOTQxNjUsLjk3OTIyLC45NzkyMiwuOTc5MjIsLjk3OTIyLC45Njc1MiwuOTcwNDIsLjk2NzUyLC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC45NzM2MywxLjA2NTg1LC44Nzg5NywuODMwNTUsLjg3ODk3LC44MzA1NSwuODc4OTcsLjgzMDU1LC44Nzg5NywuODMwNTUsMS4wNDI2LDEuMDAzMywxLjA0MjYsLjk3MDQyLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuNzk0MjksLjkzNTAzLC43OTQyOSwuOTM1MDMsLjc5NDI5LC45MzUwMywuOTExNDksLjk3MDQyLC45MTE0OSwuOTcwNDIsLjkxMTQ5LC45NzA0MiwxLDEsMS4wNTgxNSwuOTc5MjIsMS4wNTgxNSwuOTc5MjIsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsMS4xNDA2LDEuMTQyMzYsLjk3NDQxLDEuMDQzMDIsLjc5NjMxLDEuMDE1ODIsMSwxLDEuMDEwNTQsLjgzODUzLDEuMTQyMzYsMSwxLC44Mzg1MywxLjA5MTI1LC44Mzg1MywuOTA0MTgsLjgzODUzLDEuMTk1MDgsMS4xMDYxNSwuOTc5MjIsMSwxLDEuMTA2MTUsLjk3OTIyLDEuMDEwMzQsMS4xMDQ2NiwuOTc5MjIsLjk3NTUyLC45NDE2NSwuOTc1NTIsLjk0MTY1LC45NzU1MiwuOTQxNjUsLjkxNjAyLC45MTk4MSwuODg2NDEsMS4wMjc2LDEsMSwuODg2NDEsMS4wMjc2LC44MDUyNywuNzg5MjksLjgwNTI3LC43ODkyOSwuODA1MjcsLjc4OTI5LC44MDUyNywuNzg5MjksMSwxLC45NjA4MywxLjA1NDAzLC45NTkyMywxLjE2ODYyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDAxMzUsLjk3OTIyLDEuMDY3NzcsMS4wMjE5NywuOTExNDIsLjk2NzUyLC45MTE0MiwuOTkzNjEsLjk3MTY4LC45OTM2MSwuOTcxNjgsLjk5MzYxLC45NzE2OCwxLjIzMTk5LDEuMDM2LC45NzM2MywxLjA2NTg1LC45NDM4NSwuOTY3MDUsLjk3NTUyLC45NDE2NSwxLDEsLjk2MDgzLDEuMTI2MSwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwxLjMxODE4LDEuMzE4MTgsMS4zMTgxOCwuOTUxNjEsMS4yNzEyNiwxLjAwODExLC44MzI4NCwuNzc3MDIsLjk5MTM3LC45NTI1MywxLjAzNDcsLjg2MTQyLDEuMDcyMDUsMS4xNDIzNiwuOTczNjMsLjg5NzIzLC44Njg2OSwxLjA5ODE4LC43OTQyOSwuOTkzNjEsMS4wNTgxNSwuOTc1NTIsMS4xNDA2LC45MDEyOCwxLjA2NjYyLDEuMDQzOTYsMS4xMDYxNSwuODQ5MTgsLjk3NTUyLDEuMDQ2OTQsLjk0NDM2LC45ODAxNSwuOTYwODMsLjkxMTQyLDEuMDAzNTYsLjk4MTcsMS4wMTk0NSwuOTg5OTksMS4xNDA2LC45MTE0MiwxLjA0OTYxLC45ODk4LDEuMDA2MzksMS4xNDIzNiwxLjA3NTE0LDEuMDQ5NjEsLjk5NjA3LDEuMDI4OTcsMS4wMDgsLjk4OTgsLjk1MTM0LDEuMDA2MzksMS4xMTEyMSwxLjE0MjM2LDEuMDA1MTgsLjk3OTgxLDEuMDIxODYsMSwxLjA4NTc4LC45NDE2NSwuOTkzMTQsLjk4Mzg3LC45MzAyOCwuOTMzNzcsMS4zNTEyNSwxLjA3NTE0LDEuMTA2ODcsLjkzNDkxLDEuMDQyMzIsMS4wMDM1MSwxLjE0MjM2LDEuMDc1MTQsLjk0MTY1LDEuMDc1MTQsMS4wMDM1MSwuNzk0MjksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wOTA5NywxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwuOTM1MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk2NjA5LDEsMSwxLDEsMSwxLDEuMDY3NzcsMS4wMjE5NywxLjA2Nzc3LDEuMDIxOTcsMS4wNjc3NywxLjAyMTk3LC45MTE0MiwuOTY3NTIsMSwxLjIxMjYxLC44OTkwMywxLDEsLjc1MTU1LDEuMDQ3NDUsMS4wNDc0NSwxLjA0NzQ1LDEuMDQzOTQsLjk4NjMzLC45ODYzMywuOTg2MzMsLjcyOTU5LC43Mjk1OSwxLjIwNTAyLC45MTQwNiwxLjI2NTE0LDEuMjIyLDEuMDI5NTYsMS4wMzM3MiwxLjAzMzcyLC45NjAzOSwxLjI0NjMzLDEsMS4wOTEyNSwuOTMzMjcsMS4wMzMzNiwxLjE2NTQxLDEuMDM2LDEsMSwxLC43NzEsMSwxLDEuMTU1NzQsMS4xNTU3
101NCwxLjE1NTc0LDEuMTU1NzQsLjg2MzY0LC45NDQzNCwuODYyNzksLjk0NDM0LC44NjIyNCwxLDEsMS4xNjc5OCwxLC45NjA4NSwuOTAwNjgsMS4yMTIzNywxLjE4NDE2LDEuMTM5MDQsLjY5ODI1LC45NzE2LDIuMTAzMzksMS4yOTAwNCwxLjI5MDA0LDEuMjEzMzksMS4yOTAwNCwxLjI5MDA0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xODc3NSwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTMyNjksMS4xMzI2OSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sWmk9e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LFFpPVsxLjc2NzM4LDEsMSwuOTg5NDYsMS4xNDc2MywxLjA1MzY1LDEuMDYyMzQsLjk2OTI3LC45MjU4NiwxLjE1MzczLDEuMTg0MTQsLjkxMzQ5LC45MTM0OSwxLjA3NDAzLDEuMTczMDgsLjc4MzgzLDEuMjAwODgsLjc4MzgzLDEuNDI1MzEsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC43ODM4MywuNzgzODMsMS4xNzMwOCwxLjE3MzA4LDEuMTczMDgsLjc3MzQ5LC45NDU2NSwuOTQ3MjksLjg1OTQ0LC44ODUwNiwuOTg1OCwuNzQ4MTcsLjgwMDE2LC44ODQ0OSwuOTgwMzksLjk1NzgyLC42OTIzOCwuODk4OTgsLjgzMjMxLC45ODE4MywxLjAzOTg5LC45NjkyNCwuODYyMzcsLjk2OTI0LC44MDU5NSwuNzQ1MjQsLjg2MDkxLC45NTQwMiwuOTQxNDMsLjk4NDQ4LC44ODU4LC44MzA4OSwuOTMyODUsMS4wOTQ5LDEuMzkwMTYsMS4wOTQ5LDEuNDU5OTQsLjc0NjI3LDEuMDQ4MzksLjk3NDU0LC45NzQ1NCwuODcyMDcsLjk3NDU0LC44NzUzMywxLjA2MTUxLC45NzQ1NCwxLjAwMTc2LDEuMTY0ODQsMS4wODEzMiwuOTgwNDcsMS4xNjQ4NCwxLjAyOTg5LDEuMDEwNTQsLjk2MjI1LC45NzQ1NCwuOTc0NTQsMS4wNjU5OCwuNzkwMDQsMS4xNjM0NCwxLjAwMzUxLC45NDYyOSwuOTk3MywuOTEwMTYsLjk2Nzc3LC45MDQzLC45MTA4MiwuOTI0ODEsLjkxMDgyLDEuMTczMDgsLjk1NzQ4LC45NjkyNywuOTY5MjcsMSwuOTY5MjcsLjkyNDgxLC44MDU5NywxLjA0ODM5LDEuMjMzOTMsMS4xNzgxLC45MjQ1LDEuMTczMDgsMS4yMDgwOCwuNjMyMTgsLjk0MjYxLDEuMjQ4MjIsMS4wOTk3MSwxLjA5OTcxLDEuMDQ4MzksMSwuODUyNzMsLjc4MDMyLDEuMDQ4MzksMS4wOTk3MSwxLjIyMzI2LC45MjQ1LDEuMDk4MzYsMS4xMzUyNSwxLjE1MjIyLC43MDQyNCwuOTQ3MjksLjk0NzI5LC45NDcyOSwuOTQ3MjksLjk0NzI5LC45NDcyOSwuODU0OTgsLjg4NTA2LC43NDgxNywuNzQ4MTcsLjc0ODE3LC43NDgxNywuOTU3ODIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk4NTgsMS4wMzk4OSwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsLjk2OTI0LDEuMTczMDgsLjk2OTI0LC45NTQwMiwuOTU0MDIsLjk1NDAyLC45NTQwMiwuODMwODksLjg2MjM3LC44ODQwOSwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTc0NTQsLjk3NDU0LC45NzQ1NCwuOTI5MTYsLjg3MjA3LC44NzUzMywuODc1MzMsLjg3NTMzLC44NzUzMywuOTMxNDYsLjkzMTQ2LC45MzE0NiwuOTMxNDYsLjkzODU0LDEuMDEwNTQsLjk2MjI1LC45NjIyNSwuOTYyMjUsLjk2MjI1LC45NjIyNSwxLjI0ODIyLC44NzYxLDEuMDAzNTEsMS4wMDM1MSwxLjAwMzUxLDEuMDAzNTEsLjk2Nzc3LC45NzQ1NCwuOTY3NzcsLjk0NzI5LC45NzQ1NCwuOTQ3MjksLjk3NDU0LC45NDcyOSwuOTc0NTQsLjg4NTA2LC44NzIwNywuODg1MDYsLjg3MjA3LC44ODUwNiwuODcyMDcsLjg4NTA2LC44NzIwNywuOTg1OCwuOTUzOTEsLjk4NTgsLjk3NDU0LC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuNzQ4MTcsLjg3NTMzLC43NDgxNywuODc1MzMsLjc0ODE3LC44NzUzMywuODg0NDksLjk3NDU0LC44ODQ0OSwuOTc0NTQsLjg4NDQ5LC45NzQ1NCwxLDEsLjk4MDM5LDEuMDAxNzYsLjk4MDM5LDEuMDAxNzYsLjk1NzgyLC45MzE0NiwuOTU3ODIsLjkzMTQ2LC45NTc4MiwuOTMxNDYsLjk1NzgyLDEuMTY0ODQsLjk1NzgyLC45MzE0NiwuODQ0MjEsMS4xMjc2MSwuNjkyMzgsMS4wODEzMiwxLDEsLjk4MDQ3LC44MzIzMSwxLjE2NDg0LDEsMSwuODQ3MjMsMS4wNDg2MSwuODQ3MjMsLjc4NzU1LC44MzIzMSwxLjIzNzM2LDEuMDM5ODksMS4wMTA1NCwxLDEsMS4wMzk4OSwxLjAxMDU0LC45ODU3LDEuMDM4NDksMS4wMTA1NCwuOTY5MjQsLjk2MjI1LC45NjkyNCwuOTYyMjUsLjk2OTI0LC45NjIyNSwuOTIzODMsLjkwMTcxLC44MDU5NSwxLjA2NTk4LDEsMSwuODA1OTUsMS4wNjU5OCwuNzQ1MjQsLjc5MDA0LC43NDUyNCwuNzkwMDQsLjc0NTI0LC43OTAwNCwuNzQ1MjQsLjc5MDA0LDEsMSwuODYwOTEsMS4wMjc1OSwuODU3NzEsMS4xNjM0NCwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTU0MDIsMS4wMDM1MSwuOTg0NDgsLjk5NzMsLjgzMDg5LC45Njc3NywuODMwODksLjkzMjg1LC45MDQzLC45MzI4NSwuOTA0MywuOTMyODUsLjkwNDMsMS4zMTg2OCwuOTY5MjcsLjk0NzI5LC45NzQ1NCwuODU0OTgsLjkyOTE2LC45NjkyNCwuODc2MSwxLDEsLjg2MDkxLDEuMTYzNDQsMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksMS4wNDgzOSwxLjA0ODM5LDEuMDQ4MzksLjgxOTY1LC44MTk2NSwuOTQ3MjksLjc4MDMyLC43MTAyMiwuOTA4ODMsLjg0MTcxLC45OTg3NywuNzc1OTYsMS4wNTczNCwxLjIsLjk0NzI5LC44NTk0NCwuODI3OTEsLjk2MDcsLjc0ODE3LC45MzI4NSwuOTgwMzksLjk2OTI0LC45NTc4MiwuODk4OTgsLjk4MzE2LC45ODE4MywxLjAzOTg5LC43ODYxNCwuOTY5MjQsLjk3NjQyLC44NjIzNywuODYwNzUsLjg2MDkxLC44MzA4OSwuOTAwODIsLjg4NTgsLjk3Mjk2LDEuMDEyODQsLjk1NzgyLC44MzA4OSwxLjA5NzYsMS4wNCwxLjAzMzQyLDEuMiwxLjA2NzUsMS4wOTc2LC45ODIwNSwxLjAzODA5LDEuMDUwOTcsMS4wNCwuOTUzNjQsMS4wMzM0MiwxLjA1NDAxLDEuMiwxLjAyMTQ4LDEuMDExOSwxLjA0NzI0LDEuMDEyNywxLjAyNzMyLC45NjIyNSwuODk2NSwuOTc3ODMsLjkzNTc0LC45NDgxOCwxLjMwNjc5LDEuMDY3NSwxLjExODI2LC45OTgyMSwxLjA1NTcsMS4wMzI2LDEuMiwxLjA2NzUsLjk2MjI1LDEuMDY3NSwxLjAzMjYsLjc0ODE3LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3NTQsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjg3NTMzLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLC45ODcwNSwxLDEsMSwxLDEsMSwuOTg0NDgsLjk5NzMsLjk4NDQ4LC45OTczLC45ODQ0OCwuOTk3MywuODMwODksLjk2Nzc3LDEsMS4yMDA4OCwuODk5MDMsMSwxLC43NTE1NSwuOTQ5NDUsLjk0OTQ1LC45NDk0NSwuOTQ5NDUsMS4xMjMxNywxLjEyMzE3LDEuMTIzMTcsLjY3NjAzLC42NzYwMywxLjE1NjIxLC43MzU4NCwxLjIxMTkxLDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3MDksLjk2OTI3LDEuMDE0NzMsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4wOTgzNiwxLjA5ODM2LDEuMDk4MzYsMS4wMTUyMiwuODYzMjEsLjk0NDM0LC44NjQ5LC45NDQzNCwuODYxODIsMSwxLDEuMDgzLDEsLjkxNTc4LC44NjQzOCwxLjE3MzA4LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY3OTEsMS4yNDgyMiwxLjI0ODIyLDEuMTczMDgsMS4yNDgyMiwxLjI0ODIyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS40MjYwMywxLC45OTg2MiwuOTk4NjIsMSwuODcwMjUsLjg3MDI1LC44NzAyNSwuODcwMjUsMS4xNzk4NCwxLjQyNjAzLDEsMS40MjYwMywxLjQyNjAzLC45OTg2MiwxLDEsMSwxLDEsMS4yODg2LDEuMDQzMTUsMS4xNTI5NiwxLjM0MTYzLDEsMSwxLDEuMTA3NDIsMS4xMDc0MiwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMV0sZW49e2xpbmVIZWlnaHQ6MS4zMzAwOCxsaW5lR2FwOjB9LHRuPVsxLjc2NzM4LDEsMSwuOTg1OTQsMS4wMjI4NSwxLjEwNDU0LDEuMDYyMzQsLjk2OTI3LC45MjAzNywxLjE5OTg1LDEuMjA0NiwuOTA2MTYsLjkwNjE2LDEuMDcxNTIsMS4xNzE0LC43ODAzMiwxLjIwMDg4LC43ODAzMiwxLjQwMjQ2LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuOTY5MjcsLjk2OTI3LC45NjkyNywuNzgwMzIsLjc4MDMyLDEuMTcxNCwxLjE3MTQsMS4xNzE0LC44MDU5NywuOTQwODQsLjk2NzA2LC44NTk0NCwuODU3MzQsLjk3MDkzLC43NTg0MiwuNzk5MzYsLjg4MTk4LC45ODMxLC45NTc4MiwuNzEzODcsLjg2OTY5LC44NDYzNiwxLjA3Nzk2LDEuMDM1ODQsLjk2OTI0LC44Mzk2OCwuOTY5MjQsLjgyODI2LC43OTY0OSwuODU3NzEsLjk1MTMyLC45MzExOSwuOTg5NjUsLjg4NDMzLC44Mjg3LC45MzM2NSwxLjA4NjEyLDEuMzYzOCwxLjA4NjEyLDEuNDU3ODYsLjc0NjI3LC44MDQ5OSwuOTE0ODQsMS4wNTcwNywuOTIzODMsMS4wNTg4MiwuOTQwMywxLjEyNjU0LDEuMDU4ODIsMS4wMTc1NiwxLjA5MDExLDEuMDkwMTEsLjk5NDE0LDEuMDkwMTEsMS4wMzQsMS4wMTc1NiwxLjA1MzU2LDEuMDU3MDcsMS4wNTg4MiwxLjA0Mzk5LC44NDg2MywxLjIxOTY4LDEuMDE3NTYsLjk1ODAxLDEuMDAwNjgsLjkxNzk3LC45Njc3NywuOTA0MywuOTAzNTEsLjkyMTA1LC45MDM1MSwxLjE3MTQsLjg1MzM3LC45NjkyNywuOTY5MjcsLjk5OTEyLC45NjkyNywuOTIxMDUsLjgwNTk3LDEuMjQzNCwxLjIwODA4LDEuMDU5MzcsLjkwOTU3LDEuMTcxNCwxLjIwODA4LC43NTE1NSwuOTQyNjEsMS4yNDY0NCwxLjA5OTcxLDEuMDk5NzEsLjg0NzUxLDEsLjg1MjczLC43ODAzMiwuNjE1ODQsMS4wNTQyNSwxLjE3OTE0LC45MDk1NywxLjA4NjY1LDEuMTE1OTMsMS4xNDE2OSwuNzMzODEsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjk2NzA2LC45NjcwNiwuOTY3MDYsLjg2MDM1LC44NTczNCwuNzU4NDIsLjc1ODQyLC43NTg0MiwuNzU4NDIsLjk1NzgyLC45NTc4MiwuOTU3ODIsLjk1NzgyLC45NzA5MywxLjAzNTg0LC45NjkyNCwuOTY5MjQsLjk2OTI0LC45NjkyNCwuOTY5MjQsMS4xNzE0LC45NjkyNCwuOTUxMzIsLjk1MTMyLC45NTEzMiwuOTUxMzIsLjgyODcsLjgzOTY4LC44OTA0OSwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTE0ODQsLjkxNDg0LC45MTQ4NCwuOTM1NzUsLjkyMzgzLC45NDAzLC45NDAzLC45NDAzLC45NDAzLC44NzE3LC44NzE3LC44NzE3LC44NzE3LDEuMDA1MjcsMS4wMTc1NiwxLjA1MzU2LDEuMDUzNTYsMS4wNTM1NiwxLjA1MzU2LDEuMDUzNTYsMS4yNDY0NCwuOTU5MjMsMS4wMTc1NiwxLjAxNzU2LDEuMDE3NTYsMS4wMTc1NiwuOTY3NzcsMS4wNTcwNywuOTY3NzcsLjk2NzA2LC45MTQ4NCwuOTY3MDYsLjkxNDg0LC45NjcwNiwuOTE0ODQsLjg1NzM0LC45MjM4MywuODU3MzQsLjkyMzgzLC44NTczNCwuOTIzODMsLjg1NzM0LC45MjM4MywuOTcwOTMsMS4wOTY5LC45NzA5MywxLjA1ODgyLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjc1ODQyLC45NDAzLC43NTg0MiwuOTQwMywuNzU4NDIsLjk0MDMsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsLjg4MTk4LDEuMDU4ODIsMSwxLC45ODMxLDEuMDE3NTYsLjk4MzEsMS4wMTc1NiwuOTU3ODIsLjg3MTcsLjk1NzgyLC44NzE3LC45NTc4MiwuODcxNywuOTU3ODIsMS4wOTAxMSwuOTU3ODIsLjg3MTcsLjg0Nzg0LDEuMTE1NTEsLjcxMzg3LDEuMDkwMTEsMSwxLC45OTQxNCwuODQ2MzYsMS4wOTAxMSwxLDEsLjg0NjM2LDEuMDUzNiwuODQ2MzYsLjk0Mjk4LC44NDYzNiwxLjIzMjk3LDEuMDM1ODQsMS4wMTc1NiwxLDEsMS4wMzU4NCwxLjAxNzU2LDEuMDAzMjMsMS4wMzQ0NCwxLjAxNzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45NjkyNCwxLjA1MzU2LC45MzA2NiwuOTgyOTMsLjgyODI2LDEuMDQzOTksMSwxLC44MjgyNiwxLjA0Mzk5LC43OTY0OSwuODQ4NjMsLjc5NjQ5LC44NDg2MywuNzk2NDksLjg0ODYzLC43OTY0OSwuODQ4NjMsMSwxLC44NTc3MSwxLjE3MzE4LC44NTc3MSwxLjIxOTY4LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45NTEzMiwxLjAxNzU2LC45ODk2NSwxLjAwMDY4LC44Mjg3LC45Njc3NywuODI4NywuOTMzNjUsLjkwNDMsLjkzMzY1LC45MDQzLC45MzM2NSwuOTA0MywxLjA4NTcxLC45NjkyNywuOTY3MDYsLjkxNDg0LC44NjAzNSwuOTM1NzUsLjk2OTI0LC45NTkyMywxLDEsLjg1NzcxLDEuMjE5NjgsMS4xMTQzNywxLjExNDM3LC45MzEwOSwuOTEyMDIsLjYwNDExLC44NDE2NCwuNTU1NzIsMS4wMTE3MywuOTczNjEsLjgxODE4LC44MTgxOCwuOTY2MzUsLjc4MDMyLC43MjcyNywuOTIzNjYsLjk4NjAxLDEuMDM0MDUsLjc3OTY4LDEuMDk3OTksMS4yLC45NjcwNiwuODU5NDQsLjg1NjM4LC45NjQ5MSwuNzU4NDIsLjkzMzY1LC45ODMxLC45NjkyNCwuOTU3ODIsLjg2OTY5LC45NDE1MiwxLjA3Nzk2LDEuMDM1ODQsLjc4NDM3LC45NjkyNCwuOTg3MTUsLjgzOTY4LC44MzQ5MSwuODU3NzEsLjgyODcsLjk0NDkyLC44ODQzMywuOTI4NywxLjAwOTgsLjk1NzgyLC44Mjg3LDEuMDYyNSwuOTgyNDgsMS4wMzQyNCwxLjIsMS4wMTA3MSwxLjA2MjUsLjk1MjQ2LDEuMDM4MDksMS4wNDkxMiwuOTgyNDgsMS4wMDIyMSwxLjAzNDI0LDEuMDU0NDMsMS4yLDEuMDQ3ODUsLjk5NjA5LDEuMDAxNjksMS4wNTE3NiwuOTkzNDYsMS4wNTM1NiwuOTA4NywxLjAzMDA0LC45NTU0MiwuOTMxMTcsMS4yMzM2MiwxLjAxMDcxLDEuMDc4MzEsMS4wMjUxMiwxLjA1MjA1LDEuMDM1MDIsMS4yLDEuMDEwNzEsMS4wNTM1NiwxLjAxMDcxLDEuMDM1MDIsLjc1ODQyLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEuMDM3MTksMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsLjk0MDMsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMS4wNDAyMSwxLDEsMSwxLDEsMSwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuOTg5NjUsMS4wMDA2OCwuODI4NywuOTY3NzcsMSwxLjIwMDg4LC44OTkwMywxLDEsLjc1MTU1LDEuMDMwNzcsMS4wMzA3NywxLjAzMDc3LDEuMDMwNzcsMS4xMzE5NiwxLjEzMTk2LDEuMTMxOTYsLjY3NDI4LC42NzQyOCwxLjE2MDM5LC43MzI5MSwxLjIwOTk2LDEuMjIxMzUsMS4wNjQ4MywuOTQ4NjgsLjk0ODY4LC45NTk5NiwxLjI0NjMzLDEsMS4wNzQ5NywuODc3OTYsLjk2OTI3LDEuMDE1MTgsLjk2OTI3LDEsMSwxLC43NzI5NSwxLDEsMS4xMDUzOSwxLjEwNTM5LDEuMTEzNTgsMS4wNjk2NywuODYyNzksLjk0NDM0LC44NjI3OSwuOTQ0MzQsLjg2MTgyLDEsMSwxLjA4MywxLC45MTU3OCwuODY1MDcsMS4xNzE0LDEuMTg0MTYsMS4xNDU4OSwuNjk4MjUsLjk3NjIyLDEuOTY5NywxLjI0ODIyLDEuMjQ4MjIsMS4xNzIzOCwxLjI0ODIyLDEuMjQ4MjIsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLjQyNjAzLDEsLjk5ODYyLC45OTg2MiwxLC44NzAyNSwuODcwMjUsLjg3MDI1LC44NzAyNSwxLjE4MDgzLDEuNDI2MDMsMSwxLjQyNjAzLDEuNDI2MDMsLjk5ODYyLDEsMSwxLDEsMSwxLjI4ODYsMS4wNDMxNSwxLjE1Mjk2LDEuMzQxNjMsMSwxLDEsMS4xMDkzOCwxLjEwOTM4LDEsMSwxLDEuMDU0MjUsMS4wOTk3MSwxLjA5OTcxLDEuMDk5NzEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxXSxhbj17bGluZUhlaWdodDoxLjMzMDA4LGxpbmVHYXA6MH0scm49Z2V0TG9va3VwVGFibGVGYWN0b3J5KGZ1bmN0aW9uKGUpe2VbIk15cmlhZFByby1SZWd1bGFyIl09ZVsiUGRmSlMtRmFsbGJhY2stUmVndWxhciJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyIixmYWN0b3JzOkdpLGJhc2VXaWR0aHM6X2ksYmFzZU1hcHBpbmc6amksbWV0cmljczpWaX07ZVsiTXlyaWFkUHJvLUJvbGQiXT1lWyJQZGZKUy1GYWxsYmFjay1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6WGksYmFzZVdpZHRoczpNaSxiYXNlTWFwcGluZzpSaSxtZXRyaWNzOnFpfTtlWyJNeXJpYWRQcm8tSXQiXT1lWyJNeXJpYWRQcm8tSXRhbGljIl09ZVsiUGRmSlMtRmFsbGJhY2stSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczp6aSxiYXNlV2lkdGhzOlBpLGJhc2VNYXBwaW5nOkVpLG1ldHJpY3M6JGl9O2VbIk15cmlhZFByby1Cb2xkSXQiXT1lWyJNeXJpYWRQcm8tQm9sZEl0YWxpYyJdPWVbIlBkZkpTLUZhbGxiYWNrLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsZmFjdG9yczpIaSxiYXNlV2lkdGhzOkJpLGJhc2VNYXBwaW5nOk5pLG1ldHJpY3M6V2l9O2UuQXJpYWxNVD1lLkFyaWFsPWVbIkFyaWFsLVJlZ3VsYXIiXT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsYmFzZVdpZHRoczpfaSxiYXNlTWFwcGluZzpqaX07ZVsiQXJpYWwtQm9sZE1UIl09ZVsiQXJpYWwtQm9sZCJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkIixiYXNlV2lkdGhzOk1pLGJhc2VNYXBwaW5nOlJpfTtlWyJBcmlhbC1JdGFsaWNNVCJdPWVbIkFyaWFsLUl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1JdGFsaWMiLGJhc2VXaWR0aHM6UGksYmFzZU1hcHBpbmc6RWl9O2VbIkFyaWFsLUJvbGRJdGFsaWNNVCJdPWVbIkFyaWFsLUJvbGRJdGFsaWMiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZEl0YWxpYyIsYmFzZVdpZHRoczpCaSxiYXNlTWFwcGluZzpOaX07ZVsiQ2FsaWJyaS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6U2ksYmFzZVdpZHRoczpfaSxiYXNlTWFwcGluZzpqaSxtZXRyaWNzOkFpfTtlWyJDYWxpYnJpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpwaSxiYXNlV2lkdGhzOk1pLGJhc2VNYXBwaW5nOlJpLG1ldHJpY3M6bWl9O2VbIkNhbGlicmktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczp3aSxiYXNlV2lkdGhzOlBpLGJhc2VNYXBwaW5nOkVpLG1ldHJpY3M6eGl9O2VbIkNhbGlicmktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOmJpLGJhc2VXaWR0aHM6QmksYmFzZU1hcHBpbmc6TmksbWV0cmljczp5aX07ZVsiU2Vnb2V1aS1SZWd1bGFyIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLVJlZ3VsYXIiLGZhY3RvcnM6dG4sYmFzZVdpZHRoczpfaSxiYXNlTWFwcGluZzpqaSxtZXRyaWNzOmFufTtlWyJTZWdvZXVpLUJvbGQiXT17bmFtZToiTGliZXJhdGlvblNhbnMtQm9sZCIsZmFjdG9yczpLaSxiYXNlV2lkdGhzOk1pLGJhc2VNYXBwaW5nOlJpLG1ldHJpY3M6Sml9O2VbIlNlZ29ldWktSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpRaSxiYXNlV2lkdGhzOlBpLGJhc2VNYXBwaW5nOkVpLG1ldHJpY3M6ZW59O2VbIlNlZ29ldWktQm9sZEl0YWxpYyJdPXtuYW1lOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljIixmYWN0b3JzOllpLGJhc2VXaWR0aHM6QmksYmFzZU1hcHBpbmc6TmksbWV0cmljczpaaX07ZVsiSGVsdmV0aWNhLVJlZ3VsYXIiXT1lLkhlbHZldGljYT17bmFtZToiTGliZXJhdGlvblNhbnMtUmVndWxhciIsZmFjdG9yczpPaSxiYXNlV2lkdGhzOl9pLGJhc2VNYXBwaW5nOmp
101pLG1ldHJpY3M6RGl9O2VbIkhlbHZldGljYS1Cb2xkIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGQiLGZhY3RvcnM6a2ksYmFzZVdpZHRoczpNaSxiYXNlTWFwcGluZzpSaSxtZXRyaWNzOkNpfTtlWyJIZWx2ZXRpY2EtSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUl0YWxpYyIsZmFjdG9yczpJaSxiYXNlV2lkdGhzOlBpLGJhc2VNYXBwaW5nOkVpLG1ldHJpY3M6VGl9O2VbIkhlbHZldGljYS1Cb2xkSXRhbGljIl09e25hbWU6IkxpYmVyYXRpb25TYW5zLUJvbGRJdGFsaWMiLGZhY3RvcnM6dmksYmFzZVdpZHRoczpCaSxiYXNlTWFwcGluZzpOaSxtZXRyaWNzOkZpfX0pO2Z1bmN0aW9uIGdldFhmYUZvbnROYW1lKGUpe2NvbnN0IHQ9bm9ybWFsaXplRm9udE5hbWUoZSk7cmV0dXJuIHJuKClbdF19ZnVuY3Rpb24gZ2V0WGZhRm9udERpY3QoZSl7Y29uc3QgdD1mdW5jdGlvbiBnZXRYZmFGb250V2lkdGhzKGUpe2NvbnN0IHQ9Z2V0WGZhRm9udE5hbWUoZSk7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YmFzZVdpZHRoczphLGJhc2VNYXBwaW5nOnIsZmFjdG9yczppfT10LG49aT9hLm1hcCgoZSx0KT0+ZSppW3RdKTphO2xldCBzLG89LTI7Y29uc3QgYz1bXTtmb3IoY29uc3RbZSx0XW9mIHIubWFwKChlLHQpPT5bZSx0XSkuc29ydCgoW2VdLFt0XSk9PmUtdCkpaWYoLTEhPT1lKWlmKGU9PT1vKzEpe3MucHVzaChuW3RdKTtvKz0xfWVsc2V7bz1lO3M9W25bdF1dO2MucHVzaChlLHMpfXJldHVybiBjfShlKSxhPW5ldyBEaWN0KG51bGwpO2Euc2V0KCJCYXNlRm9udCIsTmFtZS5nZXQoZSkpO2Euc2V0KCJUeXBlIixOYW1lLmdldCgiRm9udCIpKTthLnNldCgiU3VidHlwZSIsTmFtZS5nZXQoIkNJREZvbnRUeXBlMiIpKTthLnNldCgiRW5jb2RpbmciLE5hbWUuZ2V0KCJJZGVudGl0eS1IIikpO2Euc2V0KCJDSURUb0dJRE1hcCIsTmFtZS5nZXQoIklkZW50aXR5IikpO2Euc2V0KCJXIix0KTthLnNldCgiRmlyc3RDaGFyIix0WzBdKTthLnNldCgiTGFzdENoYXIiLHQuYXQoLTIpK3QuYXQoLTEpLmxlbmd0aC0xKTtjb25zdCByPW5ldyBEaWN0KG51bGwpO2Euc2V0KCJGb250RGVzY3JpcHRvciIscik7Y29uc3QgaT1uZXcgRGljdChudWxsKTtpLnNldCgiT3JkZXJpbmciLCJJZGVudGl0eSIpO2kuc2V0KCJSZWdpc3RyeSIsIkFkb2JlIik7aS5zZXQoIlN1cHBsZW1lbnQiLDApO2Euc2V0KCJDSURTeXN0ZW1JbmZvIixpKTtyZXR1cm4gYX1jbGFzcyBQb3N0U2NyaXB0UGFyc2Vye2NvbnN0cnVjdG9yKGUpe3RoaXMubGV4ZXI9ZTt0aGlzLm9wZXJhdG9ycz1bXTt0aGlzLnRva2VuPW51bGw7dGhpcy5wcmV2PW51bGx9bmV4dFRva2VuKCl7dGhpcy5wcmV2PXRoaXMudG9rZW47dGhpcy50b2tlbj10aGlzLmxleGVyLmdldFRva2VuKCl9YWNjZXB0KGUpe2lmKHRoaXMudG9rZW4udHlwZT09PWUpe3RoaXMubmV4dFRva2VuKCk7cmV0dXJuITB9cmV0dXJuITF9ZXhwZWN0KGUpe2lmKHRoaXMuYWNjZXB0KGUpKXJldHVybiEwO3Rocm93IG5ldyBGb3JtYXRFcnJvcihgVW5leHBlY3RlZCBzeW1ib2w6IGZvdW5kICR7dGhpcy50b2tlbi50eXBlfSBleHBlY3RlZCAke2V9LmApfXBhcnNlKCl7dGhpcy5uZXh0VG9rZW4oKTt0aGlzLmV4cGVjdChubi5MQlJBQ0UpO3RoaXMucGFyc2VCbG9jaygpO3RoaXMuZXhwZWN0KG5uLlJCUkFDRSk7cmV0dXJuIHRoaXMub3BlcmF0b3JzfXBhcnNlQmxvY2soKXtmb3IoOzspaWYodGhpcy5hY2NlcHQobm4uTlVNQkVSKSl0aGlzLm9wZXJhdG9ycy5wdXNoKHRoaXMucHJldi52YWx1ZSk7ZWxzZSBpZih0aGlzLmFjY2VwdChubi5PUEVSQVRPUikpdGhpcy5vcGVyYXRvcnMucHVzaCh0aGlzLnByZXYudmFsdWUpO2Vsc2V7aWYoIXRoaXMuYWNjZXB0KG5uLkxCUkFDRSkpcmV0dXJuO3RoaXMucGFyc2VDb25kaXRpb24oKX19cGFyc2VDb25kaXRpb24oKXtjb25zdCBlPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qobm4uUkJSQUNFKTtpZih0aGlzLmFjY2VwdChubi5JRikpe3RoaXMub3BlcmF0b3JzW2VdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1tlKzFdPSJqeiJ9ZWxzZXtpZighdGhpcy5hY2NlcHQobm4uTEJSQUNFKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBTIEZ1bmN0aW9uOiBlcnJvciBwYXJzaW5nIGNvbmRpdGlvbmFsLiIpO3tjb25zdCB0PXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9ycy5wdXNoKG51bGwsbnVsbCk7Y29uc3QgYT10aGlzLm9wZXJhdG9ycy5sZW5ndGg7dGhpcy5wYXJzZUJsb2NrKCk7dGhpcy5leHBlY3Qobm4uUkJSQUNFKTt0aGlzLmV4cGVjdChubi5JRkVMU0UpO3RoaXMub3BlcmF0b3JzW3RdPXRoaXMub3BlcmF0b3JzLmxlbmd0aDt0aGlzLm9wZXJhdG9yc1t0KzFdPSJqIjt0aGlzLm9wZXJhdG9yc1tlXT1hO3RoaXMub3BlcmF0b3JzW2UrMV09Imp6In19fX1jb25zdCBubj17TEJSQUNFOjAsUkJSQUNFOjEsTlVNQkVSOjIsT1BFUkFUT1I6MyxJRjo0LElGRUxTRTo1fTtjbGFzcyBQb3N0U2NyaXB0VG9rZW57c3RhdGljIGdldCBvcENhY2hlKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJvcENhY2hlIixPYmplY3QuY3JlYXRlKG51bGwpKX1jb25zdHJ1Y3RvcihlLHQpe3RoaXMudHlwZT1lO3RoaXMudmFsdWU9dH1zdGF0aWMgZ2V0T3BlcmF0b3IoZSl7cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5vcENhY2hlW2VdfHw9bmV3IFBvc3RTY3JpcHRUb2tlbihubi5PUEVSQVRPUixlKX1zdGF0aWMgZ2V0IExCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiTEJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKG5uLkxCUkFDRSwieyIpKX1zdGF0aWMgZ2V0IFJCUkFDRSgpe3JldHVybiBzaGFkb3codGhpcywiUkJSQUNFIixuZXcgUG9zdFNjcmlwdFRva2VuKG5uLlJCUkFDRSwifSIpKX1zdGF0aWMgZ2V0IElGKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJJRiIsbmV3IFBvc3RTY3JpcHRUb2tlbihubi5JRiwiSUYiKSl9c3RhdGljIGdldCBJRkVMU0UoKXtyZXR1cm4gc2hhZG93KHRoaXMsIklGRUxTRSIsbmV3IFBvc3RTY3JpcHRUb2tlbihubi5JRkVMU0UsIklGRUxTRSIpKX19Y2xhc3MgUG9zdFNjcmlwdExleGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuc3RyZWFtPWU7dGhpcy5uZXh0Q2hhcigpO3RoaXMuc3RyQnVmPVtdfW5leHRDaGFyKCl7cmV0dXJuIHRoaXMuY3VycmVudENoYXI9dGhpcy5zdHJlYW0uZ2V0Qnl0ZSgpfWdldFRva2VuKCl7bGV0IGU9ITEsdD10aGlzLmN1cnJlbnRDaGFyO2Zvcig7Oyl7aWYodDwwKXJldHVybi
101BzYTtpZihlKTEwIT09dCYmMTMhPT10fHwoZT0hMSk7ZWxzZSBpZigzNz09PXQpZT0hMDtlbHNlIGlmKCFpc1doaXRlU3BhY2UodCkpYnJlYWs7dD10aGlzLm5leHRDaGFyKCl9c3dpdGNoKDB8dCl7Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTM6Y2FzZSA1NDpjYXNlIDU1OmNhc2UgNTY6Y2FzZSA1NzpjYXNlIDQzOmNhc2UgNDU6Y2FzZSA0NjpyZXR1cm4gbmV3IFBvc3RTY3JpcHRUb2tlbihubi5OVU1CRVIsdGhpcy5nZXROdW1iZXIoKSk7Y2FzZSAxMjM6dGhpcy5uZXh0Q2hhcigpO3JldHVybiBQb3N0U2NyaXB0VG9rZW4uTEJSQUNFO2Nhc2UgMTI1OnRoaXMubmV4dENoYXIoKTtyZXR1cm4gUG9zdFNjcmlwdFRva2VuLlJCUkFDRX1jb25zdCBhPXRoaXMuc3RyQnVmO2EubGVuZ3RoPTA7YVswXT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO2Zvcig7KHQ9dGhpcy5uZXh0Q2hhcigpKT49MCYmKHQ+PTY1JiZ0PD05MHx8dD49OTcmJnQ8PTEyMik7KWEucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHQpKTtjb25zdCByPWEuam9pbigiIik7c3dpdGNoKHIudG9Mb3dlckNhc2UoKSl7Y2FzZSJpZiI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRjtjYXNlImlmZWxzZSI6cmV0dXJuIFBvc3RTY3JpcHRUb2tlbi5JRkVMU0U7ZGVmYXVsdDpyZXR1cm4gUG9zdFNjcmlwdFRva2VuLmdldE9wZXJhdG9yKHIpfX1nZXROdW1iZXIoKXtsZXQgZT10aGlzLmN1cnJlbnRDaGFyO2NvbnN0IHQ9dGhpcy5zdHJCdWY7dC5sZW5ndGg9MDt0WzBdPVN0cmluZy5mcm9tQ2hhckNvZGUoZSk7Zm9yKDsoZT10aGlzLm5leHRDaGFyKCkpPj0wJiYoZT49NDgmJmU8PTU3fHw0NT09PWV8fDQ2PT09ZSk7KXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTtjb25zdCBhPXBhcnNlRmxvYXQodC5qb2luKCIiKSk7aWYoaXNOYU4oYSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGZsb2F0aW5nIHBvaW50IG51bWJlcjogJHthfWApO3JldHVybiBhfX1jbGFzcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXt0aGlzLl9vbmx5UmVmcz0hMD09PWU/Lm9ubHlSZWZzO2lmKCF0aGlzLl9vbmx5UmVmcyl7dGhpcy5fbmFtZVJlZk1hcD1uZXcgTWFwO3RoaXMuX2ltYWdlTWFwPW5ldyBNYXB9dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0QnlOYW1lKGUpe3RoaXMuX29ubHlSZWZzJiZ1bnJlYWNoYWJsZSgiU2hvdWxkIG5vdCBjYWxsIGBnZXRCeU5hbWVgIG1ldGhvZC4iKTtjb25zdCB0PXRoaXMuX25hbWVSZWZNYXAuZ2V0KGUpO3JldHVybiB0P3RoaXMuZ2V0QnlSZWYodCk6dGhpcy5faW1hZ2VNYXAuZ2V0KGUpfHxudWxsfWdldEJ5UmVmKGUpe3JldHVybiB0aGlzLl9pbWFnZUNhY2hlLmdldChlKXx8bnVsbH1zZXQoZSx0LGEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHNldGAgY2FsbGVkLiIpfX1jbGFzcyBMb2NhbEltYWdlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZSx0PW51bGwsYSl7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcignTG9jYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxhKX19Y2xhc3MgTG9jYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtzZXQoZT1udWxsLHQ9bnVsbCxhKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJiF0KXRocm93IG5ldyBFcnJvcignTG9jYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgIm5hbWUiIGFuZC9vciAicmVmIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47bnVsbCE9PWUmJnRoaXMuX25hbWVSZWZNYXAuc2V0KGUsdCk7dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX1lbHNlIHRoaXMuX2ltYWdlTWFwLmhhcyhlKXx8dGhpcy5faW1hZ2VNYXAuc2V0KGUsYSl9fWNsYXNzIExvY2FsRnVuY3Rpb25DYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle2NvbnN0cnVjdG9yKGUpe3N1cGVyKHtvbmx5UmVmczohMH0pfXNldChlPW51bGwsdCxhKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoJ0xvY2FsRnVuY3Rpb25DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX19Y2xhc3MgTG9jYWxHU3RhdGVDYWNoZSBleHRlbmRzIEJhc2VMb2NhbENhY2hle3NldChlLHQ9bnVsbCxhKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCdMb2NhbEdTdGF0ZUNhY2hlLnNldCAtIGV4cGVjdGVkICJuYW1lIiBhcmd1bWVudC4nKTtpZih0KXtpZih0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KSlyZXR1cm47dGhpcy5fbmFtZVJlZk1hcC5zZXQoZSx0KTt0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfWVsc2UgdGhpcy5faW1hZ2VNYXAuaGFzKGUpfHx0aGlzLl9pbWFnZU1hcC5zZXQoZSxhKX19Y2xhc3MgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsYSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdMb2NhbFRpbGluZ1BhdHRlcm5DYWNoZS5zZXQgLSBleHBlY3RlZCAicmVmIiBhcmd1bWVudC4nKTt0aGlzLl9pbWFnZUNhY2hlLmhhcyh0KXx8dGhpcy5faW1hZ2VDYWNoZS5wdXQodCxhKX19Y2xhc3MgUmVnaW9uYWxJbWFnZUNhY2hlIGV4dGVuZHMgQmFzZUxvY2FsQ2FjaGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoe29ubHlSZWZzOiEwfSl9c2V0KGU9bnVsbCx0LGEpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUmVnaW9uYWxJbWFnZUNhY2hlLnNldCAtIGV4cGVjdGVkICJyZWYiIGFyZ3VtZW50LicpO3RoaXMuX2ltYWdlQ2FjaGUuaGFzKHQpfHx0aGlzLl9pbWFnZUNhY2hlLnB1dCh0LGEpfX1jbGFzcyBHbG9iYWxDb2xvclNwYWNlQ2FjaGUgZXh0ZW5kcyBCYXNlTG9jYWxDYWNoZXtjb25zdHJ1Y3RvcihlKXtzdXBlcih7b25seVJlZnM6ITB9KX1zZXQoZT1udWxsLHQsYSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxDb2xvclNwYWNlQ2FjaGUuc2V0IC0gZXhwZWN0ZWQgInJlZiIgYXJndW1lbnQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXModCl8fHRoaXMuX2ltYWdlQ2FjaGUucHV0KHQsYSl9Y2xlYXIoKXt0aGlzLl9pbWFnZUNhY2hlLmNsZWFyKCl9fWNsYXNzIEdsb2JhbEltYWdlQ2FjaGV7c3RhdGljIE5VTV9QQUdFU19USFJFU0hPTEQ9MjtzdGF0aWMgTUlOX0lNQUdFU19UT19DQUNIRT0xMDtzdGF0aWMgTUFYX0JZVEVfU0laRT01ZTc7I29lPW5ldyBSZWZTZXQ7Y29uc3RydWN0b3IoKXt0aGlzLl9yZWZDYWNoZT1uZXcgUmVmU2V0Q2FjaGU7dGhpcy5faW1hZ2VDYWNoZT1uZXcgUmVmU2V0Q2FjaGV9Z2V0I2NlKCl7bGV0IGU9MDtmb3IoY29uc3QgdCBvZiB0aGlzLl9pbWFnZUNhY2hlKWUrPXQuYnl0ZVNpemU7cmV0dXJuIGV9Z2V0I2xlKCl7cmV0dXJuISh0aGlzLl9pbWFnZUNhY2hlLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5NSU5fSU1BR0VTX1RPX0NBQ0hFKSYmISh0aGlzLiNjZTxHbG9iYWxJbWFnZUNhY2hlLk1BWF9CWVRFX1NJWkUpfXNob3VsZENhY2hlKGUsdCl7bGV0IGE9dGhpcy5fcmVmQ2FjaGUuZ2V0KGUpO2lmKCFhKXthPW5ldyBTZXQ7dGhpcy5fcmVmQ2FjaGUucHV0KGUsYSl9YS5hZGQodCk7cmV0dXJuIShhLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKSYmISghdGhpcy5faW1hZ2VDYWNoZS5oYXMoZSkmJnRoaXMuI2xlKX1hZGREZWNvZGVGYWlsZWQoZSl7dGhpcy4jb2UucHV0KGUpfWhhc0RlY29kZUZhaWxlZChlKXtyZXR1cm4gdGhpcy4jb2UuaGFzKGUpfWFkZEJ5dGVTaXplKGUsdCl7Y29uc3QgYT10aGlzLl9pbWFnZUNhY2hlLmdldChl
101KTthJiYoYS5ieXRlU2l6ZXx8KGEuYnl0ZVNpemU9dCkpfWdldERhdGEoZSx0KXtjb25zdCBhPXRoaXMuX3JlZkNhY2hlLmdldChlKTtpZighYSlyZXR1cm4gbnVsbDtpZihhLnNpemU8R2xvYmFsSW1hZ2VDYWNoZS5OVU1fUEFHRVNfVEhSRVNIT0xEKXJldHVybiBudWxsO2NvbnN0IHI9dGhpcy5faW1hZ2VDYWNoZS5nZXQoZSk7aWYoIXIpcmV0dXJuIG51bGw7YS5hZGQodCk7cmV0dXJuIHJ9c2V0RGF0YShlLHQpe2lmKCF0aGlzLl9yZWZDYWNoZS5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKCdHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBleHBlY3RlZCAic2hvdWxkQ2FjaGUiIHRvIGhhdmUgYmVlbiBjYWxsZWQuJyk7dGhpcy5faW1hZ2VDYWNoZS5oYXMoZSl8fCh0aGlzLiNsZT93YXJuKCJHbG9iYWxJbWFnZUNhY2hlLnNldERhdGEgLSBjYWNoZSBsaW1pdCByZWFjaGVkLiIpOnRoaXMuX2ltYWdlQ2FjaGUucHV0KGUsdCkpfWNsZWFyKGU9ITEpe2lmKCFlKXt0aGlzLiNvZS5jbGVhcigpO3RoaXMuX3JlZkNhY2hlLmNsZWFyKCl9dGhpcy5faW1hZ2VDYWNoZS5jbGVhcigpfX1jbGFzcyBQREZGdW5jdGlvbkZhY3Rvcnl7Y29uc3RydWN0b3Ioe3hyZWY6ZSxpc0V2YWxTdXBwb3J0ZWQ6dD0hMH0pe3RoaXMueHJlZj1lO3RoaXMuaXNFdmFsU3VwcG9ydGVkPSExIT09dH1jcmVhdGUoZSx0PSExKXtsZXQgYSxyO2UgaW5zdGFuY2VvZiBSZWY/YT1lOmUgaW5zdGFuY2VvZiBEaWN0P2E9ZS5vYmpJZDplIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKGE9ZS5kaWN0Py5vYmpJZCk7aWYoYSl7Y29uc3QgZT10aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuZ2V0QnlSZWYoYSk7aWYoZSlyZXR1cm4gZX1jb25zdCBpPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO2lmKEFycmF5LmlzQXJyYXkoaSkpe2lmKCF0KXRocm93IG5ldyBFcnJvcignUERGRnVuY3Rpb25GYWN0b3J5LmNyZWF0ZSAtIGV4cGVjdGVkICJwYXJzZUFycmF5IiBhcmd1bWVudC4nKTtyPVBERkZ1bmN0aW9uLnBhcnNlQXJyYXkodGhpcyxpKX1lbHNlIHI9UERGRnVuY3Rpb24ucGFyc2UodGhpcyxpKTthJiZ0aGlzLl9sb2NhbEZ1bmN0aW9uQ2FjaGUuc2V0KG51bGwsYSxyKTtyZXR1cm4gcn1nZXQgX2xvY2FsRnVuY3Rpb25DYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiX2xvY2FsRnVuY3Rpb25DYWNoZSIsbmV3IExvY2FsRnVuY3Rpb25DYWNoZSl9fWZ1bmN0aW9uIHRvTnVtYmVyQXJyYXkoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/aXNOdW1iZXJBcnJheShlLG51bGwpP2U6ZS5tYXAoZT0+K2UpOm51bGx9Y2xhc3MgUERGRnVuY3Rpb257c3RhdGljIGdldFNhbXBsZUFycmF5KGUsdCxhLHIpe2xldCBpLG4scz0xO2ZvcihpPTAsbj1lLmxlbmd0aDtpPG47aSsrKXMqPWVbaV07cyo9dDtjb25zdCBvPW5ldyBBcnJheShzKTtsZXQgYz0wLGw9MDtjb25zdCBoPTEvKDIqKmEtMSksdT1yLmdldEJ5dGVzKChzKmErNykvOCk7bGV0IGQ9MDtmb3IoaT0wO2k8cztpKyspe2Zvcig7YzxhOyl7bDw8PTg7bHw9dVtkKytdO2MrPTh9Yy09YTtvW2ldPShsPj5jKSpoO2wmPSgxPDxjKS0xfXJldHVybiBvfXN0YXRpYyBwYXJzZShlLHQpe2NvbnN0IGE9dC5kaWN0fHx0O3N3aXRjaChhLmdldCgiRnVuY3Rpb25UeXBlIikpe2Nhc2UgMDpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTYW1wbGVkKGUsdCxhKTtjYXNlIDE6YnJlYWs7Y2FzZSAyOnJldHVybiB0aGlzLmNvbnN0cnVjdEludGVycG9sYXRlZChlLGEpO2Nhc2UgMzpyZXR1cm4gdGhpcy5jb25zdHJ1Y3RTdGljaGVkKGUsYSk7Y2FzZSA0OnJldHVybiB0aGlzLmNvbnN0cnVjdFBvc3RTY3JpcHQoZSx0LGEpfXRocm93IG5ldyBGb3JtYXRFcnJvcigiVW5rbm93biB0eXBlIG9mIGZ1bmN0aW9uIil9c3RhdGljIHBhcnNlQXJyYXkoZSx0KXtjb25zdHt4cmVmOmF9PWUscj1bXTtmb3IoY29uc3QgaSBvZiB0KXIucHVzaCh0aGlzLnBhcnNlKGUsYS5mZXRjaElmUmVmKGkpKSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxhLGkpe2ZvcihsZXQgbj0wLHM9ci5sZW5ndGg7bjxzO24rKylyW25dKGUsdCxhLGkrbil9fXN0YXRpYyBjb25zdHJ1Y3RTYW1wbGVkKGUsdCxhKXtmdW5jdGlvbiB0b011bHRpQXJyYXkoZSl7Y29uc3QgdD1lLmxlbmd0aCxhPVtdO2xldCByPTA7Zm9yKGxldCBpPTA7aTx0O2krPTIpYVtyKytdPVtlW2ldLGVbaSsxXV07cmV0dXJuIGF9ZnVuY3Rpb24gaW50ZXJwb2xhdGUoZSx0LGEscixpKXtyZXR1cm4gcisoaS1yKS8oYS10KSooZS10KX1sZXQgcj10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIkRvbWFpbiIpKSxpPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiUmFuZ2UiKSk7aWYoIXJ8fCFpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluIG9yIHJhbmdlIik7Y29uc3Qgbj1yLmxlbmd0aC8yLHM9aS5sZW5ndGgvMjtyPXRvTXVsdGlBcnJheShyKTtpPXRvTXVsdGlBcnJheShpKTtjb25zdCBvPXRvTnVtYmVyQXJyYXkoYS5nZXRBcnJheSgiU2l6ZSIpKSxjPWEuZ2V0KCJCaXRzUGVyU2FtcGxlIiksbD1hLmdldCgiT3JkZXIiKXx8MTsxIT09bCYmaW5mbygiTm8gc3VwcG9ydCBmb3IgY3ViaWMgc3BsaW5lIGludGVycG9sYXRpb246ICIrbCk7bGV0IGg9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJFbmNvZGUiKSk7aWYoaCloPXRvTXVsdGlBcnJheShoKTtlbHNle2g9W107Zm9yKGxldCBlPTA7ZTxuOysrZSloLnB1c2goWzAsb1tlXS0xXSl9bGV0IHU9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEZWNvZGUiKSk7dT11P3RvTXVsdGlBcnJheSh1KTppO2NvbnN0IGQ9dGhpcy5nZXRTYW1wbGVBcnJheShvLHMsYyx0KTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U2FtcGxlZEZuKGUsdCxhLGMpe2NvbnN0IGw9MTw8bixmPW5ldyBGbG9hdDY0QXJyYXkobCkuZmlsbCgxKSxnPW5ldyBVaW50MzJBcnJheShsKTtsZXQgcCxtLGI9cyx5PTE7Zm9yKHA9MDtwPG47KytwKXtjb25zdCBhPXJbcF1bMF0saT1yW3BdWzFdO2xldCBuPWludGVycG9sYXRlKE1hdGhDbGFtcChlW3QrcF0sYSxpKSxhLGksaFtwXVswXSxoW3BdWzFdKTtjb25zdCBzPW9bcF07bj1NYXRoQ2xhbXAobiwwLHMtMSk7Y29uc3QgYz1uPHMtMT9NYXRoLmZsb29yKG4pOm4tMSx1PWMrMS1uLGQ9bi1jLHc9YypiLHg9dytiO2ZvcihtPTA7bTxsO20rKylpZihtJnkpe2ZbbV0qPWQ7Z1ttXSs9eH1lbHNle2ZbbV0qPXU7Z1ttXSs9d31iKj1zO3k8PD0xfWZvcihtPTA7bTxzOysrbSl7bGV0IGU9MDtmb3IocD0wO3A8bDtwKyspZSs9ZFtnW3BdK21dKmZbcF07ZT1pbnRlcnBvbGF0ZShlLDAsMSx1W21dWzBdLHVbbV1bMV0pO2FbYyttXT1NYXRoQ2xhbXAoZSxpW21dWzBdLGlbbV1bMV0pfX19c3RhdGljIGNvbnN0cnVjdEludGVycG9sYXRlZChlLHQpe2NvbnN0IGE9dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJDMCIpKXx8WzBdLHI9dG9OdW1iZXJBcnJheSh0LmdldEFycmF5KCJDMSIpKXx8WzFdLGk9dC5nZXQoIk4iKSxuPVtdO2ZvcihsZXQgZT0wLHQ9YS5sZW5ndGg7ZTx0OysrZSluLnB1c2gocltlXS1hW2VdKTtjb25zdCBzPW4ubGVuZ3RoO3JldHVybiBmdW5jdGlvbiBjb25zdHJ1Y3RJbnRlcnBvbGF0ZWRGbihlLHQscixvKXtjb25zdCBjPTE9PT1pP2VbdF06ZVt0XSoqaTtmb3IobGV0IGU9MDtlPHM7KytlKXJbbytlXT1hW2VdK2MqbltlXX19c3RhdGljIGNvbnN0cnVjdFN0aWNoZWQoZSx0KXtjb25zdCBhPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiRG9tYWluIikpO2lmKCFhKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluIik7aWYoMSE9PWEubGVuZ3RoLzIpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYWQgZG9tYWluIGZvciBzdGljaGVkIGZ1bmN0aW9uIik7Y29uc3R7eHJlZjpyfT1lLGk9W107Zm9yKGNvbnN0IGEgb2YgdC5nZXQoIkZ1bmN0aW9ucyIpKWkucHVzaCh0aGlzLnBhcnNlKGUsci5mZXRjaElmUmVmKGEpKSk7Y29uc3Qgbj10b051bWJlckFycmF5KHQuZ2V0QXJyYXkoIkJvdW5kcyIpKSxzPXRvTnVtYmVyQXJyYXkodC5nZXRBcnJheSgiRW5jb2RlIikpLG89bm
101V3IEZsb2F0MzJBcnJheSgxKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0U3RpY2hlZEZuKGUsdCxyLGMpe2NvbnN0IGw9TWF0aENsYW1wKGVbdF0sYVswXSxhWzFdKSxoPW4ubGVuZ3RoO2xldCB1O2Zvcih1PTA7dTxoJiYhKGw8blt1XSk7Kyt1KTtsZXQgZD1hWzBdO3U+MCYmKGQ9blt1LTFdKTtsZXQgZj1hWzFdO3U8bi5sZW5ndGgmJihmPW5bdV0pO2NvbnN0IGc9c1syKnVdLHA9c1syKnUrMV07b1swXT1kPT09Zj9nOmcrKGwtZCkqKHAtZykvKGYtZCk7aVt1XShvLDAscixjKX19c3RhdGljIGNvbnN0cnVjdFBvc3RTY3JpcHQoZSx0LGEpe2NvbnN0IHI9dG9OdW1iZXJBcnJheShhLmdldEFycmF5KCJEb21haW4iKSksaT10b051bWJlckFycmF5KGEuZ2V0QXJyYXkoIlJhbmdlIikpO2lmKCFyKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gZG9tYWluLiIpO2lmKCFpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gcmFuZ2UuIik7Y29uc3Qgbj1uZXcgUG9zdFNjcmlwdExleGVyKHQpLHM9bmV3IFBvc3RTY3JpcHRQYXJzZXIobikucGFyc2UoKTtpZihlLmlzRXZhbFN1cHBvcnRlZCYmRmVhdHVyZVRlc3QuaXNFdmFsU3VwcG9ydGVkKXtjb25zdCBlPShuZXcgUG9zdFNjcmlwdENvbXBpbGVyKS5jb21waWxlKHMscixpKTtpZihlKXJldHVybiBuZXcgRnVuY3Rpb24oInNyYyIsInNyY09mZnNldCIsImRlc3QiLCJkZXN0T2Zmc2V0IixlKX1pbmZvKCJVbmFibGUgdG8gY29tcGlsZSBQUyBmdW5jdGlvbiIpO2NvbnN0IG89aS5sZW5ndGg+PjEsYz1yLmxlbmd0aD4+MSxsPW5ldyBQb3N0U2NyaXB0RXZhbHVhdG9yKHMpLGg9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgdT04MTkyO2NvbnN0IGQ9bmV3IEZsb2F0MzJBcnJheShjKTtyZXR1cm4gZnVuY3Rpb24gY29uc3RydWN0UG9zdFNjcmlwdEZuKGUsdCxhLHIpe2xldCBuLHMsZj0iIjtjb25zdCBnPWQ7Zm9yKG49MDtuPGM7bisrKXtzPWVbdCtuXTtnW25dPXM7Zis9cysiXyJ9Y29uc3QgcD1oW2ZdO2lmKHZvaWQgMCE9PXApe2Euc2V0KHAscik7cmV0dXJufWNvbnN0IG09bmV3IEZsb2F0MzJBcnJheShvKSxiPWwuZXhlY3V0ZShnKSx5PWIubGVuZ3RoLW87Zm9yKG49MDtuPG87bisrKXtzPWJbeStuXTtsZXQgZT1pWzIqbl07aWYoczxlKXM9ZTtlbHNle2U9aVsyKm4rMV07cz5lJiYocz1lKX1tW25dPXN9aWYodT4wKXt1LS07aFtmXT1tfWEuc2V0KG0scil9fX1mdW5jdGlvbiBpc1BERkZ1bmN0aW9uKGUpe2xldCB0O2lmKGUgaW5zdGFuY2VvZiBEaWN0KXQ9ZTtlbHNle2lmKCEoZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXJldHVybiExO3Q9ZS5kaWN0fXJldHVybiB0LmhhcygiRnVuY3Rpb25UeXBlIil9Y2xhc3MgUG9zdFNjcmlwdFN0YWNre3N0YXRpYyBNQVhfU1RBQ0tfU0laRT0xMDA7Y29uc3RydWN0b3IoZSl7dGhpcy5zdGFjaz1lP0FycmF5LmZyb20oZSk6W119cHVzaChlKXtpZih0aGlzLnN0YWNrLmxlbmd0aD49UG9zdFNjcmlwdFN0YWNrLk1BWF9TVEFDS19TSVpFKXRocm93IG5ldyBFcnJvcigiUG9zdFNjcmlwdCBmdW5jdGlvbiBzdGFjayBvdmVyZmxvdy4iKTt0aGlzLnN0YWNrLnB1c2goZSl9cG9wKCl7aWYodGhpcy5zdGFjay5sZW5ndGg8PTApdGhyb3cgbmV3IEVycm9yKCJQb3N0U2NyaXB0IGZ1bmN0aW9uIHN0YWNrIHVuZGVyZmxvdy4iKTtyZXR1cm4gdGhpcy5zdGFjay5wb3AoKX1jb3B5KGUpe2lmKHRoaXMuc3RhY2subGVuZ3RoK2U+PVBvc3RTY3JpcHRTdGFjay5NQVhfU1RBQ0tfU0laRSl0aHJvdyBuZXcgRXJyb3IoIlBvc3RTY3JpcHQgZnVuY3Rpb24gc3RhY2sgb3ZlcmZsb3cuIik7Y29uc3QgdD10aGlzLnN0YWNrO2ZvcihsZXQgYT10Lmxlbmd0aC1lLHI9ZS0xO3I+PTA7ci0tLGErKyl0LnB1c2godFthXSl9aW5kZXgoZSl7dGhpcy5wdXNoKHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGgtZS0xXSl9cm9sbChlLHQpe2NvbnN0IGE9dGhpcy5zdGFjayxyPWEubGVuZ3RoLWUsaT1hLmxlbmd0aC0xLG49cisodC1NYXRoLmZsb29yKHQvZSkqZSk7Zm9yKGxldCBlPX
101IsdD1pO2U8dDtlKyssdC0tKXtjb25zdCByPWFbZV07YVtlXT1hW3RdO2FbdF09cn1mb3IobGV0IGU9cix0PW4tMTtlPHQ7ZSsrLHQtLSl7Y29uc3Qgcj1hW2VdO2FbZV09YVt0XTthW3RdPXJ9Zm9yKGxldCBlPW4sdD1pO2U8dDtlKyssdC0tKXtjb25zdCByPWFbZV07YVtlXT1hW3RdO2FbdF09cn19fWNsYXNzIFBvc3RTY3JpcHRFdmFsdWF0b3J7Y29uc3RydWN0b3IoZSl7dGhpcy5vcGVyYXRvcnM9ZX1leGVjdXRlKGUpe2NvbnN0IHQ9bmV3IFBvc3RTY3JpcHRTdGFjayhlKTtsZXQgYT0wO2NvbnN0IHI9dGhpcy5vcGVyYXRvcnMsaT1yLmxlbmd0aDtsZXQgbixzLG87Zm9yKDthPGk7KXtuPXJbYSsrXTtpZigibnVtYmVyIiE9dHlwZW9mIG4pc3dpdGNoKG4pe2Nhc2UianoiOm89dC5wb3AoKTtzPXQucG9wKCk7c3x8KGE9byk7YnJlYWs7Y2FzZSJqIjpzPXQucG9wKCk7YT1zO2JyZWFrO2Nhc2UiYWJzIjpzPXQucG9wKCk7dC5wdXNoKE1hdGguYWJzKHMpKTticmVhaztjYXNlImFkZCI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocytvKTticmVhaztjYXNlImFuZCI6bz10LnBvcCgpO3M9dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBzJiYiYm9vbGVhbiI9PXR5cGVvZiBvP3QucHVzaChzJiZvKTp0LnB1c2gocyZvKTticmVhaztjYXNlImF0YW4iOm89dC5wb3AoKTtzPXQucG9wKCk7cz1NYXRoLmF0YW4yKHMsbykvTWF0aC5QSSoxODA7czwwJiYocys9MzYwKTt0LnB1c2gocyk7YnJlYWs7Y2FzZSJiaXRzaGlmdCI6bz10LnBvcCgpO3M9dC5wb3AoKTtzPjA/dC5wdXNoKHM8PG8pOnQucHVzaChzPj5vKTticmVhaztjYXNlImNlaWxpbmciOnM9dC5wb3AoKTt0LnB1c2goTWF0aC5jZWlsKHMpKTticmVhaztjYXNlImNvcHkiOnM9dC5wb3AoKTt0LmNvcHkocyk7YnJlYWs7Y2FzZSJjb3MiOnM9dC5wb3AoKTt0LnB1c2goTWF0aC5jb3MocyUzNjAvMTgwKk1hdGguUEkpKTticmVhaztjYXNlImN2aSI6cz0wfHQucG9wKCk7dC5wdXNoKHMpO2JyZWFrO2Nhc2UiY3ZyIjpicmVhaztjYXNlImRpdiI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocy9vKTticmVhaztjYXNlImR1cCI6dC5jb3B5KDEpO2JyZWFrO2Nhc2UiZXEiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHM9PT1vKTticmVhaztjYXNlImV4Y2giOnQucm9sbCgyLDEpO2JyZWFrO2Nhc2UiZXhwIjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzKipvKTticmVhaztjYXNlImZhbHNlIjp0LnB1c2goITEpO2JyZWFrO2Nhc2UiZmxvb3IiOnM9dC5wb3AoKTt0LnB1c2goTWF0aC5mbG9vcihzKSk7YnJlYWs7Y2FzZSJnZSI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocz49byk7YnJlYWs7Y2FzZSJndCI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnB1c2gocz5vKTticmVhaztjYXNlImlkaXYiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHMvb3wwKTticmVhaztjYXNlImluZGV4IjpzPXQucG9wKCk7dC5pbmRleChzKTticmVhaztjYXNlImxlIjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzPD1vKTticmVhaztjYXNlImxuIjpzPXQucG9wKCk7dC5wdXNoKE1hdGgubG9nKHMpKTticmVhaztjYXNlImxvZyI6cz10LnBvcCgpO3QucHVzaChNYXRoLmxvZzEwKHMpKTticmVhaztjYXNlImx0IjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzPG8pO2JyZWFrO2Nhc2UibW9kIjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzJW8pO2JyZWFrO2Nhc2UibXVsIjpvPXQucG9wKCk7cz10LnBvcCgpO3QucHVzaChzKm8pO2JyZWFrO2Nhc2UibmUiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHMhPT1vKTticmVhaztjYXNlIm5lZyI6cz10LnBvcCgpO3QucHVzaCgtcyk7YnJlYWs7Y2FzZSJub3QiOnM9dC5wb3AoKTsiYm9vbGVhbiI9PXR5cGVvZiBzP3QucHVzaCghcyk6dC5wdXNoKH5zKTticmVhaztjYXNlIm9yIjpvPXQucG9wKCk7cz10LnBvcCgpOyJib29sZWFuIj09dHlwZW9mIHMmJiJib29sZWFuIj09dHlwZW9mIG8/dC5wdXNoKHN8fG8pOnQucHVzaChzfG8pO2JyZWFrO2Nhc2UicG9wIjp0LnBvcCgpO2JyZWFrO2Nhc2Uicm9sbCI6bz10LnBvcCgpO3M9dC5wb3AoKTt0LnJvbGwocyxvKTticmVhaztjYXNlInJvdW5kIjpzPXQucG9wKCk7dC5wdXNoKE1hdGgucm91bmQocykpO2JyZWFrO2Nhc2Uic2luIjpzPXQucG9wKCk7dC5wdXNoKE1hdGguc2luKHMlMzYwLzE4MCpNYXRoLlBJKSk7YnJlYWs7Y2FzZSJzcXJ0IjpzPXQucG9wKCk7dC5wdXNoKE1hdGguc3FydChzKSk7YnJlYWs7Y2FzZSJzdWIiOm89dC5wb3AoKTtzPXQucG9wKCk7dC5wdXNoKHMtbyk7YnJlYWs7Y2FzZSJ0cnVlIjp0LnB1c2goITApO2JyZWFrO2Nhc2UidHJ1bmNhdGUiOnM9dC5wb3AoKTtzPXM8MD9NYXRoLmNlaWwocyk6TWF0aC5mbG9vcihzKTt0LnB1c2gocyk7YnJlYWs7Y2FzZSJ4b3IiOm89dC5wb3AoKTtzPXQucG9wKCk7ImJvb2xlYW4iPT10eXBlb2YgcyYmImJvb2xlYW4iPT10eXBlb2Ygbz90LnB1c2gocyE9PW8pOnQucHVzaChzXm8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmtub3duIG9wZXJhdG9yICR7bn1gKX1lbHNlIHQucHVzaChuKX1yZXR1cm4gdC5zdGFja319Y2xhc3MgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlKXt0aGlzLnR5cGU9ZX12aXNpdChlKXt1bnJlYWNoYWJsZSgiYWJzdHJhY3QgbWV0aG9kIil9fWNsYXNzIEFzdEFyZ3VtZW50IGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoImFyZ3MiKTt0aGlzLmluZGV4PWU7dGhpcy5taW49dDt0aGlzLm1heD1hfXZpc2l0KGUpe2UudmlzaXRBcmd1bWVudCh0aGlzKX19Y2xhc3MgQXN0TGl0ZXJhbCBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSl7c3VwZXIoImxpdGVyYWwiKTt0aGlzLm51bWJlcj1lO3RoaXMubWluPWU7dGhpcy5tYXg9ZX12aXNpdChlKXtlLnZpc2l0TGl0ZXJhbCh0aGlzKX19Y2xhc3MgQXN0QmluYXJ5T3BlcmF0aW9uIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsYSxyLGkpe3N1cGVyKCJiaW5hcnkiKTt0aGlzLm9wPWU7dGhpcy5hcmcxPXQ7dGhpcy5hcmcyPWE7dGhpcy5taW49cjt0aGlzLm1heD1pfXZpc2l0KGUpe2UudmlzaXRCaW5hcnlPcGVyYXRpb24odGhpcyl9fWNsYXNzIEFzdE1pbiBleHRlbmRzIEFzdE5vZGV7Y29uc3RydWN0b3IoZSx0KXtzdXBlcigibWF4Iik7dGhpcy5hcmc9ZTt0aGlzLm1pbj1lLm1pbjt0aGlzLm1heD10fXZpc2l0KGUpe2UudmlzaXRNaW4odGhpcyl9fWNsYXNzIEFzdFZhcmlhYmxlIGV4dGVuZHMgQXN0Tm9kZXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoInZhciIpO3RoaXMuaW5kZXg9ZTt0aGlzLm1pbj10O3RoaXMubWF4PWF9dmlzaXQoZSl7ZS52aXNpdFZhcmlhYmxlKHRoaXMpfX1jbGFzcyBBc3RWYXJpYWJsZURlZmluaXRpb24gZXh0ZW5kcyBBc3ROb2Rle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoImRlZmluaXRpb24iKTt0aGlzLnZhcmlhYmxlPWU7dGhpcy5hcmc9dH12aXNpdChlKXtlLnZpc2l0VmFyaWFibGVEZWZpbml0aW9uKHRoaXMpfX1jbGFzcyBFeHByZXNzaW9uQnVpbGRlclZpc2l0b3J7Y29uc3RydWN0b3IoKXt0aGlzLnBhcnRzPVtdfXZpc2l0QXJndW1lbnQoZSl7dGhpcy5wYXJ0cy5wdXNoKCJNYXRoLm1heCgiLGUubWluLCIsIE1hdGgubWluKCIsZS
1015tYXgsIiwgc3JjW3NyY09mZnNldCArICIsZS5pbmRleCwiXSkpIil9dmlzaXRWYXJpYWJsZShlKXt0aGlzLnBhcnRzLnB1c2goInYiLGUuaW5kZXgpfXZpc2l0TGl0ZXJhbChlKXt0aGlzLnBhcnRzLnB1c2goZS5udW1iZXIpfXZpc2l0QmluYXJ5T3BlcmF0aW9uKGUpe3RoaXMucGFydHMucHVzaCgiKCIpO2UuYXJnMS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiAiLGUub3AsIiAiKTtlLmFyZzIudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIpIil9dmlzaXRWYXJpYWJsZURlZmluaXRpb24oZSl7dGhpcy5wYXJ0cy5wdXNoKCJ2YXIgIik7ZS52YXJpYWJsZS52aXNpdCh0aGlzKTt0aGlzLnBhcnRzLnB1c2goIiA9ICIpO2UuYXJnLnZpc2l0KHRoaXMpO3RoaXMucGFydHMucHVzaCgiOyIpfXZpc2l0TWluKGUpe3RoaXMucGFydHMucHVzaCgiTWF0aC5taW4oIik7ZS5hcmcudmlzaXQodGhpcyk7dGhpcy5wYXJ0cy5wdXNoKCIsICIsZS5tYXgsIikiKX10b1N0cmluZygpe3JldHVybiB0aGlzLnBhcnRzLmpvaW4oIiIpfX1mdW5jdGlvbiBidWlsZEFkZE9wZXJhdGlvbihlLHQpe3JldHVybiJsaXRlcmFsIj09PXQudHlwZSYmMD09PXQubnVtYmVyP2U6ImxpdGVyYWwiPT09ZS50eXBlJiYwPT09ZS5udW1iZXI/dDoibGl0ZXJhbCI9PT10LnR5cGUmJiJsaXRlcmFsIj09PWUudHlwZT9uZXcgQXN0TGl0ZXJhbChlLm51bWJlcit0Lm51bWJlcik6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKyIsZSx0LGUubWluK3QubWluLGUubWF4K3QubWF4KX1mdW5jdGlvbiBidWlsZE11bE9wZXJhdGlvbihlLHQpe2lmKCJsaXRlcmFsIj09PXQudHlwZSl7aWYoMD09PXQubnVtYmVyKXJldHVybiBuZXcgQXN0TGl0ZXJhbCgwKTtpZigxPT09dC5udW1iZXIpcmV0dXJuIGU7aWYoImxpdGVyYWwiPT09ZS50eXBlKXJldHVybi
101BuZXcgQXN0TGl0ZXJhbChlLm51bWJlcip0Lm51bWJlcil9aWYoImxpdGVyYWwiPT09ZS50eXBlKXtpZigwPT09ZS5udW1iZXIpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKDApO2lmKDE9PT1lLm51bWJlcilyZXR1cm4gdH1jb25zdCBhPU1hdGgubWluKGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KSxyPU1hdGgubWF4KGUubWluKnQubWluLGUubWluKnQubWF4LGUubWF4KnQubWluLGUubWF4KnQubWF4KTtyZXR1cm4gbmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiKiIsZSx0LGEscil9ZnVuY3Rpb24gYnVpbGRTdWJPcGVyYXRpb24oZSx0KXtpZigibGl0ZXJhbCI9PT10LnR5cGUpe2lmKDA9PT10Lm51bWJlcilyZXR1cm4gZTtpZigibGl0ZXJhbCI9PT1lLnR5cGUpcmV0dXJuIG5ldyBBc3RMaXRlcmFsKGUubnVtYmVyLXQubnVtYmVyKX1yZXR1cm4iYmluYXJ5Ij09PXQudHlwZSYmIi0iPT09dC5vcCYmImxpdGVyYWwiPT09ZS50eXBlJiYxPT09ZS5udW1iZXImJiJsaXRlcmFsIj09PXQuYXJnMS50eXBlJiYxPT09dC5hcmcxLm51bWJlcj90LmFyZzI6bmV3IEFzdEJpbmFyeU9wZXJhdGlvbigiLSIsZSx0LGUubWluLXQubWF4LGUubWF4LXQubWluKX1mdW5jdGlvbiBidWlsZE1pbk9wZXJhdGlvbihlLHQpe3JldHVybiBlLm1pbj49dD9uZXcgQXN0TGl0ZXJhbCh0KTplLm1heDw9dD9lOm5ldyBBc3RNaW4oZSx0KX1jbGFzcyBQb3N0U2NyaXB0Q29tcGlsZXJ7Y29tcGlsZShlLHQsYSl7Y29uc3Qgcj1bXSxpPVtdLG49dC5sZW5ndGg+PjEscz1hLmxlbmd0aD4+MTtsZXQgbyxjLGwsaCx1LGQsZixnLHA9MDtmb3IobGV0IGU9MDtlPG47ZSsrKXIucHVzaChuZXcgQXN0QXJndW1lbnQoZSx0WzIqZV0sdFsyKmUrMV0pKTtmb3IobGV0IHQ9MCxhPWUubGVuZ3RoO3Q8YTt0Kyspe2c9ZVt0XTtpZigibnVtYmVyIiE9dHlwZW9mIGcpc3dpdGNoKGcpe2Nhc2UiYWRkIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkQWRkT3BlcmF0aW9uKGwsaCkpO2JyZWFrO2Nhc2UiY3ZyIjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO2JyZWFrO2Nhc2UibXVsIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkTXVsT3BlcmF0aW9uKGwsaCkpO2JyZWFrO2Nhc2Uic3ViIjppZihyLmxlbmd0aDwyKXJldHVybiBudWxsO2g9ci5wb3AoKTtsPXIucG9wKCk7ci5wdXNoKGJ1aWxkU3ViT3BlcmF0aW9uKGwsaCkpO2JyZWFrO2Nhc2UiZXhjaCI6aWYoci5sZW5ndGg8MilyZXR1cm4gbnVsbDt1PXIucG9wKCk7ZD1yLnBvcCgpO3IucHVzaCh1LGQpO2JyZWFrO2Nhc2UicG9wIjppZihyLmxlbmd0aDwxKXJldHVybiBudWxsO3IucG9wKCk7YnJlYWs7Y2FzZSJpbmRleCI6aWYoci5sZW5ndGg8MSlyZXR1cm4gbnVsbDtsPXIucG9wKCk7aWYoImxpdGVyYWwiIT09bC50eXBlKXJldHVybi
101BudWxsO289bC5udW1iZXI7aWYobzwwfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8ci5sZW5ndGg8bylyZXR1cm4gbnVsbDt1PXJbci5sZW5ndGgtby0xXTtpZigibGl0ZXJhbCI9PT11LnR5cGV8fCJ2YXIiPT09dS50eXBlKXtyLnB1c2godSk7YnJlYWt9Zj1uZXcgQXN0VmFyaWFibGUocCsrLHUubWluLHUubWF4KTtyW3IubGVuZ3RoLW8tMV09ZjtyLnB1c2goZik7aS5wdXNoKG5ldyBBc3RWYXJpYWJsZURlZmluaXRpb24oZix1KSk7YnJlYWs7Y2FzZSJkdXAiOmlmKHIubGVuZ3RoPDEpcmV0dXJuIG51bGw7aWYoIm51bWJlciI9PXR5cGVvZiBlW3QrMV0mJiJndCI9PT1lW3QrMl0mJmVbdCszXT09PXQrNyYmImp6Ij09PWVbdCs0XSYmInBvcCI9PT1lW3QrNV0mJmVbdCs2XT09PWVbdCsxXSl7bD1yLnBvcCgpO3IucHVzaChidWlsZE1pbk9wZXJhdGlvbihsLGVbdCsxXSkpO3QrPTY7YnJlYWt9dT1yLmF0KC0xKTtpZigibGl0ZXJhbCI9PT11LnR5cGV8fCJ2YXIiPT09dS50eXBlKXtyLnB1c2godSk7YnJlYWt9Zj1uZXcgQXN0VmFyaWFibGUocCsrLHUubWluLHUubWF4KTtyW3IubGVuZ3RoLTFdPWY7ci5wdXNoKGYpO2kucHVzaChuZXcgQXN0VmFyaWFibGVEZWZpbml0aW9uKGYsdSkpO2JyZWFrO2Nhc2Uicm9sbCI6aWYoci5sZW5ndGg8MilyZXR1cm4gbnVsbDtoPXIucG9wKCk7bD1yLnBvcCgpO2lmKCJsaXRlcmFsIiE9PWgudHlwZXx8ImxpdGVyYWwiIT09bC50eXBlKXJldHVybiBudWxsO2M9aC5udW1iZXI7bz1sLm51bWJlcjtpZihvPD0wfHwhTnVtYmVyLmlzSW50ZWdlcihvKXx8IU51bWJlci5pc0ludGVnZXIoYyl8fHIubGVuZ3RoPG8pcmV0dXJuIG51bGw7Yz0oYyVvK28pJW87aWYoMD09PWMpYnJlYWs7ci5wdXNoKC4uLnIuc3BsaWNlKHIubGVuZ3RoLW8sby1jKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1lbHNlIHIucHVzaChuZXcgQXN0TGl0ZXJhbChnKSl9aWYoci5sZW5ndGghPT1zKXJldHVybiBudWxsO2NvbnN0IG09W107Zm9yKGNvbnN0IGUgb2YgaSl7Y29uc3QgdD1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO2UudmlzaXQodCk7bS5wdXNoKHQudG9TdHJpbmcoKSl9Zm9yKGxldCBlPTAsdD1yLmxlbmd0aDtlPHQ7ZSsrKXtjb25zdCB0PXJbZV0saT1uZXcgRXhwcmVzc2lvbkJ1aWxkZXJWaXNpdG9yO3QudmlzaXQoaSk7Y29uc3Qgbj1hWzIqZV0scz1hWzIqZSsxXSxvPVtpLnRvU3RyaW5nKCldO2lmKG4+dC5taW4pe28udW5zaGlmdCgiTWF0aC5tYXgoIixuLCIsICIpO28ucHVzaCgiKSIpfWlmKHM8dC5tYXgpe28udW5zaGlmdCgiTWF0aC5taW4oIixzLCIsICIpO28ucHVzaCgiKSIpfW8udW5zaGlmdCgiZGVzdFtkZXN0T2Zmc2V0ICsgIixlLCJdID0gIik7by5wdXNoKCI7Iik7bS5wdXNoKG8uam9pbigiIikpfXJldHVybiBtLmpvaW4oIlxuIil9fWNvbnN0IHNuPVsiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiUyIsIkIiLCJTIiwiV1MiLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkIiLCJCIiwiQiIsIlMiLCJXUyIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiRVMiLCJDUyIsIkVTIiwiQ1MiLCJDUyIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiQ1MiLCJPTiIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJPTiIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiT04iLCJPTiIsIk9OIiwiT04iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkJOIiwiQk4iLCJCTiIsIkNTIiwiT04iLCJFVCIsIkVUIiwiRVQiLCJFVCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJCTiIsIk9OIiwiT04iLCJFVCIsIkVUIiwiRU4iLCJFTiIsIk9OIiwiTCIsIk9OIiwiT04iLCJPTiIsIkVOIiwiTCIsIk9OIiwiT04iLCJPTiIsIk9OIiwiT04iLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIk9OIiwiTCIsIkwiLCJMIiwiTCIsIkwiLCJMIiwiTCIsIkwiXSxvbj1bIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIk9OIiwiT04iLCJBTCIsIkVUIiwiRVQiLCJBTCIsIkNTIiwiQUwiLCJPTiIsIk9OIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiTlNNIiwiQUwiLCJBTCIsIiIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiQU4iLCJBT
101iIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiQU4iLCJBTiIsIkFOIiwiRVQiLCJBTiIsIkFOIiwiQUwiLCJBTCIsIkFMIiwiTlNNIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiLCJBTCIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIk5TTSIsIkFOIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiTlNNIiwiTlNNIiwiT04iLCJOU00iLCJOU00iLCJOU00iLCJOU00iLCJBTCIsIkFMIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJFTiIsIkVOIiwiRU4iLCJBTCIsIkFMIiwiQUwiLCJBTCIsIkFMIiwiQUwiXTtmdW5jdGlvbiBpc09kZChlKXtyZXR1cm4hISgxJmUpfWZ1bmN0aW9uIGlzRXZlbihlKXtyZXR1cm4hKDEmZSl9ZnVuY3Rpb24gZmluZFVuZXF1YWwoZSx0LGEpe2xldCByLGk7Zm9yKHI9dCxpPWUubGVuZ3RoO3I8aTsrK3IpaWYoZVtyXSE9PWEpcmV0dXJuIHI7cmV0dXJuIHJ9ZnVuY3Rpb24gcmV2ZXJzZVZhbHVlcyhlLHQsYSl7Zm9yKGxldCByPXQsaT1hLTE7cjxpOysrciwtLWkpe2NvbnN0IHQ9ZVtyXTtlW3JdPWVbaV07ZVtpXT10fX1mdW5jdGlvbiBjcmVhdGVCaWRpVGV4dChlLHQsYT0hMSl7bGV0IHI9Imx0ciI7YT9yPSJ0dGIiOnR8fChyPSJydGwiKTtyZXR1cm57c3RyOmUsZGlyOnJ9fWNvbnN0IGNuPVtdLGxuPVtdO2Z1bmN0aW9uIGJpZGkoZSx0PS0xLGE9ITEpe2xldCByPSEwO2NvbnN0IGk9ZS5sZW5ndGg7aWYoMD09PWl8fGEpcmV0dXJuIGNyZWF0ZUJpZGlUZXh0KGUscixhKTtjbi5sZW5ndGg9aTtsbi5sZW5ndGg9aTtsZXQgbixzLG89MDtmb3Iobj0wO248aTsrK24pe2NuW25dPWUuY2hhckF0KG4pO2NvbnN0IHQ9ZS5jaGFyQ29kZUF0KG4pO2xldCBhPSJMIjtpZih0PD0yNTUpYT1zblt0XTtlbHNlIGlmKDE0MjQ8PXQmJnQ8PTE1MjQpYT0iUiI7ZWxzZSBpZigxNTM2PD10JiZ0PD0xNzkxKXthPW9uWzI1NSZ0XTthfHx3YXJuKCJCaWRpOiBpbnZhbGlkIFVuaWNvZGUgY2hhcmFjdGVyICIrdC50b1N0cmluZygxNikpfWVsc2UoMTc5Mjw9dCYmdDw9MjIyMHx8NjQzMzY8PXQmJnQ8PTY1MDIzfHw2NTEzNjw9dCYmdDw9NjUyNzkpJiYoYT0iQUwiKTsiUiIhPT1hJiYiQUwiIT09YSYmIkFOIiE9PWF8fG8rKztsbltuXT1hfWlmKDA9PT1vKXtyPSEwO3JldHVybiBjcmVhdGVCaWRpVGV4dChlLHIpfWlmKC0xPT09dClpZihvL2k8LjMmJmk+NCl7cj0hMDt0PTB9ZWxzZXtyPSExO3Q9MX1jb25zdCBjPVtdO2ZvcihuPTA7bj
101xpOysrbiljW25dPXQ7Y29uc3QgbD1pc09kZCh0KT8iUiI6IkwiLGg9bCx1PWg7bGV0IGQsZj1oO2ZvcihuPTA7bjxpOysrbikiTlNNIj09PWxuW25dP2xuW25dPWY6Zj1sbltuXTtmPWg7Zm9yKG49MDtuPGk7KytuKXtkPWxuW25dOyJFTiI9PT1kP2xuW25dPSJBTCI9PT1mPyJBTiI6IkVOIjoiUiIhPT1kJiYiTCIhPT1kJiYiQUwiIT09ZHx8KGY9ZCl9Zm9yKG49MDtuPGk7KytuKXtkPWxuW25dOyJBTCI9PT1kJiYobG5bbl09IlIiKX1mb3Iobj0xO248aS0xOysrbil7IkVTIj09PWxuW25dJiYiRU4iPT09bG5bbi0xXSYmIkVOIj09PWxuW24rMV0mJihsbltuXT0iRU4iKTsiQ1MiIT09bG5bbl18fCJFTiIhPT1sbltuLTFdJiYiQU4iIT09bG5bbi0xXXx8bG5bbisxXSE9PWxuW24tMV18fChsbltuXT1sbltuLTFdKX1mb3Iobj0wO248aTsrK24paWYoIkVOIj09PWxuW25dKXtmb3IobGV0IGU9bi0xO2U+PTAmJiJFVCI9PT1sbltlXTstLWUpbG5bZV09IkVOIjtmb3IobGV0IGU9bisxO2U8aSYmIkVUIj09PWxuW2VdOysrZSlsbltlXT0iRU4ifWZvcihuPTA7bjxpOysrbil7ZD1sbltuXTsiV1MiIT09ZCYmIkVTIiE9PWQmJiJFVCIhPT1kJiYiQ1MiIT09ZHx8KGxuW25dPSJPTiIpfWY9aDtmb3Iobj0wO248aTsrK24pe2Q9bG5bbl07IkVOIj09PWQ/bG5bbl09IkwiPT09Zj8iTCI6IkVOIjoiUiIhPT1kJiYiTCIhPT1kfHwoZj1kKX1mb3Iobj0wO248aTsrK24paWYoIk9OIj09PWxuW25dKXtjb25zdCBlPWZpbmRVbmVxdWFsKGxuLG4rMSwiT04iKTtsZXQgdD1oO24+MCYmKHQ9bG5bbi0xXSk7bGV0IGE9dTtlKzE8aSYmKGE9bG5bZSsxXSk7IkwiIT09dCYmKHQ9IlIiKTsiTCIhPT1hJiYoYT0iUiIpO3Q9PT1hJiZsbi5maWxsKHQsbixlKTtuPWUtMX1mb3Iobj0wO248aTsrK24pIk9OIj09PWxuW25dJiYobG5bbl09bCk7Zm9yKG49MDtuPGk7KytuKXtkPWxuW25dO2lzRXZlbihjW25dKT8iUiI9PT1kP2Nbbl0rPTE6IkFOIiE9PWQmJiJFTiIhPT1kfHwoY1tuXSs9Mik6IkwiIT09ZCYmIkFOIiE9PWQmJiJFTiIhPT1kfHwoY1tuXSs9MSl9bGV0IGcscD0tMSxtPTk5O2ZvcihuPTAscz1jLmxlbmd0aDtuPHM7KytuKXtnPWNbbl07cDxnJiYocD1nKTttPmcmJmlzT2RkKGcpJiYobT1nKX1mb3IoZz1wO2c+PW07LS1nKXtsZXQgZT0tMTtmb3Iobj0wLHM9Yy5sZW5ndGg7bjxzOysrbilpZihjW25dPGcpe2lmKGU+PTApe3JldmVyc2VWYWx1ZXMoY24sZSxuKTtlPS0xfX1lbHNlIGU8MCYmKGU9bik7ZT49MCYmcmV2ZXJzZVZhbHVlcyhjbixlLGMubGVuZ3RoKX1mb3Iobj0wLHM9Y24ubGVuZ3RoO248czsrK24pe2NvbnN0IGU9Y25bbl07IjwiIT09ZSYmIj4iIT09ZXx8KGNuW25dPSIiKX1yZXR1cm4gY3JlYXRlQmlkaVRleHQoY24uam9pbigiIikscil9Y29uc3QgaG49e3N0eWxlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIn0sdW49e3N0eWxlOiJub3JtYWwiLHdlaWdodDoiYm9sZCJ9LGRuPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6Im5vcm1hbCJ9LGZuPXtzdHlsZToiaXRhbGljIix3ZWlnaHQ6ImJvbGQifSxnbj1uZXcgTWFwKFtbIlRpbWVzLVJvbWFuIix7bG9jYWw6WyJUaW1lcyBOZXcgUm9tYW4iLCJUaW1lcy1Sb21hbiIsIlRpbWVzIiwiTGliZXJhdGlvbiBTZXJpZiIsIk5pbWJ1cyBSb21hbiIsIk5pbWJ1cyBSb21hbiBMIiwiVGlub3MiLCJUaG9ybmRhbGUiLCJUZVggR3lyZSBUZXJtZXMiLCJGcmVlU2VyaWYiLCJMaW51eCBMaWJlcnRpbmUgTyIsIkxpYmVydGludXMgU2VyaWYiLCJQVCBBc3RyYSBTZXJpZiIsIkRlamFWdSBTZXJpZiIsIkJpdHN0cmVhbSBWZXJhIFNlcmlmIiwiVWJ1bnR1Il0sc3R5bGU6aG4sdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtQm9sZCIse2FsaWFzOiJUaW1lcy1Sb21hbiIsc3R5bGU6dW4sdWx0aW1hdGU6InNlcmlmIn1dLFsiVGltZXMtSXRhbGljIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTpkbix1bHRpbWF0ZToic2VyaWYifV0sWyJUaW1lcy1Cb2xkSXRhbGljIix7YWxpYXM6IlRpbWVzLVJvbWFuIixzdHlsZTpmbix1bHRpbWF0ZToic2VyaWYifV0sWyJIZWx2ZXRpY2EiLHtsb2NhbDpbIkhlbHZldGljYSIsIkhlbHZldGljYSBOZXVlIiwiQXJpYWwiLCJBcmlhbCBOb3ZhIiwiTGliZXJhdGlvbiBTYW5zIiwiQXJpbW8iLCJOaW1idXMgU2FucyIsIk5pbWJ1cyBTYW5zIEwiLCJBMDMwIiwiVGVYIEd5cmUgSGVyb3MiLCJGcmVlU2FucyIsIkRlamFWdSBTYW5zIiwiQWxiYW55IiwiQml0c3RyZWFtIFZlcmEgU2FucyIsIkFyaWFsIFVuaWNvZGUgTVMiLCJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIkFwcGxlIFN5bWJvbHMiLCJDYW50YXJlbGwiXSxwYXRoOiJMaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiIsc3R5bGU6aG4sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZCIse2FsaWFzOiJIZWx2ZXRpY2EiLHBhdGg6IkxpYmVyYXRpb25TYW5zLUJvbGQudHRmIixzdHlsZTp1bix1bHRpbWF0ZToic2Fucy1zZXJpZiJ9XSxbIkhlbHZldGljYS1PYmxpcXVlIix7YWxpYXM6IkhlbHZldGljYSIscGF0aDoiTGliZXJhdGlvblNhbnMtSXRhbGljLnR0ZiIsc3R5bGU6ZG4sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUiLHthbGlhczoiSGVsdmV0aWNhIixwYXRoOiJMaWJlcmF0aW9uU2Fucy1Cb2xkSXRhbGljLnR0ZiIsc3R5bGU6Zm4sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyJDb3VyaWVyIix7bG9jYWw6WyJDb3VyaWVyIiwiQ291cmllciBOZXciLCJMaWJlcmF0aW9uIE1vbm8iLCJOaW1idXMgTW9ubyIsIk5pbWJ1cyBNb25vIEwiLCJDb3VzaW5lIiwiQ3VtYmVybGFuZCIsIlRlWCBHeXJlIEN1cnNvciIsIkZyZWVNb25vIiwiTGludXggTGliZXJ0aW5lIE1vbm8gTyIsIkxpYmVydGludXMgTW9ubyJdLHN0eWxlOmhuLHVsdGltYXRlOiJtb25vc3BhY2UifV0sWyJDb3VyaWVyLUJvbGQiLHthbGlhczoiQ291cmllciIsc3R5bGU6dW4sdWx0aW1hdGU6Im1vbm9zcGFjZSJ9XSxbIkNvdXJpZXItT2JsaXF1ZSIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTpkbix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQ291cmllci1Cb2xkT2JsaXF1
101ZSIse2FsaWFzOiJDb3VyaWVyIixzdHlsZTpmbix1bHRpbWF0ZToibW9ub3NwYWNlIn1dLFsiQXJpYWxCbGFjayIse2xvY2FsOlsiQXJpYWwgQmxhY2siXSxzdHlsZTp7c3R5bGU6Im5vcm1hbCIsd2VpZ2h0OiI5MDAifSxmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbEJsYWNrLUJvbGQiLHthbGlhczoiQXJpYWxCbGFjayJ9XSxbIkFyaWFsQmxhY2stSXRhbGljIix7YWxpYXM6IkFyaWFsQmxhY2siLHN0eWxlOntzdHlsZToiaXRhbGljIix3ZWlnaHQ6IjkwMCJ9LGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJBcmlhbEJsYWNrLUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxCbGFjay1JdGFsaWMifV0sWyJBcmlhbE5hcnJvdyIse2xvY2FsOlsiQXJpYWwgTmFycm93IiwiTGliZXJhdGlvbiBTYW5zIE5hcnJvdyIsIkhlbHZldGljYSBDb25kZW5zZWQiLCJOaW1idXMgU2FucyBOYXJyb3ciLCJUZVggR3lyZSBIZXJvcyBDbiJdLHN0eWxlOmhuLGZhbGxiYWNrOiJIZWx2ZXRpY2EifV0sWyJBcmlhbE5hcnJvdy1Cb2xkIix7YWxpYXM6IkFyaWFsTmFycm93IixzdHlsZTp1bixmYWxsYmFjazoiSGVsdmV0aWNhLUJvbGQifV0sWyJBcmlhbE5hcnJvdy1JdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOmRuLGZhbGxiYWNrOiJIZWx2ZXRpY2EtT2JsaXF1ZSJ9XSxbIkFyaWFsTmFycm93LUJvbGRJdGFsaWMiLHthbGlhczoiQXJpYWxOYXJyb3ciLHN0eWxlOmZuLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJDYWxpYnJpIix7bG9jYWw6WyJDYWxpYnJpIiwiQ2FybGl0byJdLHN0eWxlOmhuLGZhbGxiYWNrOiJIZWx2ZXRpY2EifV0sWyJDYWxpYnJpLUJvbGQiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6dW4sZmFsbGJhY2s6IkhlbHZldGljYS1Cb2xkIn1dLFsiQ2FsaWJyaS1JdGFsaWMiLHthbGlhczoiQ2FsaWJyaSIsc3R5bGU6ZG4sZmFsbGJhY2s6IkhlbHZldGljYS1PYmxpcXVlIn1dLFsiQ2FsaWJyaS1Cb2xkSXRhbGljIix7YWxpYXM6IkNhbGlicmkiLHN0eWxlOmZuLGZhbGxiYWNrOiJIZWx2ZXRpY2EtQm9sZE9ibGlxdWUifV0sWyJXaW5nZGluZ3MiLHtsb2NhbDpbIldpbmdkaW5ncyIsIlVSVyBEaW5nYmF0cyJdLHN0eWxlOmhufV0sWyJXaW5nZGluZ3MtUmVndWxhciIse2FsaWFzOiJXaW5nZGluZ3MifV0sWyJXaW5nZGluZ3MtQm9sZCIse2FsaWFzOiJXaW5nZGluZ3MifV0sWyLDi8OOw4zDpSIse2xvY2FsOlsiU2ltU3VuIiwiU2ltU3VuIFJlZ3VsYXIiLCJOU2ltU3VuIl0sc3R5bGU6aG4sdWx0aW1hdGU6InNlcmlmIn1dLFsiwrrDmsOMw6UiLHtsb2NhbDpbIlNpbUhlaSIsIlNpbUhlaSBSZWd1bGFyIl0sc3R5bGU6aG4sdWx0aW1hdGU6InNhbnMtc2VyaWYifV0sWyLCv8Ksw4zDpSIse2xvY2FsOlsiS2FpVGkiLCJTaW1LYWkiLCJTaW1LYWkgUmVndWxhciJdLHN0eWxlOmhuLHVsdGltYXRlOiJzYW5zLXNlcmlmIn1dLFsiwrfDgsOLw44iLHtsb2NhbDpbIkZhbmdTb25nIiwiU2ltRmFuZyIsIlNpbUZhbmcgUmVndWxhciJdLHN0eWxlOmhuLHVsdGltYXRlOiJzZXJpZiJ9XSxbIsK/wqzDjMOlX0dCMjMxMiIse2FsaWFzOiLCv8Ksw4zDpSJ9XSxbIsK3w4LDi8OOX0dCMjMxMiIse2FsaWFzOiLCt8OCw4vDjiJ9XSxbIsOBwqXDisOpIix7bG9jYWw6WyJTaW1MaSIsIlNpbUxpIFJlZ3VsYXIiXSxzdHlsZTpobix1bHRpbWF0ZToic2VyaWYifV0sWyLDkMOCw4vDjiIse2FsaWFzOiLDi8OOw4zDpSJ9XV0pLHBuPW5ldyBNYXAoW1siQXJpYWwtQmxhY2siLCJBcmlhbEJsYWNrIl1dKTtmdW5jdGlvbiBnZXRGYW1pbHlOYW1lKGUpe2NvbnN0IHQ9bmV3IFNldChbInRoaW4iLCJleHRyYWxpZ2h0IiwidWx0cmFsaWdodCIsImRlbWlsaWdodCIsInNlbWlsaWdodCIsImxpZ2h0IiwiYm9vayIsInJlZ3VsYXIiLCJub3JtYWwiLCJtZWRpdW0iLCJkZW1pYm9sZCIsInNlbWlib2xkIiwiYm9sZCIsImV4dHJhYm9sZCIsInVsdHJhYm9sZCIsImJsYWNrIiwiaGVhdnkiLCJleHRyYWJsYWNrIiwidWx0cmFibGFjayIsInJvbWFuIiwiaXRhbGljIiwib2JsaXF1ZSIsInVsdHJhY29uZGVuc2VkIiwiZXh0cmFjb25kZW5zZWQiLCJjb25kZW5zZWQiLCJzZW1pY29uZGVuc2VkIiwibm9ybWFsIiwic2VtaWV4cGFuZGVkIiwiZXhwYW5kZWQiLCJleHRyYWV4cGFuZGVkIiwidWx0cmFleHBhbmRlZCIsImJvbGRpdGFsaWMiXSk7cmV0dXJuIGUuc3BsaXQoL1stICwrXSsvZykuZmlsdGVyKGU9PiF0LmhhcyhlLnRvTG93ZXJDYXNlKCkpKS5qb2luKCIgIil9ZnVuY3Rpb24gZ2VuZXJhdGVGb250KHthbGlhczplLGxvY2FsOnQscGF0aDphLGZhbGxiYWNrOnIsc3R5bGU6aSx1bHRpbWF0ZTpufSxzLG8sYz0hMCxsPSEwLGg9IiIpe2NvbnN0IHU9e3N0eWxlOm51bGwsdWx0aW1hdGU6bnVsbH07aWYodCl7Y29uc3QgZT1oP2AgJHtofWA6IiI7Zm9yKGNvbnN0IGEgb2YgdClzLnB1c2goYGxvY2FsKCR7YX0ke2V9KWApfWlmKGUpe2NvbnN0IHQ9Z24uZ2V0KGUpLG49aHx8ZnVuY3Rpb24gZ2V0U3R5bGVUb0FwcGVuZChlKXtzd2l0Y2goZSl7Y2FzZSB1bjpyZXR1cm4iQm9sZCI7Y2FzZSBkbjpyZXR1cm4iSXRhbGljIjtjYXNlIGZuOnJldHVybiJCb2xkIEl0YWxpYyI7ZGVmYXVsdDppZigiYm9sZCI9PT1lPy53ZWlnaHQpcmV0dXJuIkJvbGQiO2lmKCJpdGFsaWMiPT09ZT8uc3R5bGUpcmV0dXJuIkl0YWxpYyJ9cmV0dXJuIiJ9KGkpO09iamVjdC5hc3NpZ24odSxnZW5lcmF0ZUZvbnQodCxzLG8sYyYmIXIsbCYmIWEsbikpfWkmJih1LnN0eWxlPWkpO24mJih1LnVsdGltYXRlPW4pO2lmKGMmJnIpe2NvbnN0IGU9Z24uZ2V0KHIpLHt1bHRpbWF0ZTp0fT1nZW5lcmF0ZUZvbnQoZSxzLG8sYyxsJiYhYSxoKTt1LnVsdGltYXRlfHw9dH1sJiZhJiZvJiZzLnB1c2goYHVybCgke299JHthfSlgKTtyZXR1cm4gdX1mdW5jdGlvbiBnZXRGb250U3Vic3RpdHV0aW9uKGUsdCxhLHIsaSxuKXtpZihyLnN0YXJ0c1dpdGgoIkludmFsaWRQREZqc0ZvbnRfIikpcmV0dXJuIG51bGw7IlRydWVUeXBlIiE9PW4mJiJUeXBlMSIhPT1ufHwhL15bQS1aXXs2fVwrLy50ZXN0KHIpfHwocj1yLnNsaWNlKDcpKTtjb25zdCBzPXI9bm9ybWFsaXplRm9udE5hbWUocik7bGV0IG89ZS5nZXQocyk7aWYobylyZXR1cm4gbztsZXQgYz1nbi5nZXQocik7aWYoIWMpZm9yKGNvbnN0W2UsdF1vZiBwbilpZihyLnN0YXJ0c1dpdGgoZSkpe3I9YCR7dH0ke3Iuc3Vic3RyaW5nKGUubGVuZ3RoKX1gO2M9Z24uZ2V0KHIpO2JyZWFrfWxldCBsPSExO2lmKCFjKXtjPWduLmdldChpKTtsPSEwfWNvbnN0IGg9YCR7dC5nZXREb2NJZCgpfV9zJHt0LmNyZWF0ZUZvbnRJZCgpfWA7aWYoIWMpe2lmKCF2YWxpZGF0ZUZvbnROYW1lKHIpKXt3YXJuKGBDYW5ub3Qgc3Vic3RpdHV0ZSB0aGUgZm9udCBiZWNhdXNlIG9mIGl0cyBuYW1lOiAke3J9YCk7ZS5zZXQocyxudWxsKTtyZXR1cm4gbnVsbH1jb25zdCB0PS9ib2xkL2dpLnRlc3QociksYT0vb2JsaXF1
101ZXxpdGFsaWMvZ2kudGVzdChyKSxpPXQmJmEmJmZufHx0JiZ1bnx8YSYmZG58fGhuO289e2NzczpgIiR7Z2V0RmFtaWx5TmFtZShyKX0iLCR7aH1gLGd1ZXNzRmFsbGJhY2s6ITAsbG9hZGVkTmFtZTpoLGJhc2VGb250TmFtZTpyLHNyYzpgbG9jYWwoJHtyfSlgLHN0eWxlOml9O2Uuc2V0KHMsbyk7cmV0dXJuIG99Y29uc3QgdT1bXTtsJiZ2YWxpZGF0ZUZvbnROYW1lKHIpJiZ1LnB1c2goYGxvY2FsKCR7cn0pYCk7Y29uc3R7c3R5bGU6ZCx1bHRpbWF0ZTpmfT1nZW5lcmF0ZUZvbnQoYyx1LGEpLGc9bnVsbD09PWYscD1nPyIiOmAsJHtmfWA7bz17Y3NzOmAiJHtnZXRGYW1pbHlOYW1lKHIpfSIsJHtofSR7cH1gLGd1ZXNzRmFsbGJhY2s6Zyxsb2FkZWROYW1lOmgsYmFzZUZvbnROYW1lOnIsc3JjOnUuam9pbigiLCIpLHN0eWxlOmR9O2Uuc2V0KHMsbyk7cmV0dXJuIG99Y29uc3QgbW49MzI4NTM3NzUyMCxibj00Mjk0OTAxNzYwLHluPTY1NTM1O2NsYXNzIE11cm11ckhhc2gzXzY0e2NvbnN0cnVjdG9yKGUpe3RoaXMuaDE9ZT80Mjk0OTY3Mjk1JmU6bW47dGhpcy5oMj1lPzQyOTQ5NjcyOTUmZTptbn11cGRhdGUoZSl7bGV0IHQsYTtpZigic3RyaW5nIj09dHlwZW9mIGUpe3Q9bmV3IFVpbnQ4QXJyYXkoMiplLmxlbmd0aCk7YT0wO2ZvcihsZXQgcj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyl7Y29uc3QgaT1lLmNoYXJDb2RlQXQocik7aWYoaTw9MjU1KXRbYSsrXT1pO2Vsc2V7dFthKytdPWk+Pj44O3RbYSsrXT0yNTUmaX19fWVsc2V7aWYoIUFycmF5QnVmZmVyLmlzVmlldyhlKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZGF0YSBmb3JtYXQsIG11c3QgYmUgYSBzdHJpbmcgb3IgVHlwZWRBcnJheS4iKTt0PWUuc2xpY2UoKTthPXQuYnl0ZUxlbmd0aH1jb25zdCByPWE+PjIsaT1hLTQqcixuPW5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlciwwLHIpO2xldCBzPTAsbz0wLGM9dGhpcy5oMSxsPXRoaXMuaDI7Y29uc3QgaD0zNDMyOTE4MzUzLHU9NDYxODQ1OTA3LGQ9MTE2MDEsZj0xMzcxNTtmb3IobGV0IGU9MDtlPHI7ZSsrKWlmKDEmZSl7cz1uW2VdO3M9cypoJmJufHMqZCZ5bjtzPXM8PDE1fHM+Pj4xNztzPXMqdSZibnxzKmYmeW47Y149cztjPWM8PDEzfGM+Pj4xOTtjPTUqYyszODY0MjkyMTk2fWVsc2V7bz1uW2VdO289bypoJmJufG8qZCZ5bjtvPW88PDE1fG8+Pj4xNztvPW8qdSZibnxvKmYmeW47bF49bztsPWw8PDEzfGw+Pj4xOTtsPTUqbCszODY0MjkyMTk2fXM9MDtzd2l0Y2goaSl7Y2FzZSAzOnNePXRbNCpyKzJdPDwxNjtjYXNlIDI6c149dFs0KnIrMV08PDg7Y2FzZSAxOnNePXRbNCpyXTtzPXMqaCZibnxzKmQmeW47cz1zPDwxNXxzPj4+MTc7cz1zKnUmYm58cypmJnluOzEmcj9jXj1zOmxePXN9dGhpcy5oMT1jO3RoaXMuaDI9bH1oZXhkaWdlc3QoKXtsZXQgZT10aGlzLmgxLHQ9dGhpcy5oMjtlXj10Pj4+MTtlPTM5ODE4MDY3OTcqZSZibnwzNjA0NSplJnluO3Q9NDI4MzU0MzUxMSp0JmJufCgyOTUwMTYzNzk3Kih0PDwxNnxlPj4+MTYpJmJuKT4+PjE2O2VePXQ+Pj4xO2U9NDQ0OTg0NDAzKmUmYm58NjA0OTkqZSZ5bjt0PTMzMDE4ODIzNjYqdCZibnwoMzEyMDQzNzg5MyoodDw8MTZ8ZT4+PjE2KSZibik+Pj4xNjtlXj10Pj4+MTtyZXR1cm4oZT4+PjApLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIikrKHQ+Pj4wKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpfX1mdW5jdGlvbiByZXNpemVJbWFnZU1hc2soZSx0LGEscixpLG4pe2NvbnN0IHM9aSpuO2xldCBvO289dDw9OD9uZXcgVWludDhBcnJheShzKTp0PD0xNj9uZXcgVWludDE2QXJyYXkocyk6bmV3IFVpbnQzMkFycmF5KHMpO2NvbnN0IGM9YS9pLGw9ci9uO2xldCBoLHUsZCxmLGc9MDtjb25zdCBwPW5ldyBVaW50MTZBcnJheShpKSxtPWE7Zm9yKGg9MDtoPGk7aCsrKXBbaF09TWF0aC5mbG9vcihoKmMpO2ZvcihoPTA7aDxuO2grKyl7ZD1NYXRoLmZsb29yKGgqbCkqbTtmb3IodT0wO3U8aTt1Kyspe2Y9ZCtwW3VdO29bZysrXT1lW2ZdfX1yZXR1cm4gb31jbGFzcyBQREZJbWFnZXtjb25zdHJ1Y3Rvcih7eHJlZjplLHJlczp0LGltYWdlOmEsaXNJbmxpbmU6cj0hMSxzbWFzazppPW51bGwsbWFzazpuPW51bGwsaXNNYXNrOnM9ITEscGRmRnVuY3Rpb25GYWN0b3J5Om8sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOmMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6bH0pe3RoaXMuaW1hZ2U9YTtjb25zdCBoPWEuZGljdCx1PWguZ2V0KCJGIiwiRmlsdGVyIik7bGV0IGQ7aWYodSBpbnN0YW5jZW9mIE5hbWUpZD11Lm5hbWU7ZWxzZSBpZihBcnJheS5pc0FycmF5KHUpKXtjb25zdCB0PWUuZmV0Y2hJZlJlZih1WzBdKTt0IGluc3RhbmNlb2YgTmFtZSYmKGQ9dC5uYW1lKX1zd2l0Y2goZCl7Y2FzZSJKUFhEZWNvZGUiOih7d2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHQsY29tcG9uZW50c0NvdW50OmEubnVtQ29tcHMsYml0c1BlckNvbXBvbmVudDphLmJpdHNQZXJDb21wb25lbnR9PUpweEltYWdlLnBhcnNlSW1hZ2VQcm9wZXJ0aWVzKGEuc3RyZWFtKSk7YS5zdHJlYW0ucmVzZXQoKTtjb25zdCBlPUltYWdlUmVzaXplci5nZXRSZWR1Y2VQb3dlckZvckpQWChhLndpZHRoLGEuaGVpZ2h0LGEubnVtQ29tcHMpO3RoaXMuanB4RGVjb2Rlck9wdGlvbnM9e251bUNvbXBvbmVudHM6MCxpc0luZGV4ZWRDb2xvcm1hcDohMSxzbWFza0luRGF0YTpoLmhhcygiU01hc2tJbkRhdGEiKSxyZWR1Y2VQb3dlcjplfTtpZihlKXtjb25zdCB0PTIqKmU7YS53aWR0aD1NYXRoLmNlaWwoYS53aWR0aC90KTthLmhlaWdodD1NYXRoLmNlaWwoYS5oZWlnaHQvdCl9YnJlYWs7Y2FzZSJKQklHMkRlY29kZSI6YS5iaXRzUGVyQ29tcG9uZW50PTE7YS5udW1Db21wcz0xfWxldCBmPWguZ2V0KCJXIiwiV2lkdGgiKSxnPWguZ2V0KCJIIiwiSGVpZ2h0Iik7aWYoTnVtYmVyLmlzSW50ZWdlcihhLndpZHRoKSYmYS53aWR0aD4wJiZOdW1iZXIuaXNJbnRlZ2VyKGEuaGVpZ2h0KSYmYS5oZWlnaHQ+MCYmKGEud2lkdGghPT1mfHxhLmhlaWdodCE9PWcpKXt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIGltYWdlIGRhdGEsIHJhdGhlciB0aGFuIHRoZSBpbWFnZSBkaWN0aW9uYXJ5LiIpO2Y9YS53aWR0aDtnPWEuaGVpZ2h0fWVsc2V7Y29uc3QgZT0ibnVtYmVyIj09dHlwZW9mIGYmJmY+MCx0PSJudW1iZXIiPT10eXBlb2YgZyYmZz4wO2lmKCFlfHwhdCl7aWYoIWEuZmFsbGJhY2tEaW1zKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBpbWFnZSB3aWR0aDogJHtmfSBvciBoZWlnaHQ6ICR7Z31gKTt3YXJuKCJQREZJbWFnZSAtIHVzaW5nIHRoZSBXaWR0aC9IZWlnaHQgb2YgdGhlIHBhcmVudCBpbWFnZSwgZm9yIFNNYXNrL01hc2sgZGF0YS4iKTtlfHwoZj1hLmZhbGxiYWNrRGltcy53aWR0aCk7dHx8KGc9YS5mYWxsYmFja0RpbXMuaGVpZ2h0KX19dGhpcy53aWR0aD1mO3RoaXMuaGVpZ2h0PWc7dGhpcy5pbnRlcnBvbGF0ZT1oLmdldCgiSSIsIkludGVycG9sYXRlIik7dGhpcy5pbWFnZU1hc2s9aC5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExO3RoaXMubWF0dGU9aC5nZXQoIk1hdHRlIil8fCExO2xldCBwPWEuYml0c1BlckNvbXBvbmVudDtpZighcCl7cD1oLmdldCgiQlBDIiwiQml0c1BlckNvbXBvbmVudCIpO2lmKCFwKXtpZighdGhpcy5pbWFnZU1hc2spdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBCaXRzIHBlciBjb21wb25lbnQgbWlzc2luZyBpbiBpbWFnZTogJHt0aGlzLmltYWdlTWFza31gKTtwPTF9fXRoaXMuYnBjPXA7aWYoIXRoaXMuaW1hZ2VNYXNrKXtsZXQgaT1oLmdldFJhdygiQ1MiKXx8aC5nZXRSYXcoIkNvbG9yU3BhY2UiKTtjb25zdCBuPSEhaTtpZihuKXRoaXMuanB4RGVjb2Rlck9wdGlvbnM/LnNtYXNrSW5EYXRhJiYoaT1OYW1lLmdldCgiRGV2aWNlUkdCQSIpKTtlbHNlIGlmKHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpaT1OYW1lLmdldCgiRGV2aWNlUkdCQSIpO2Vsc2Ug
101c3dpdGNoKGEubnVtQ29tcHMpe2Nhc2UgMTppPU5hbWUuZ2V0KCJEZXZpY2VHcmF5Iik7YnJlYWs7Y2FzZSAzOmk9TmFtZS5nZXQoIkRldmljZVJHQiIpO2JyZWFrO2Nhc2UgNDppPU5hbWUuZ2V0KCJEZXZpY2VDTVlLIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYEltYWdlcyB3aXRoICR7YS5udW1Db21wc30gY29sb3IgY29tcG9uZW50cyBub3Qgc3VwcG9ydGVkLmApfXRoaXMuY29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucGFyc2Uoe2NzOmkseHJlZjplLHJlc291cmNlczpyP3Q6bnVsbCxwZGZGdW5jdGlvbkZhY3Rvcnk6byxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6Yyxsb2NhbENvbG9yU3BhY2VDYWNoZTpsfSk7dGhpcy5udW1Db21wcz10aGlzLmNvbG9yU3BhY2UubnVtQ29tcHM7aWYodGhpcy5qcHhEZWNvZGVyT3B0aW9ucyl7dGhpcy5qcHhEZWNvZGVyT3B0aW9ucy5udW1Db21wb25lbnRzPW4/dGhpcy5udW1Db21wczowO3RoaXMuanB4RGVjb2Rlck9wdGlvbnMuaXNJbmRleGVkQ29sb3JtYXA9IkluZGV4ZWQiPT09dGhpcy5jb2xvclNwYWNlLm5hbWV9fXRoaXMuZGVjb2RlPWguZ2V0QXJyYXkoIkQiLCJEZWNvZGUiKTt0aGlzLm5lZWRzRGVjb2RlPSExO2lmKHRoaXMuZGVjb2RlJiYodGhpcy5jb2xvclNwYWNlJiYhdGhpcy5jb2xvclNwYWNlLmlzRGVmYXVsdERlY29kZSh0aGlzLmRlY29kZSxwKXx8cyYmIUNvbG9yU3BhY2UuaXNEZWZhdWx0RGVjb2RlKHRoaXMuZGVjb2RlLDEpKSl7dGhpcy5uZWVkc0RlY29kZT0hMDtjb25zdCBlPSgxPDxwKS0xO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzPVtdO3RoaXMuZGVjb2RlQWRkZW5kcz1bXTtjb25zdCB0PSJJbmRleGVkIj09PXRoaXMuY29sb3JTcGFjZT8ubmFtZTtmb3IobGV0IGE9MCxyPTA7YTx0aGlzLmRlY29kZS5sZW5ndGg7YSs9MiwrK3Ipe2NvbnN0IGk9dGhpcy5kZWNvZGVbYV0sbj10aGlzLmRlY29kZVthKzFdO3RoaXMuZGVjb2RlQ29lZmZpY2llbnRzW3JdPXQ/KG4taSkvZTpuLWk7dGhpcy5kZWNvZGVBZGRlbmRzW3JdPXQ/aTplKml9fWlmKGkpe2kuZmFsbGJhY2tEaW1zPz89e3dpZHRoOmYsaGVpZ2h0Omd9O3RoaXMuc21hc2s9bmV3IFBERkltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6aSxpc0lubGluZTpyLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpjLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KX1lbHNlIGlmKG4paWYobiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe2lmKG4uZGljdC5nZXQoIklNIiwiSW1hZ2VNYXNrIikpe24uZmFsbGJhY2tEaW1zPz89e3dpZHRoOmYsaGVpZ2h0Omd9O3RoaXMubWFzaz1uZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpuLGlzSW5saW5lOnIsaXNNYXNrOiEwLHBkZkZ1bmN0aW9uRmFjdG9yeTpvLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpjLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmx9KX1lbHNlIHdhcm4oIklnbm9yaW5nIC9NYXNrIGluIGltYWdlIHdpdGhvdXQgL0ltYWdlTWFzay4iKX1lbHNlIHRoaXMubWFzaz1ufXN0YXRpYyBhc3luYyBidWlsZEltYWdlKHt4cmVmOmUscmVzOnQsaW1hZ2U6YSxpc0lubGluZTpyPSExLHBkZkZ1bmN0aW9uRmFjdG9yeTppLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpuLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KXtjb25zdCBvPWE7bGV0IGM9bnVsbCxsPW51bGw7Y29uc3QgaD1hLmRpY3QuZ2V0KCJTTWFzayIpLHU9YS5kaWN0LmdldCgiTWFzayIpO2g/aCBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/Yz1oOndhcm4oIlVuc3VwcG9ydGVkIC9TTWFzayBmb3JtYXQuIik6dSYmKHUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHxBcnJheS5pc0FycmF5KHUpP2w9dTp3YXJuKCJVbnN1cHBvcnRlZCAvTWFzayBmb3JtYXQuIikpO3JldHVybiBuZXcgUERGSW1hZ2Uoe3hyZWY6ZSxyZXM6dCxpbWFnZTpvLGlzSW5saW5lOnIsc21hc2s6YyxtYXNrOmwscGRmRnVuY3Rpb25GYWN0b3J5OmksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOm4sbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pfXN0YXRpYyBhc3luYyBjcmVhdGVNYXNrKHtpbWFnZTplLGlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOnQ9ITF9KXtjb25zdHtkaWN0OmF9PWUscj1hLmdldCgiVyIsIldpZHRoIiksaT1hLmdldCgiSCIsIkhlaWdodCIpLG49YS5nZXQoIkkiLCJJbnRlcnBvbGF0ZSIpLHM9YS5nZXRBcnJheSgiRCIsIkRlY29kZSIpLG89cz8uWzBdPjAsYz0ocis3Pj4zKSppLGw9ZS5nZXRCeXRlcyhjKSxoPTE9PT1yJiYxPT09aSYmbz09PSgwPT09bC5sZW5ndGh8fCEhKDEyOCZsWzBdKSk7aWYoaClyZXR1cm57aXNTaW5nbGVPcGFxdWVQaXhlbDpofTtpZih0KXtpZihJbWFnZVJlc2l6ZXIubmVlZHNUb0JlUmVzaXplZChyLGkpKXtjb25zdCBlPW5ldyBVaW50OENsYW1wZWRBcnJheShyKmkqNCk7Y29udmVydEJsYWNrQW5kV2hpdGVUb1JHQkEoe3NyYzpsLGRlc3Q6ZSx3aWR0aDpyLGhlaWdodDppLG5vbkJsYWNrQ29sb3I6MCxpbnZlcnNlRGVjb2RlOm99KTtyZXR1cm4gSW1hZ2VSZXNpemVyLmNyZWF0ZUltYWdlKHtraW5kOk8sZGF0YTplLHdpZHRoOnIsaGVpZ2h0OmksaW50ZXJwb2xhdGU6bn0pfWNvbnN0IGU9bmV3IE9mZnNjcmVlbkNhbnZhcyhyLGkpLHQ9ZS5nZXRDb250ZXh0KCIyZCIpLGE9dC5jcmVhdGVJbWFnZURhdGEocixpKTtjb252ZXJ0QmxhY2tBbmRXaGl0ZVRvUkdCQSh7c3JjOmwsZGVzdDphLmRhdGEsd2lkdGg6cixoZWlnaHQ6aSxub25CbGFja0NvbG9yOjAsaW52ZXJzZURlY29kZTpvfSk7dC5wdXRJbWFnZURhdGEoYSwwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6cixoZWlnaHQ6aSxpbnRlcnBvbGF0ZTpuLGJpdG1hcDplLnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpfX1jb25zdCB1PWwuYnl0ZUxlbmd0aDtsZXQgZDtpZihlIGluc3RhbmNlb2YgRGVjb2RlU3RyZWFtJiYoIW98fGM9PT11KSlkPWw7ZWxzZSBpZihvKXtkPW5ldyBVaW50OEFycmF5KGMpO2Quc2V0KGwpO2QuZmlsbCgyNTUsdSl9ZWxzZSBkPW5ldyBVaW50OEFycmF5KGwpO2lmKG8pZm9yKGxldCBlPTA7ZTx1O2UrKylkW2VdXj0yNTU7cmV0dXJue2RhdGE6ZCx3aWR0aDpyLGhlaWdodDppLGludGVycG9sYXRlOm59fWdldCBkcmF3V2lkdGgoKXtyZXR1cm4gTWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLnNtYXNrPy53aWR0aHx8MCx0aGlzLm1hc2s/LndpZHRofHwwKX1nZXQgZHJhd0hlaWdodCgpe3JldHVybiBNYXRoLm1heCh0aGlzLmhlaWdodCx0aGlzLnNtYXNrPy5oZWlnaHR8fDAsdGhpcy5tYXNrPy5oZWlnaHR8fDApfWRlY29kZUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMuYnBjLGE9dGhpcy5udW1Db21wcyxyPXRoaXMuZGVjb2RlQWRkZW5kcyxpPXRoaXMuZGVjb2RlQ29lZmZpY2llbnRzLG49KDE8PHQpLTE7bGV0IHMsbztpZigxPT09dCl7Zm9yKHM9MCxvPWUubGVuZ3RoO3M8bztzKyspZVtzXT0rIWVbc107cmV0dXJufWxldCBjPTA7Zm9yKHM9MCxvPXRoaXMud2lkdGgqdGhpcy5oZWlnaHQ7czxvO3MrKylmb3IobGV0IHQ9MDt0PGE7dCsrKXtlW2NdPU1h
101dGhDbGFtcChyW3RdK2VbY10qaVt0XSwwLG4pO2MrK319Z2V0Q29tcG9uZW50cyhlKXtjb25zdCB0PXRoaXMuYnBjO2lmKDg9PT10KXJldHVybiBlO2NvbnN0IGE9dGhpcy53aWR0aCxyPXRoaXMuaGVpZ2h0LGk9dGhpcy5udW1Db21wcyxuPWEqcippO2xldCBzLG89MDtzPXQ8PTg/bmV3IFVpbnQ4QXJyYXkobik6dDw9MTY/bmV3IFVpbnQxNkFycmF5KG4pOm5ldyBVaW50MzJBcnJheShuKTtjb25zdCBjPWEqaSxsPSgxPDx0KS0xO2xldCBoLHUsZD0wO2lmKDE9PT10KXtsZXQgdCxhLGk7Zm9yKGxldCBuPTA7bjxyO24rKyl7YT1kKygtOCZjKTtpPWQrYztmb3IoO2Q8YTspe3U9ZVtvKytdO3NbZF09dT4+NyYxO3NbZCsxXT11Pj42JjE7c1tkKzJdPXU+PjUmMTtzW2QrM109dT4+NCYxO3NbZCs0XT11Pj4zJjE7c1tkKzVdPXU+PjImMTtzW2QrNl09dT4+MSYxO3NbZCs3XT0xJnU7ZCs9OH1pZihkPGkpe3U9ZVtvKytdO3Q9MTI4O2Zvcig7ZDxpOyl7c1tkKytdPSshISh1JnQpO3Q+Pj0xfX19fWVsc2V7bGV0IGE9MDt1PTA7Zm9yKGQ9MCxoPW47ZDxoOysrZCl7aWYoZCVjPT09MCl7dT0wO2E9MH1mb3IoO2E8dDspe3U9dTw8OHxlW28rK107YSs9OH1jb25zdCByPWEtdDtsZXQgaT11Pj5yO2k8MD9pPTA6aT5sJiYoaT1sKTtzW2RdPWk7dSY9KDE8PHIpLTE7YT1yfX1yZXR1cm4gc31hc3luYyBmaWxsT3BhY2l0eShlLHQsYSxyLGkpe2NvbnN0IG49dGhpcy5zbWFzayxzPXRoaXMubWFzaztsZXQgbyxjLGwsaCx1LGQ7aWYobil7Yz1uLndpZHRoO2w9bi5oZWlnaHQ7bz1uZXcgVWludDhDbGFtcGVkQXJyYXkoYypsKTthd2FpdCBuLmZpbGxHcmF5QnVmZmVyKG8pO2M9PT10JiZsPT09YXx8KG89cmVzaXplSW1hZ2VNYXNrKG8sbi5icGMsYyxsLHQsYSkpfWVsc2UgaWYocylpZihzIGluc3RhbmNlb2YgUERGSW1hZ2Upe2M9cy53aWR0aDtsPXMuaGVpZ2h0O289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KGMqbCk7cy5udW1Db21wcz0xO2F3YWl0IHMuZmlsbEdyYXlCdWZmZXIobyk7Zm9yKGg9MCx1PWMqbDtoPHU7KytoKW9baF09MjU1LW9baF07Yz09PXQmJmw9PT1hfHwobz1yZXNpemVJbWFnZU1hc2sobyxzLmJwYyxjLGwsdCxhKSl9ZWxzZXtpZighQXJyYXkuaXNBcnJheShzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlVua25vd24gbWFzayBmb3JtYXQuIik7e289bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHQqYSk7Y29uc3QgZT10aGlzLm51bUNvbXBzO2ZvcihoPTAsdT10KmE7aDx1OysraCl7bGV0IHQ9MDtjb25zdCBhPWgqZTtmb3IoZD0wO2Q8ZTsrK2Qpe2NvbnN0IGU9aVthK2RdLHI9MipkO2lmKGU8c1tyXXx8ZT5zW3IrMV0pe3Q9MjU1O2JyZWFrfX1vW2hdPXR9fX1pZihvKWZvcihoPTAsZD0zLHU9dCpyO2g8dTsrK2gsZCs9NCllW2RdPW9baF07ZWxzZSBmb3IoaD0wLGQ9Myx1PXQqcjtoPHU7KytoLGQrPTQpZVtkXT0yNTV9dW5kb1ByZWJsZW5kKGUsdCxhKXtjb25zdCByPXRoaXMuc21hc2s/Lm1hdHRlO2lmKCFyKXJldHVybjtjb25zdCBpPXRoaXMuY29sb3JTcGFjZS5nZXRSZ2IociwwKSxuPWlbMF0scz1pWzFdLG89aVsyXSxjPXQqYSo0O2ZvcihsZXQgdD0wO3Q8Yzt0Kz00KXtjb25zdCBhPWVbdCszXTtpZigwPT09YSl7ZVt0XT0yNTU7ZVt0KzFdPTI1NTtlW3QrMl09MjU1O2NvbnRpbnVlfWNvbnN0IHI9MjU1L2E7ZVt0XT0oZVt0XS1uKSpyK247ZVt0KzFdPShlW3QrMV0tcykqcitzO2VbdCsyXT0oZVt0KzJdLW8pKnIrb319YXN5bmMgY3JlYXRlSW1hZ2VEYXRhKGU9ITEsdD0hMSl7Y29uc3QgYT10aGlzLmRyYXdXaWR0aCxyPXRoaXMuZHJhd0hlaWdodCxpPXt3aWR0aDphLGhlaWdodDpyLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGUsa2luZDowLGRhdGE6bnVsbH0sbj10aGlzLm51bUNvbXBzLHM9dGhpcy53aWR0aCxvPXRoaXMuaGVpZ2h0LGM9dGhpcy5icGMsbD1zKm4qYys3Pj4zLGg9dCYmSW1hZ2VSZXNpemVyLm5lZWRzVG9CZVJlc2l6ZWQoYSxyKTtpZighdGhpcy5zbWFzayYmIXRoaXMubWFzayYmIkRldmljZVJHQkEiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUpe2kua2luZD1PO2NvbnN0IGU9aS5kYXRhPWF3YWl0IHRoaXMuZ2V0SW1hZ2VCeXRlcyhvKnMqNCx7fSk7cmV0dXJuIHQ/aD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UoaSwhMSk6dGhpcy5jcmVhdGVCaXRtYXAoTyxhLHIsZSk6aX1pZighZSl7bGV0IGU7IkRldmljZUdyYXkiPT09dGhpcy5jb2xvclNwYWNlLm5hbWUmJjE9PT1jP2U9RjoiRGV2aWNlUkdCIiE9PXRoaXMuY29sb3JTcGFjZS5uYW1lfHw4IT09Y3x8dGhpcy5uZWVkc0RlY29kZXx8KGU9VCk7aWYoZSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJmE9PT1zJiZyPT09byl7Y29uc3Qgbj1hd2FpdCB0aGlzLiNoZShzLG8pO2lmKG4pcmV0dXJuIG47Y29uc3QgYz1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMobypsLHt9KTtpZih0KXJldHVybiBoP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZSh7ZGF0YTpjLGtpbmQ6ZSx3aWR0aDphLGhlaWdodDpyLGludGVycG9sYXRlOnRoaXMuaW50ZXJwb2xhdGV9LHRoaXMubmVlZHNEZWNvZGUpOnRoaXMuY3JlYXRlQml0bWFwKGUscyxvLGMpO2kua2luZD1lO2kuZGF0YT1jO2lmKHRoaXMubmVlZHNEZWNvZGUpe2Fzc2VydChlPT09RiwiUERGSW1hZ2UuY3JlYXRlSW1hZ2VEYXRhOi
101BUaGUgaW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUuIik7Y29uc3QgdD1pLmRhdGE7Zm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXRbZV1ePTI1NX1yZXR1cm4gaX1pZih0aGlzLmltYWdlIGluc3RhbmNlb2YgSnBlZ1N0cmVhbSYmIXRoaXMuc21hc2smJiF0aGlzLm1hc2smJiF0aGlzLm5lZWRzRGVjb2RlKXtsZXQgZT1vKmw7aWYodCYmIWgpe2xldCB0PSExO3N3aXRjaCh0aGlzLmNvbG9yU3BhY2UubmFtZSl7Y2FzZSJEZXZpY2VHcmF5IjplKj00O3Q9ITA7YnJlYWs7Y2FzZSJEZXZpY2VSR0IiOmU9ZS8zKjQ7dD0hMDticmVhaztjYXNlIkRldmljZUNNWUsiOnQ9ITB9aWYodCl7Y29uc3QgdD1hd2FpdCB0aGlzLiNoZShhLHIpO2lmKHQpcmV0dXJuIHQ7Y29uc3QgaT1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOmEsZHJhd0hlaWdodDpyLGZvcmNlUkdCQTohMH0pO3JldHVybiB0aGlzLmNyZWF0ZUJpdG1hcChPLGEscixpKX19ZWxzZSBzd2l0Y2godGhpcy5jb2xvclNwYWNlLm5hbWUpe2Nhc2UiRGV2aWNlR3JheSI6ZSo9MztjYXNlIkRldmljZVJHQiI6Y2FzZSJEZXZpY2VDTVlLIjppLmtpbmQ9VDtpLmRhdGE9YXdhaXQgdGhpcy5nZXRJbWFnZUJ5dGVzKGUse2RyYXdXaWR0aDphLGRyYXdIZWlnaHQ6cixmb3JjZVJHQjohMH0pO3JldHVybiBoP0ltYWdlUmVzaXplci5jcmVhdGVJbWFnZShpKTppfX19Y29uc3QgdT1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMobypsLHtpbnRlcm5hbDohMH0pLGQ9MHx1Lmxlbmd0aC9sKnIvbyxmPXRoaXMuZ2V0Q29tcG9uZW50cyh1KTtsZXQgZyxwLG0sYix5LHc7aWYodCYmIWgpe209bmV3IE9mZnNjcmVlbkNhbnZhcyhhLHIpO2I9bS5nZXRDb250ZXh0KCIyZCIpO3k9Yi5jcmVhdGVJbWFnZURhdGEoYSxyKTt3PXkuZGF0YX1pLmtpbmQ9TztpZihlfHx0aGlzLnNtYXNrfHx0aGlzLm1hc2spe3QmJiFofHwodz1uZXcgVWludDhDbGFtcGVkQXJyYXkoYSpyKjQpKTtnPTE7cD0hMDthd2FpdCB0aGlzLmZpbGxPcGFjaXR5KHcsYSxyLGQsZil9ZWxzZXtpZighdHx8aCl7aS5raW5kPVQ7dz1uZXcgVWludDhDbGFtcGVkQXJyYXkoYSpyKjMpO2c9MH1lbHNle25ldyBVaW50MzJBcnJheSh3LmJ1ZmZlcikuZmlsbChGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj80Mjc4MTkwMDgwOjI1NSk7Zz0xfXA9ITF9dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIoZik7dGhpcy5jb2xvclNwYWNlLmZpbGxSZ2IodyxzLG8sYSxyLGQsYyxmLGcpO3AmJnRoaXMudW5kb1ByZWJsZW5kKHcsYSxkKTtpZih0JiYhaCl7Yi5wdXRJbWFnZURhdGEoeSwwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6YSxoZWlnaHQ6cixiaXRtYXA6bS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfX1pLmRhdGE9dztyZXR1cm4gaD9JbWFnZVJlc2l6ZXIuY3JlYXRlSW1hZ2UoaSk6aX1hc3luYyBmaWxsR3JheUJ1ZmZlcihlKXtjb25zdCB0PXRoaXMubnVtQ29tcHM7aWYoMSE9PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBSZWFkaW5nIGdyYXkgc2NhbGUgZnJvbSBhIGNvbG9yIGltYWdlOiAke3R9YCk7Y29uc3QgYT10aGlzLndpZHRoLHI9dGhpcy5oZWlnaHQsaT10aGlzLmJwYyxuPWEqdCppKzc+PjMscz1hd2FpdCB0aGlzLmdldEltYWdlQnl0ZXMocipuLHtpbnRlcm5hbDohMH0pLG89dGhpcy5nZXRDb21wb25lbnRzKHMpO2xldCBjLGw7aWYoMT09PWkpe2w9YSpyO2lmKHRoaXMubmVlZHNEZWNvZGUpZm9yKGM9MDtjPGw7KytjKWVbY109b1tjXS0xJjI1NTtlbHNlIGZvcihjPTA7YzxsOysrYyllW2NdPTI1NSYtb1tjXTtyZXR1cm59dGhpcy5uZWVkc0RlY29kZSYmdGhpcy5kZWNvZGVCdWZmZXIobyk7bD1hKnI7Y29uc3QgaD0yNTUvKCgxPDxpKS0xKTtmb3IoYz0wO2M8bDsrK2MpZVtjXT1oKm9bY119Y3JlYXRlQml0bWFwKGUsdCxhLHIpe2NvbnN0IGk9bmV3IE9mZnNjcmVlbkNhbnZhcyh0LGEpLG49aS5nZXRDb250ZXh0KCIyZCIpO2xldCBzO2lmKGU9PT1PKXM9bmV3IEltYWdlRGF0YShyLHQsYSk7ZWxzZXtzPW4uY3JlYXRlSW1hZ2VEYXRhKHQsYSk7Y29udmVydFRvUkdCQSh7a2luZDplLHNyYzpyLGRlc3Q6bmV3IFVpbnQzMkFycmF5KHMuZGF0YS5idWZmZXIpLHdpZHRoOnQsaGVpZ2h0OmEsaW52ZXJzZURlY29kZTp0aGlzLm5lZWRzRGVjb2RlfSl9bi5wdXRJbWFnZURhdGEocywwLDApO3JldHVybntkYXRhOm51bGwsd2lkdGg6dCxoZWlnaHQ6YSxiaXRtYXA6aS50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfX1hc3luYyNoZShlLHQpe2NvbnN0IGE9YXdhaXQgdGhpcy5pbWFnZS5nZXRUcmFuc2ZlcmFibGVJbWFnZSgpO3JldHVybiBhP3tkYXRhOm51bGwsd2lkdGg6ZSxoZWlnaHQ6dCxiaXRtYXA6YSxpbnRlcnBvbGF0ZTp0aGlzLmludGVycG9sYXRlfTpudWxsfWFzeW5jIGdldEltYWdlQnl0ZXMoZSx7ZHJhd1dpZHRoOnQsZHJhd0hlaWdodDphLGZvcmNlUkdCQTpyPSExLGZvcmNlUkdCOmk9ITEsaW50ZXJuYWw6bj0hMX0pe3RoaXMuaW1hZ2UucmVzZXQoKTt0aGlzLmltYWdlLmRyYXdXaWR0aD10fHx0aGlzLndpZHRoO3RoaXMuaW1hZ2UuZHJhd0hlaWdodD1hfHx0aGlzLmhlaWdodDt0aGlzLmltYWdlLmZvcmNlUkdCQT0hIXI7dGhpcy5pbWFnZS5mb3JjZVJHQj0hIWk7Y29uc3Qgcz1hd2FpdCB0aGlzLmltYWdlLmdldEltYWdlRGF0YShlLHRoaXMuanB4RGVjb2Rlck9wdGlvbnMpO2lmKG58fHRoaXMuaW1hZ2UgaW5zdGFuY2VvZiBEZWNvZGVTdHJlYW0pcmV0dXJuIHM7YXNzZXJ0KHMgaW5zdGFuY2VvZiBVaW50OEFycmF5LCdQREZJbWFnZS5nZXRJbWFnZUJ5dGVzOiBVbnN1cHBvcnRlZCAiaW1hZ2VCeXRlcyIgdHlwZS4nKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkocyl9fWNvbnN0IHduPU9iamVjdC5mcmVlemUoe21heEltYWdlU2l6ZTotMSxkaXNhYmxlRm9udEZhY2U6ITEsaWdub3JlRXJyb3JzOiExLGlzRXZhbFN1cHBvcnRlZDohMCxpc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDohMSxpc0ltYWdlRGVjb2RlclN1cHBvcnRlZDohMSxjYW52YXNNYXhBcmVhSW5CeXRlczotMSxmb250RXh0cmFQcm9wZXJ0aWVzOiExLHVzZVN5c3RlbUZvbnRzOiEwLHVzZVdhc206ITAsdXNlV29ya2VyRmV0Y2g6ITAsY01hcFVybDpudWxsLGljY1VybDpudWxsLHN0YW5kYXJkRm9udERhdGFVcmw6bnVsbCx3YXNtVXJsOm51bGx9KSx4bj0xLFNuPTIsQW49UHJvbWlzZS5yZXNvbHZlKCk7ZnVuY3Rpb24gbm9ybWFsaXplQmxlbmRNb2RlKGUsdD0hMSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT1ub3JtYWxpem
101VCbGVuZE1vZGUodCwhMCk7aWYoZSlyZXR1cm4gZX13YXJuKGBVbnN1cHBvcnRlZCBibGVuZCBtb2RlIEFycmF5OiAke2V9YCk7cmV0dXJuInNvdXJjZS1vdmVyIn1pZighKGUgaW5zdGFuY2VvZiBOYW1lKSlyZXR1cm4gdD9udWxsOiJzb3VyY2Utb3ZlciI7c3dpdGNoKGUubmFtZSl7Y2FzZSJOb3JtYWwiOmNhc2UiQ29tcGF0aWJsZSI6cmV0dXJuInNvdXJjZS1vdmVyIjtjYXNlIk11bHRpcGx5IjpyZXR1cm4ibXVsdGlwbHkiO2Nhc2UiU2NyZWVuIjpyZXR1cm4ic2NyZWVuIjtjYXNlIk92ZXJsYXkiOnJldHVybiJvdmVybGF5IjtjYXNlIkRhcmtlbiI6cmV0dXJuImRhcmtlbiI7Y2FzZSJMaWdodGVuIjpyZXR1cm4ibGlnaHRlbiI7Y2FzZSJDb2xvckRvZGdlIjpyZXR1cm4iY29sb3ItZG9kZ2UiO2Nhc2UiQ29sb3JCdXJuIjpyZXR1cm4iY29sb3ItYnVybiI7Y2FzZSJIYXJkTGlnaHQiOnJldHVybiJoYXJkLWxpZ2h0IjtjYXNlIlNvZnRMaWdodCI6cmV0dXJuInNvZnQtbGlnaHQiO2Nhc2UiRGlmZmVyZW5jZSI6cmV0dXJuImRpZmZlcmVuY2UiO2Nhc2UiRXhjbHVzaW9uIjpyZXR1cm4iZXhjbHVzaW9uIjtjYXNlIkh1ZSI6cmV0dXJuImh1ZSI7Y2FzZSJTYXR1cmF0aW9uIjpyZXR1cm4ic2F0dXJhdGlvbiI7Y2FzZSJDb2xvciI6cmV0dXJuImNvbG9yIjtjYXNlIkx1bWlub3NpdHkiOnJldHVybiJsdW1pbm9zaXR5In1pZih0KXJldHVybiBudWxsO3dhcm4oYFVuc3VwcG9ydGVkIGJsZW5kIG1vZGU6ICR7ZS5uYW1lfWApO3JldHVybiJzb3VyY2Utb3ZlciJ9ZnVuY3Rpb24gYWRkQ2FjaGVkSW1hZ2VPcHMoZSx7b2JqSWQ6dCxmbjphLGFyZ3M6cixvcHRpb25hbENvbnRlbnQ6aSxoYXNNYXNrOm59KXt0JiZlLmFkZERlcGVuZGVuY3kodCk7ZS5hZGRJbWFnZU9wcyhhLHIsaSxuKTthPT09TnQmJnJbMF0/LmNvdW50PjAmJnJbMF0uY291bnQrK31jbGFzcyBUaW1lU2xvdE1hbmFnZXJ7c3RhdGljIFRJTUVfU0xPVF9EVVJBVElPTl9NUz0yMDtzdGF0aWMgQ0hFQ0tfVElNRV9FVkVSWT0xMDA7Y29uc3RydWN0b3IoKXt0aGlzLnJlc2V0KCl9Y2hlY2soKXtpZigrK3RoaXMuY2hlY2tlZDxUaW1lU2xvdE1hbmFnZXIuQ0hFQ0tfVElNRV9FVkVSWSlyZXR1cm4hMTt0aGlzLmNoZWNrZWQ9MDtyZXR1cm4gdGhpcy5lbmRUaW1lPD1EYXRlLm5vdygpfXJlc2V0KCl7dGhpcy5lbmRUaW1lPURhdGUubm93KCkrVGltZVNsb3RNYW5hZ2VyLlRJTUVfU0xPVF9EVVJBVElPTl9NUzt0aGlzLmNoZWNrZWQ9MH19Y2xhc3MgUGFydGlhbEV2YWx1YXRvcntjb25zdHJ1Y3Rvcih7eHJlZjplLGhhbmRsZXI6dCxwYWdlSW5kZXg6YSxpZEZhY3Rvcnk6cixmb250Q2FjaGU6aSxidWlsdEluQ01hcENhY2hlOm4sc3RhbmRhcmRGb250RGF0YUNhY2hlOnMsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOm8sZ2xvYmFsSW1hZ2VDYWNoZTpjLHN5c3RlbUZvbnRDYWNoZTpsLG9wdGlvbnM6aD1udWxsfSl7dGhpcy54cmVmPWU7dGhpcy5oYW5kbGVyPXQ7dGhpcy5wYWdlSW5kZXg9YTt0aGlzLmlkRmFjdG9yeT1yO3RoaXMuZm9udENhY2hlPWk7dGhpcy5idWlsdEluQ01hcENhY2hlPW47dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGU9czt0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZT1vO3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZT1jO3RoaXMuc3lzdGVtRm9udENhY2hlPWw7dGhpcy5vcHRpb25zPWh8fHduO3RoaXMudHlwZTNGb250UmVmcz1udWxsO3RoaXMuX3JlZ2lvbmFsSW1hZ2VDYWNoZT1uZXcgUmVnaW9uYWxJbWFnZUNhY2hlO3RoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZD10aGlzLmZldGNoQnVpbHRJbkNNYXAuYmluZCh0aGlzKX1nZXQgX3BkZkZ1bmN0aW9uRmFjdG9yeSgpe3JldHVybiBzaGFkb3codGhpcywiX3BkZkZ1bmN0aW9uRmFjdG9yeSIsbmV3IFBERkZ1bmN0aW9uRmFjdG9yeSh7eHJlZjp0aGlzLnhyZWYsaXNFdmFsU3VwcG9ydGVkOnRoaXMub3B0aW9ucy5pc0V2YWxTdXBwb3J0ZWR9KSl9Z2V0IHBhcnNpbmdUeXBlM0ZvbnQoKXtyZXR1cm4hIXRoaXMudHlwZTNGb250UmVmc31jbG9uZShlPW51bGwpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZSh0aGlzKTt0Lm9wdGlvbnM9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMub3B0aW9ucyxlKTtyZXR1cm4gdH1oYXNCbGVuZE1vZGVzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5vYmpJZCYmdC5oYXMoZS5vYmpJZCkpcmV0dXJuITE7Y29uc3QgYT1uZXcgUmVmU2V0KHQpO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IHI9W2VdLGk9dGhpcy54cmVmO2Zvcig7ci5sZW5ndGg7KXtjb25zdCBlPXIuc2hpZnQoKSx0PWUuZ2V0KCJFeHRHU3RhdGUiKTtpZih0IGluc3RhbmNlb2YgRGljdClmb3IobGV0IGUgb2YgdC5nZXRSYXdWYWx1ZXMoKSl7aWYoZSBpbnN0YW5jZW9mIFJlZil7aWYoYS5oYXMoZSkpY29udGludWU7dHJ5e2U9aS5mZXRjaChlKX1jYXRjaCh0KXthLnB1dChlKTtpbmZvKGBoYXNCbGVuZE1vZGVzIC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHt0fSIuYCk7Y29udGludWV9fWlmKCEoZSBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2Uub2JqSWQmJmEucHV0KGUub2JqSWQpO2NvbnN0IHQ9ZS5nZXQoIkJNIik7aWYodCBpbnN0YW5jZW9mIE5hbWUpe2lmKCJOb3JtYWwiIT09dC5uYW1lKXJldHVybiEwfWVsc2UgaWYodm9pZCAwIT09dCYmQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgZSBvZiB0KWlmKGUgaW5zdGFuY2VvZiBOYW1lJiYiTm9ybWFsIiE9PWUubmFtZSlyZXR1cm4hMH1jb25zdCBuPWUuZ2V0KCJYT2JqZWN0Iik7aWYobiBpbnN0YW5jZW9mIERpY3QpZm9yKGxldCBlIG9mIG4uZ2V0UmF3VmFsdWVzKCkpe2lmKGUgaW5zdGFuY2VvZiBSZWYpe2lmKGEuaGFzKGUpKWNvbnRpbnVlO3RyeXtlPWkuZmV0Y2goZSl9Y2F0Y2godCl7YS5wdXQoZSk7aW5mbyhgaGFzQmxlbmRNb2RlcyAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke3R9Ii5gKTtjb250aW51ZX19aWYoIShlIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpY29udGludWU7ZS5kaWN0Lm9iaklkJiZhLnB1dChlLmRpY3Qub2JqSWQpO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJighdC5vYmpJZHx8IWEuaGFzKHQub2JqSWQpKSl7ci5wdXNoKHQpO3Qub2JqSWQmJmEucHV0KHQub2JqSWQpfX19Zm9yKGNvbnN0IGUgb2YgYSl0LnB1dChlKTtyZXR1cm4hMX1hc3luYyBmZXRjaEJ1aWx0SW5DTWFwKGUpe2NvbnN0IHQ9dGhpcy5idWlsdEluQ01hcENhY2hlLmdldChl
101KTtpZih0KXJldHVybiB0O2xldCBhO2E9dGhpcy5vcHRpb25zLnVzZVdvcmtlckZldGNoP3tjTWFwRGF0YTphd2FpdCBmZXRjaEJpbmFyeURhdGEoYCR7dGhpcy5vcHRpb25zLmNNYXBVcmx9JHtlfS5iY21hcGApLGlzQ29tcHJlc3NlZDohMH06YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiRmV0Y2hCaW5hcnlEYXRhIix7dHlwZToiY01hcFJlYWRlckZhY3RvcnkiLG5hbWU6ZX0pO3RoaXMuYnVpbHRJbkNNYXBDYWNoZS5zZXQoZSxhKTtyZXR1cm4gYX1hc3luYyBmZXRjaFN0YW5kYXJkRm9udERhdGEoZSl7Y29uc3QgdD10aGlzLnN0YW5kYXJkRm9udERhdGFDYWNoZS5nZXQoZSk7aWYodClyZXR1cm4gbmV3IFN0cmVhbSh0KTtpZih0aGlzLm9wdGlvbnMudXNlU3lzdGVtRm9udHMmJiJTeW1ib2wiIT09ZSYmIlphcGZEaW5nYmF0cyIhPT1lKXJldHVybiBudWxsO2NvbnN0IGE9X3IoKVtlXTtsZXQgcjt0cnl7cj10aGlzLm9wdGlvbnMudXNlV29ya2VyRmV0Y2g/YXdhaXQgZmV0Y2hCaW5hcnlEYXRhKGAke3RoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsfSR7YX1gKTphd2FpdCB0aGlzLmhhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJGZXRjaEJpbmFyeURhdGEiLHt0eXBlOiJzdGFuZGFyZEZvbnREYXRhRmFjdG9yeSIsZmlsZW5hbWU6YX0pfWNhdGNoKGUpe3dhcm4oZSk7cmV0dXJuIG51bGx9dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuc2V0KGUscik7cmV0dXJuIG5ldyBTdHJlYW0ocil9YXN5bmMgYnVpbGRGb3JtWE9iamVjdChlLHQsYSxyLGksbixzLG8pe2NvbnN0e2RpY3Q6Y309dCxsPWxvb2t1cE1hdHJpeChjLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKSxoPWxvb2t1cE5vcm1hbFJlY3QoYy5nZXRBcnJheSgiQkJveCIpLG51bGwpO2xldCB1LGQ7Yy5oYXMoIk9DIikmJih1PWF3YWl0IHRoaXMucGFyc2VNYXJrZWRDb250ZW50UHJvcHMoYy5nZXQoIk9DIiksZSkpO3ZvaWQgMCE9PXUmJnIuYWRkT3AoQ3QsWyJPQyIsdV0pO2NvbnN0IGY9Yy5nZXQoIkdyb3VwIik7aWYoZil7ZD17bWF0cml4OmwsYmJveDpoLHNtYXNrOmEsaXNvbGF0ZWQ6ITEsa25vY2tvdXQ6ITF9O2xldCB0PW51bGw7aWYoaXNOYW1lKGYuZ2V0KCJTIiksIlRyYW5zcGFyZW5jeSIpKXtkLmlzb2xhdGVkPWYuZ2V0KCJJIil8fCExO2Qua25vY2tvdXQ9Zi5nZXQoIksiKXx8ITE7aWYoZi5oYXMoIkNTIikpe2NvbnN0IGE9dGhpcy5fZ2V0Q29sb3JTcGFjZShmLmdldFJhdygiQ1MiKSxlLHMpO3Q9YSBpbnN0YW5jZW9mIENvbG9yU3BhY2U/YTphd2FpdCB0aGlzLl9oYW5kbGVDb2xvclNwYWNlKGEpfX1pZihhPy5iYWNrZHJvcCl7dHx8PUNvbG9yU3BhY2VVdGlscy5yZ2I7YS5iYWNrZHJvcD10LmdldFJnYkhleChhLmJhY2tkcm9wLDApfXIuYWRkT3AoRHQsW2RdKX1jb25zdCBnPVtsJiZuZXcgRmxvYXQzMkFycmF5KGwpLCFmJiZoJiZuZXcgRmxvYXQzMkFycmF5KGgpfHxudWxsXTtyLmFkZE9wKFR0LGcpO2NvbnN0IHA9Yy5nZXQoIlJlc291cmNlcyIpO2F3YWl0IHRoaXMuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06dCx0YXNrOmkscmVzb3VyY2VzOnAgaW5zdGFuY2VvZiBEaWN0P3A6ZSxvcGVyYXRvckxpc3Q6cixpbml0aWFsU3RhdGU6bixwcmV2UmVmczpvfSk7ci5hZGRPcChPdCxb
101XSk7ZiYmci5hZGRPcChNdCxbZF0pO3ZvaWQgMCE9PXUmJnIuYWRkT3AodnQsW10pfV9zZW5kSW1nRGF0YShlLHQsYT0hMSl7Y29uc3Qgcj10P1t0LmJpdG1hcHx8dC5kYXRhLmJ1ZmZlcl06bnVsbDtyZXR1cm4gdGhpcy5wYXJzaW5nVHlwZTNGb250fHxhP3RoaXMuaGFuZGxlci5zZW5kKCJjb21tb25vYmoiLFtlLCJJbWFnZSIsdF0scik6dGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW2UsdGhpcy5wYWdlSW5kZXgsIkltYWdlIix0XSxyKX1hc3luYyBidWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmE9ITEsb3BlcmF0b3JMaXN0OnIsY2FjaGVLZXk6aSxsb2NhbEltYWdlQ2FjaGU6bixsb2NhbENvbG9yU3BhY2VDYWNoZTpzfSl7Y29uc3R7bWF4SW1hZ2VTaXplOm8saWdub3JlRXJyb3JzOmMsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6bH09dGhpcy5vcHRpb25zLHtkaWN0Omh9PXQsdT1oLm9iaklkLGQ9aC5nZXQoIlciLCJXaWR0aCIpLGY9aC5nZXQoIkgiLCJIZWlnaHQiKTtpZighZHx8Im51bWJlciIhPXR5cGVvZiBkfHwhZnx8Im51bWJlciIhPXR5cGVvZiBmKXt3YXJuKCJJbWFnZSBkaW1lbnNpb25zIGFyZSBtaXNzaW5nLCBvciBub3QgbnVtYmVycy4iKTtyZXR1cm59aWYoLTEhPT1vJiZkKmY+byl7Y29uc3QgZT0iSW1hZ2UgZXhjZWVkZWQgbWF4aW11bSBhbGxvd2VkIHNpemUgYW5kIHdhcyByZW1vdmVkLiI7aWYoIWMpdGhyb3cgbmV3IEVycm9yKGUpO3dhcm4oZSk7cmV0dXJufWxldCBnO2guaGFzKCJPQyIpJiYoZz1hd2FpdCB0aGlzLnBhcnNlTWFya2VkQ29udGVudFByb3BzKGguZ2V0KCJPQyIpLGUpKTtsZXQgcCxtLGI7aWYoaC5nZXQoIklNIiwiSW1hZ2VNYXNrIil8fCExKXtwPWF3YWl0IFBERkltYWdlLmNyZWF0ZU1hc2soe2ltYWdlOnQsaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6bCYmIXRoaXMucGFyc2luZ1R5cGUzRm9udH0pO2lmKHAuaXNTaW5nbGVPcGFxdWVQaXhlbCl7bT1YdDtiPVtdO3IuYWRkSW1hZ2VPcHMobSxiLGcpO2lmKGkpe2NvbnN0IGU9e2ZuOm0sYXJnczpiLG9wdGlvbmFsQ29udGVudDpnfTtuLnNldChpLHUsZSk7dSYmdGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLHUsZSl9cmV0dXJufWlmKHRoaXMucGFyc2luZ1R5cGUzRm9udCl7Yj1mdW5jdGlvbiBjb21waWxlVHlwZTNHbHlwaCh7ZGF0YTplLHdpZHRoOnQsaGVpZ2h0OmF9KXtpZih0PjFlM3x8YT4xZTMpcmV0dXJuIG51bGw7Y29uc3Qgcj1uZXcgVWludDhBcnJheShbMCwyLDQsMCwxLDAsNSw0LDgsMTAsMCw4LDAsMiwxLDBdKSxpPXQrMSxuPW5ldyBVaW50OEFycmF5KGkqKGErMSkpO2xldCBzLG8sYztjb25zdCBsPXQrNyYtOCxoPW5ldyBVaW50OEFycmF5KGwqYSk7bGV0IHU9MDtmb3IoY29uc3QgdCBvZiBlKXtsZXQgZT0xMjg7Zm9yKDtlPjA7KXtoW3UrK109dCZlPzA6MjU1O2U+Pj0xfX1sZXQgZD0wO3U9MDtpZigwIT09aFt1XSl7blswXT0xOysrZH1mb3Iobz0xO288dDtvKyspe2lmKGhbdV0hPT1oW3UrMV0pe25bb109aFt1XT8yOjE7KytkfXUrK31pZigwIT09aFt1XSl7bltvXT0yOysrZH1mb3Iocz0xO3M8YTtzKyspe3U9cypsO2M9cyppO2lmKGhbdS1sXSE9PWhbdV0pe25bY109aFt1XT8xOjg7KytkfWxldCBlPShoW3VdPzQ6MCkrKGhbdS1sXT84OjApO2ZvcihvPTE7bzx0O28rKyl7ZT0oZT4+MikrKGhbdSsxXT80OjApKyhoW3UtbCsxXT84OjApO2lmKHJbZV0pe25bYytvXT1yW2VdOysrZH11Kyt9aWYoaFt1LWxdIT09aFt1XSl7bltjK29dPWhbdV0/Mjo0OysrZH1pZihkPjFlMylyZXR1cm4gbnVsbH11PWwqKGEtMSk7Yz1zKmk7aWYoMCE9PWhbdV0pe25bY109ODsrK2R9Zm9yKG89MTtvPHQ7bysrKXtpZihoW3VdIT09aFt1KzFdKXtuW2Mrb109aFt1XT80Ojg7KytkfXUrK31pZigwIT09aFt1XSl7bltjK29dPTQ7KytkfWlmKGQ+MWUzKXJldHVybiBudWxsO2NvbnN0IGY9bmV3IEludDMyQXJyYXkoWzAsaSwtMSwwLC1pLDAsMCwwLDFdKSxnPVtdLHthOnAsYjptLGM6YixkOnksZTp3LGY6eH09KG5ldyBET01NYXRyaXgpLnNjYWxlU2VsZigxL3QsLTEvYSkudHJhbnNsYXRlU2VsZigwLC1hKTtmb3Iocz0wO2QmJnM8PWE7cysrKXtsZXQgZT1zKmk7Y29uc3QgYT1lK3Q7Zm9yKDtlPGEmJiFuW2VdOyllKys7aWYoZT09PWEpY29udGludWU7bGV0IHI9ZSVpLG89cztnLnB1c2goJHQscCpyK2Iqbyt3LG0qcit5Km8reCk7Y29uc3QgYz1lO2xldCBsPW5bZV07ZG97Y29uc3QgdD1mW2xdO2Rve2UrPXR9d2hpbGUoIW5bZV0pO2NvbnN0IGE9bltlXTtpZig1IT09YSYmMTAhPT1hKXtsPWE7bltlXT0wfWVsc2V7bD1hJjUxKmw+PjQ7bltlXSY9bD4+MnxsPDwyfXI9ZSVpO289ZS9pfDA7Zy5wdXNoKEd0LHAqcitiKm8rdyxtKnIreSpvK3gpO25bZV18fC0tZH13aGlsZShjIT09ZSk7LS1zfXJldHVyblt6dCxbbmV3IEZsb2F0MzJBcnJheShnKV0sbmV3IEZsb2F0MzJBcnJheShbMCwwLHQsYV0pXX0ocCk7aWYoYil7ci5hZGRJbWFnZU9wcyhxdCxiLGcpO3JldHVybn13YXJuKCJDYW5ub3QgY29tcGlsZSBUeXBlMyBnbHlwaC4iKTtyLmFkZEltYWdlT3BzKE50LFtwXSxnKTtyZXR1cm59Y29uc3QgZT1gbWFza18ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YDtyLmFkZERlcGVuZGVuY3koZSk7cC5kYXRhTGVuPXAuYml0bWFwP3Aud2lkdGgqcC5oZWlnaHQqNDpwLmRhdGEubGVuZ3RoO3RoaXMuX3NlbmRJbWdEYXRhKGUscCk7bT1OdDtiPVt7ZGF0YTplLHdpZHRoOnAud2lkdGgsaGVpZ2h0OnAuaGVpZ2h0LGludGVycG9sYXRlOnAuaW50ZXJwb2xhdGUsY291bnQ6MX1dO3IuYWRkSW1hZ2VPcHMobSxiLGcpO2lmKGkpe2NvbnN0IHQ9e29iaklkOmUsZm46bSxhcmdzOmIsb3B0aW9uYWxDb250ZW50Omd9O24uc2V0KGksdSx0KTt1JiZ0aGlzLl9yZWdpb25hbEltYWdlQ2FjaGUuc2V0KG51bGwsdSx0KX1yZXR1cm59Y29uc3QgeT1oLmhhcygiU01hc2siKXx8aC5oYXMoIk1hc2siKTtpZihhJiZkK2Y8MjAwJiYheSl7dHJ5e2NvbnN0IGk9bmV3IFBERkltYWdlKHt4cmVmOnRoaXMueHJlZixyZXM6ZSxpbWFnZTp0LGlzSW5saW5lOmEscGRmRnVuY3Rpb25GYWN0b3J5OnRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6c30pO3A9YXdhaXQgaS5jcmVhdGVJbWFnZURhdGEoITAsITEpO3IuYWRkSW1hZ2VPcHMoTHQsW3BdLGcpfWNhdGNoKGUpe2NvbnN0IHQ9YFVuYWJsZSB0byBkZWNvZGUgaW5saW5lIGltYWdlOiAiJHtlfSIuYDtpZighYyl0aHJvdyBuZXcgRXJyb3IodCk7d2Fybih0KX1yZXR1cm59bGV0IHc9YGltZ18ke3RoaXMuaWRGYWN0b3J5LmNyZWF0ZU9iaklkKCl9YCx4PSExLFM9bnVsbDtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpdz1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke3d9YDtlbHNlIGlmKGkmJnUpe3g9dGhpcy5nbG9iYWxJbWFnZUNhY2hlLnNob3VsZENhY2hlKHUsdGhpcy5wYWdlSW5kZXgpO2lmKHgpe2Fzc2VydCghYSwiQ2Fubm90IGNhY2hlIGFuIGlubGluZSBpbWFnZSBnbG9iYWxseS4iKTt3PWAke3RoaXMuaWRGYWN0b3J5LmdldERvY0lkKCl9XyR7d31gfX1yLmFkZERlcGVuZGVuY3kodyk7bT1FdDtiPVt3LGQsZl07ci5hZGRJbWFnZU9wcyhtLGIsZyx5KTtpZih4KXtTPXtvYmpJZDp3LGZuOm0sYXJnczpiLG9wdGlvbmFsQ29udGVudDpnLGhhc01hc2s6eSxieXRlU2l6ZTowfTtpZih0aGlzLmdsb2JhbEltYWdlQ2FjaGUuaGFzRGVjb2RlRmFpbGVkKHUpKXt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSh1LFMpO3RoaXMuX3NlbmRJbWdEYXRhKHcsbnVsbCx4KTtyZXR1cm59aWYoZCpmPjI1ZTR8fHkpe2NvbnN0IGU9YXdhaXQgdGhpcy5oYW5kbGVyLnNlbmRXaXRoUHJvbWlzZSgiY29tbW9ub2JqIixbdywiQ29weUxvY2FsSW1hZ2UiLHtpbWFnZVJlZjp1fV0
101pO2lmKGUpe3RoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5zZXREYXRhKHUsUyk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmFkZEJ5dGVTaXplKHUsZSk7cmV0dXJufX19UERGSW1hZ2UuYnVpbGRJbWFnZSh7eHJlZjp0aGlzLnhyZWYscmVzOmUsaW1hZ2U6dCxpc0lubGluZTphLHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGxvY2FsQ29sb3JTcGFjZUNhY2hlOnN9KS50aGVuKGFzeW5jIGU9PntwPWF3YWl0IGUuY3JlYXRlSW1hZ2VEYXRhKCExLGwpO3AuZGF0YUxlbj1wLmJpdG1hcD9wLndpZHRoKnAuaGVpZ2h0KjQ6cC5kYXRhLmxlbmd0aDtwLnJlZj11O3gmJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5hZGRCeXRlU2l6ZSh1LHAuZGF0YUxlbik7cmV0dXJuIHRoaXMuX3NlbmRJbWdEYXRhKHcscCx4KX0pLmNhdGNoKGU9Pnt3YXJuKGBVbmFibGUgdG8gZGVjb2RlIGltYWdlICIke3d9IjogIiR7ZX0iLmApO3UmJnRoaXMuZ2xvYmFsSW1hZ2VDYWNoZS5hZGREZWNvZGVGYWlsZWQodSk7cmV0dXJuIHRoaXMuX3NlbmRJbWdEYXRhKHcsbnVsbCx4KX0pO2lmKGkpe2NvbnN0IGU9e29iaklkOncsZm46bSxhcmdzOmIsb3B0aW9uYWxDb250ZW50OmcsaGFzTWFzazp5fTtuLnNldChpLHUsZSk7aWYodSl7dGhpcy5fcmVnaW9uYWxJbWFnZUNhY2hlLnNldChudWxsLHUsZSk7aWYoeCl7YXNzZXJ0KFMsIlRoZSBnbG9iYWwgY2FjaGUtZGF0YSBtdXN0IGJlIGF2YWlsYWJsZS4iKTt0aGlzLmdsb2JhbEltYWdlQ2FjaGUuc2V0RGF0YSh1LFMpfX19fWhhbmRsZVNNYXNrKGUsdCxhLHIsaSxuLHMpe2NvbnN0IG89ZS5nZXQoIkciKSxjPXtzdWJ0eXBlOmUuZ2V0KCJTIikubmFtZSxiYWNrZHJvcDplLmdldCgiQkMiKX0sbD1lLmdldCgiVFIiKTtpZihpc1BERkZ1bmN0aW9uKGwpKXtjb25zdCBlPXRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeS5jcmVhdGUobCksdD1uZXcgVWludDhBcnJheSgyNTYpLGE9bmV3IEZsb2F0MzJBcnJheSgxKTtmb3IobGV0IHI9MDtyPDI1NjtyKyspe2FbMF09ci8yNTU7ZShhLDAsYSwwKTt0W3JdPTI1NSphWzBdfDB9Yy50cmFuc2Zlck1hcD10fXJldHVybiB0aGlzLmJ1aWxkRm9ybVhPYmplY3QodCxvLGMsYSxyLGkuc3RhdGUuY2xvbmUoe25ld1BhdGg6ITB9KSxuLHMpfWhhbmRsZVRyYW5zZmVyRnVuY3Rpb24oZSl7bGV0IHQ7aWYoQXJyYXkuaXNBcnJheShlKSl0PWU7ZWxzZXtpZighaXNQREZGdW5jdGlvbihlKSlyZXR1cm4gbnVsbDt0PVtlXX1jb25zdCBhPVtdO2xldCByPTAsaT0wO2Zvcihjb25zdCBlIG9mIHQpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoSWZSZWYoZSk7cisrO2lmKGlzTmFtZSh0LCJJZGVudGl0eSIpKXthLnB1c2gobnVsbCk7Y29udGludWV9aWYoIWlzUERGRnVuY3Rpb24odCkpcmV0dXJuIG51bGw7Y29uc3Qgbj10aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnkuY3JlYXRlKHQpLHM9bmV3IFVpbnQ4QXJyYXkoMjU2KSxvPW5ldyBGbG9hdDMyQXJyYXkoMSk7Zm9yKGxldCBlPTA7ZTwyNTY7ZSsrKXtvWzBdPWUvMjU1O24obywwLG8sMCk7c1tlXT0yNTUqb1swXXwwfWEucHVzaChzKTtpKyt9cmV0dXJuIDEhPT1yJiY0IT09cnx8MD09PWk/bnVsbDphfWhhbmRsZVRpbGluZ1R5cGUoZSx0LGEscixpLG4scyxvKXtjb25zdCBjPW5ldyBPcGVyYXRvckxpc3QsbD1EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6W2kuZ2V0KCJSZXNvdXJjZXMiKSxhXX0pO3JldHVybiB0aGlzLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnIsdGFzazpzLHJlc291cmNlczpsLG9wZXJhdG9yTGlzdDpjfSkudGhlbihmdW5jdGlvbigpe2NvbnN0IGE9Yy5nZXRJUigpLHI9Z2V0VGlsaW5nUGF0dGVybklSKGEsaSx0KTtuLmFkZERlcGVuZGVuY2llcyhjLmRlcGVuZGVuY2llcyk7bi5hZGRPcChlLHIpO2kub2JqSWQmJm8uc2V0KG51bGwsaS5vYmpJZCx7b3BlcmF0b3JMaXN0SVI6YSxkaWN0Oml9KX0pLmNhdGNoKGU9PntpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgaGFuZGxlVGlsaW5nVHlwZSAtIGlnbm9yaW5nIHBhdHRlcm46ICIke2V9Ii5gKX19KX1hc3luYyBoYW5kbGVTZXRGb250KGUsdCxhLHIsaSxuLHM9bnVsbCxvPW51bGwpe2NvbnN0IGM9dD8uWzBdaW5zdGFuY2VvZiBOYW1lP3RbMF0ubmFtZTpudWxsLGw9YXdhaXQgdGhpcy5sb2FkRm9udChjLGEsZSxpLHMsbyk7bC5mb250LmlzVHlwZTNGb250JiZyLmFkZERlcGVuZGVuY2llcyhsLnR5cGUzRGVwZW5kZW5jaWVzKTtuLmZvbnQ9bC5mb250O2wuc2VuZCh0aGlzLmhhbmRsZXIpO3JldHVybiBsLmxvYWRlZE5hbWV9aGFuZGxlVGV4dChlLHQpe2NvbnN0IGE9dC5mb250LHI9YS5jaGFyc1RvR2x5cGhzKGUpO2lmKGEuZGF0YSl7KCEhKHQudGV4dFJlbmRlcmluZ01vZGUmdil8fCJQYXR0ZXJuIj09PXQuZmlsbENvbG9yU3BhY2UubmFtZXx8YS5kaXNhYmxlRm9udEZhY2UpJiZQYXJ0aWFsRXZhbHVhdG9yLmJ1aWxkRm9udFBhdGhzKGEscix0aGlzLmhhbmRsZXIsdGhpcy5vcHRpb25zKX1yZXR1cm4gcn1lbnN1cmVTdGF0ZUZvbnQoZSl7aWYoZS5mb250KXJldHVybjtjb25zdCB0PW5ldyBGb3JtYXRFcnJvcigiTWlzc2luZyBzZXRGb250IChUZikgb3BlcmF0b3IgYmVmb3JlIHRleHQgcmVuZGVyaW5nIG9wZXJhdG9yLiIpO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IHQ7d2FybihgZW5zdXJlU3RhdGVGb250OiAiJHt0fSIuYCl9YXN5bmMgc2V0R1N0YXRlKHtyZXNvdXJjZXM6ZSxnU3RhdGU6dCxvcGVyYXRvckxpc3Q6YSxjYWNoZUtleTpyLHRhc2s6aSxzdGF0ZU1hbmFnZXI6bixsb2NhbEdTdGF0ZUNhY2hlOnMsbG9jYWxDb2xvclNwYWNlQ2FjaGU6byxzZWVuUmVmczpjfSl7Y29uc3QgbD10Lm9iaklkO2xldCBoPSEwO2NvbnN0IHU9W107bGV0IGQ9UHJvbWlzZS5yZXNvbHZlKCk7Zm9yKGNvbnN0W3Isc11vZiB0KXN3aXRjaChyKXtjYXNlIlR5cGUiOmJyZWFrO2Nhc2UiTFciOmlmKCJudW1iZXIiIT10eXBlb2Ygcyl7d2FybihgSW52YWxpZCBMVyAobGluZSB3aWR0aCk6ICR7c31gKTticmVha311LnB1c2goW3IsTWF0aC5hYnMocyldKTt
101icmVhaztjYXNlIkxDIjpjYXNlIkxKIjpjYXNlIk1MIjpjYXNlIkQiOmNhc2UiUkkiOmNhc2UiRkwiOmNhc2UiQ0EiOmNhc2UiY2EiOnUucHVzaChbcixzXSk7YnJlYWs7Y2FzZSJGb250IjpoPSExO2Q9ZC50aGVuKCgpPT50aGlzLmhhbmRsZVNldEZvbnQoZSxudWxsLHNbMF0sYSxpLG4uc3RhdGUpLnRoZW4oZnVuY3Rpb24oZSl7YS5hZGREZXBlbmRlbmN5KGUpO3UucHVzaChbcixbZSxzWzFdXV0pfSkpO2JyZWFrO2Nhc2UiQk0iOnUucHVzaChbcixub3JtYWxpemVCbGVuZE1vZGUocyldKTticmVhaztjYXNlIlNNYXNrIjppZihpc05hbWUocywiTm9uZSIpKXt1LnB1c2goW3IsITFdKTticmVha31pZihzIGluc3RhbmNlb2YgRGljdCl7aD0hMTtkPWQudGhlbigoKT0+dGhpcy5oYW5kbGVTTWFzayhzLGUsYSxpLG4sbyxjKSk7dS5wdXNoKFtyLCEwXSl9ZWxzZSB3YXJuKCJVbnN1cHBvcnRlZCBTTWFzayB0eXBlIik7YnJlYWs7Y2FzZSJUUiI6Y29uc3QgdD10aGlzLmhhbmRsZVRyYW5zZmVyRnVuY3Rpb24ocyk7dS5wdXNoKFtyLHRdKTticmVhaztjYXNlIk9QIjpjYXNlIm9wIjpjYXNlIk9QTSI6Y2FzZSJCRyI6Y2FzZSJCRzIiOmNhc2UiVUNSIjpjYXNlIlVDUjIiOmNhc2UiVFIyIjpjYXNlIkhUIjpjYXNlIlNNIjpjYXNlIlNBIjpjYXNlIkFJUyI6Y2FzZSJUSyI6aW5mbygiZ3JhcGhpYyBzdGF0ZSBvcGVyYXRvciAiK3IpO2JyZWFrO2RlZmF1bHQ6aW5mbygiVW5rbm93biBncmFwaGljIHN0YXRlIG9wZXJhdG9yICIrcil9YXdhaXQgZDt1Lmxlbmd0aD4wJiZhLmFkZE9wKGJlLFt1XSk7aCYmcy5zZXQocixsLHUpfWxvYWRGb250KGUsdCxhLHIsaT1udWxsLG49bnVsbCl7Y29uc3QgZXJyb3JGb250PWFzeW5jKCk9Pm5ldyBUcmFuc2xhdGVkRm9udCh7bG9hZGVkTmFtZToiZ19mb250X2Vycm9yIixmb250Om5ldyBFcnJvckZvbnQoYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCksZGljdDp0fSk7bGV0IHM7aWYodCl0IGluc3RhbmNlb2YgUmVmJiYocz10KTtlbHNle2NvbnN0IHQ9YS5nZXQoIkZvbnQiKTt0JiYocz10LmdldFJhdyhlKSl9aWYocyl7aWYodGhpcy50eXBlM0ZvbnRSZWZzPy5oYXMocykpcmV0dXJuIGVycm9yRm9udCgpO2lmKHRoaXMuZm9udENhY2hlLmhhcyhzKSlyZXR1cm4gdGhpcy5mb250Q2FjaGUuZ2V0KHMpO3RyeXt0PXRoaXMueHJlZi5mZXRjaElmUmVmKHMpfWNhdGNoKGUpe3dhcm4oYGxvYWRGb250IC0gbG9va3VwIGZhaWxlZDogIiR7ZX0iLmApfX1pZighKHQgaW5zdGFuY2VvZiBEaWN0KSl7aWYoIXRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMmJiF0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe3dhcm4oYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUuYCk7cmV0dXJuIGVycm9yRm9udCgpfXdhcm4oYEZvbnQgIiR7ZX0iIGlzIG5vdCBhdmFpbGFibGUgLS0gYXR0ZW1wdGluZyB0byBmYWxsYmFjayB0byBhIGRlZmF1bHQgZm9udC5gKTt0PWl8fFBhcnRpYWxFdmFsdWF0b3IuZmFsbGJhY2tGb250RGljdH1pZih0LmNhY2hlS2V5JiZ0aGlzLmZvbnRDYWNoZS5oYXModC5jYWNoZUtleSkpcmV0dXJuIHRoaXMuZm9udENhY2hlLmdldCh0LmNhY2hlS2V5KTtjb25zdHtwcm9taXNlOm8scmVzb2x2ZTpjfT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTtsZXQgbDt0cnl7bD10aGlzLnByZUV2YWx1YXRlRm9udCh0KTtsLmNzc0ZvbnRJbmZvPW59Y2F0Y2goZSl7d2FybihgbG9hZEZvbnQgLSBwcmVFdmFsdWF0ZUZvbnQgZmFpbGVkOiAiJHtlfSIuYCk7cmV0dXJuIGVycm9yRm9udCgpfWNvbnN0e2Rlc2NyaXB0b3I6aCxoYXNoOnV9PWwsZD1zIGluc3RhbmNlb2YgUmVmO2xldCBmO2lmKHUmJmggaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPWguZm9udEFsaWFzZXN8fD1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGVbdV0pe2NvbnN0IHQ9ZVt1XS5hbGlhc1JlZjtpZihkJiZ0JiZ0aGlzLmZvbnRDYWNoZS5oYXModCkpe3RoaXMuZm9udENhY2hlLnB1dEFsaWFzKHMsdCk7cmV0dXJuIHRoaXMuZm9udENhY2hlLmdldChzKX19ZWxzZSBlW3VdPXtmb250SUQ6dGhpcy5pZEZhY3RvcnkuY3JlYXRlRm9udElkKCl9O2QmJihlW3VdLmFsaWFzUmVmPXMpO2Y9ZVt1XS5mb250SUR9ZWxzZSBmPXRoaXMuaWRGYWN0b3J5LmNyZWF0ZUZvbnRJZCgpO2Fzc2VydChmPy5zdGFydHNXaXRoKCJmIiksJ1RoZSAiZm9udElEIiBtdXN0IGJlIChjb3JyZWN0bHkpIGRlZmluZWQuJyk7aWYoZCl0aGlzLmZvbnRDYWNoZS5wdXQocyxvKTtlbHNle3QuY2FjaGVLZXk9YGNhY2hlS2V5XyR7Zn1gO3RoaXMuZm9udENhY2hlLnB1dCh0LmNhY2hlS2V5LG8pfXQubG9hZGVkTmFtZT1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV8ke2Z9YDt0aGlzLnRyYW5zbGF0ZUZvbnQobCkudGhlbihhc3luYyBlPT57Y29uc3QgaT1uZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6dC5sb2FkZWROYW1lLGZvbnQ6ZSxkaWN0OnR9KTtpZihlLmlzVHlwZTNGb250KXRyeXthd2FpdCBpLmxvYWRUeXBlM0RhdGEodGhpcyxhLHIpfWNhdGNoKGUpe3Rocm93IG5ldyBFcnJvcihgVHlwZTMgZm9udCBsb2FkIGVycm9yOiAke2V9YCl9YyhpKX0pLmNhdGNoKGU9Pnt3YXJuKGBsb2FkRm9udCAtIHRyYW5zbGF0ZUZvbnQgZmFpbGVkOiAiJHtlfSIuYCk7YyhuZXcgVHJhbnNsYXRlZEZvbnQoe2xvYWRlZE5hbWU6dC5sb2FkZWROYW1lLGZvbnQ6bmV3IEVycm9yRm9udChlPy5tZXNzYWdlKSxkaWN0OnR9KSl9KTtyZXR1cm4gb31idWlsZFBhdGgoZSx0LGEpe2NvbnN0e3BhdGhNaW5NYXg6cixwYXRoQnVmZmVyOml9PWE7c3dpdGNoKDB8ZSl7Y2FzZSBJZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFg9dFswXSxuPWEuY3VycmVudFBvaW50WT10WzFdLHM9dFsyXSxvPXRbM10sYz1lK3MsbD1uK287MD09PXN8fDA9PT1vP2kucHVzaCgkdCxlLG4sR3QsYyxsLEp0KTppLnB1c2goJHQsZSxuLEd0LGMsbixHdCxjLGwsR3QsZSxsLEp0KTtVdGlsLnJlY3RCb3VuZGluZ0JveChlLG4sYyxsLHIpO2JyZWFrfWNhc2UgU2U6e2NvbnN0IGU9YS5jdXJyZW50UG9pbnRYPXRbMF0sbj1hLmN1cnJlbnRQb2ludFk9dFsxXTtpLnB1c2goJHQsZSxuKTtVdGlsLnBvaW50Qm91bmRpbmdCb3goZSxuLHIpO2JyZWFrfWNhc2UgQWU6e2NvbnN0IGU9YS5jdXJyZW50UG9pbnRYPXRbMF0sbj1hLmN1cnJlbnRQb2ludFk9dFsxXTtpLnB1c2goR3QsZSxuKTtVdGlsLnBvaW50Qm91bmRpbmdCb3goZSxuLHIpO2JyZWFrfWNhc2Uga2U6e2NvbnN0IGU9YS5jdXJyZW50UG9pbnRYLG49YS5jdXJyZW50UG9pbnRZLFtzLG8sYyxsLGgsdV09dDthLmN1cnJlbnRQb2ludFg9aDthLmN1cnJlbnRQb2ludFk9dTtpLnB1c2goVnQscyxvLGMsbCxoLHUpO1V0aWwuYmV6aWVyQm91bmRpbmdCb3goZSxuLHMsbyxjLGwsaCx1LHIpO2JyZWFrfWNhc2UgQ2U6e2NvbnN0IGU9YS5jdXJyZW50UG9pbnRYLG49YS5jdXJyZW50UG9pbnRZLFtzLG8sYyxsXT10O2EuY3VycmVudFBvaW50WD1jO2EuY3VycmVudFBvaW50WT1sO2kucHVzaChWdCxlLG4scyxvLGMsbCk7VXRpbC5iZXppZXJCb3VuZGluZ0JveChlLG4sZSxuLHMsbyxjLGwscik7YnJlYWt9Y2FzZSB2ZTp7Y29uc3QgZT1hLmN1cnJlbnRQb2ludFgsbj1hLmN1cnJlbnRQb2ludFksW3MsbyxjLGxdPXQ7YS5jdXJyZW50UG9pbnRYPWM7YS5jdXJyZW50UG9pbnRZPWw7aS5wdXNoKFZ0LHMsbyxjLGwsYyxsKTtVdGlsLmJlemllckJvdW5kaW5nQm94KGUsbixzLG8sYyxsLGMsbCxyKTticmVha31jYXNlIEZlOmkucHVzaChKdCl9fV9nZXRDb2xvclNwYWNlKGUsdCxhKXtyZXR1cm4gQ29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczplLHhyZWY6dGhpcy54cmVmLHJlc291cmNlczp0LHBkZkZ1bmN0aW9uRmFjdG9yeTp0aGlzLl9wZGZGdW5jdGlvbkZhY3RvcnksZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGxvY2FsQ29sb3JTcGFjZUNhY2hlOmEsYXN5bmNJZk
1015vdENhY2hlZDohMH0pfWFzeW5jIF9oYW5kbGVDb2xvclNwYWNlKGUpe3RyeXtyZXR1cm4gYXdhaXQgZX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pcmV0dXJuIG51bGw7aWYodGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl7d2FybihgX2hhbmRsZUNvbG9yU3BhY2UgLSBpZ25vcmluZyBDb2xvclNwYWNlOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9dGhyb3cgZX19cGFyc2VTaGFkaW5nKHtzaGFkaW5nOmUscmVzb3VyY2VzOnQsbG9jYWxDb2xvclNwYWNlQ2FjaGU6YSxsb2NhbFNoYWRpbmdQYXR0ZXJuQ2FjaGU6cn0pe2xldCBpLG49ci5nZXQoZSk7aWYobilyZXR1cm4gbjt0cnl7aT1QYXR0ZXJuLnBhcnNlU2hhZGluZyhlLHRoaXMueHJlZix0LHRoaXMuX3BkZkZ1bmN0aW9uRmFjdG9yeSx0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxhKS5nZXRJUigpfWNhdGNoKHQpe2lmKHQgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbilyZXR1cm4gbnVsbDtpZih0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXt3YXJuKGBwYXJzZVNoYWRpbmcgLSBpZ25vcmluZyBzaGFkaW5nOiAiJHt0fSIuYCk7ci5zZXQoZSxudWxsKTtyZXR1cm4gbnVsbH10aHJvdyB0fW49YHBhdHRlcm5fJHt0aGlzLmlkRmFjdG9yeS5jcmVhdGVPYmpJZCgpfWA7dGhpcy5wYXJzaW5nVHlwZTNGb250JiYobj1gJHt0aGlzLmlkRmFjdG9yeS5nZXREb2NJZCgpfV90eXBlM18ke259YCk7ci5zZXQoZSxuKTtpZih0aGlzLnBhcnNpbmdUeXBlM0ZvbnQpe2NvbnN0IGU9W10sdD1QYXR0ZXJuSW5mby53cml0ZShpKTtlLnB1c2godCk7dGhpcy5oYW5kbGVyLnNlbmQoImNvbW1vbm9iaiIsW24sIlBhdHRlcm4iLHRdLGUpfWVsc2UgdGhpcy5oYW5kbGVyLnNlbmQoIm9iaiIsW24sdGhpcy5wYWdlSW5kZXgsIlBhdHRlcm4iLGldKTtyZXR1cm4gbn1oYW5kbGVDb2xvck4oZSx0LGEscixpLG4scyxvLGMsbCl7Y29uc3QgaD1hLnBvcCgpO2lmKGggaW5zdGFuY2VvZiBOYW1lKXtjb25zdCB1PWkuZ2V0UmF3KGgubmFtZSksZD11IGluc3RhbmNlb2YgUmVmJiZjLmdldEJ5UmVmKHUpO2lmKGQpdHJ5e2NvbnN0IGk9ci5iYXNlP3IuYmFzZS5nZXRSZ2JIZXgoYSwwKTpudWxsLG49Z2V0VGlsaW5nUGF0dGVybklSKGQub3BlcmF0b3JMaXN0SVIsZC5kaWN0LGkpO2UuYWRkT3AodCxuKTtyZXR1cm59Y2F0Y2h7fWNvbnN0IGY9dGhpcy54cmVmLmZldGNoSWZSZWYodSk7aWYoZil7Y29uc3QgaT1mIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9mLmRpY3Q6ZixoPWkuZ2V0KCJQYXR0ZXJuVHlwZSIpO2lmKGg9PT14bil7Y29uc3Qgbz1yLmJhc2U/ci5iYXNlLmdldFJnYkhleChhLDApOm51bGw7cmV0dXJuIHRoaXMuaGFuZGxlVGlsaW5nVHlwZSh0LG8sbixmLGksZSxzLGMpfWlmKGg9PT1Tbil7Y29uc3QgYT1pLmdldCgiU2hhZGluZyIpLHI9dGhpcy5wYXJzZVNoYWRpbmcoe3NoYWRpbmc6YSxyZXNvdXJjZXM6bixsb2NhbENvbG9yU3BhY2VDYWNoZTpvLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpsfSk7aWYocil7Y29uc3QgYT1sb29rdXBNYXRyaXgoaS5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7ZS5hZGRPcCh0LFsiU2hhZGluZyIscixhXSl9cmV0dXJufXRocm93IG5ldyBGb3JtYXRFcnJvcihgVW5rbm93biBQYXR0ZXJuVHlwZTogJHtofWApfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoYFVua25vd24gUGF0dGVybk5hbWU6ICR7aH1gKX1fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihlLHQsYSl7aWYoKyt0PjEwKXt3YXJuKCJWaXNpYmlsaXR5IGV4cHJlc3Npb24gaXMgdG9vIGRlZXBseSBuZXN0ZWQiKTtyZXR1cm59Y29uc3Qgcj1lLmxlbmd0aCxpPXRoaXMueHJlZi5mZXRjaElmUmVmKGVbMF0pO2lmKCEocjwyKSYmaSBpbnN0YW5jZW9mIE5hbWUpe3N3aXRjaChpLm5hbWUpe2Nhc2UiQW5kIjpjYXNlIk9yIjpjYXNlIk5vdCI6YS5wdXNoKGkubmFtZSk7YnJlYWs7ZGVmYXVsdDp3YXJuKGBJbnZhbGlkIG9wZXJhdG9yICR7aS5uYW1lfSBpbiB2aXNpYmlsaXR5IGV4cHJlc3Npb25gKTtyZXR1cm59Zm9yKGxldCBpPTE7aTxyO2krKyl7Y29uc3Qgcj1lW2ldLG49dGhpcy54cmVmLmZldGNoSWZSZWYocik7aWYoQXJyYXkuaXNBcnJheShuKSl7Y29uc3QgZT1bXTthLnB1c2goZSk7dGhpcy5fcGFyc2VWaXNpYmlsaXR5RXhwcmVzc2lvbihuLHQsZSl9ZWxzZSByIGluc3RhbmNlb2YgUmVmJiZhLnB1c2goci50b1N0cmluZygpKX19ZWxzZSB3YXJuKCJJbnZhbGlkIHZpc2liaWxpdHkgZXhwcmVzc2lvbiIpfWFzeW5jIHBhcnNlTWFya2VkQ29udGVudFByb3BzKGUsdCl7bGV0IGE7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2E9dC5nZXQoIlByb3BlcnRpZXMiKS5nZXQoZS5uYW1lKX1lbHNle2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiT3B0aW9uYWwgY29udGVudCBwcm9wZXJ0aWVzIG1hbGZvcm1lZC4iKTthPWV9Y29uc3Qgcj1hLmdldCgiVHlwZSIpPy5uYW1lO2lmKCJPQ0ciPT09cilyZXR1cm57dHlwZTpyLGlkOmEub2JqSWR9O2lmKCJPQ01EIj09PXIpe2NvbnN0IGU9YS5nZXQoIlZFIik7aWYoQXJyYXkuaXNBcnJheShlKSl7Y29uc3QgdD1bXTt0aGlzLl9wYXJzZVZpc2liaWxpdHlFeHByZXNzaW9uKGUsMCx0KTtpZih0Lmxlbmd0aD4wKXJldHVybnt0eXBlOiJPQ01EIixleHByZXNzaW9uOnR9fWNvbnN0IHQ9YS5nZXQoIk9DR3MiKTtpZihBcnJheS5pc0FycmF5KHQpfHx0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1bXTtpZihBcnJheS5pc0FycmF5KHQpKWZvcihjb25zdCBhIG9mIHQpZS5wdXNoKGEudG9TdHJpbmcoKSk7ZWxzZSBlLnB1c2godC5vYmpJZCk7cmV0dXJue3R5cGU6cixpZHM6ZSxwb2xpY3k6YS5nZXQoIlAiKWluc3RhbmNlb2YgTmFtZT9hLmdldCgiUCIpLm5hbWU6bnVsbCxleHByZXNzaW9uOm51bGx9fWlmKHQgaW5zdGFuY2VvZiBSZWYpcmV0dXJue3R5cGU6cixpZDp0LnRvU3RyaW5nKCl9fXJldHVybiBudWxsfWdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOmUsdGFzazp0LHJlc291cmNlczphLG9wZXJhdG9yTGlzdDpyLGluaXRpYWxTdGF0ZTppPW51bGwsZmFsbGJhY2tGb250RGljdDpuPW51bGwscHJldlJlZnM6cz1udWxsfSl7Y29uc3Qgbz1lLmRpY3Q/Lm9iaklkLGM9bmV3IFJlZlNldChzKTtpZihvKXtpZihzPy5oYXMobykpdGhyb3cgbmV3IEVycm9yKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBjaXJjdWxhciByZWZlcmVuY2U6ICR7b31gKTtjLnB1dChvKX1hfHw9RGljdC5lbXB0eTtpfHw9bmV3IEV2YWxTdGF0ZTtpZighcil0aHJvdyBuZXcgRXJyb3IoJ2dldE9wZXJhdG9yTGlzdDogbWlzc2luZyAib3BlcmF0b3JMaXN0IiBwYXJhbWV0ZXInKTtjb25zdCBsPXRoaXMsaD10aGlzLnhyZWYsdT1uZXcgTG9jYWxJbWFnZUNhY2hlLGQ9bmV3IExvY2FsQ29sb3JTcGFjZUNhY2hlLGY9bmV3IExvY2FsR1N0YXRlQ2FjaGUsZz1uZXcgTG9jYWxUaWxpbmdQYXR0ZXJuQ2FjaGUscD1uZXcgTWFwLG09YS5nZXQoIlhPYmplY3QiKXx8RGljdC5lbXB0eSxiPWEuZ2V0KCJQYXR0ZXJuIil8fERpY3QuZW1wdHkseT1uZXcgU3RhdGVNYW5hZ2VyKGkpLHc9bmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihlLGgseSkseD1uZXcgVGltZVNsb3RNYW5hZ2VyO2Z1bmN0aW9uIGNsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoZSl7Zm9yKGxldCBlPTAsdD13LnNhdmVkU3RhdGVzRGVwdGg7ZTx0O2UrKylyLmFkZE9wKHdlLFtdKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gcHJvbWlzZUJvZ
101HkoZSxpKXtjb25zdCBuZXh0PWZ1bmN0aW9uKHQpe1Byb21pc2UuYWxsKFt0LHIucmVhZHldKS50aGVuKGZ1bmN0aW9uKCl7dHJ5e3Byb21pc2VCb2R5KGUsaSl9Y2F0Y2goZSl7aShlKX19LGkpfTt0LmVuc3VyZU5vdFRlcm1pbmF0ZWQoKTt4LnJlc2V0KCk7Y29uc3Qgcz17fTtsZXQgbyxTLGssQyx2LEY7Zm9yKDshKG89eC5jaGVjaygpKTspe3MuYXJncz1udWxsO2lmKCF3LnJlYWQocykpYnJlYWs7bGV0IGU9cy5hcmdzLGk9cy5mbjtzd2l0Y2goMHxpKXtjYXNlIHh0OkY9ZVswXWluc3RhbmNlb2YgTmFtZTt2PWVbMF0ubmFtZTtpZihGKXtjb25zdCB0PXUuZ2V0QnlOYW1lKHYpO2lmKHQpe2FkZENhY2hlZEltYWdlT3BzKHIsdCk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsaSl7aWYoIUYpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IG11c3QgYmUgcmVmZXJyZWQgdG8gYnkgbmFtZS4iKTtsZXQgbj1tLmdldFJhdyh2KTtpZihuIGluc3RhbmNlb2YgUmVmKXtjb25zdCB0PXUuZ2V0QnlSZWYobil8fGwuX3JlZ2lvbmFsSW1hZ2VDYWNoZS5nZXRCeVJlZihuKXx8bC5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEobixsLnBhZ2VJbmRleCk7aWYodCl7YWRkQ2FjaGVkSW1hZ2VPcHMocix0KTtlKCk7cmV0dXJufW49aC5mZXRjaChuKX1pZighKG4gaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3Qgc2hvdWxkIGJlIGEgc3RyZWFtIik7Y29uc3Qgcz1uLmRpY3QuZ2V0KCJTdWJ0eXBlIik7aWYoIShzIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJYT2JqZWN0IHNob3VsZCBoYXZlIGEgTmFtZSBzdWJ0eXBlIik7aWYoIkZvcm0iIT09cy5uYW1lKWlmKCJJbWFnZSIhPT1zLm5hbWUpe2lmKCJQUyIhPT1zLm5hbWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBVbmhhbmRsZWQgWE9iamVjdCBzdWJ0eXBlICR7cy5uYW1lfWApO2luZm8oIklnbm9yZWQgWE9iamVjdCBzdWJ0eXBlIFBTIik7ZSgpfWVsc2UgbC5idWlsZFBhaW50SW1hZ2VYT2JqZWN0KHtyZXNvdXJjZXM6YSxpbWFnZTpuLG9wZXJhdG9yTGlzdDpyLGNhY2hlS2V5OnYsbG9jYWxJbWFnZUNhY2hlOnUsbG9jYWxDb2xvclNwYWNlQ2FjaGU6ZH0pLnRoZW4oZSxpKTtlbHNle3kuc2F2ZSgpO2wuYnVpbGRGb3JtWE9iamVjdChhLG4sbnVsbCxyLHQseS5zdGF0ZS5jbG9uZSh7bmV3UGF0aDohMH0pLGQsYykudGhlbihmdW5jdGlvbigpe3kucmVzdG9yZSgpO2UoKX0saSl9fSkuY2F0Y2goZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighbC5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIFhPYmplY3Q6ICIke2V9Ii5gKX19KSk7cmV0dXJuO2Nhc2UgemU6Y29uc3Qgcz1lWzFdO25leHQobC5oYW5kbGVTZXRGb250KGEsZSxudWxsLHIsdCx5LnN0YXRlLG4pLnRoZW4oZnVuY3Rpb24oZSl7ci5hZGREZXBlbmRlbmN5KGUpO3IuYWRkT3AoemUsW2Usc10pfSkpO3JldHVybjtjYXNlIHd0OmNvbnN0IG89ZVswXS5jYWNoZUtleTtpZihvKXtjb25zdCB0PXUuZ2V0QnlOYW1lKG8pO2lmKHQpe2FkZENhY2hlZEltYWdlT3BzKHIsdCk7ZT1udWxsO2NvbnRpbnVlfX1uZXh0KGwuYnVpbGRQYWludEltYWdlWE9iamVjdCh7cmVzb3VyY2VzOmEsaW1hZ2U6ZVswXSxpc0lubGluZTohMCxvcGVyYXRvckxpc3Q6cixjYWNoZUtleTpvLGxvY2FsSW1hZ2VDYWNoZTp1LGxvY2FsQ29sb3JTcGFjZUNhY2hlOmR9KSk7cmV0dXJuO2Nhc2UgWmU6aWYoIXkuc3RhdGUuZm9udCl7bC5lbnN1cmVTdGF0ZUZvbnQoeS5zdGF0ZSk7Y29udGludWV9ZVswXT1sLmhhbmRsZVRleHQoZVswXSx5LnN0YXRlKTticmVhaztjYXNlIFFlOmlmKCF5LnN0YXRlLmZvbnQpe2wuZW5zdXJlU3RhdGVGb250KHkuc3RhdGUpO2NvbnRpbnVlfWNvbnN0IHc9W10seD15LnN0YXRlO2Zvcihjb25zdCB0IG9mIGVbMF0pInN0cmluZyI9PXR5cGVvZiB0P3cucHVzaCguLi5sLmhhbmRsZVRleHQodCx4KSk6Im51bWJlciI9PXR5cGVvZiB0JiZ3LnB1c2godCk7ZVswXT13O2k9WmU7YnJlYWs7Y2FzZSBldDppZigheS5zdGF0ZS5mb250KXtsLmVuc3VyZVN0YXRlRm9udCh5LnN0YXRlKTtjb250aW51ZX1yLmFkZE9wKFllKTtlWzBdPWwuaGFuZGxlVGV4dChlWzBdLHkuc3RhdGUpO2k9WmU7YnJlYWs7Y2FzZSB0dDppZigheS5zdGF0ZS5mb250KXtsLmVuc3VyZVN0YXRlRm9udCh5LnN0YXRlKTtjb250aW51ZX1yLmFkZE9wKFllKTtyLmFkZE9wKHFlLFtlLnNoaWZ0KCldKTtyLmFkZE9wKFhlLFtlLnNoaWZ0KCldKTtlWzBdPWwuaGFuZGxlVGV4dChlWzBdLHkuc3RhdGUpO2k9WmU7YnJlYWs7Y2FzZSAkZTp5LnN0YXRlLnRleHRSZW5kZXJpbmdNb2RlPWVbMF07YnJlYWs7Y2FzZSBudDp7Y29uc3QgdD1sLl9nZXRDb2xvclNwYWNlKGVbMF0sYSxkKTtpZih0IGluc3RhbmNlb2YgQ29sb3JTcGFjZSl7eS5zdGF0ZS5maWxsQ29sb3JTcGFjZT10O2NvbnRpbnVlfW5leHQobC5faGFuZGxlQ29sb3JTcGFjZSh0KS50aGVuKGU9Pnt5LnN0YXRlLmZpbGxDb2xvclNwYWNlPWV8fENvbG9yU3BhY2VVdGlscy5ncmF5fSkpO3JldHVybn1jYXNlIGl0Ontjb25zdCB0PWwuX2dldENvbG9yU3BhY2UoZVswXSxhLGQpO2lmKHQgaW5zdGFuY2VvZiBDb2xvclNwYWNlKXt5LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9dDtjb250aW51ZX1uZXh0KGwuX2hhbmRsZUNvbG9yU3BhY2UodCkudGhlbihlPT57eS5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPWV8fENvbG9yU3BhY2VVdGlscy5ncmF5fSkpO3JldHVybn1jYXNlIGN0OkM9eS5zdGF0ZS5maWxsQ29sb3JTcGFjZTtlPVtDLmdldFJnYkhleChlLDApXTtpPWZ0O2JyZWFrO2Nhc2Ugc3Q6Qz15LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7ZT1bQy5nZXRSZ2JIZXgoZSwwKV07aT1kdDticmVhaztjYXNlIHV0Onkuc3RhdGUuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmdyYXk7ZT1bQ29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSGV4KGUsMCldO2k9ZnQ7YnJlYWs7Y2FzZSBodDp5LnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmdyYXk7ZT1bQ29sb3JTcGFjZVV0aWxzLmdyYXkuZ2V0UmdiSGV4KGUsMCldO2k9ZHQ7YnJlYWs7Y2FzZSBwd
101Dp5LnN0YXRlLmZpbGxDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5jbXlrO2U9W0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkhleChlLDApXTtpPWZ0O2JyZWFrO2Nhc2UgZ3Q6eS5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5jbXlrO2U9W0NvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkhleChlLDApXTtpPWR0O2JyZWFrO2Nhc2UgZnQ6eS5zdGF0ZS5maWxsQ29sb3JTcGFjZT1Db2xvclNwYWNlVXRpbHMucmdiO2U9W0NvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSGV4KGUsMCldO2JyZWFrO2Nhc2UgZHQ6eS5zdGF0ZS5zdHJva2VDb2xvclNwYWNlPUNvbG9yU3BhY2VVdGlscy5yZ2I7ZT1bQ29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JIZXgoZSwwKV07YnJlYWs7Y2FzZSBsdDpDPXkuc3RhdGUucGF0dGVybkZpbGxDb2xvclNwYWNlO2lmKCFDKXtpZihpc051bWJlckFycmF5KGUsbnVsbCkpe2U9W0NvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkhleChlLDApXTtpPWZ0O2JyZWFrfWU9W107aT1XdDticmVha31pZigiUGF0dGVybiI9PT1DLm5hbWUpe25leHQobC5oYW5kbGVDb2xvck4ocixsdCxlLEMsYixhLHQsZCxnLHApKTtyZXR1cm59ZT1bQy5nZXRSZ2JIZXgoZSwwKV07aT1mdDticmVhaztjYXNlIG90OkM9eS5zdGF0ZS5wYXR0ZXJuU3Ryb2tlQ29sb3JTcGFjZTtpZighQyl7aWYoaXNOdW1iZXJBcnJheShlLG51bGwpKXtlPVtDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JIZXgoZSwwKV07aT1kdDticmVha31lPVtdO2k9SHQ7YnJlYWt9aWYoIlBhdHRlcm4iPT09Qy5uYW1lKXtuZXh0KGwuaGFuZGxlQ29sb3JOKHIsb3QsZSxDLGIsYSx0LGQsZyxwKSk7cmV0dXJufWU9W0MuZ2V0UmdiSGV4KGUsMCldO2k9ZHQ7YnJlYWs7Y2FzZSBtdDpsZXQgVDt0cnl7Y29uc3QgdD1hLmdldCgiU2hhZGluZyIpO2lmKCF0KXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm8gc2hhZGluZyByZXNvdXJjZSBmb3VuZCIpO1Q9dC5nZXQoZVswXS5uYW1lKTtpZighVCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk5vIHNoYWRpbmcgb2JqZWN0IGZvdW5kIil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKWNvbnRpbnVlO2lmKGwub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIFNoYWRpbmc6ICIke2V9Ii5gKTtjb250aW51ZX10aHJvdyBlfWNvbnN0IE89bC5wYXJzZVNoYWRpbmcoe3NoYWRpbmc6VCxyZXNvdXJjZXM6YSxsb2NhbENvbG9yU3BhY2VDYWNoZTpkLGxvY2FsU2hhZGluZ1BhdHRlcm5DYWNoZTpwfSk7aWYoIU8pY29udGludWU7ZT1bT107aT1tdDticmVhaztjYXNlIGJlOkY9ZVswXWluc3RhbmNlb2YgTmFtZTt2PWVbMF0ubmFtZTtpZihGKXtjb25zdCB0PWYuZ2V0QnlOYW1lKHYpO2lmKHQpe3QubGVuZ3RoPjAmJnIuYWRkT3AoYmUsW3RdKTtlPW51bGw7Y29udGludWV9fW5leHQobmV3IFByb21pc2UoZnVuY3Rpb24oZSxpKXtpZighRil0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBtdXN0IGJlIHJlZmVycmVkIHRvIGJ5IG5hbWUuIik7Y29uc3Qgbj1hLmdldCgiRXh0R1N0YXRlIik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJFeHRHU3RhdGUgc2hvdWxkIGJlIGEgZGljdGlvbmFyeS4iKTtjb25zdCBzPW4uZ2V0KHYpO2lmKCEocyBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiR1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7bC5zZXRHU3RhdGUoe3Jlc291cmNlczphLGdTdGF0ZTpzLG9wZXJhdG9yTGlzdDpyLGNhY2hlS2V5OnYsdGFzazp0LHN0YXRlTWFuYWdlcjp5LGxvY2FsR1N0YXRlQ2FjaGU6Zixsb2NhbENvbG9yU3BhY2VDYWNoZTpkLHNlZW5SZWZzOmN9KS
10150aGVuKGUsaSl9KS5jYXRjaChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFsLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgRXh0R1N0YXRlOiAiJHtlfSIuYCl9fSkpO3JldHVybjtjYXNlIGhlOntjb25zdFt0XT1lO2lmKCJudW1iZXIiIT10eXBlb2YgdCl7d2FybihgSW52YWxpZCBzZXRMaW5lV2lkdGg6ICR7dH1gKTtjb250aW51ZX1lWzBdPU1hdGguYWJzKHQpO2JyZWFrfWNhc2UgZ2U6e2NvbnN0IHQ9ZVsxXTtpZigibnVtYmVyIiE9dHlwZW9mIHQpe3dhcm4oYEludmFsaWQgc2V0RGFzaDogJHt0fWApO2NvbnRpbnVlfWNvbnN0IGE9ZVswXTtpZighQXJyYXkuaXNBcnJheShhKSl7d2FybihgSW52YWxpZCBzZXREYXNoOiAke2F9YCk7Y29udGludWV9YS5zb21lKGU9PiJudW1iZXIiIT10eXBlb2YgZSkmJihlWzBdPWEuZmlsdGVyKGU9PiJudW1iZXIiPT10eXBlb2YgZSkpO2JyZWFrfWNhc2UgU2U6Y2FzZSBBZTpjYXNlIGtlOmNhc2UgQ2U6Y2FzZSB2ZTpjYXNlIEZlOmNhc2UgSWU6bC5idWlsZFBhdGgoaSxlLHkuc3RhdGUpO2NvbnRpbnVlO2Nhc2UgVGU6Y2FzZSBPZTpjYXNlIERlOmNhc2UgTWU6Y2FzZSBSZTpjYXNlIEJlOmNhc2UgTmU6Y2FzZSBQZTpjYXNlIEVlOntjb25zdHtzdGF0ZTp7cGF0aEJ1ZmZlcjplLHBhdGhNaW5NYXg6dH19PXk7aSE9PU9lJiZpIT09TmUmJmkhPT1QZXx8ZS5wdXNoKEp0KTtpZigwPT09ZS5sZW5ndGgpci5hZGRPcChxdCxbaSxbbnVsbF0sbnVsbF0pO2Vsc2V7ci5hZGRPcChxdCxbaSxbbmV3IEZsb2F0MzJBcnJheShlKV0sdC5zbGljZSgpXSk7ZS5sZW5ndGg9MDt0LnNldChbMS8wLDEvMCwtMS8wLC0xLzBdLDApfWNvbnRpbnVlfWNhc2UgSmU6ci5hZGRPcChpLFtuZXcgRmxvYXQzMkFycmF5KGUpXSk7Y29udGludWU7Y2FzZSBTdDpjYXNlIEF0OmNhc2UgRnQ6Y2FzZSBJdDpjb250aW51ZTtjYXNlIEN0OmlmKCEoZVswXWluc3RhbmNlb2YgTmFtZSkpe3dhcm4oYEV4cGVjdGVkIG5hbWUgZm9yIGJlZ2luTWFya2VkQ29udGVudFByb3BzIGFyZzA9JHtlWzBdfWApO3IuYWRkT3AoQ3QsWyJPQyIsbnVsbF0pO2NvbnRpbnVlfWlmKCJPQyI9PT1lWzBdLm5hbWUpe25leHQobC5wYXJzZU1hcmtlZENvbnRlbnRQcm9wcyhlWzFdLGEpLnRoZW4oZT0+e3IuYWRkT3AoQ3QsWyJPQyIsZV0pfSkuY2F0Y2goZT0+e2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIWwub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBiZWdpbk1hcmtlZENvbnRlbnRQcm9wczogIiR7ZX0iLmApO3IuYWRkT3AoQ3QsWyJPQyIsbnVsbF0pfX0pKTtyZXR1cm59ZT1bZVswXS5uYW1lLGVbMV1pbnN0YW5jZW9mIERpY3Q/ZVsxXS5nZXQoIk1DSUQiKTpudWxsXTticmVhaztkZWZhdWx0OmlmKG51bGwhPT1lKXtmb3IoUz0wLGs9ZS5sZW5ndGg7UzxrJiYhKGVbU11pbnN0YW5jZW9mIERpY3QpO1MrKyk7aWYoUzxrKXt3YXJuKCJnZXRPcGVyYXRvckxpc3QgLSBpZ25vcmluZyBvcGVyYXRvcjogIitpKTtjb250aW51ZX19fXIuYWRkT3AoaSxlKX1pZihvKW5leHQoQW4pO2Vsc2V7Y2xvc2VQZW5kaW5nUmVzdG9yZU9QUygpO2UoKX19KS5jYXRjaChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldE9wZXJhdG9yTGlzdCAtIGlnbm9yaW5nIGVycm9ycyBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApO2Nsb3NlUGVuZGluZ1Jlc3RvcmVPUFMoKX19KX1nZXRUZXh0Q29udGVudCh7c3RyZWFtOmUsdGFzazphLHJlc291cmNlczpyLHN0YXRlTWFuYWdlcjppPW51bGwsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bj0hMSxzaW5rOnMsc2VlblN0eWxlczpvPW5ldyBTZXQsdmlld0JveDpjLGxhbmc6bD1udWxsLG1hcmtlZENvbnRlbnREYXRhOmg9bnVsbCxkaXNhYmxlTm9ybWFsaXphdGlvbjp1PSExLGtlZXBXaGl0ZVNwYWNlOmQ9ITEscHJldlJlZnM6Zj1udWxsLGludGVyc2VjdG9yOmc9bnVsbH0pe2NvbnN0IHA9ZS5kaWN0Py5vYmpJZCxtPW5ldyBSZWZTZXQoZik7aWYocCl7aWYoZj8uaGFzKHApKXRocm93IG5ldyBFcnJvcihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBjaXJjdWxhciByZWZlcmVuY2U6ICR7cH1gKTttLnB1dChwKX1yfHw9RGljdC5lbXB0eTtpfHw9bmV3IFN0YXRlTWFuYWdlcihuZXcgVGV4dFN0YXRlKTtuJiYoaHx8PXtsZXZlbDowfSk7Y29uc3QgYj17aXRlbXM6W10sc3R5bGVzOk9iamVjdC5jcmVhdGUobnVsbCksbGFuZzpsfSx5PXtpbml0aWFsaXplZDohMSxzdHI6W10sdG90YWxXaWR0aDowLHRvdGFsSGVpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MCx2ZXJ0aWNhbDohMSxwcmV2VHJhbnNmb3JtOm51bGwsdGV4dEFkdmFuY2VTY2FsZTowLHNwYWNlSW5GbG93TWluOjAsc3BhY2VJbkZsb3dNYXg6MCx0cmFja2luZ1NwYWNlTWluOjEvMCxuZWdhdGl2ZVNwYWNlTWF4Oi0xLzAsbm90QVNwYWNlOi0xLzAsdHJhbnNmb3JtOm51bGwsZm9udE5hbWU6bnVsbCxoYXNFT0w6ITF9LHc9WyIgIiwiICJdO2xldCB4PTA7ZnVuY3Rpb24gc2F2ZUxhc3RDaGFyKGUpe2NvbnN0IHQ9KHgrMSklMixhPSIgIiE9PXdbeF0mJiIgIj09PXdbdF07d1t4XT1lO3g9dDtyZXR1cm4hZCYmYX1mdW5jdGlvbiBzaG91bGRBZGRXaGl0ZXBzYWNlKCl7cmV0dXJuIWQmJiIgIiE9PXdbeF0mJiIgIj09PXdbKHgrMSklMl19ZnVuY3Rpb24gcmVzZXRMYXN0Q2hhcnMoKXt3WzBdPXdbMV09IiAiO3g9MH1jb25zdCBTPXRoaXMsaz10aGlzLnhyZWYsQz1bXTtsZXQgdj1udWxsO2NvbnN0IEY9bmV3IExvY2FsSW1hZ2VDYWNoZSxUPW5ldyBMb2NhbEdTdGF0ZUNhY2hlLE89bmV3IEV2YWx1YXRvclByZXByb2Nlc3NvcihlLGssaSk7bGV0IEQ7ZnVuY3Rpb24gcHVzaFdoaXRlc3BhY2Uoe3dpZHRoOmU9MCxoZWlnaHQ6dD0wLHRyYW5zZm9ybTphPXkucHJldlRyYW5zZm9ybSxmb250TmFtZTpyPXkuZm9udE5hbWV9KXtnPy5hZGRFeHRyYUNoYXIoIiAiKTtiLml0ZW1zLnB1c2goe3N0cjoiICIsZGlyOiJsdHIiL
101HdpZHRoOmUsaGVpZ2h0OnQsdHJhbnNmb3JtOmEsZm9udE5hbWU6cixoYXNFT0w6ITF9KX1mdW5jdGlvbiBnZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpe2NvbnN0IGU9RC5mb250LGE9W0QuZm9udFNpemUqRC50ZXh0SFNjYWxlLDAsMCxELmZvbnRTaXplLDAsRC50ZXh0UmlzZV07aWYoZS5pc1R5cGUzRm9udCYmKEQuZm9udFNpemU8PTF8fGUuaXNDaGFyQkJveCkmJiFpc0FycmF5RXF1YWwoRC5mb250TWF0cml4LHQpKXtjb25zdCB0PWUuYmJveFszXS1lLmJib3hbMV07dD4wJiYoYVszXSo9dCpELmZvbnRNYXRyaXhbM10pfXJldHVybiBVdGlsLnRyYW5zZm9ybShELmN0bSxVdGlsLnRyYW5zZm9ybShELnRleHRNYXRyaXgsYSkpfWZ1bmN0aW9uIGVuc3VyZVRleHRDb250ZW50SXRlbSgpe2lmKHkuaW5pdGlhbGl6ZWQpcmV0dXJuIHk7Y29uc3R7Zm9udDplLGxvYWRlZE5hbWU6dH09RDtpZighby5oYXModCkpe28uYWRkKHQpO2Iuc3R5bGVzW3RdPXtmb250RmFtaWx5OmUuZmFsbGJhY2tOYW1lLGFzY2VudDplLmFzY2VudCxkZXNjZW50OmUuZGVzY2VudCx2ZXJ0aWNhbDplLnZlcnRpY2FsfTtpZihTLm9wdGlvbnMuZm9udEV4dHJhUHJvcGVydGllcyYmZS5zeXN0ZW1Gb250SW5mbyl7Y29uc3QgYT1iLnN0eWxlc1t0XTthLmZvbnRTdWJzdGl0dXRpb249ZS5zeXN0ZW1Gb250SW5mby5jc3M7YS5mb250U3Vic3RpdHV0aW9uTG9hZGVkTmFtZT1lLnN5c3RlbUZvbnRJbmZvLmxvYWRlZE5hbWV9fXkuZm9udE5hbWU9dDtjb25zdCBhPXkudHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCk7aWYoZS52ZXJ0aWNhbCl7eS53aWR0aD15LnRvdGFsV2lkdGg9TWF0aC5oeXBvdChhWzBdLGFbMV0pO3kuaGVpZ2h0PXkudG90YWxIZWlnaHQ9MDt5LnZlcnRpY2FsPSEwfWVsc2V7eS53aWR0aD15LnRvdGFsV2lkdGg9MDt5LmhlaWdodD15LnRvdGFsSGVpZ2h0PU1hdGguaHlwb3QoYVsyXSxhWzNdKTt5LnZlcnRpY2FsPSExfWNvbnN0IHI9TWF0aC5oeXBvdChELnRleHRMaW5lTWF0cml4WzBdLEQudGV4dExpbmVNYXRyaXhbMV0pLGk9TWF0aC5oeXBvdChELmN0bVswXSxELmN0bVsxXSk7eS50ZXh0QWR2YW5jZVNjYWxlPWkqcjtjb25zdHtmb250U2l6ZTpufT1EO3kudHJhY2tpbmdTcGFjZU1pbj0uMTAyKm47eS5ub3RBU3BhY2U9LjAzKm47eS5uZWdhdGl2ZVNwYWNlTWF4PS0uMipuO3kuc3BhY2VJbkZsb3dNaW49LjEwMipuO3kuc3BhY2VJbkZsb3dNYXg9LjYqbjt5Lmhhc0VPTD0hMTt5LmluaXRpYWxpemVkPSEwO3JldHVybiB5fWZ1bmN0aW9uIHVwZGF0ZUFkdmFuY2VTY2FsZSgpe2lmKCF5LmluaXRpYWxpemVkKXJldHVybjtjb25zdCBlPU1hdGguaHlwb3QoRC50ZXh0TGluZU1hdHJpeFswXSxELnRleHRMaW5lTWF0cml4WzFdKSx0PU1hdGguaHlwb3QoRC5jdG1bMF0sRC5jdG1bMV0pKmU7aWYodCE9PXkudGV4dEFkdmFuY2VTY2FsZSl7aWYoeS52ZXJ0aWNhbCl7eS50b3RhbEhlaWdodCs9eS5oZWlnaHQqeS50ZXh0QWR2YW5jZVNjYWxlO3kuaGVpZ2h0PTB9ZWxzZXt5LnRvdGFsV2lkdGgrPXkud2lkdGgqeS50ZXh0QWR2YW5jZVNjYWxlO3kud2lkdGg9MH15LnRleHRBZHZhbmNlU2NhbGU9dH19ZnVuY3Rpb24gcnVuQmlkaVRyYW5zZm9ybShlKXtsZXQgdD1lLnN0ci5qb2luKCIiKTt1fHwodD1mdW5jdGlvbiBub3JtYWxpemVVbmljb2RlKGUpe2lmKCFyYSl7cmE9LyhbXHUwMGEwXHUwMGI1XHUwMzdlXHUwZWIzXHUyMDAwLVx1MjAwYVx1MjAyZlx1MjEyNlx1ZmIwMC1cdWZiMDRcdWZiMDZcdWZiMjAtXHVmYjM2XHVmYjM4LVx1ZmIzY1x1ZmIzZVx1ZmI0MC1cdWZiNDFcdWZiNDMtXHVmYjQ0XHVmYjQ2LVx1ZmJhMVx1ZmJhNC1cdWZiYTlcdWZiYWUtXHVmYmIxXHVmYmQzLVx1ZmJkY1x1ZmJkZS1cdWZiZTdcdWZiZWEtXHVmYmY4XHVmYmZjLVx1ZmJmZFx1ZmMwMC1cdWZjNWRcdWZjNjQtXHVmY2YxXHVmY2Y1LVx1ZmQzZFx1ZmQ4OFx1ZmRmNFx1ZmRmYS1cdWZkZmJcdWZlNzFcdWZlNzdcdWZlNzlcdWZlN2JcdWZlN2RdKyl8KFx1ZmIwNSspL2d1O2lhPW5ldyBNYXAoW1si76yFIiwixb90Il1dKX1yZXR1cm4gZS5yZXBsYWNlQWxsKHJhLChlLHQsYSk9PnQ/dC5ub3JtYWxpemUoIk5GS0MiKTppYS5nZXQoYSkpfSh0KSk7Y29uc3QgYT1iaWRpKHQsLTEsZS52ZXJ0aWNhbCk7cmV0dXJue3N0cjphLnN0cixkaXI6YS5kaXIsd2lkdGg6TWF0aC5hYnMoZS50b3RhbFdpZHRoKSxoZWlnaHQ6TWF0aC5hYnMoZS50b3RhbEhlaWdodCksdHJhbnNmb3JtOmUudHJhbnNmb3JtLGZvbnROYW1lOmUuZm9udE5hbWUsaGFzRU9MOmUuaGFzRU9MfX1hc3luYyBmdW5jdGlvbiBoYW5kbGVTZXRGb250KGUsaSl7Y29uc3Qgbj1hd2FpdCBTLmxvYWRGb250KGUsaSxyLGEpO0QubG9hZGVkTmFtZT1uLmxvYWRlZE5hbWU7RC5mb250PW4uZm9udDtELmZvbnRNYXRyaXg9bi5mb250LmZvbnRNYXRyaXh8fHR9ZnVuY3Rpb24gYXBwbHlJbnZlcnNlUm90YXRpb24oZSx0LGEpe2NvbnN0IHI9TWF0aC5oeXBvdChhWzBdLGFbMV0pO3JldHVyblsoYVswXSplK2FbMV0qdCkvciwoYVsyXSplK2FbM10qdCkvcl19ZnVuY3Rpb24gY29tcGFyZVdpdGhMYXN0UG9zaXRpb24oZSl7Y29uc3QgdD1nZXRDdXJyZW50VGV4dFRyYW5zZm9ybSgpO2xldCBhPXRbNF0scj10WzVdO2lmKEQuZm9udD8udmVydGljYWwpe2lmKGE8Y1swXXx8YT5jWzJdfHxyK2U8Y1sxXXx8cj5jWzNdKXJldHVybiExfWVsc2UgaWYoYStlPGNbMF18fGE+Y1syXXx8cjxjWzFdfHxyPmNbM10pcmV0dXJuITE7aWYoIUQuZm9udHx8IXkucHJldlRyYW5zZm9ybSlyZXR1cm4hMDtsZXQgaT15LnByZXZUcmFuc2Zvcm1bNF0sbj15LnByZXZUcmFuc2Zvcm1bNV07aWYoaT09PWEmJm49PT1yKXJldHVybiEwO2xldCBzPS0xO3RbMF0mJjA9PT10WzFdJiYwPT09dFsyXT9zPXRbMF0+MD8wOjE4MDp0WzFdJiYwPT09dFswXSYmMD09PXRbM10mJihzPXRbMV0+MD85MDoyNzApO3N3aXRjaChzKXtjYXNlIDA6YnJlYWs7Y2FzZSA5MDpbYSxyXT1bcixhXTtbaSxuXT1bbixpXTticmVhaztjYXNlIDE4MDpbYSxyLGksbl09Wy1hLC1yLC1pLC1uXTticmVhaztjYXNlIDI3MDpbYSxyXT1bLXIsLWFdO1tpLG5dPVstbiwtaV07YnJlYWs7ZGVmYXVsdDpbYSxyXT1hcHBseUludmVyc2VSb3RhdGlvbihhLHIsdCk7W2ksbl09YXBwbHlJbnZlcnNlUm90YXRpb24oaSxuLHkucHJldlRyYW5zZm9ybSl9aWYoRC5mb250LnZlcnRpY2FsKXtjb25zdCBlPShuLXIpL3kudGV4dEFkdmFuY2VTY2FsZSx0PWEtaSxzPU1hdGguc2lnbih5LmhlaWdodCk7aWYoZTxzKnkubmVnYXRpdmVTcGFjZU1heCl7aWYoTWF0aC5hYnModCk+LjUqeS53aWR0aCl7YXBwZW5kRU9MKCk7cmV0dXJuITB9cmVzZXRMYXN0Q2hhcnMoKTtmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWlmKE1hdGguYWJzKHQpPnkud2lkdGgpe2FwcGVuZEVPTCgpO3JldHVybiEwfWU8PXMqeS5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYoZTw9cyp5LnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe2hlaWdodDpNYXRoLmFicyhlKX0pfWVsc2UgeS5oZWlnaHQrPWU7ZWxzZSBpZighYWRkRmFrZVNwYWNlcyhlLHkucHJldlRyYW5zZm9ybSxzKSlpZigwPT09eS5zdHIubGVuZ3RoKXtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNl
101KHtoZWlnaHQ6TWF0aC5hYnMoZSl9KX1lbHNlIHkuaGVpZ2h0Kz1lO01hdGguYWJzKHQpPi4yNSp5LndpZHRoJiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWNvbnN0IG89KGEtaSkveS50ZXh0QWR2YW5jZVNjYWxlLGw9ci1uLGg9TWF0aC5zaWduKHkud2lkdGgpO2lmKG88aCp5Lm5lZ2F0aXZlU3BhY2VNYXgpe2lmKE1hdGguYWJzKGwpPi41KnkuaGVpZ2h0KXthcHBlbmRFT0woKTtyZXR1cm4hMH1yZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cmV0dXJuITB9aWYoTWF0aC5hYnMobCk+eS5oZWlnaHQpe2FwcGVuZEVPTCgpO3JldHVybiEwfW88PWgqeS5ub3RBU3BhY2UmJnJlc2V0TGFzdENoYXJzKCk7aWYobzw9aCp5LnRyYWNraW5nU3BhY2VNaW4paWYoc2hvdWxkQWRkV2hpdGVwc2FjZSgpKXtyZXNldExhc3RDaGFycygpO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCk7cHVzaFdoaXRlc3BhY2Uoe3dpZHRoOk1hdGguYWJzKG8pfSl9ZWxzZSB5LndpZHRoKz1vO2Vsc2UgaWYoIWFkZEZha2VTcGFjZXMobyx5LnByZXZUcmFuc2Zvcm0saCkpaWYoMD09PXkuc3RyLmxlbmd0aCl7cmVzZXRMYXN0Q2hhcnMoKTtwdXNoV2hpdGVzcGFjZSh7d2lkdGg6TWF0aC5hYnMobyl9KX1lbHNlIHkud2lkdGgrPW87TWF0aC5hYnMobCk+LjI1KnkuaGVpZ2h0JiZmbHVzaFRleHRDb250ZW50SXRlbSgpO3JldHVybiEwfWZ1bmN0aW9uIGJ1aWxkVGV4dENvbnRlbnRJdGVtKHtjaGFyczplLGV4dHJhU3BhY2luZzp0fSl7Y29uc3QgYT1ELmZvbnQ7aWYoIWUpe2NvbnN0IGU9RC5jaGFyU3BhY2luZyt0O2UmJihhLnZlcnRpY2FsP0QudHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1lKTpELnRyYW5zbGF0ZVRleHRNYXRyaXgoZSpELnRleHRIU2NhbGUsMCkpO2QmJmNvbXBhcmVXaXRoTGFzdFBvc2l0aW9uKDApO3JldHVybn1jb25zdCByPWEuY2hhcnNUb0dseXBocyhlKSxpPUQuZm9udE1hdHJpeFswXSpELmZvbnRTaXplO2ZvcihsZXQgZT0wLG49ci5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgcz1yW2VdLHtjYXRlZ29yeTpvLG9yaWdpbmFsQ2hhckNvZGU6Y309cztpZihvLmlzSW52aXNpYmxlRm9ybWF0TWFyayljb250aW51ZTtsZXQgbD1ELmNoYXJTcGFjaW5nKyhlKzE9PT1uP3Q6MCksaD1zLndpZHRoO2EudmVydGljYWwmJihoPXMudm1ldHJpYz9zLnZtZXRyaWNbMF06LWgpO2xldCB1PWgqaTszMj09PWMmJihsKz1ELndvcmRTcGFjaW5nKTtpZighZCYmby5pc1doaXRlc3BhY2Upe2lmKGEudmVydGljYWwpe2wrPS11O0QudHJhbnNsYXRlVGV4dE1hdHJpeCgwLC1sKX1lbHNle2wrPXU7RC50cmFuc2xhdGVUZXh0TWF0cml4KGwqRC50ZXh0SFNjYWxlLDApfXNhdmVMYXN0Q2hhcigiICIpO2NvbnRpbnVlfWlmKCFvLmlzWmVyb1dpZHRoRGlhY3JpdGljJiYhY29tcGFyZVdpdGhMYXN0UG9zaXRpb24odSkpe2EudmVydGljYWw/RC50cmFuc2xhdGVUZXh0TWF0cml4KDAsdSk6RC50cmFuc2xhdGVUZXh0TWF0cml4KHUqRC50ZXh0SFNjYWxlLDApO2NvbnRpbnVlfWNvbnN0IGY9ZW5zdXJlVGV4dENvbnRlbnRJdGVtKCk7by5pc1plcm9XaWR0aERpYWNyaXRpYyYmKHU9MCk7aWYoYS52ZXJ0aWNhbCl7Zz8uYWRkR2x5cGgoZ2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSwwLHUscy51bmljb2RlKTtELnRyYW5zbGF0ZVRleHRNYXRyaXgoMCx1KTt1PU1hdGguYWJzKHUpO2YuaGVpZ2h0Kz11fWVsc2V7dSo9RC50ZXh0SFNjYWxlO2c/LmFkZEdseXBoKGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCksdSwwLHMudW5pY29kZSk7RC50cmFuc2xhdGVUZXh0TWF0cml4KHUsMCk7Zi53aWR0aCs9dX11JiYoZi5wcmV2VHJhbnNmb3JtPWdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCkpO2NvbnN0IHA9cy51bmljb2RlO2lmKHNhdmVMYXN0Q2hhcihwKSl7Zi5zdHIucHVzaCgiICIpO2c/LmFkZEV4dHJhQ2hhcigiICIpfWd8fGYuc3RyLnB1c2gocCk7bCYmKGEudmVydGljYWw/RC50cmFuc2xhdGVUZXh0TWF0cml4KDAsLWwpOkQudHJhbnNsYXRlVGV4dE1hdHJpeChsKkQudGV4dEhTY2FsZSwwKSl9fWZ1bmN0aW9uIGFwcGVuZEVPTCgpe2c/LmFkZEV4dHJhQ2hhcigiXG4iKTtyZXNldExhc3RDaGFycygpO2lmKHkuaW5pdGlhbGl6ZWQpe3kuaGFzRU9MPSEwO2ZsdXNoVGV4dENvbnRlbnRJdGVtKCl9ZWxzZSBiLml0ZW1zLnB1c2goe3N0cjoiIixkaXI6Imx0ciIsd2lkdGg6MCxoZWlnaHQ6MCx0cmFuc2Zvcm06Z2V0Q3VycmVudFRleHRUcmFuc2Zvcm0oKSxmb250TmFtZTpELmxvYWRlZE5hbWUsaGFzRU9MOiEwfSl9ZnVuY3Rpb24gYWRkRmFrZVNwYWNlcyhlLHQsYSl7aWYoYSp5LnNwYWNlSW5GbG93TWluPD1lJiZlPD1hKnkuc3BhY2VJbkZsb3dNYXgpe2lmKHkuaW5pdGlhbGl6ZWQpe3Jlc2V0TGFzdENoYXJzKCk7eS5zdHIucHVzaCgiICIpO2c/LmFkZEV4dHJhQ2hhcigiICIpfXJldHVybiExfWNvbnN0IHI9eS5mb250TmFtZTtsZXQgaT0wO2lmKHkudmVydGljYWwpe2k9ZTtlPTB9Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtyZXNldExhc3RDaGFycygpO3B1c2hXaGl0ZXNwYWNlKHt3aWR0aDpNYXRoLmFicyhlKSxoZWlnaHQ6TWF0aC5hYnMoaSksdHJhbnNmb3JtOnR8fGdldEN1cnJlbnRUZXh0VHJhbnNmb3JtKCksZm9udE5hbWU6cn0pO3JldHVybiEwfWZ1bmN0aW9uIGZsdXNoVGV4dENvbnRlbnRJdGVtKCl7aWYoeS5pbml0aWFsaXplZCYmeS5zdHIpe3kudmVydGljYWw/eS50b3RhbEhlaWdodCs9eS5oZWlnaHQqeS50ZXh0QWR2YW5jZVNjYWxlOnkudG90YWxXaWR0aCs9eS53aWR0aCp5LnRleHRBZHZhbmNlU2NhbGU7Yi5pdGVtcy5wdXNoKHJ1bkJpZGlUcmFuc2Zvcm0oeSkpO3kuaW5pdGlhbGl6ZWQ9ITE7eS5zdHIubGVuZ3RoPTB9fWZ1bmN0aW9uIGVucXVldWVDaHVuayhlPSExKXtjb25zdCB0PWIuaXRlbXMubGVuZ3RoO2lmKDAhPT10JiYhKGUmJnQ8MTApKXtzPy5lbnF1ZXVlKGIsdCk7Yi5pdGVtcz1bXTtiLnN0eWxlcz1PYmplY3QuY3JlYXRlKG51bGwpfX1jb25zdCBNPW5ldyBUaW1lU2xvdE1hbmFnZXI7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIHByb21pc2VCb2R5KGUsdCl7Y29uc3QgbmV4dD1mdW5jdGlvbihhKXtlbnF1ZXVlQ2h1bmsoITApO1Byb21pc2UuYWxsKFthLHM/LnJlYWR5XSkudGhlbihmdW5jdGlvbigpe3RyeXtwcm9taXNlQm9keShlLHQpfWNhdGNoKGUpe3QoZSl9fSx0KX07YS5lbnN1cmVOb3RUZXJtaW5hdGVkKCk7TS5yZXNldCgpO2NvbnN0IGY9e307bGV0IGcscCx5LHc9W107Zm9yKDshKGc9TS5jaGVjaygpKTspe3cubGVuZ3RoPTA7Zi5hcmdzPXc7aWYoIU8ucmVhZChmKSlicmVhaztjb25zdCBlPUQ7RD1pLnN0YXRlO2NvbnN0IHQ9Zi5mbjt3PWYuYXJncztzd2l0Y2goMHx0KXtjYXNlIHplOmNvbnN0IHQ9d1swXS5uYW1lLGY9d1sxXTtpZihELmZvbnQmJnQ9PT1ELmZvbnROYW1lJiZmPT09RC5mb250U2l6ZSlicmVhaztmbHVzaFRleHRDb250ZW50SXRlbSgpO0QuZm9udE5hbWU9dDtELmZvbnRTaXplPWY7bmV4dChoYW5kbGVTZXRGb250KHQsbnVsbCkpO3JldHVybjtjYXNlIEdlOkQudGV4dFJpc2U9d1swXTticmVhaztjYXNlIEhlOkQudGV4dEhTY2FsZT13WzBdLzEwMDticmVhaztjYXNlIFdlOkQubGVhZGluZz13WzBdO2JyZWFrO2Nhc2UgVmU6RC50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCh3WzBdLHdbMV0pO0QudGV4dE1hdHJpeD1ELnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBLZTpELmxlYWRpbmc9LXdbMV07RC50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCh3WzBdLHdbMV0pO0QudGV4dE1hdHJpeD1ELnRleHRMaW5lTWF0cml4LnNsaWNlKCk7YnJlYWs7Y2FzZSBZZTpELmNhcnJpYWdlUmV0dXJuKCk7YnJlYWs7Y2FzZSBKZTpELnNldFRleHRNYXRyaXgod1swXSx3WzFdLHdbMl0sd1szXSx3WzRdLHdbNV0pO0Quc2V0VGV4dExpbmVNYXRyaXgod1swXSx3WzFdLHdbMl0sd1szXSx3WzRdLHdbNV0pO3VwZGF0ZUFkdmFuY2VTY2FsZSgpO2JyZWFrO2Nhc2UgWGU6RC5jaGFyU3BhY2luZz13WzBdO2JyZWFrO2Nhc2UgcWU6RC53b3JkU3BhY2luZz13WzBdO2JyZWFrO2Nhc2UgVWU6RC50ZXh0TWF0cml4PWZhLnNsaWNlKCk7RC50ZXh0TGluZU1hdHJpeD1mYS5zbGljZSgpO2JyZWFrO2Nhc2UgUWU6aWYoIWkuc3RhdGUuZm9udCl7Uy5lbnN1cmVTdGF0ZUZvbnQoaS5zdGF0ZSk7Y29udGludWV9Y29uc3QgZz0oRC5mb250LnZlcnRpY2FsPzE6LTEpKkQuZm9udFNpemUvMWUzLHg9d1swXTtmb3IobGV0IGU9MCx0PXgubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9eFtlXTtpZigic3RyaW5nIj09dHlwZW9mIHQpQy5wdXNoKHQpO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiB0JiYwIT09dCl7Y29uc3QgZT1DLmpvaW4oIiIpO0MubGVuZ3RoPTA7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOmUsZXh0cmFTcGFjaW5nOnQqZ30pfX1pZihDLmxlbmd0aD4wKXtjb25zdCBlPUMuam9pbigiIik7Qy5sZW5ndGg9MDtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6ZSxleHRyYVNwYWNpbmc6MH0pfWJyZWFrO2Nhc2UgWmU6aWYoIWkuc3RhdGUuZm9udCl7Uy5lbnN1cmVTdGF0ZUZvbnQoaS5zdGF0ZSk7Y29udGludWV9YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOndbMF0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIGV0OmlmKCFpLnN0YXRlLmZvbnQpe1MuZW5zdXJlU3RhdGVGb250KGkuc3RhdGUpO2Nvbn
101RpbnVlfUQuY2FycmlhZ2VSZXR1cm4oKTtidWlsZFRleHRDb250ZW50SXRlbSh7Y2hhcnM6d1swXSxleHRyYVNwYWNpbmc6MH0pO2JyZWFrO2Nhc2UgdHQ6aWYoIWkuc3RhdGUuZm9udCl7Uy5lbnN1cmVTdGF0ZUZvbnQoaS5zdGF0ZSk7Y29udGludWV9RC53b3JkU3BhY2luZz13WzBdO0QuY2hhclNwYWNpbmc9d1sxXTtELmNhcnJpYWdlUmV0dXJuKCk7YnVpbGRUZXh0Q29udGVudEl0ZW0oe2NoYXJzOndbMl0sZXh0cmFTcGFjaW5nOjB9KTticmVhaztjYXNlIHh0OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7dj8/PXIuZ2V0KCJYT2JqZWN0Iil8fERpY3QuZW1wdHk7eT13WzBdaW5zdGFuY2VvZiBOYW1lO3A9d1swXS5uYW1lO2lmKHkmJkYuZ2V0QnlOYW1lKHApKWJyZWFrO25leHQobmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXtpZigheSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlhPYmplY3QgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2xldCBmPXYuZ2V0UmF3KHApO2lmKGYgaW5zdGFuY2VvZiBSZWYpe2lmKEYuZ2V0QnlSZWYoZikpe2UoKTtyZXR1cm59aWYoUy5nbG9iYWxJbWFnZUNhY2hlLmdldERhdGEoZixTLnBhZ2VJbmRleCkpe2UoKTtyZXR1cm59Zj1rLmZldGNoKGYpfWlmKCEoZiBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgYmUgYSBzdHJlYW0iKTtjb25zdHtkaWN0Omd9PWYsYj1nLmdldCgiU3VidHlwZSIpO2lmKCEoYiBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiWE9iamVjdCBzaG91bGQgaGF2ZSBhIE5hbWUgc3VidHlwZSIpO2lmKCJGb3JtIiE9PWIubmFtZSl7Ri5zZXQocCxnLm9iaklkLCEwKTtlKCk7cmV0dXJufWNvbnN0IHc9aS5zdGF0ZS5jbG9uZSgpLHg9bmV3IFN0YXRlTWFuYWdlcih3KSxDPWxvb2t1cE1hdHJpeChnLmdldEFycmF5KCJNYXRyaXgiKSxudWxsKTtDJiZ4LnRyYW5zZm9ybShDKTtjb25zdCBUPWcuZ2V0KCJSZXNvdXJjZXMiKTtlbnF1ZXVlQ2h1bmsoKTtjb25zdCBPPXtlbnF1ZXVlSW52b2tlZDohMSxlbnF1ZXVlKGUsdCl7dGhpcy5lbnF1ZXVlSW52b2tlZD0hMDtzLmVucXVldWUoZSx0KX0sZ2V0IGRlc2lyZWRTaXplKCl7cmV0dXJuIHMuZGVzaXJlZFNpemU/PzB9LGdldCByZWFkeSgpe3JldHVybiBzLnJlYWR5fX07Uy5nZXRUZXh0Q29udGVudCh7c3RyZWFtOmYsdGFzazphLHJlc291cmNlczpUIGluc3RhbmNlb2YgRGljdD9UOnIsc3RhdGVNYW5hZ2VyOngsaW5jbHVkZU1hcmtlZENvbnRlbnQ6bixzaW5rOnMmJk8sc2VlblN0eWxlczpvLHZpZXdCb3g6YyxsYW5nOmwsbWFya2VkQ29udGVudERhdGE6aCxkaXNhYmxlTm9ybWFsaXphdGlvbjp1LGtlZXBXaGl0ZVNwYWNlOmQscHJldlJlZnM6bX0pLnRoZW4oZnVuY3Rpb24oKXtPLmVucXVldWVJbnZva2VkfHxGLnNldChwLGcub2JqSWQsITApO2UoKX0sdCl9KS5jYXRjaChmdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbikpe2lmKCFTLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IGU7d2FybihgZ2V0VGV4dENvbnRlbnQgLSBpZ25vcmluZyBYT2JqZWN0OiAiJHtlfSIuYCl9fSkpO3JldHVybjtjYXNlIGJlOnk9d1swXWluc3RhbmNlb2YgTmFtZTtwPXdbMF0ubmFtZTtpZih5JiZULmdldEJ5TmFtZShwKSlicmVhaztuZXh0KG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7aWYoIXkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJHU3RhdGUgbXVzdCBiZSByZWZlcnJlZCB0byBieSBuYW1lLiIpO2NvbnN0IGE9ci5nZXQoIkV4dEdTdGF0ZSIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiRXh0R1N0YXRlIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkuIik7Y29uc3QgaT1hLmdldChwKTtpZighKGkgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkdTdGF0ZSBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LiIpO2NvbnN0IG49aS5nZXQoIkZvbnQiKTtpZihuKXtmbHVzaFRleHRDb250ZW50SXRlbSgpO0QuZm9udE5hbWU9bnVsbDtELmZvbnRTaXplPW5bMV07aGFuZGxlU2V0Rm9udChudWxsLG5bMF0pLnRoZW4oZSx0KX1lbHNle1Quc2V0KHAsaS5vYmpJZCwhMCk7ZSgpfX0pLmNhdGNoKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKSl7aWYoIVMub3B0aW9ucy5pZ25vcmVFcnJvcnMpdGhyb3cgZTt3YXJuKGBnZXRUZXh0Q29udGVudCAtIGlnbm9yaW5nIEV4dEdTdGF0ZTogIiR7ZX0iLmApfX0pKTtyZXR1cm47Y2FzZSBrdDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2gubGV2ZWwrKztiLml0ZW1zLnB1c2goe3R5cGU6ImJlZ2luTWFya2VkQ29udGVudCIsdGFnOndbMF1pbnN0YW5jZW9mIE5hbWU/d1swXS5uYW1lOm51bGx9KX1icmVhaztjYXNlIEN0OmZsdXNoVGV4dENvbnRlbnRJdGVtKCk7aWYobil7aC5sZXZlbCsrO2xldCBlPW51bGw7d1sxXWluc3RhbmNlb2YgRGljdCYmKGU9d1sxXS5nZXQoIk1DSUQiKSk7Yi5pdGVtcy5wdXNoKHt0eXBlOiJiZWdpbk1hcmtlZENvbnRlbnRQcm9wcyIsaWQ6TnVtYmVyLmlzSW50ZWdlcihlKT9gJHtTLmlkRmFjdG9yeS5nZXRQYWdlT2JqSWQoKX1fbWMke2V9YDpudWxsLHRhZzp3WzBdaW5zdGFuY2VvZiBOYW1lP3dbMF0ubmFtZTpudWxsfSl9YnJlYWs7Y2FzZSB2dDpmbHVzaFRleHRDb250ZW50SXRlbSgpO2lmKG4pe2lmKDA9PT1oLmxldmVsKWJyZWFrO2gubGV2ZWwtLTtiLml0ZW1zLnB1c2goe3R5cGU6ImVuZE1hcmtlZENvbnRlbnQifSl9YnJlYWs7Y2FzZSB3ZTohZXx8ZS5mb250PT09RC5mb250JiZlLmZvbnRTaXplPT09RC5mb250U2l6ZSYmZS5mb250TmFtZT09PUQuZm9udE5hbWV8fGZsdXNoVGV4dENvbnRlbnRJdGVtKCl9aWYoYi5pdGVtcy5sZW5ndGg+PShzPy5kZXNpcmVkU2l6ZT8/MSkpe2c9ITA7YnJlYWt9fWlmKGcpbmV4dChBbik7ZWxzZXtmbHVzaFRleHRDb250ZW50SXRlbSgpO2VucXVldWVDaHVuaygpO2UoKX19KS5jYXRjaChlPT57aWYoIShlIGluc3RhbmNlb2YgQWJvcnRFeGNlcHRpb24pKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldFRleHRDb250ZW50IC0gaWdub3JpbmcgZXJyb3JzIGR1cmluZyAiJHthLm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7Zmx1c2hUZXh0Q29udGVudEl0ZW0oKTtlbnF1ZXVlQ2h1bmsoKX19KX1hc3luYyBleHRyYWN0RGF0YVN0cnVjdHVyZXMoZSx0KXtjb25zdCBhPXRoaXMueHJlZjtsZXQgcjtjb25zdCBpPXRoaXMucmVhZFRvVW5pY29kZSh0LnRvVW5pY29kZSk7aWYodC5jb21wb3NpdGUpe2NvbnN0IGE9ZS5nZXQoIkNJRFN5c3RlbUluZm8iKTthIGluc3RhbmNlb2YgRGljdCYmIXQuY2lkU3lzdGVtSW5mbyYmKHQuY2lkU3lzdGVtSW5mbz17cmVnaXN0cnk6c3RyaW5nVG9QREZTdHJpbmcoYS5nZXQoIlJlZ2lzdHJ5IikpLG9yZGVyaW5nOnN0cmluZ1RvUERGU3RyaW5nKGEuZ2V0KCJPcmRlcmluZyIpKSxzdXBwbGVtZW50OmEuZ2V0KCJTdXBwbGVtZW50Iil9KTt0cnl7Y29uc3QgdD1lLmdldCgiQ0lEVG9HSURNYXAiKTt0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHI9dC5nZXRCeXRlcygpKX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGV4dHJhY3REYXRhU3RydWN0dXJlcyAtIGlnbm9yaW5nIENJRFRvR0lETWFwIGRhdGE6ICIke2V9Ii5gKX19Y29uc3Qgbj1bXTtsZXQgcyxvPW51bGw7aWYoZS5oYXMoIkVuY29kaW5nIikpe3M9ZS5nZXQoIkVuY29kaW5nIik7aWYocyBpbnN0YW5jZW9mIERpY3Qpe289cy5nZXQoIkJhc2VFbmNvZGluZyIpO289byBpbnN0YW5jZW9mIE5hbWU/by5uYW1lOm51bGw7aWYocy5oYXMoIkRpZmZlcmVuY2VzIikpe2NvbnN0IGU9cy5nZXQoIkRpZmZlcmVuY2VzIik7bGV0IHQ9MDtmb3IoY29uc3QgciBvZiBlKXtjb25zdCBlPWEuZmV0Y2hJZlJlZihyKTtpZigibnVtYmVyIj09dHlwZW9mIGUpdD1lO2Vsc2V7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIGVudHJ5IGluICdEaWZmZXJlbmNlcycgYXJyYXk6ICR7ZX1gKTtuW3QrK109ZS5uYW1lfX19fWVsc2UgaWYocyBpbnN0YW5jZW9mIE5hbWUpbz1zLm5hbWU7ZWxzZXtjb25zdCBlPSJFbmNvZGluZyBpcyBub3QgYSBOYW1lIG5vciBhIERpY3QiO2lmKCF0aGlzLm9wdGlvbnMuaWdub3JlRXJyb3JzKXRocm93IG5ldyBGb3JtYXRFcnJvcihlKTt3YXJuKGUpfSJ
101NYWNSb21hbkVuY29kaW5nIiE9PW8mJiJNYWNFeHBlcnRFbmNvZGluZyIhPT1vJiYiV2luQW5zaUVuY29kaW5nIiE9PW8mJihvPW51bGwpfWNvbnN0IGM9IXQuZmlsZXx8dC5pc0ludGVybmFsRm9udCxsPVhyKClbdC5uYW1lXTtvJiZjJiZsJiYobz1udWxsKTtpZigiV2luQW5zaUVuY29kaW5nIj09PW8mJmMmJnQubmFtZT8uY2hhckNvZGVBdCgwKT49MTgzKXtjb25zdCBlPXQubmFtZTtpZihbIsOLw47DjMOlIiwiwrrDmsOMw6UiLCLCv8Ksw4zDpSIsIsK3w4LDi8OOIiwiwr/CrMOMw6VfR0IyMzEyIiwiwrfDgsOLw45fR0IyMzEyIiwiw4HCpcOKw6kiLCLDkMOCw4vDjiJdLmluY2x1ZGVzKGUpKXtvPW51bGw7dC5kZWZhdWx0RW5jb2Rpbmc9IkFkb2JlLUdCMS1VQ1MyIjt0LmNvbXBvc2l0ZT0hMDt0LmNpZEVuY29kaW5nPU5hbWUuZ2V0KCJHQkstRVVDLUgiKTtjb25zdCBlPWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6dC5jaWRFbmNvZGluZyxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTt0LmNNYXA9ZTt0LnZlcnRpY2FsPXQuY01hcC52ZXJ0aWNhbDt0LmNpZFN5c3RlbUluZm89e3JlZ2lzdHJ5OiJBZG9iZSIsb3JkZXJpbmc6IkdCMSIsc3VwcGxlbWVudDowfX19aWYobyl0LmRlZmF1bHRFbmNvZGluZz1nZXRFbmNvZGluZyhvKTtlbHNle2xldCBlPSEhKHQuZmxhZ3MmQXIpO2NvbnN0IGE9ISEodC5mbGFncyZrcik7aWYoIlRydWVUeXBlIj09PXQudHlwZSYmZSYmYSYmMCE9PW4ubGVuZ3RoKXt0LmZsYWdzJj1+QXI7ZT0hMX1zPWxyOyJUcnVlVHlwZSIhPT10LnR5cGV8fGF8fChzPWhyKTtpZihlfHxsKXtzPWNyO2MmJigvU3ltYm9sL2kudGVzdCh0Lm5hbWUpP3M9dXI6L0RpbmdiYXRzL2kudGVzdCh0Lm5hbWUpP3M9ZHI6L1dpbmdkaW5ncy9pLnRlc3QodC5uYW1lKSYmKHM9aHIpKX10LmRlZmF1bHRFbmNvZGluZz1zfXQuZGlmZmVyZW5jZXM9bjt0LmJhc2VFbmNvZGluZ05hbWU9bzt0Lmhhc0VuY29kaW5nPSEhb3x8bi5sZW5ndGg+MDt0LmRpY3Q9ZTt0LnRvVW5pY29kZT1hd2FpdCBpO2NvbnN0IGg9YXdhaXQgdGhpcy5idWlsZFRvVW5pY29kZSh0KTt0LnRvVW5pY29kZT1oO3ImJih0LmNpZFRvR2lkTWFwPXRoaXMucmVhZENpZFRvR2lkTWFwKHIsaCkpO3JldHVybiB0fV9zaW1wbGVGb250VG9Vbmljb2RlKGUsdD0hMSl7YXNzZXJ0KCFlLmNvbXBvc2l0ZSwiTXVzdCBiZSBhIHNpbXBsZSBmb250LiIpO2NvbnN0IGE9W10scj1lLmRlZmF1bHRFbmNvZGluZy5zbGljZSgpLGk9ZS5iYXNlRW5jb2RpbmdOYW1lLG49ZS5kaWZmZXJlbmNlcztmb3IoY29uc3QgZSBpbiBuKXtjb25zdCB0PW5bZV07Ii5ub3RkZWYiIT09dCYmKHJbZV09dCl9Y29uc3Qgcz1mcigpO2Zvcihjb25zdCBuIGluIHIpe2xldCBvPXJbbl07aWYoIiI9PT1vKWNvbnRpbnVlO2xldCBjPXNbb107aWYodm9pZCAwIT09Yyl7YVtuXT1TdHJpbmcuZnJvbUNoYXJDb2RlKGMpO2NvbnRpbnVlfWxldCBsPTA7c3dpdGNoKG9bMF0pe2Nhc2UiRyI6Mz09PW8ubGVuZ3RoJiYobD1wYXJzZUludChvLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiZyI6NT09PW8ubGVuZ3RoJiYobD1wYXJzZUludChvLnN1YnN0cmluZygxKSwxNikpO2JyZWFrO2Nhc2UiQyI6Y2FzZSJjIjppZihvLmxlbmd0aD49MyYmby5sZW5ndGg8PTQpe2NvbnN0IGE9by5zdWJzdHJpbmcoMSk7aWYodCl7bD1wYXJzZUludChhLDE2KTticmVha31sPSthO2lmKE51bWJlci5pc05hTihsKSYmTnVtYmVyLmlzSW50ZWdlcihwYXJzZUludChhLDE2KSkpcmV0dXJuIHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSwhMCl9YnJlYWs7Y2FzZSJ1IjpjPWdldFVuaWNvZGVGb3JHbHlwaChvLHMpOy0xIT09YyYmKGw9Yyk7YnJlYWs7ZGVmYXVsdDpzd2l0Y2gobyl7Y2FzZSJmX2giOmNhc2UiZl90IjpjYXNlIlRfaCI6YVtuXT1vLnJlcGxhY2VBbGwoIl8iLCIiKTtjb250aW51ZX19aWYobD4wJiZsPD0xMTE0MTExJiZOdW1iZXIuaXNJbnRlZ2VyKGwpKXtpZihpJiZsPT09K24pe2NvbnN0IGU9Z2V0RW5jb2RpbmcoaSk7aWYoZSYmKG89ZVtuXSkpe2Fbbl09U3RyaW5nLmZyb21DaGFyQ29kZShzW29dKTtjb250aW51ZX19YVtuXT1TdHJpbmcuZnJvbUNvZGVQb2ludChsKX19cmV0dXJuIGF9YXN5bmMgYnVpbGRUb1VuaWNvZGUoZSl7ZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcD1lLnRvVW5pY29kZT8ubGVuZ3RoPjA7aWYoZS5oYXNJbmNsdWRlZFRvVW5pY29kZU1hcCl7IWUuY29tcG9zaXRlJiZlLmhhc0VuY29kaW5nJiYoZS5mYWxsYmFja1RvVW5pY29kZT10aGlzLl9zaW1wbGVGb250VG9Vbmljb2RlKGUpKTtyZXR1cm4gZS50b1VuaWNvZGV9aWYoIWUuY29tcG9zaXRlKXJldHVybi
101BuZXcgVG9Vbmljb2RlTWFwKHRoaXMuX3NpbXBsZUZvbnRUb1VuaWNvZGUoZSkpO2lmKGUuY29tcG9zaXRlJiYoZS5jTWFwLmJ1aWx0SW5DTWFwJiYhKGUuY01hcCBpbnN0YW5jZW9mIElkZW50aXR5Q01hcCl8fCJBZG9iZSI9PT1lLmNpZFN5c3RlbUluZm8/LnJlZ2lzdHJ5JiYoIkdCMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmd8fCJDTlMxIj09PWUuY2lkU3lzdGVtSW5mby5vcmRlcmluZ3x8IkphcGFuMSI9PT1lLmNpZFN5c3RlbUluZm8ub3JkZXJpbmd8fCJLb3JlYTEiPT09ZS5jaWRTeXN0ZW1JbmZvLm9yZGVyaW5nKSkpe2NvbnN0e3JlZ2lzdHJ5OnQsb3JkZXJpbmc6YX09ZS5jaWRTeXN0ZW1JbmZvLHI9TmFtZS5nZXQoYCR7dH0tJHthfS1VQ1MyYCksaT1hd2FpdCBDTWFwRmFjdG9yeS5jcmVhdGUoe2VuY29kaW5nOnIsZmV0Y2hCdWlsdEluQ01hcDp0aGlzLl9mZXRjaEJ1aWx0SW5DTWFwQm91bmQsdXNlQ01hcDpudWxsfSksbj1bXSxzPVtdO2UuY01hcC5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7aWYodD42NTUzNSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIk1heCBzaXplIG9mIENJRCBpcyA2NSw1MzUiKTtjb25zdCBhPWkubG9va3VwKHQpO2lmKGEpe3MubGVuZ3RoPTA7Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSs9MilzLnB1c2goKGEuY2hhckNvZGVBdChlKTw8OCkrYS5jaGFyQ29kZUF0KGUrMSkpO25bZV09U3RyaW5nLmZyb21DaGFyQ29kZSguLi5zKX19KTtyZXR1cm4gbmV3IFRvVW5pY29kZU1hcChuKX1yZXR1cm4gbmV3IElkZW50aXR5VG9Vbmljb2RlTWFwKGUuZmlyc3RDaGFyLGUubGFzdENoYXIpfWFzeW5jIHJlYWRUb1VuaWNvZGUoZSl7aWYoIWUpcmV0dXJuIG51bGw7aWYoZSBpbnN0YW5jZW9mIE5hbWUpe2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO3JldHVybiB0IGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwP25ldyBJZGVudGl0eVRvVW5pY29kZU1hcCgwLDY1NTM1KTpuZXcgVG9Vbmljb2RlTWFwKHQuZ2V0TWFwKCkpfWlmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXRyeXtjb25zdCB0PWF3YWl0IENNYXBGYWN0b3J5LmNyZWF0ZSh7ZW5jb2Rpbmc6ZSxmZXRjaEJ1aWx0SW5DTWFwOnRoaXMuX2ZldGNoQnVpbHRJbkNNYXBCb3VuZCx1c2VDTWFwOm51bGx9KTtpZih0IGluc3RhbmNlb2YgSWRlbnRpdHlDTWFwKXJldHVybiBuZXcgSWRlbnRpdHlUb1VuaWNvZGVNYXAoMCw2NTUzNSk7Y29uc3QgYT1uZXcgQXJyYXkodC5sZW5ndGgpO3QuZm9yRWFjaChmdW5jdGlvbihlLHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdCl7YVtlXT1TdHJpbmcuZnJvbUNvZGVQb2ludCh0KTtyZXR1cm59dC5sZW5ndGglMiE9MCYmKHQ9IlwwIit0KTtjb25zdCByPVtdO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9Mil7Y29uc3QgYT10LmNoYXJDb2RlQXQoZSk8PDh8dC5jaGFyQ29kZUF0KGUrMSk7aWYoNTUyOTYhPSg2MzQ4OCZhKSl7ci5wdXNoKGEpO2NvbnRpbnVlfWUrPTI7Y29uc3QgaT10LmNoYXJDb2RlQXQoZSk8PDh8dC5jaGFyQ29kZUF0KGUrMSk7ci5wdXNoKCgoMTAyMyZhKTw8MTApKygxMDIzJmkpKzY1NTM2KX1hW2VdPVN0cmluZy5mcm9tQ29kZVBvaW50KC4uLnIpfSk7cmV0dXJuIG5ldyBUb1VuaWNvZGVNYXAoYSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIEFib3J0RXhjZXB0aW9uKXJldHVybiBudWxsO2lmKHRoaXMub3B0aW9ucy5pZ25vcmVFcnJvcnMpe3dhcm4oYHJlYWRUb1VuaWNvZGUgLSBpZ25vcmluZyBUb1VuaWNvZGUgZGF0YTogIiR7ZX0iLmApO3JldHVybiBudWxsfXRocm93IGV9cmV0dXJuIG51bGx9cmVhZENpZFRvR2lkTWFwKGUsdCl7Y29uc3QgYT1bXTtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2NvbnN0IGk9ZVtyKytdPDw4fGVbcl0sbj1yPj4xOygwIT09aXx8dC5oYXMobikpJiYoYVtuXT1pKX1yZXR1cm4gYX1leHRyYWN0V2lkdGhzKGUsdCxhKXtjb25zdCByPXRoaXMueHJlZjtsZXQgaT1bXSxuPTA7Y29uc3Qgcz1bXTtsZXQgbztpZihhLmNvbXBvc2l0ZSl7Y29uc3QgdD1lLmdldCgiRFciKTtuPSJudW1iZXIiPT10eXBlb2YgdD9NYXRoLmNlaWwodCk6MWUzO2NvbnN0IGM9ZS5nZXQoIlciKTtpZihBcnJheS5pc0FycmF5KGMpKWZvcihsZXQgZT0wLHQ9Yy5sZW5ndGg7ZTx0O2UrKyl7bGV0IHQ9ci5mZXRjaElmUmVmKGNbZSsrXSk7aWYoIU51bWJlci5pc0ludGVnZXIodCkpYnJlYWs7Y29uc3QgYT1yLmZldGNoSWZSZWYoY1tlXSk7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IoY29uc3QgZSBvZiBhKXtjb25zdCBhPXIuZmV0Y2hJZlJlZihlKTsibnVtYmVyIj09dHlwZW9mIGEmJihpW3RdPWEpO3QrK31lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKWJyZWFrO3tjb25zdCBuPXIuZmV0Y2hJZlJlZihjWysrZV0pO2lmKCJudW1iZXIiIT10eXBlb2Ygbiljb250aW51ZTtmb3IobGV0IGU9dDtlPD1hO2UrKylpW2VdPW59fX1pZihhLnZlcnRpY2FsKXtjb25zdCB0PWUuZ2V0QXJyYXkoIkRXMiIpO2xldCBhPWlzTnVtYmVyQXJyYXkodCwyKT90Ols4ODAsLTFlM107bz1bYVsxXSwuNSpuLGFbMF1dO2E9ZS5nZXQoIlcyIik7aWYoQXJyYXkuaXNBcnJheShhKSlmb3IobGV0IGU9MCx0PWEubGVuZ3RoO2U8dDtlKyspe2xldCB0PXIuZmV0Y2hJZlJlZihhW2UrK10pO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKWJyZWFrO2NvbnN0IGk9ci5mZXRjaElmUmVmKGFbZV0pO2lmKEFycmF5LmlzQXJyYXkoaSkpZm9yKGxldCBlPTAsYT1pLmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPVtyLmZldGNoSWZSZWYoaVtlKytdKSxyLmZldGNoSWZSZWYoaVtlKytdKSxyLmZldGNoSWZSZWYoaVtlXSldO2lzTnVtYmVyQXJyYXkoYSxudWxsKSYmKHNbdF09YSk7dCsrfWVsc2V7aWYoIU51bWJlci5pc0ludGVnZXIoaSkpYnJlYWs7e2NvbnN0IG49W3IuZmV0Y2hJZlJlZihhWysrZV0pLHIuZmV0Y2hJZlJlZihhWysrZV0pLHIuZmV0Y2hJZlJlZihhWysrZV0pXTtpZighaXNOdW1iZXJBcnJheShuLG51bGwpKWNvbnRpbnVlO2ZvcihsZXQgZT10O2U8PWk7ZSsrKXNbZV09bn19fX19ZWxzZXtjb25zdCBzPWUuZ2V0KCJXaWR0aHMiKTtpZihBcnJheS5pc0FycmF
1015KHMpKXtsZXQgZT1hLmZpcnN0Q2hhcjtmb3IoY29uc3QgdCBvZiBzKXtjb25zdCBhPXIuZmV0Y2hJZlJlZih0KTsibnVtYmVyIj09dHlwZW9mIGEmJihpW2VdPWEpO2UrK31jb25zdCBvPXQuZ2V0KCJNaXNzaW5nV2lkdGgiKTtuPSJudW1iZXIiPT10eXBlb2Ygbz9vOjB9ZWxzZXtjb25zdCB0PWUuZ2V0KCJCYXNlRm9udCIpO2lmKHQgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPXRoaXMuZ2V0QmFzZUZvbnRNZXRyaWNzKHQubmFtZSk7aT10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKGUud2lkdGhzLGEpO249ZS5kZWZhdWx0V2lkdGh9fX1sZXQgYz0hMCxsPW47Zm9yKGNvbnN0IGUgaW4gaSl7Y29uc3QgdD1pW2VdO2lmKHQpaWYobCl7aWYobCE9PXQpe2M9ITE7YnJlYWt9fWVsc2UgbD10fWM/YS5mbGFnc3w9eHI6YS5mbGFncyY9fnhyO2EuZGVmYXVsdFdpZHRoPW47YS53aWR0aHM9aTthLmRlZmF1bHRWTWV0cmljcz1vO2Eudm1ldHJpY3M9c31pc1NlcmlmRm9udChlKXtjb25zdCB0PWUuc3BsaXQoIi0iLDEpWzBdO3JldHVybiB0IGluIGpyKCl8fC9zZXJpZi9naS50ZXN0KHQpfWdldEJhc2VGb250TWV0cmljcyhlKXtsZXQgdD0wLGE9T2JqZWN0LmNyZWF0ZShudWxsKSxyPSExO2xldCBpPUxyKClbZV18fGU7Y29uc3Qgbj16cigpO2kgaW4gbnx8KGk9dGhpcy5pc1NlcmlmRm9udChlKT8iVGltZXMtUm9tYW4iOiJIZWx2ZXRpY2EiKTtjb25zdCBzPW5baV07aWYoIm51bWJlciI9PXR5cGVvZiBzKXt0PXM7cj0hMH1lbHNlIGE9cygpO3JldHVybntkZWZhdWx0V2lkdGg6dCxtb25vc3BhY2U6cix3aWR0aHM6YX19YnVpbGRDaGFyQ29kZVRvV2lkdGgoZSx0KXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCkscj10LmRpZmZlcmVuY2VzLGk9dC5kZWZhdWx0RW5jb2Rpbmc7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKXQgaW4gciYmZVtyW3RdXT9hW3RdPWVbclt0XV06dCBpbiBpJiZlW2lbdF1dJiYoYVt0XT1lW2lbdF1dKTtyZXR1cm4gYX1wcmVFdmFsdWF0ZUZvbnQoZSl7Y29uc3QgdD1lO2xldCBhPWUuZ2V0KCJTdWJ0eXBlIik7aWYoIShhIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgU3VidHlwZSIpO2xldCByLGk9ITE7aWYoIlR5cGUwIj09PWEubmFtZSl7Y29uc3QgdD1lLmdldCgiRGVzY2VuZGFudEZvbnRzIik7aWYoIXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJEZXNjZW5kYW50IGZvbnRzIGFyZSBub3Qgc3BlY2lmaWVkIik7aWYoISgoZT1BcnJheS5pc0FycmF5KHQpP3RoaXMueHJlZi5mZXRjaElmUmVmKHRbMF0pOnQpaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkRlc2NlbmRhbnQgZm9udCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2E9ZS5nZXQoIlN1YnR5cGUiKTtpZighKGEgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZm9udCBTdWJ0eXBlIik7aT0hMH1sZXQgbj1lLmdldCgiRmlyc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihuKXx8KG49MCk7bGV0IHM9ZS5nZXQoIkxhc3RDaGFyIik7TnVtYmVyLmlzSW50ZWdlcihzKXx8KHM9aT82NTUzNToyNTUpO2NvbnN0IG89ZS5nZXQoIkZvbnREZXNjcmlwdG9yIiksYz1lLmdldCgiVG9Vbmljb2RlIil8fHQuZ2V0KCJUb1VuaWNvZGUiKTtpZihvKXtyPW5ldyBNdXJtdXJIYXNoM182NDtjb25zdCBhPXQuZ2V0UmF3KCJFbmNvZGluZyIpO2lmKGEgaW5zdGFuY2VvZiBOYW1lKXIudXBkYXRlKGEubmFtZSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgUmVmKXIudXBkYXRlKGEudG9TdHJpbmcoKSk7ZWxzZSBpZihhIGluc3RhbmNlb2YgRGljdClmb3IoY29uc3QgZSBvZiBhLmdldFJhd1ZhbHVlcygpKWlmKGUgaW5zdGFuY2VvZiBOYW1lKXIudXBkYXRlKGUubmFtZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgUmVmKXIudXBkYXRlKGUudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PWUubGVuZ3RoLGE9bmV3IEFycmF5KHQpO2ZvcihsZXQgcj0wO3I8dDtyKyspe2NvbnN0IHQ9ZVtyXTt0IGluc3RhbmNlb2YgTmFtZT9hW3JdPXQubmFtZTooIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmKGFbcl09dC50b1N0cmluZygpKX1yLnVwZGF0ZShhLmpvaW4oKSl9ci51cGRhdGUoYCR7bn0tJHtzfWApO2lmKGMgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPWMuc3RyZWFtfHxjLHQ9ZS5idWZmZXI/bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIuYnVmZmVyLDAsZS5idWZmZXJMZW5ndGgpOm5ldyBVaW50OEFycmF5KGUuYnl0ZXMuYnVmZmVyLGUuc3RhcnQsZS5lbmQtZS5zdGFydCk7ci51cGRhdGUodCl9ZWxzZSBjIGluc3RhbmNlb2YgTmFtZSYmci51cGRhdGUoYy5uYW1lKTtjb25zdCBvPWUuZ2V0KCJXaWR0aHMiKXx8dC5nZXQoIldpZHRocyIpO2lmKEFycmF5LmlzQXJyYXkobykpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgbykoIm51bWJlciI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgUmVmKSYmZS5wdXNoKHQudG9TdHJpbmcoKSk7ci51cGRhdGUoZS5qb2luKCkpfWlmKGkpe3IudXBkYXRlKCJjb21wb3NpdGVGb250Iik7Y29uc3QgYT1lLmdldCgiVyIpfHx0LmdldCgiVyIpO2lmKEFycmF5LmlzQXJyYXkoYSkpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYSlpZigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBSZWYpZS5wdXNoKHQudG9TdHJpbmcoKSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXtjb25zdCBhPVtdO2Zvcihjb25zdCBlIG9mIHQpKCJudW1iZXIiPT10eXBlb2YgZXx8ZSBpbnN0YW5jZW9mIFJlZikmJmEucHVzaChlLnRvU3RyaW5nKCkpO2UucHVzaChgWyR7YS5qb2luKCl9XWApfXIudXBkYXRlKGUuam9pbigpKX1jb25zdCBpPWUuZ2V0UmF3KCJDSURUb0dJRE1hcCIpfHx0LmdldFJhdygiQ0lEVG9HSURNYXAiKTtpIGluc3RhbmNlb2YgTmFtZT9yLnVwZGF0ZShpLm5hbWUpOmkgaW5zdGFuY2VvZiBSZWY/ci51cGRhdGUoaS50b1N0cmluZygpKTppIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmci51cGRhdGUoaS5wZWVrQnl0ZXMoKSl9fXJldHVybntkZXNjcmlwdG9yOm8sZGljdDplLGJhc2VEaWN0OnQsY29tcG9zaXRlOmksdHlwZTphLm5hbWUsZmlyc3RDaGFyOm4sbGFzdENoYXI6cyx0b1VuaWNvZGU6YyxoYXNoOnI/ci5oZXhkaWdlc3QoKToiIn19YXN5bmMgdHJhbnNsYXRlRm9udCh7ZGVzY3JpcHRvcjplLGRpY3Q6YSxiYXNlRGljdDpyLGNvbXBvc2l0ZTppLHR5cGU6bixmaXJzdENoYXI6cyxsYXN0Q2hhcjpvLHRvVW5pY29kZTpjLGNzc0ZvbnRJbmZvOmx9KXtjb25zdCBoPSJUeXBlMyI9PT1uO2lmKCFlKXtpZighaCl7bGV0IGU9YS5nZXQoIkJhc2VGb250Iik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJCYXNlIGZvbnQgaXMgbm90IHNwZWNpZmllZCIpO2U9ZS5uYW1lLnJlcGxhY2VBbGwoL1ssX10vZywiLSIpO2
101NvbnN0IHQ9dGhpcy5nZXRCYXNlRm9udE1ldHJpY3MoZSksaT1lLnNwbGl0KCItIiwxKVswXSxsPSh0aGlzLmlzU2VyaWZGb250KGkpP1NyOjApfCh0Lm1vbm9zcGFjZT94cjowKXwoWHIoKVtpXT9BcjprciksdT17dHlwZTpuLG5hbWU6ZSxsb2FkZWROYW1lOnIubG9hZGVkTmFtZSxzeXN0ZW1Gb250SW5mbzpudWxsLHdpZHRoczp0LndpZHRocyxkZWZhdWx0V2lkdGg6dC5kZWZhdWx0V2lkdGgsaXNTaW11bGF0ZWRGbGFnczohMCxmbGFnczpsLGZpcnN0Q2hhcjpzLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmMseEhlaWdodDowLGNhcEhlaWdodDowLGl0YWxpY0FuZ2xlOjAsaXNUeXBlM0ZvbnQ6aH0sZD1hLmdldCgiV2lkdGhzIiksZj1nZXRTdGFuZGFyZEZvbnROYW1lKGUpO2xldCBnPW51bGw7aWYoZil7Zz1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShmKTt1LmlzSW50ZXJuYWxGb250PSEhZ30hdS5pc0ludGVybmFsRm9udCYmdGhpcy5vcHRpb25zLnVzZVN5c3RlbUZvbnRzJiYodS5zeXN0ZW1Gb250SW5mbz1nZXRGb250U3Vic3RpdHV0aW9uKHRoaXMuc3lzdGVtRm9udENhY2hlLHRoaXMuaWRGYWN0b3J5LHRoaXMub3B0aW9ucy5zdGFuZGFyZEZvbnREYXRhVXJsLGUsZixuKSk7Y29uc3QgcD1hd2FpdCB0aGlzLmV4dHJhY3REYXRhU3RydWN0dXJlcyhhLHUpO2lmKEFycmF5LmlzQXJyYXkoZCkpe2NvbnN0IGU9W107bGV0IHQ9cztmb3IoY29uc3QgYSBvZiBkKXtjb25zdCByPXRoaXMueHJlZi5mZXRjaElmUmVmKGEpOyJudW1iZXIiPT10eXBlb2YgciYmKGVbdF09cik7dCsrfXAud2lkdGhzPWV9ZWxzZSBwLndpZHR
101ocz10aGlzLmJ1aWxkQ2hhckNvZGVUb1dpZHRoKHQud2lkdGhzLHApO3JldHVybiBuZXcgRm9udChlLGcscCx0aGlzLm9wdGlvbnMpfWU9RGljdC5lbXB0eX1sZXQgdT1lLmdldCgiRm9udE5hbWUiKSxkPWEuZ2V0KCJCYXNlRm9udCIpOyJzdHJpbmciPT10eXBlb2YgdSYmKHU9TmFtZS5nZXQodSkpOyJzdHJpbmciPT10eXBlb2YgZCYmKGQ9TmFtZS5nZXQoZCkpO2NvbnN0IGY9dT8ubmFtZSxnPWQ/Lm5hbWU7aWYoaClmfHwodT1OYW1lLmdldChuKSk7ZWxzZSBpZihmIT09Zyl7aW5mbyhgVGhlIEZvbnREZXNjcmlwdG9yJ3MgRm9udE5hbWUgaXMgIiR7Zn0iIGJ1dCBzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIEZvbnQncyBCYXNlRm9udCAiJHtnfSIuYCk7ZiYmZyYmKGcuc3RhcnRzV2l0aChmKXx8IWlzS25vd25Gb250TmFtZShmKSYmaXNLbm93bkZvbnROYW1lKGcpKSYmKHU9bnVsbCk7dXx8PWR9aWYoISh1IGluc3RhbmNlb2YgTmFtZSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJpbnZhbGlkIGZvbnQgbmFtZSIpO2xldCBwLG0sYix5LHc7dHJ5e3A9ZS5nZXQoIkZvbnRGaWxlIiwiRm9udEZpbGUyIiwiRm9udEZpbGUzIik7aWYocCl7aWYoIShwIGluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGb250RmlsZSBzaG91bGQgYmUgYSBzdHJlYW0iKTtpZihwLmlzRW1wdHkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJGb250RmlsZSBpcyBlbXB0eSIpfX1jYXRjaChlKXtpZighdGhpcy5vcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYHRyYW5zbGF0ZUZvbnQgLSBmZXRjaGluZyAiJHt1Lm5hbWV9IiBmb250IGZpbGU6ICIke2V9Ii5gKTtwPW51bGx9bGV0IHg9ITEsUz1udWxsLGs9bnVsbDtpZihwKXtpZihwLmRpY3Qpe2NvbnN0IGU9cC5kaWN0LmdldCgiU3VidHlwZSIpO2UgaW5zdGFuY2VvZiBOYW1lJiYobT1lLm5hbWUpO2I9cC5kaWN0LmdldCgiTGVuZ3RoMSIpO3k9cC5kaWN0LmdldCgiTGVuZ3RoMiIpO3c9cC5kaWN0LmdldCgiTGVuZ3RoMyIpfX1lbHNlIGlmKGwpe2NvbnN0IGU9Z2V0WGZhRm9udE5hbWUodS5uYW1lKTtpZihlKXtsLmZvbnRGYW1pbHk9YCR7bC5mb250RmFtaWx5fS1QZGZKUy1YRkFgO2wubWV0cmljcz1lLm1ldHJpY3N8fG51bGw7Uz1lLmZhY3RvcnN8fG51bGw7cD1hd2FpdCB0aGlzLmZldGNoU3RhbmRhcmRGb250RGF0YShlLm5hbWUpO3g9ISFwO3I9YT1nZXRYZmFGb250RGljdCh1Lm5hbWUpO2k9ITB9fWVsc2UgaWYoIWgpe2NvbnN0IGU9Z2V0U3RhbmRhcmRGb250TmFtZSh1Lm5hbWUpO2lmKGUpe3A9YXdhaXQgdGhpcy5mZXRjaFN0YW5kYXJkRm9udERhdGEoZSk7eD0hIXB9IXgmJnRoaXMub3B0aW9ucy51c2VTeXN0ZW1Gb250cyYmKGs9Z2V0Rm9udFN1YnN0aXR1dGlvbih0aGlzLnN5c3RlbUZvbnRDYWNoZSx0aGlzLmlkRmFjdG9yeSx0aGlzLm9wdGlvbnMuc3RhbmRhcmRGb250RGF0YVVybCx1Lm5hbWUsZSxuKSl9Y29uc3QgQz1sb29rdXBNYXRyaXgoYS5nZXRBcnJheSgiRm9udE1hdHJpeCIpLHQpLHY9bG9va3VwTm9ybWFsUmVjdChlLmdldEFycmF5KCJGb250QkJveCIpfHxhLmdldEFycmF5KCJGb250QkJveCIpLGg/WzAsMCwwLDBdOnZvaWQgMCk7bGV0IEY9ZS5nZXQoIkFzY2VudCIpOyJudW1iZXIiIT10eXBlb2YgRiYmKEY9dm9pZCAwKTtsZXQgVD1lLmdldCgiRGVzY2VudCIpOyJudW1iZXIiIT10eXBlb2YgVCYmKFQ9dm9pZCAwKTtsZXQgTz1lLmdldCgiWEhlaWdodCIpOyJudW1iZXIiIT10eXBlb2YgTyYmKE89MCk7bGV0IEQ9ZS5nZXQoIkNhcEhlaWdodCIpOyJudW1iZXIiIT10eXBlb2YgRCYmKEQ9MCk7bGV0IE09ZS5nZXQoIkZsYWdzIik7TnVtYmVyLmlzSW50ZWdlcihNKXx8KE09MCk7bGV0IFI9ZS5nZXQoIkl0YWxpY0FuZ2xlIik7Im51bWJlciIhPXR5cGVvZiBSJiYoUj0wKTtjb25zdCBOPXt0eXBlOm4sbmFtZTp1Lm5hbWUsc3VidHlwZTptLGZpbGU6cCxsZW5ndGgxOmIsbGVuZ3RoMjp5LGxlbmd0aDM6dyxpc0ludGVybmFsRm9udDp4LGxvYWRlZE5hbWU6ci5sb2FkZWROYW1lLGNvbXBvc2l0ZTppLGZpeGVkUGl0Y2g6ITEsZm9udE1hdHJpeDpDLGZpcnN0Q2hhcjpzLGxhc3RDaGFyOm8sdG9Vbmljb2RlOmMsYmJveDp2LGFzY2VudDpGLGRlc2NlbnQ6VCx4SGVpZ2h0Ok8sY2FwSGVpZ2h0OkQsZmxhZ3M6TSxpdGFsaWNBbmdsZTpSLGlzVHlwZTNGb250OmgsY3NzRm9udEluZm86bCxzY2FsZUZhY3RvcnM6UyxzeXN0ZW1Gb250SW5mbzprfTtpZihpKXtjb25zdCBlPXIuZ2V0KCJFbmNvZGluZyIpO2UgaW5zdGFuY2VvZiBOYW1lJiYoTi5jaWRFbmNvZGluZz1lLm5hbWUpO2NvbnN0IHQ9YXdhaXQgQ01hcEZhY3RvcnkuY3JlYXRlKHtlbmNvZGluZzplLGZldGNoQnVpbHRJbkNNYXA6dGhpcy5fZmV0Y2hCdWlsdEluQ01hcEJvdW5kLHVzZUNNYXA6bnVsbH0pO04uY01hcD10O04udmVydGljYWw9Ti5jTWFwLnZlcnRpY2FsfWNvbnN0IEU9YXdhaXQgdGhpcy5leHRyYWN0RGF0YVN0cnVjdHVyZXMoYSxOKTt0aGlzLmV4dHJhY3RXaWR0aHMoYSxlLEUpO3JldHVybiBuZXcgRm9udCh1Lm5hbWUscCxFLHRoaXMub3B0aW9ucyl9c3RhdGljIGJ1aWxkRm9udFBhdGhzKGUsdCxhLHIpe2Z1bmN0aW9uIGJ1aWxkUGF0aCh0KXtjb25zdCBpPWAke2UubG9hZGVkTmFtZX1fcGF0aF8ke3R9YDt0cnl7aWYoZS5yZW5kZXJlci5oYXNCdWlsdFBhdGgodCkpcmV0dXJuO2NvbnN0IHI9Rm9udFBhdGhJbmZvLndyaXRlKGUucmVuZGVyZXIuZ2V0UGF0aEpzKHQpKTthLnNlbmQoImNvbW1vbm9iaiIsW2ksIkZvbnRQYXRoIixyXSxbcl0pfWNhdGNoKGUpe2lmKHIuaWdub3JlRXJyb3JzKXt3YXJuKGBidWlsZEZvbnRQYXRocyAtIGlnbm9yaW5nICR7aX0gZ2x5cGg6ICIke2V9Ii5gKTtyZXR1cm59dGhyb3cgZX19Zm9yKGNvbnN0IGUgb2YgdCl7YnVpbGRQYXRoKGUuZm9udENoYXIpO2NvbnN0IHQ9ZS5hY2NlbnQ7dD8uZm9udENoYXImJmJ1aWxkUGF0aCh0LmZvbnRDaGFyKX19c3RhdGljIGdldCBmYWxsYmFja0ZvbnREaWN0KCl7Y29uc3QgZT1uZXcgRGljdDtlLnNldCgiQmFzZUZvbnQiLE5hbWUuZ2V0KCJIZWx2ZXRpY2EiKSk7ZS5zZXQoIlR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIlN1YnR5cGUiLE5hbWUuZ2V0KCJGYWxsYmFja1R5cGUiKSk7ZS5zZXQoIkVuY29kaW5nIixOYW1lLmdldCgiV2luQW5zaUVuY29
101kaW5nIikpO3JldHVybiBzaGFkb3codGhpcywiZmFsbGJhY2tGb250RGljdCIsZSl9fWNsYXNzIFRyYW5zbGF0ZWRGb250eyN1ZT0hMTsjZGU9bnVsbDtjb25zdHJ1Y3Rvcih7bG9hZGVkTmFtZTplLGZvbnQ6dCxkaWN0OmF9KXt0aGlzLmxvYWRlZE5hbWU9ZTt0aGlzLmZvbnQ9dDt0aGlzLmRpY3Q9YTt0aGlzLnR5cGUzRGVwZW5kZW5jaWVzPXQuaXNUeXBlM0ZvbnQ/bmV3IFNldDpudWxsfXNlbmQoZSl7aWYodGhpcy4jdWUpcmV0dXJuO3RoaXMuI3VlPSEwO2NvbnN0IHQ9dGhpcy5mb250LmV4cG9ydERhdGEoKSxhPVtdO2lmKHQuZGF0YSl7dC5kYXRhLmNoYXJQcm9jT3BlcmF0b3JMaXN0JiYodC5jaGFyUHJvY09wZXJhdG9yTGlzdD10LmRhdGEuY2hhclByb2NPcGVyYXRvckxpc3QpO3QuZGF0YT1Gb250SW5mby53cml0ZSh0LmRhdGEpO2EucHVzaCh0LmRhdGEpfWUuc2VuZCgiY29tbW9ub2JqIixbdGhpcy5sb2FkZWROYW1lLCJGb250Iix0XSxhKX1mYWxsYmFjayhlLHQpe2lmKHRoaXMuZm9udC5kYXRhKXt0aGlzLmZvbnQuZGlzYWJsZUZvbnRGYWNlPSEwO1BhcnRpYWxFdmFsdWF0b3IuYnVpbGRGb250UGF0aHModGhpcy5mb250LHRoaXMuZm9udC5nbHlwaENhY2hlVmFsdWVzLGUsdCl9fWxvYWRUeXBlM0RhdGEoZSx0LGEpe2lmKHRoaXMuI2RlKXJldHVybiB0aGlzLiNkZTtjb25zdHtmb250OnIsdHlwZTNEZXBlbmRlbmNpZXM6aX09dGhpczthc3NlcnQoci5pc1R5cGUzRm9udCwiTXVzdCBiZSBhIFR5cGUzIGZvbnQuIik7Y29uc3Qgbj1lLmNsb25lKHtpZ25vcmVFcnJvcnM6ITF9KSxzPW5ldyBSZWZTZXQoZS50eXBlM0ZvbnRSZWZzKTt0aGlzLmRpY3Qub2JqSWQmJiFzLmhhcyh0aGlzLmRpY3Qub2JqSWQpJiZzLnB1dCh0aGlzLmRpY3Qub2JqSWQpO24udHlwZTNGb250UmVmcz1zO2xldCBvPVByb21pc2UucmVzb2x2ZSgpO2NvbnN0IGM9dGhpcy5kaWN0LmdldCgiQ2hhclByb2NzIiksbD10aGlzLmRpY3QuZ2V0KCJSZXNvdXJjZXMiKXx8dCxoPU9iamVjdC5jcmVhdGUobnVsbCksW3UsZCxmLGddPXIuYmJveCxwPWYtdSxtPWctZCxiPU1hdGguaHlwb3QocCxtKTtmb3IoY29uc3QgZSBvZiBjLmdldEtleXMoKSlvPW8udGhlbigoKT0+e2NvbnN0IHQ9Yy5nZXQoZSkscj1uZXcgT3BlcmF0b3JMaXN0O3JldHVybiBuLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOnQsdGFzazphLHJlc291cmNlczpsLG9wZXJhdG9yTGlzdDpyfSkudGhlbigoKT0+e3N3aXRjaChyLmZuQXJyYXlbMF0pe2Nhc2UgcnQ6dGhpcy4jZmUocixiKTticmVhaztjYXNlIGF0OmJ8fHRoaXMuI2dlKHIpfWhbZV09ci5nZXRJUigpO2Zvcihjb25zdCBlIG9mIHIuZGVwZW5kZW5jaWVzKWkuYWRkKGUpfSkuY2F0Y2goZnVuY3Rpb24odCl7d2FybihgVHlwZTMgZm9udCByZXNvdXJjZSAiJHtlfSIgaXMgbm90IGF2YWlsYWJsZS5gKTtjb25zdCBhPW5ldyBPcGVyYXRvckxpc3Q7aFtlXT1hLmdldElSKCl9KX0pO3RoaXMuI2RlPW8udGhlbigoKT0+e3IuY2hhclByb2NPcGVyYXRvckxpc3Q9aDtpZih0aGlzLl9iYm94KXtyLmlzQ2hhckJCb3g9ITA7ci5iYm94PXRoaXMuX2Jib3h9fSk7cmV0dXJuIHRoaXMuI2RlfSNmZShlLHQ9TmFOKXtjb25zdCBhPVV0aWwubm9ybWFsaXplUmVjdChlLmFyZ3NBcnJheVswXS5zbGljZSgyKSkscj1hWzJdLWFbMF0saT1hWzNdLWFbMV0sbj1NYXRoLmh5cG90KHIsaSk7aWYoMD09PXJ8fDA9PT1pKXtlLmZuQXJyYXkuc3BsaWNlKDAsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKDAsMSl9ZWxzZSBpZigwPT09dHx8TWF0aC5yb3VuZChuL3QpPj0xMCl7dGhpcy5fYmJveD8/PVsxLzAsMS8wLC0xLzAsLTEvMF07VXRpbC5yZWN0Qm91bmRpbmdCb3goLi4uYSx0aGlzLl9iYm94KX1sZXQgcz0wLG89ZS5sZW5ndGg7Zm9yKDtzPG87KXtzd2l0Y2goZS5mbkFycmF5W3NdKXtjYXNlIHJ0OmJyZWFrO2Nhc2UgaXQ6Y2FzZSBudDpjYXNlIHN0OmNhc2Ugb3Q6Y2FzZSBjdDpjYXNlIGx0OmNhc2UgaHQ6Y2FzZSB1dDpjYXNlIGR0OmNhc2UgZnQ6Y2FzZSBndDpjYXNlIHB0OmNhc2UgbXQ6Y2FzZSBwZTplLmZuQXJyYXkuc3BsaWNlKHMsMSk7ZS5hcmdzQXJyYXkuc3BsaWNlKHMsMSk7by0tO2NvbnRpbnVlO2Nhc2UgYmU6Y29uc3RbdF09ZS5hcmdzQXJyYXlbc107bGV0IGE9MCxyPXQubGVuZ3RoO2Zvcig7YTxyOyl7Y29uc3RbZV09dFthXTtzd2l0Y2goZSl7Y2FzZSJUUiI6Y2FzZSJUUjIiOmNhc2UiSFQiOmNhc2UiQkciOmNhc2UiQkcyIjpjYXNlIlVDUiI6Y2FzZSJVQ1IyIjp0LnNwbGljZShhLDEpO3ItLTtjb250aW51ZX1hKyt9fXMrK319I2dlKGUpe2xldCB0PTE7Y29uc3QgYT1lLmxlbmd0aDtmb3IoO3Q8YTspe2lmKGUuZm5BcnJheVt0XT09PXF0KXtjb25zdCBhPWUuYXJnc0FycmF5W3RdWzJdO3RoaXMuX2Jib3g/Pz1bMS8wLDEvMCwtMS8wLC0xLzBdO1V0aWwucmVjdEJvdW5kaW5nQm94KC4uLmEsdGhpcy5fYmJveCl9dCsrfX19Y2xhc3MgU3RhdGVNYW5hZ2Vye2NvbnN0cnVjdG9yKGU9bmV3IEV2YWxTdGF0ZSl7dGhpcy5zdGF0ZT1lO3RoaXMuc3RhdGVTdGFjaz1bXX1zYXZlKCl7Y29uc3QgZT10aGlzLnN0YXRlO3RoaXMuc3RhdGVTdGFjay5wdXNoKHRoaXMuc3RhdGUpO3RoaXMuc3RhdGU9ZS5jbG9uZSgpfXJlc3RvcmUoKXtjb25zdCBlPXRoaXMuc3RhdGVTdGFjay5wb3AoKTtlJiYodGhpcy5zdGF0ZT1lKX10cmFuc2Zvcm0oZSl7dGhpcy5zdGF0ZS5jdG09VXRpbC50cmFuc2Zvcm0odGhpcy5zdGF0ZS5jdG0sZSl9fWNsYXNzIFRleHRTdGF0ZXtjb25zdHJ1Y3Rvcigpe3RoaXMuY3RtPW5ldyBGbG9hdDMyQXJyYXkoZmEpO3RoaXMuZm9udE5hbWU9bnVsbDt0aGlzLmZvbnRTaXplPTA7dGhpcy5sb2FkZWROYW1lPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5mb250TWF0cml4PXQ7dGhpcy50ZXh0TWF0cml4PWZhLnNsaWNlKCk7dGhpcy50ZXh0TGluZU1hdHJpeD1mYS5zbGljZSgpO3RoaXMuY2hhclNwYWNpbmc9MDt0aGlzLndvcmRTcGFjaW5nPTA7dGhpcy5sZWFkaW5nPTA7dGhpcy50ZXh0SFNjYWxlPTE7dGhpcy50ZXh0UmlzZT0wfXNldFRleHRNYXRyaXgoZSx0LGEscixpLG4pe2NvbnN0IHM9dGhpcy50ZXh0TWF0cml4O3NbMF09ZTtzWzFdPXQ7c1syXT1hO3NbM109cjtzWzRdPWk7c1s1XT1ufXNldFRleHRMaW5lTWF0cml4KGUsdCxhLHIsaSxuKXtjb25zdCBzPXRoaXMudGV4dExpbmVNYXRyaXg7c1swXT1lO3NbMV09dDtzWzJdPWE7c1szXT1yO3NbNF09aTtzWzVdPW59dHJhbnNsYXRlVGV4dE1hdHJpeChlLHQpe2NvbnN0IGE9dGhpcy50ZXh0TWF0cml4O2FbNF09YVswXS
101plK2FbMl0qdCthWzRdO2FbNV09YVsxXSplK2FbM10qdCthWzVdfXRyYW5zbGF0ZVRleHRMaW5lTWF0cml4KGUsdCl7Y29uc3QgYT10aGlzLnRleHRMaW5lTWF0cml4O2FbNF09YVswXSplK2FbMl0qdCthWzRdO2FbNV09YVsxXSplK2FbM10qdCthWzVdfWNhcnJpYWdlUmV0dXJuKCl7dGhpcy50cmFuc2xhdGVUZXh0TGluZU1hdHJpeCgwLC10aGlzLmxlYWRpbmcpO3RoaXMudGV4dE1hdHJpeD10aGlzLnRleHRMaW5lTWF0cml4LnNsaWNlKCl9Y2xvbmUoKXtjb25zdCBlPU9iamVjdC5jcmVhdGUodGhpcyk7ZS50ZXh0TWF0cml4PXRoaXMudGV4dE1hdHJpeC5zbGljZSgpO2UudGV4dExpbmVNYXRyaXg9dGhpcy50ZXh0TGluZU1hdHJpeC5zbGljZSgpO2UuZm9udE1hdHJpeD10aGlzLmZvbnRNYXRyaXguc2xpY2UoKTtyZXR1cm4gZX19Y2xhc3MgRXZhbFN0YXRle2NvbnN0cnVjdG9yKCl7dGhpcy5jdG09bmV3IEZsb2F0MzJBcnJheShmYSk7dGhpcy5mb250PW51bGw7dGhpcy50ZXh0UmVuZGVyaW5nTW9kZT1DO3RoaXMuX2ZpbGxDb2xvclNwYWNlPXRoaXMuX3N0cm9rZUNvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLmdyYXk7dGhpcy5wYXR0ZXJuRmlsbENvbG9yU3BhY2U9bnVsbDt0aGlzLnBhdHRlcm5TdHJva2VDb2xvclNwYWNlPW51bGw7dGhpcy5jdXJyZW50UG9pbnRYPXRoaXMuY3VycmVudFBvaW50WT0wO3RoaXMucGF0aE1pbk1heD1uZXcgRmxvYXQzMkFycmF5KFsxLzAsMS8wLC0xLzAsLTEvMF0pO3RoaXMucGF0aEJ1ZmZlcj1bXX1nZXQgZmlsbENvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fZmlsbENvbG9yU3BhY2V9c2V0IGZpbGxDb2xvclNwYWNlKGUpe3RoaXMuX2ZpbGxDb2xvclNwYWNlPXRoaXMucGF0dGVybkZpbGxDb2xvclNwYWNlPWV9Z2V0IHN0cm9rZUNvbG9yU3BhY2UoKXtyZXR1cm4gdGhpcy5fc3Ryb2tlQ29sb3JTcGFjZX1zZXQgc3Ryb2tlQ29sb3JTcGFjZShlKXt0aGlzLl9zdHJva2VDb2xvclNwYWNlPXRoaXMucGF0dGVyblN0cm9rZUNvbG9yU3BhY2U9ZX1jbG9uZSh7bmV3UGF0aDplPSExfT17fSl7Y29uc3QgdD1PYmplY3QuY3JlYXRlKHRoaXMpO2lmKGUpe3QucGF0aEJ1ZmZlcj1bXTt0LnBhdGhNaW5NYXg9bmV3IEZsb2F0MzJBcnJheShbMS8wLDEvMCwtMS8wLC0xLzBdKX1yZXR1cm4gdH19Y2xhc3MgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye3N0YXRpYyBnZXQgb3BNYXAoKXtyZXR1cm4gc2hhZG93KHRoaXMsIm9wTWFwIixPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobnVsbCkse3c6e2lkOmhlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEo6e2lkOnVlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGo6e2lkOmRlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LE06e2lkOmZlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LGQ6e2lkOmdlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LHJpOntpZDpwZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxpOntpZDptZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxnczp7aWQ6YmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0scTp7aWQ6eWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sUTp7aWQ6d2UsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sY206e2lkOnhlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LG06e2lkOlNlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGw6e2lkOkFlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LGM6e2lkOmtlLG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LHY6e2lkOkNlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LHk6e2lkOnZlLG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LGg6e2lkOkZlLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LHJlOntpZDpJZSxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiExfSxTOntpZDpUZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxzOntpZDpPZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxmOntpZDpEZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxGOntpZDpEZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiZioiOntpZDpNZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCOntpZDpSZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiQioiOntpZDpCZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxiOntpZDpOZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiYioiOntpZDpQZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxuOntpZDpFZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxXOntpZDpMZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSwiVyoiOntpZDpfZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCVDp7aWQ6VWUsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRVQ6e2lkOmplLG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LFRjOntpZDpYZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUdzp7aWQ6cWUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVHo6e2lkOkhlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRMOntpZDpXZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUZjp7aWQ6emUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVHI6e2lkOiRlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LFRzOntpZDpHZSxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxUZDp7aWQ6VmUsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sVEQ6e2lkOktlLG51bUFyZ3M6Mix2YXJpYWJsZUFyZ3M6ITF9LFRtOntpZDpKZSxudW1BcmdzOjYsdmFyaWFibGVBcmdzOiExfSwiVCoiOntpZDpZZSxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxUajp7aWQ6WmUsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sVEo6e2lkOlFlLG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LCInIjp7aWQ6ZXQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sJyInOntpZDp0dCxudW1BcmdzOjMsdmFyaWFibGVBcmdzOiExfSxkMDp7aWQ6YXQsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sZDE6e2lkOnJ0LG51bUFyZ3M6Nix2YXJpYWJsZUFyZ3M6ITF9LENTOntpZDppdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxjczp7aWQ6bnQsbnVtQXJnczoxLHZhcmlhYmxlQXJ
101nczohMX0sU0M6e2lkOnN0LG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITB9LFNDTjp7aWQ6b3QsbnVtQXJnczozMyx2YXJpYWJsZUFyZ3M6ITB9LHNjOntpZDpjdCxudW1BcmdzOjQsdmFyaWFibGVBcmdzOiEwfSxzY246e2lkOmx0LG51bUFyZ3M6MzMsdmFyaWFibGVBcmdzOiEwfSxHOntpZDpodCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxnOntpZDp1dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxSRzp7aWQ6ZHQsbnVtQXJnczozLHZhcmlhYmxlQXJnczohMX0scmc6e2lkOmZ0LG51bUFyZ3M6Myx2YXJpYWJsZUFyZ3M6ITF9LEs6e2lkOmd0LG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LGs6e2lkOnB0LG51bUFyZ3M6NCx2YXJpYWJsZUFyZ3M6ITF9LHNoOntpZDptdCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxCSTp7aWQ6YnQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sSUQ6e2lkOnl0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEVJOntpZDp3dCxudW1BcmdzOjEsdmFyaWFibGVBcmdzOiExfSxEbzp7aWQ6eHQsbnVtQXJnczoxLHZhcmlhYmxlQXJnczohMX0sTVA6e2lkOlN0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LERQOntpZDpBdCxudW1BcmdzOjIsdmFyaWFibGVBcmdzOiExfSxCTUM6e2lkOmt0LG51bUFyZ3M6MSx2YXJpYWJsZUFyZ3M6ITF9LEJEQzp7aWQ6Q3QsbnVtQXJnczoyLHZhcmlhYmxlQXJnczohMX0sRU1DOntpZDp2dCxudW1BcmdzOjAsdmFyaWFibGVBcmdzOiExfSxCWDp7aWQ6RnQsbnVtQXJnczowLHZhcmlhYmxlQXJnczohMX0sRVg6e2lkOkl0LG51bUFyZ3M6MCx2YXJpYWJsZUFyZ3M6ITF9LEJNOm51bGwsQkQ6bnVsbCx0cnVlOm51bGwsZmE6bnVsbCxmYWw6bnVsbCxmYWxzOm51bGwsZmFsc2U6bnVsbCxudTpudWxsLG51bDpudWxsLG51bGw6bnVsbH0pKX1zdGF0aWMgTUFYX0lOVkFMSURfUEFUSF9PUFM9MTA7Y29uc3RydWN0b3IoZSx0LGE9bmV3IFN0YXRlTWFuYWdlcil7dGhpcy5wYXJzZXI9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKGUsRXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwKSx4cmVmOnR9KTt0aGlzLnN0YXRlTWFuYWdlcj1hO3RoaXMubm9uUHJvY2Vzc2VkQXJncz1bXTt0aGlzLl9pc1BhdGhPcD0hMTt0aGlzLl9udW1JbnZhbGlkUGF0aE9QUz0wfWdldCBzYXZlZFN0YXRlc0RlcHRoKCl7cmV0dXJuIHRoaXMuc3RhdGVNYW5hZ2VyLnN0YXRlU3RhY2subGVuZ3RofXJlYWQoZSl7bGV0IHQ9ZS5hcmdzO2Zvcig7Oyl7Y29uc3QgYT10aGlzLnBhcnNlci5nZXRPYmooKTtpZihhIGluc3RhbmNlb2YgQ21kKXtjb25zdCByPWEuY21kLGk9RXZhbHVhdG9yUHJlcHJvY2Vzc29yLm9wTWFwW3JdO2lmKCFpKXt3YXJuKGBVbmtub3duIGNvbW1hbmQgIiR7cn0iLmApO2NvbnRpbnVlfWNvbnN0IG49aS5pZCxzPWkubnVtQXJncztsZXQgbz1udWxsIT09dD90Lmxlbmd0aDowO3RoaXMuX2lzUGF0aE9wfHwodGhpcy5fbnVtSW52YWxpZFBhdGhPUFM9MCk7dGhpcy5faXNQYXRoT3A9bj49U2UmJm48PUVlO2lmKGkudmFyaWFibGVBcmdzKW8+cyYmaW5mbyhgQ29tbWFuZCAke3J9OiBleHBlY3RlZCBbMCwgJHtzfV0gYXJncywgYnV0IHJlY2VpdmVkICR7b30gYXJncy5gKTtlbHNle2lmKG8hPT1zKXtjb25zdCBlPXRoaXMubm9uUHJvY2Vzc2VkQXJncztmb3IoO28+czspe2UucHVzaCh0LnNoaWZ0KCkpO28tLX1mb3IoO288cyYmMCE9PWUubGVuZ3RoOyl7bnVsbD09PXQmJih0PVtdKTt0LnVuc2hpZnQoZS5wb3AoKSk7bysrfX1pZihvPHMpe2NvbnN0IGU9YGNvbW1hbmQgJHtyfTogZXhwZWN0ZWQgJHtzfSBhcmdzLCBidXQgcmVjZWl2ZWQgJHtvfSBhcmdzLmA7aWYodGhpcy5faXNQYXRoT3AmJisrdGhpcy5fbnVtSW52YWxpZFBhdGhPUFM+RXZhbHVhdG9yUHJlcHJvY2Vzc29yLk1BWF9JTlZBTElEX1BBVEhfT1BTKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCAke2V9YCk7d2FybihgU2tpcHBpbmcgJHtlfWApO251bGwhPT10JiYodC5sZW5ndGg9MCk7Y29udGludWV9fXRoaXMucHJlcHJvY2Vzc0NvbW1hbmQobix0KTtlLmZuPW47ZS5hcmdzPXQ7cmV0dXJuITB9aWYoYT09PXNhKXJldHVybiExO2lmKG51bGwhPT1hKXtudWxsPT09dCYmKHQ9W10pO3QucHVzaChhKTtpZih0Lmxlbmd0aD4zMyl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRvbyBtYW55IGFyZ3VtZW50cyIpfX19cHJlcHJvY2Vzc0NvbW1hbmQoZSx0KXtzd2l0Y2goMHxlKXtjYXNlIHllOnRoaXMuc3RhdGVNYW5hZ2VyLnNhdmUoKTticmVhaztjYXNlIHdlOnRoaXMuc3RhdGVNYW5hZ2VyLnJlc3RvcmUoKTticmVhaztjYXNlIHhlOnRoaXMuc3RhdGVNYW5hZ2VyLnRyYW5zZm9ybSh0KX19fWNsYXNzIERlZmF1bHRBcHBlYXJhbmNlRXZhbHVhdG9yIGV4dGVuZHMgRXZhbHVhdG9yUHJlcHJvY2Vzc29ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKG5ldyBTdHJpbmdTdHJlYW0oZSkpfXBhcnNlKCl7Y29uc3QgZT17Zm46MCxhcmdzOltdfSx0PXtmb250U2l6ZTowLGZvbnROYW1lOiIiLGZvbnRDb2xvcjpuZXcgVWludDhDbGFtcGVkQXJyYXkoMyl9O3RyeXtmb3IoOzspe2UuYXJncy5sZW5ndGg9MDtpZighdGhpcy5yZWFkKGUpKWJyZWFrO2lmKDAhPT10aGlzLnNhdmVkU3RhdGVzRGVwdGgpY29udGludWU7Y29uc3R7Zm46YSxhcmdzOnJ9PWU7c3dpdGNoKDB8YSl7Y2FzZSB6ZTpjb25zdFtlLGFdPXI7ZSBpbnN0YW5jZW9mIE5hbWUmJih0LmZvbnROYW1lPWUubmFtZSk7Im51bWJlciI9PXR5cGVvZiBhJiZhPjAmJih0LmZvbnRTaXplPWEpO2JyZWFrO2Nhc2UgZnQ6Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2JJdGVtKHIsMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIHV0OkNvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkl0ZW0ociwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgcHQ6Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSXRlbShyLDAsdC5mb250Q29sb3IsMCl9fX1jYXRjaChlKXt3YXJuKGBwYXJzZURlZmF1bHRBcHBlYXJhbmNlIC0gaWdub3JpbmcgZXJyb3JzOiAiJHtlfSIuYCl9cmV0dXJuIHR9fWZ1bmN0aW9uIHBhcnNlRGVmYXVsdEFwcGVhcmFuY2UoZSl7cmV0dXJuIG5ldyBEZWZhdWx0QXBwZWFyYW5jZUV2YWx1YXRvcihlKS5wYXJzZSgpfWNsYXNzIEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IgZXh0ZW5kcyBFdmFsdWF0b3JQcmVwcm9jZXNzb3J7Y29uc3RydWN0b3IoZSx0LGEscil7c3VwZXIoZSk7dGhpcy5zdHJlYW09ZTt0aGlzLmV2YWx1YXRvck9wdGlvbnM9dDt0aGlzLnhyZWY9YTt0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZT1yO3RoaXMucmVzb3VyY2VzPWUuZGljdD8uZ2V0KCJSZXNvdXJjZXMiKX1wYXJzZSgpe2NvbnN0IGU9e2ZuOjAsYXJnczpbXX07bGV0IHQ9e3NjYWxlRmFjdG9yOjEsZm9udFNpemU6MCxmb250TmFtZToiIixmb250Q29sb3I6bmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpLGZpbGxDb2xvclNwYWNlOkNvbG9yU3BhY2VVdGlscy5ncmF5fSxhPSExO2NvbnN0IHI9W107dHJ5e2Zvcig7Oyl7ZS5hcmdzLmxlbmd0aD0wO2lmKGF8fCF0aGlzLnJlYWQoZSkpYnJlYWs7Y29uc3R7Zm46aSxhcmdzOm59PWU7c3dpdGNoKDB8aSl7Y2FzZSB5ZTpyLnB1c2goe3NjYWxlRmFjdG9yOnQuc2NhbGVGYWN0b3IsZm9udFNpemU6dC5mb250U2l6ZSxmb250TmFtZTp0LmZvbnROYW1lLGZvbnRDb2xvcjp0LmZvbnRDb2xvci5zbGljZSgpLGZpbGxDb2xvclNwYWNlOnQuZmlsbENvbG9yU3BhY2V9KTticmVhaztjYXNlIHdlOnQ9ci5wb3AoKXx8dDticmVhaztjYXNlIEplOnQuc2NhbGVGYWN0b3IqPU1
101hdGguaHlwb3QoblswXSxuWzFdKTticmVhaztjYXNlIHplOmNvbnN0W2UsaV09bjtlIGluc3RhbmNlb2YgTmFtZSYmKHQuZm9udE5hbWU9ZS5uYW1lKTsibnVtYmVyIj09dHlwZW9mIGkmJmk+MCYmKHQuZm9udFNpemU9aSp0LnNjYWxlRmFjdG9yKTticmVhaztjYXNlIG50OnQuZmlsbENvbG9yU3BhY2U9Q29sb3JTcGFjZVV0aWxzLnBhcnNlKHtjczpuWzBdLHhyZWY6dGhpcy54cmVmLHJlc291cmNlczp0aGlzLnJlc291cmNlcyxwZGZGdW5jdGlvbkZhY3Rvcnk6dGhpcy5fcGRmRnVuY3Rpb25GYWN0b3J5LGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxsb2NhbENvbG9yU3BhY2VDYWNoZTp0aGlzLl9sb2NhbENvbG9yU3BhY2VDYWNoZX0pO2JyZWFrO2Nhc2UgY3Q6dC5maWxsQ29sb3JTcGFjZS5nZXRSZ2JJdGVtKG4sMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIGZ0OkNvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSXRlbShuLDAsdC5mb250Q29sb3IsMCk7YnJlYWs7Y2FzZSB1dDpDb2xvclNwYWNlVXRpbHMuZ3JheS5nZXRSZ2JJdGVtKG4sMCx0LmZvbnRDb2xvciwwKTticmVhaztjYXNlIHB0OkNvbG9yU3BhY2VVdGlscy5jbXlrLmdldFJnYkl0ZW0obiwwLHQuZm9udENvbG9yLDApO2JyZWFrO2Nhc2UgWmU6Y2FzZSBRZTpjYXNlIGV0OmNhc2UgdHQ6YT0hMH19fWNhdGNoKGUpe3dhcm4oYHBhcnNlQXBwZWFyYW5jZVN0cmVhbSAtIGlnbm9yaW5nIGVycm9yczogIiR7ZX0iLmApfXRoaXMuc3RyZWFtLnJlc2V0KCk7ZGVsZXRlIHQuc2NhbGVGYWN0b3I7ZGVsZXRlIHQuZmlsbENvbG9yU3BhY2U7cmV0dXJuIHR9Z2V0IF9sb2NhbENvbG9yU3BhY2VDYWNoZSgpe3JldHVybiBzaGFkb3codGhpcywiX2xvY2FsQ29sb3JTcGFjZUNhY2hlIixuZXcgTG9jYWxDb2xvclNwYWNlQ2FjaGUpfWdldCBfcGRmRnVuY3Rpb25GYWN0b3J5KCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGRmRnVuY3Rpb25GYWN0b3J5IixuZXcgUERGRnVuY3Rpb25GYWN0b3J5KHt4cmVmOnRoaXMueHJlZixpc0V2YWxTdXBwb3J0ZWQ6dGhpcy5ldmFsdWF0b3JPcHRpb25zLmlzRXZhbFN1cHBvcnRlZH0pKX19ZnVuY3Rpb24gZ2V0UGRmQ29sb3IoZSx0KXtpZihlWzBdPT09ZVsxXSYmZVsxXT09PWVbMl0pe3JldHVybmAke251bWJlclRvU3RyaW5nKGVbMF0vMjU1KX0gJHt0PyJnIjoiRyJ9YH1yZXR1cm4gQXJyYXkuZnJvbShlLGU9Pm51bWJlclRvU3RyaW5nKGUvMjU1KSkuam9pbigiICIpKyIgIisodD8icmciOiJSRyIpfWNsYXNzIEZha2VVbmljb2RlRm9udHtjb25zdHJ1Y3RvcihlLHQpe3RoaXMueHJlZj1lO3RoaXMud2lkdGhzPW51bGw7dGhpcy5maXJzdENoYXI9MS8wO3RoaXMubGFzdENoYXI9LTEvMDt0aGlzLmZvbnRGYW1pbHk9dDtjb25zdCBhPW5ldyBPZmZzY3JlZW5DYW52YXMoMSwxKTt0aGlzLmN0eE1lYXN1cmU9YS5nZXRDb250ZXh0KCIyZCIse3dpbGxSZWFkRnJlcXVlbnRseTohMH0pO0Zha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZHx8KEZha2VVbmljb2RlRm9udC5fZm9udE5hbWVJZD0xKTt0aGlzLmZvbnROYW1lPU5hbWUuZ2V0KGBJbnZhbGlkUERGanNGb250XyR7dH1fJHtGYWtlVW5pY29kZUZvbnQuX2ZvbnROYW1lSWQrK31gKX1nZXQgZm9udERlc2NyaXB0b3JSZWYoKXtpZighRmFrZVVuaWNvZGVGb250Ll9mb250RGVzY3JpcHRvclJlZil7Y29uc3QgZT1uZXcgRGljdCh0aGlzLnhyZWYpO2Uuc2V0SWZOYW1lKCJUeXBlIiwiRm9udERlc2NyaXB0b3IiKTtlLnNldCgiRm9udE5hbWUiLHRoaXMuZm9udE5hbWUpO2Uuc2V0KCJGb250RmFtaWx5IiwiTXlyaWFkUHJvIFJlZ3VsYXIiKTtlLnNldCgiRm9udEJCb3giLFswLDAsMCwwXSk7ZS5zZXRJZk5hbWUoIkZvbnRTdHJldGNoIiwiTm9ybWFsIik7ZS5zZXQoIkZvbnRXZWlnaHQiLDQwMCk7ZS5zZXQoIkl0YWxpY0FuZ2xlIiwwKTtGYWtlVW5pY29kZUZvbnQuX2ZvbnREZXNjcmlwdG9yUmVmPXRoaXMueHJlZi5nZXROZXdQZXJzaXN0ZW50UmVmKGUpfXJldHVybiBGYWtlVW5pY29kZUZvbnQuX2ZvbnREZXNjcmlwdG9yUmVmfWdldCBkZXNjZW5kYW50Rm9udFJlZigpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKTtlLnNldCgiQmFzZUZvbnQiLHRoaXMuZm9udE5hbWUpO2Uuc2V0SWZOYW1lKCJUeXBlIiwiRm9udCIpO2Uuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiQ0lERm9udFR5cGUwIik7ZS5zZXRJZk5hbWUoIkNJRFRvR0lETWFwIiwiSWRlbnRpdHkiKTtlLnNldCgiRmlyc3RDaGFyIix0aGlzLmZpcnN0Q2hhcik7ZS5zZXQoIkxhc3RDaGFyIix0aGlzLmxhc3RDaGFyKTtlLnNldCgiRm9udERlc2NyaXB0b3IiLHRoaXMuZm9udERlc2NyaXB0b3JSZWYpO2Uuc2V0KCJEVyIsMWUzKTtjb25zdCB0PVtdLGE9Wy4uLnRoaXMud2lkdGhzLmVudHJpZXMoKV0uc29ydCgpO2xldCByPW51bGwsaT1udWxsO2Zvcihjb25zdFtlLG5db2YgYSlpZihyKWlmKGU9PT1yK2kubGVuZ3RoKWkucHVzaChuKTtlbHNle3QucHVzaChyLGkpO3I9ZTtpPVtuXX1lbHNle3I9ZTtpPVtuXX1yJiZ0LnB1c2gocixpKTtlLnNldCgiVyIsdCk7Y29uc3Qgbj1uZXcgRGljdCh0aGlzLnhyZWYpO24uc2V0KCJPcmRlcmluZyIsIklkZW50aXR5Iik7bi5zZXQoIlJlZ2lzdHJ5IiwiQWRvYmUiKTtuLnNldCgiU3VwcGxlbWVudCIsMCk7ZS5zZXQoIkNJRFN5c3RlbUluZm8iLG4pO3JldHVybiB0aGlzLnhyZWYuZ2V0TmV3UGVyc2lzdGVudFJlZihlKX1nZXQgYmFzZUZvbnRSZWYoKXtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZik7ZS5zZXQoIkJhc2VGb250Iix0aGlzLmZvbnROYW1lKTtlLnNldElmTmFtZSgiVHlwZSIsIkZvbnQiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIlR5cGUwIik7ZS5zZXRJZk5hbWUoIkVuY29kaW5nIiwiSWRlbnRpdHktSCIpO2Uuc2V0KCJEZXNjZW5kYW50Rm9udHMiLFt0aGlzLmRlc2NlbmRhbnRGb250UmVmXSk7ZS5zZXRJZk5hbWUoIlRvVW5pY29kZSIsIklkZW50aXR5LUgiKTtyZXR1cm4gdGhpcy54cmVmLmdldE5ld1BlcnNpc3RlbnRSZWYoZSl9Z2V0IHJlc291cmNlcygpe2NvbnN0IGU9bmV3IERpY3QodGhpcy54cmVmKSx0PW5ldyBEaWN0K
101HRoaXMueHJlZik7dC5zZXQodGhpcy5mb250TmFtZS5uYW1lLHRoaXMuYmFzZUZvbnRSZWYpO2Uuc2V0KCJGb250Iix0KTtyZXR1cm4gZX1fY3JlYXRlQ29udGV4dCgpe3RoaXMud2lkdGhzPW5ldyBNYXA7dGhpcy5jdHhNZWFzdXJlLmZvbnQ9YDEwMDBweCAke3RoaXMuZm9udEZhbWlseX1gO3JldHVybiB0aGlzLmN0eE1lYXN1cmV9Y3JlYXRlRm9udFJlc291cmNlcyhlKXtjb25zdCB0PXRoaXMuX2NyZWF0ZUNvbnRleHQoKTtmb3IoY29uc3QgYSBvZiBlLnNwbGl0KC9cclxuP3xcbi8pKWZvcihjb25zdCBlIG9mIGEuc3BsaXQoIiIpKXtjb25zdCBhPWUuY2hhckNvZGVBdCgwKTtpZih0aGlzLndpZHRocy5oYXMoYSkpY29udGludWU7Y29uc3Qgcj10Lm1lYXN1cmVUZXh0KGUpLGk9TWF0aC5jZWlsKHIud2lkdGgpO3RoaXMud2lkdGhzLnNldChhLGkpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGEsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoYSx0aGlzLmxhc3RDaGFyKX1yZXR1cm4gdGhpcy5yZXNvdXJjZXN9c3RhdGljIGdldEZpcnN0UG9zaXRpb25JbmZvKGUsdCxpKXtjb25zdFtuLHMsbyxjXT1lO2xldCBsPW8tbixoPWMtczt0JTE4MCE9MCYmKFtsLGhdPVtoLGxdKTtjb25zdCB1PWEqaTtyZXR1cm57Y29vcmRzOlswLGgrcippLXVdLGJib3g6WzAsMCxsLGhdLG1hdHJpeDowIT09dD9nZXRSb3RhdGlvbk1hdHJpeCh0LGgsdSk6dm9pZCAwfX1jcmVhdGVBcHBlYXJhbmNlKGUsdCxpLG4scyxvKXtjb25zdCBjPXRoaXMuX2NyZWF0ZUNvbnRleHQoKSxsPVtdO2xldCBoPS0xLzA7Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvXHJcbj98XG4vKSl7bC5wdXNoKHQpO2NvbnN0IGU9Yy5tZWFzdXJlVGV4dCh0KS53aWR0aDtoPU1hdGgubWF4KGgsZSk7Zm9yKGNvbnN0IGUgb2YgY29kZVBvaW50SXRlcih0KSl7Y29uc3QgdD1TdHJpbmcuZnJvbUNvZGVQb2ludChlKTtsZXQgYT10aGlzLndpZHRocy5nZXQoZSk7aWYodm9pZCAwPT09YSl7Y29uc3Qgcj1jLm1lYXN1cmVUZXh0KHQpO2E9TWF0aC5jZWlsKHIud2lkdGgpO3RoaXMud2lkdGhzLnNldChlLGEpO3RoaXMuZmlyc3RDaGFyPU1hdGgubWluKGUsdGhpcy5maXJzdENoYXIpO3RoaXMubGFzdENoYXI9TWF0aC5tYXgoZSx0aGlzLmxhc3RDaGFyKX19fWgqPW4vMWUzO2NvbnN0W3UsZCxmLGddPXQ7bGV0IHA9Zi11LG09Zy1kO2klMTgwIT0wJiYoW3AsbV09W20scF0pO2xldCBiPTE7aD5wJiYoYj1wL2gpO2xldCB5PTE7Y29uc3Qgdz1hKm4seD1yKm4sUz13KmwubGVuZ3RoO1M+bSYmKHk9bS9TKTtjb25zdCBrPW4qTWF0aC5taW4oYix5KSxDPVsicSIsYDAgMCAke251bWJlclRvU3RyaW5nKHApfSAke251bWJlclRvU3RyaW5nKG0pfSByZSBXIG5gLCJCVCIsYDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKG0reCl9IFRtIDAgVGMgJHtnZXRQZGZDb2xvcihzLCEwKX1gLGAvJHt0aGlzLmZvbnROYW1lLm5hbWV9ICR7bnVtYmVyVG9TdHJpbmcoayl9IFRmYF0se3Jlc291cmNlczp2fT10aGlzO2lmKDEhPT0obz0ibnVtYmVyIj09dHlwZW9mIG8mJm8+PTAmJm88PTE/bzoxKSl7Qy5wdXNoKCIvUjAgZ3MiKTtjb25zdCBlPW5ldyBEaWN0KHRoaXMueHJlZiksdD1uZXcgRGljdCh0aGlzLnhyZWYpO3Quc2V0KCJjYSIsbyk7dC5zZXQoIkNBIixvKTt0LnNldElmTmFtZSgiVHlwZSIsIkV4dEdTdGF0ZSIpO2Uuc2V0KCJSMCIsdCk7di5zZXQoIkV4dEdTdGF0ZSIsZSl9Y29uc3QgRj1udW1iZXJUb1N0cmluZyh3KTtmb3IoY29uc3QgZSBvZiBsKUMucHVzaChgMCAtJHtGfSBUZCA8JHtzdHJpbmdUb1VURjE2SGV4U3RyaW5nKGUpfT4gVGpgKTtDLnB1c2goIkVUIiwiUSIpO2NvbnN0IFQ9Qy5qb2luKCJcbiIpLE89bmV3IERpY3QodGhpcy54cmVmKTtPLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtPLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtPLnNldCgiQkJveCIsWzAsMCxwLG1dKTtPLnNldCgiTGVuZ3RoIixULmxlbmd0aCk7Ty5zZXQoIlJlc291cmNlcyIsdik7aWYoaSl7Y29uc3QgZT1nZXRSb3RhdGlvbk1hdHJpeChpLHAsbSk7Ty5zZXQoIk1hdHJpeCIsZSl9Y29uc3QgRD1uZXcgU3RyaW5nU3RyZWFtKFQpO0QuZGljdD1PO3JldHVybiBEfX1jb25zdCBrbj1bIm0vZCIsIm0vZC95eSIsIm1tL2RkL3l5IiwibW0veXkiLCJkLW1tbSIsImQtbW1tLXl5IiwiZGQtbW1tLXl5IiwieXktbW0tZGQiLCJtbW0teXkiLCJtbW1tLXl5IiwibW1tIGQsIHl5eXkiLCJtbW1tIGQsIHl5eXkiLCJtL2QveXkgaDpNTSB0dCIsIm0vZC95eSBISDpNTSJdLENuPVsiSEg6TU0iLCJoOk1NIHR0IiwiSEg6TU06c3MiLCJoOk1NOnNzIHR0Il07Y2xhc3MgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5yb290PWU7dGhpcy54cmVmPXQ7dGhpcy5fdHlwZT1hfWdldEFsbChlPSExKXtjb25zdCB0PW5ldyBNYXA7aWYoIXRoaXMucm9vdClyZXR1cm4gdDtjb25zdCBhPXRoaXMueHJlZixyPW5ldyBSZWZTZXQ7ci5wdXQodGhpcy5yb290KTtjb25zdCBpPVt0aGlzLnJvb3RdO2Zvcig7aS5sZW5ndGg+MDspe2NvbnN0IG49YS5mZXRjaElmUmVmKGkuc2hpZnQoKSk7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7aWYobi5oYXMoIktpZHMiKSl7Y29uc3QgZT1uLmdldCgiS2lkcyIpO2lmKCFBcnJheS5pc0FycmF5KGUpKWNvbnRpbnVlO2Zvcihjb25zdCB0IG9mIGUpe2lmKHIuaGFzKHQpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgRHVwbGljYXRlIGVudHJ5IGluICIke3RoaXMuX3R5cGV9IiB0cmVlLmApO2kucHVzaCh0KTtyLnB1dCh0KX1jb250aW51ZX1jb25zdCBzPW4uZ2V0KHRoaXMuX3R5cGUpO2lmKEFycmF5LmlzQXJyYXkocykpZm9yKGxldCByPTAsaT1zLmxlbmd0aDtyPGk7cis9Mil0LnNldChhLmZldGNoSWZSZWYoc1tyXSksZT9zW3IrMV06YS5mZXRjaElmUmVmKHNbcisxXSkpfXJldHVybiB0fWdldFJhdyhlKXtpZighdGhpcy5yb290KXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy54cmVmO2xldCBhPXQuZmV0Y2hJZlJlZih0aGlzLnJvb3QpLHI9MDtmb3IoO2EuaGFzKCJLaWRzIik7KXtpZigrK3I+MTApe3dhcm4oYFNlYXJjaCBkZXB0aCBsaW1pdCByZWFjaGVkIGZvciAiJHt0aGlzLl90eXBlfSIgdHJlZS5gKTtyZXR1cm4gbnVsbH1jb25zdCBpPWEuZ2V0KCJLaWRzIik7aWYoIUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuIG51bGw7bGV0IG49MCxzPWkubGVuZ3RoLTE7Zm9yKDtuPD1zOyl7Y29uc3Qgcj1uK3M+PjEsbz10LmZldGNoSWZSZWYoaVtyXSksYz1vLmdldCgiTGltaXRzIik7aWYoZTx0LmZldGNoSWZSZWYoY1swXSkpcz1yLTE7ZWxzZXtpZighKGU+dC5mZXRjaElmUmVmKGNbMV0pKSl7YT1vO2JyZWFrfW49cisxfX1pZihuPnMpcmV0dXJuIG51bGx9Y29uc3QgaT1hLmdldCh0aGlzLl90eXBlKTtpZihBcnJheS5pc0FycmF
1015KGkpKXtsZXQgYT0wLHI9aS5sZW5ndGgtMjtmb3IoO2E8PXI7KXtjb25zdCBuPWErcj4+MSxzPW4rKDEmbiksbz10LmZldGNoSWZSZWYoaVtzXSk7aWYoZTxvKXI9cy0yO2Vsc2V7aWYoIShlPm8pKXJldHVybiBpW3MrMV07YT1zKzJ9fX1yZXR1cm4gbnVsbH1nZXQoZSl7cmV0dXJuIHRoaXMueHJlZi5mZXRjaElmUmVmKHRoaXMuZ2V0UmF3KGUpKX19Y2xhc3MgTmFtZVRyZWUgZXh0ZW5kcyBOYW1lT3JOdW1iZXJUcmVle2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSx0LCJOYW1lcyIpfX1jbGFzcyBOdW1iZXJUcmVlIGV4dGVuZHMgTmFtZU9yTnVtYmVyVHJlZXtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwiTnVtcyIpfX1mdW5jdGlvbiBjbGVhckdsb2JhbENhY2hlcygpeyFmdW5jdGlvbiBjbGVhclBhdHRlcm5DYWNoZXMoKXtnaT1PYmplY3QuY3JlYXRlKG51bGwpfSgpOyFmdW5jdGlvbiBjbGVhclByaW1pdGl2ZUNhY2hlcygpe29hPU9iamVjdC5jcmVhdGUobnVsbCk7Y2E9T2JqZWN0LmNyZWF0ZShudWxsKTtsYT1PYmplY3QuY3JlYXRlKG51bGwpfSgpOyFmdW5jdGlvbiBjbGVhclVuaWNvZGVDYWNoZXMoKXt5ci5jbGVhcigpfSgpO0pweEltYWdlLmNsZWFudXAoKX1mdW5jdGlvbiBwaWNrUGxhdGZvcm1JdGVtKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRGljdD9lLmhhcygiVUYiKT9lLmdldCgiVUYiKTplLmhhcygiRiIpP2UuZ2V0KCJGIik6ZS5oYXMoIlVuaXgiKT9lLmdldCgiVW5peCIpOmUuaGFzKCJNYWMiKT9lLmdldCgiTWFjIik6ZS5oYXMoIkRPUyIpP2UuZ2V0KCJET1MiKTpudWxsOm51bGx9Y2xhc3MgRmlsZVNwZWN7I3BlPSExO2NvbnN0cnVjdG9yKGUsdCxhPSExKXtpZihlIGluc3RhbmNlb2YgRGljdCl7dGhpcy54cmVmPXQ7dGhpcy5yb290PWU7ZS5oYXMoIkZTIikmJih0aGlzLmZzPWUuZ2V0KCJGUyIpKTtlLmhhcygiUkYiKSYmd2FybigiUmVsYXRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIik7YXx8KGUuaGFzKCJFRiIpP3RoaXMuI3BlPSEwOndhcm4oIk5vbi1lbWJlZGRlZCBmaWxlIHNwZWNpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIikpfX1nZXQgZmlsZW5hbWUoKXtsZXQgZT0iIjtjb25zdCB0PXBpY2tQbGF0Zm9ybUl0ZW0odGhpcy5yb290KTt0JiYic3RyaW5nIj09dHlwZW9mIHQmJihlPXN0cmluZ1RvUERGU3RyaW5nKHQsITApLnJlcGxhY2VBbGwoIlxcXFwiLCJcXCIpLnJlcGxhY2VBbGwoIlxcLyIsIi8iKS5yZXBsYWNlQWxsKCJcXCIsIi8iKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJmaWxlbmFtZSIsZXx8InVubmFtZWQiKX1nZXQgY29udGVudCgpe2lmKCF0aGlzLiNwZSlyZXR1cm4gbnVsbDt0aGlzLl9jb250ZW50UmVmfHw9cGlja1BsYXRmb3JtSXRlbSh0aGlzLnJvb3Q/LmdldCgiRUYiKSk7bGV0IGU9bnVsbDtpZih0aGlzLl9jb250ZW50UmVmKXtjb25zdCB0PXRoaXMueHJlZi5mZXRjaElmUmVmKHRoaXMuX2NvbnRlbnRSZWYpO3QgaW5zdGFuY2VvZiBCYXNlU3RyZWFtP2U9dC5nZXRCeXRlcygpOndhcm4oIkVtYmVkZGVkIGZpbGUgc3BlY2lmaWNhdGlvbiBwb2ludHMgdG8gbm9uLWV4aXN0aW5nL2ludmFsaWQgY29udGVudCIpfWVsc2Ugd2FybigiRW1iZWRkZWQgZmlsZSBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IGhhdmUgYW55IGNvbnRlbnQiKTtyZXR1cm4gZX1nZXQgZGVzY3JpcHRpb24oKXtsZXQgZT0iIjtjb25zdCB0PXRoaXMucm9vdD8uZ2V0KCJEZXNjIik7dCYmInN0cmluZyI9PXR5cGVvZiB0JiYoZT1zdHJpbmdUb1BERlN0cmluZyh0KSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJkZXNjcmlwdGlvbiIsZSl9Z2V0IHNlcmlhbGl6YWJsZSgpe3JldHVybntyYXdGaWxlbmFtZTp0aGlzLmZpbGVuYW1lLGZpbGVuYW1lOihlPXRoaXMuZmlsZW5hbWUsZS5zdWJzdHJpbmcoZS5sYXN0SW5kZXhPZigiLyIpKzEpKSxjb250ZW50OnRoaXMuY29udGVudCxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9ufTt2YXIgZX19Y29uc3Qgdm49MCxGbj0tMixJbj0tMyxUbj0tNCxPbj0tNSxEbj0tNixNbj0tOTtmdW5jdGlvbiBpc1doaXRlc3BhY2UoZSx0KXtjb25zdCBhPWVbdF07cmV0dXJuIiAiPT09YXx8IlxuIj09PWF8fCJcciI9PT1hfHwiXHQiPT09YX1jbGFzcyBYTUxQYXJzZXJCYXNle19yZXNvbHZlRW50aXRpZXMoZSl7cmV0dXJuIGUucmVwbGFjZUFsbCgvJihbXjtdKyk7L2csKGUsdCk9PntpZigiI3giPT09dC5zdWJzdHJpbmcoMCwyKSlyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQocGFyc2VJbnQodC5zdWJzdHJpbmcoMiksMTYpKTtpZigiIyI9PT10LnN1YnN0cmluZygwLDEpKXJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludCh0LnN1YnN0cmluZygxKSwxMCkpO3N3aXRjaCh0KXtjYXNlImx0IjpyZXR1cm4iPCI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJxdW90IjpyZXR1cm4nIic7Y2FzZSJhcG9zIjpyZXR1cm4iJyJ9cmV0dXJuIHRoaXMub25SZXNvbHZlRW50aXR5KHQpfSl9X3BhcnNlQ29udGVudChlLHQpe2NvbnN0IGE9W107bGV0IHI9dDtmdW5jdGlvbiBza2lwV3MoKXtmb3IoO3I8ZS5sZW5ndGgmJmlzV2hpdGVzcGFjZShlLHIpOykrK3J9Zm9yKDtyPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUscikmJiI+IiE9PWVbcl0mJiIvIiE9PWVbcl07KSsrcjtjb25zdCBpPWUuc3Vic3RyaW5nKHQscik7c2tpcFdzKCk7Zm9yKDtyPGUubGVuZ3RoJiYiPiIhPT1lW3JdJiYiLyIhPT1lW3JdJiYiPyIhPT1lW3JdOyl7c2tpcFdzKCk7bGV0IHQ9IiIsaT0iIjtmb3IoO3I8ZS5sZW5ndGgmJiFpc1doaXRlc3BhY2UoZSxyKSYmIj0iIT09ZVtyXTspe3QrPWVbcl07KytyfXNraXBXcygpO2lmKCI9IiE9PWVbcl0pcmV0dXJuIG51bGw7KytyO3NraXBXcygpO2NvbnN0IG49ZVtyXTtpZignIichPT1uJiYiJyIhPT1uKXJldHVybi
101BudWxsO2NvbnN0IHM9ZS5pbmRleE9mKG4sKytyKTtpZihzPDApcmV0dXJuIG51bGw7aT1lLnN1YnN0cmluZyhyLHMpO2EucHVzaCh7bmFtZTp0LHZhbHVlOnRoaXMuX3Jlc29sdmVFbnRpdGllcyhpKX0pO3I9cysxO3NraXBXcygpfXJldHVybntuYW1lOmksYXR0cmlidXRlczphLHBhcnNlZDpyLXR9fV9wYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlvbihlLHQpe2xldCBhPXQ7Zm9yKDthPGUubGVuZ3RoJiYhaXNXaGl0ZXNwYWNlKGUsYSkmJiI+IiE9PWVbYV0mJiI/IiE9PWVbYV0mJiIvIiE9PWVbYV07KSsrYTtjb25zdCByPWUuc3Vic3RyaW5nKHQsYSk7IWZ1bmN0aW9uIHNraXBXcygpe2Zvcig7YTxlLmxlbmd0aCYmaXNXaGl0ZXNwYWNlKGUsYSk7KSsrYX0oKTtjb25zdCBpPWE7Zm9yKDthPGUubGVuZ3RoJiYoIj8iIT09ZVthXXx8Ij4iIT09ZVthKzFdKTspKythO3JldHVybntuYW1lOnIsdmFsdWU6ZS5zdWJzdHJpbmcoaSxhKSxwYXJzZWQ6YS10fX1wYXJzZVhtbChlKXtsZXQgdD0wO2Zvcig7dDxlLmxlbmd0aDspe2xldCBhPXQ7aWYoIjwiPT09ZVt0XSl7KythO2xldCB0O3N3aXRjaChlW2FdKXtjYXNlIi8iOisrYTt0PWUuaW5kZXhPZigiPiIsYSk7aWYodDwwKXt0aGlzLm9uRXJyb3IoTW4pO3JldHVybn10aGlzLm9uRW5kRWxlbWVudChlLnN1YnN0cmluZyhhLHQpKTthPXQrMTticmVhaztjYXNlIj8iOisrYTtjb25zdCByPXRoaXMuX3BhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKGUsYSk7aWYoIj8+IiE9PWUuc3Vic3RyaW5nKGErci5wYXJzZWQsYStyLnBhcnNlZCsyKSl7dGhpcy5vbkVycm9yKEluKTtyZXR1cm59dGhpcy5vblBpKHIubmFtZSxyLnZhbHVlKTthKz1yLnBhcnNlZCsyO2JyZWFrO2Nhc2UiISI6aWYoIi0tIj09PWUuc3Vic3RyaW5nKGErMSxhKzMpKXt0PWUuaW5kZXhPZigiLS1ceDNlIixhKzMpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKE9uKTtyZXR1cm59dGhpcy5vbkNvbW1lbnQoZS5zdWJzdHJpbmcoYSszLHQpKTthPXQrM31lbHNlIGlmKCJbQ0RBVEFbIj09PWUuc3Vic3RyaW5nKGErMSxhKzgpKXt0PWUuaW5kZXhPZigiXV0+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKEZuKTtyZXR1cm59dGhpcy5vbkNkYXRhKGUuc3Vic3RyaW5nKGErOCx0KSk7YT10KzN9ZWxzZXtpZigiRE9DVFlQRSIhPT1lLnN1YnN0cmluZyhhKzEsYSs4KSl7dGhpcy5vbkVycm9yKERuKTtyZXR1cm59e2NvbnN0IHI9ZS5pbmRleE9mKCJbIixhKzgpO2xldCBpPSExO3Q9ZS5pbmRleE9mKCI+IixhKzgpO2lmKHQ8MCl7dGhpcy5vbkVycm9yKFRuKTtyZXR1cm59aWYocj4wJiZ0PnIpe3Q9ZS5pbmRleE9mKCJdPiIsYSs4KTtpZih0PDApe3RoaXMub25FcnJvcihUbik7cmV0dXJufWk9ITB9Y29uc3Qgbj1lLnN1YnN0cmluZyhhKzgsdCsoaT8xOjApKTt0aGlzLm9uRG9jdHlwZShuKTthPXQrKGk/MjoxKX19YnJlYWs7ZGVmYXVsdDpjb25zdCBpPXRoaXMuX3BhcnNlQ29udGVudChlLGEpO2lmKG51bGw9PT1pKXt0aGlzLm9uRXJyb3IoRG4pO3JldHVybn1sZXQgbj0hMTtpZigiLz4iPT09ZS5zdWJzdHJpbmcoYStpLnBhcnNlZCxhK2kucGFyc2VkKzIpKW49ITA7ZWxzZSBpZigiPiIhPT1lLnN1YnN0cmluZyhhK2kucGFyc2VkLGEraS5wYXJzZWQrMSkpe3RoaXMub25FcnJvcihNbik7cmV0dXJufXRoaXMub25CZWdpbkVsZW1lbnQoaS5uYW1lLGkuYXR0cmlidXRlcyxuKTthKz1pLnBhcnNlZCsobj8yOjEpfX1lbHNle2Zvcig7YTxlLmxlbmd0aCYmIjwiIT09ZVthXTspYSsrO2NvbnN0IHI9ZS5zdWJzdHJpbmcodCxhKTt0aGlzLm9uVGV4dCh0aGlzLl9yZXNvbHZlRW50aXRpZXMocikpfXQ9YX19b25SZXNvbHZlRW50aXR5KGUpe3JldHVybmAmJHtlfTtgfW9uUGkoZSx0KXt9b25Db21tZW50KGUpe31vbkNkYXRhKGUpe31vbkRvY3R5cGUoZSl7fW9uVGV4dChlKXt9b25CZWdpbkVsZW1lbnQoZSx0LGEpe31vbkVuZEVsZW1lbnQoZSl7fW9uRXJyb3IoZSl7fX1jbGFzcyBTaW1wbGVET01Ob2Rle2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5ub2RlTmFtZT1lO3RoaXMubm9kZVZhbHVlPXQ7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsInBhcmVudE5vZGUiLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSl9Z2V0IGZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzPy5bMF19Z2V0IG5leHRTaWJsaW5nKCl7Y29uc3QgZT10aGlzLnBhcmVudE5vZGUuY2hpbGROb2RlcztpZighZSlyZXR1cm47Y29uc3QgdD1lLmluZGV4T2YodGhpcyk7cmV0dXJuLTEhPT10P2VbdCsxXTp2b2lkIDB9Z2V0IHRleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz90aGlzLmNoaWxkTm9kZXMubWFwKGU9PmUudGV4dENvbnRlbnQpLmpvaW4oIiIpOnRoaXMubm9kZVZhbHVlfHwiIn1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfHxbXX1oYXNDaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcz8ubGVuZ3RoPjB9c2VhcmNoTm9kZShlLHQpe2lmKHQ+PWUubGVuZ3RoKXJldHVybiB0aGlzO2NvbnN0IGE9ZVt0XTtpZihhLm5hbWUuc3RhcnRzV2l0aCgiIyIpJiZ0PGUubGVuZ3RoLTEpcmV0dXJuIHRoaXMuc2VhcmNoTm9kZShlLHQrMSk7Y29uc3Qgcj1bXTtsZXQgaT10aGlzO2Zvcig7Oyl7aWYoYS5uYW1lPT09aS5ub2RlTmFtZSl7aWYoMCE9PWEucG9zKXtpZigwPT09ci5sZW5ndGgpcmV0dXJuIG51bGw7e2NvbnN0W25dPXIucG9wKCk7bGV0IHM9MDtmb3IoY29uc3QgciBvZiBuLmNoaWxkTm9kZXMpaWYoYS5uYW1lPT09ci5ub2RlTmFtZSl7aWYocz09PWEucG9zKXJldHVybi
101ByLnNlYXJjaE5vZGUoZSx0KzEpO3MrK31yZXR1cm4gaS5zZWFyY2hOb2RlKGUsdCsxKX19e2NvbnN0IGE9aS5zZWFyY2hOb2RlKGUsdCsxKTtpZihudWxsIT09YSlyZXR1cm4gYX19aWYoaS5jaGlsZE5vZGVzPy5sZW5ndGg+MCl7ci5wdXNoKFtpLDBdKTtpPWkuY2hpbGROb2Rlc1swXX1lbHNle2lmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbDtmb3IoOzAhPT1yLmxlbmd0aDspe2NvbnN0W2UsdF09ci5wb3AoKSxhPXQrMTtpZihhPGUuY2hpbGROb2Rlcy5sZW5ndGgpe3IucHVzaChbZSxhXSk7aT1lLmNoaWxkTm9kZXNbYV07YnJlYWt9fWlmKDA9PT1yLmxlbmd0aClyZXR1cm4gbnVsbH19fWR1bXAoZSl7aWYoIiN0ZXh0IiE9PXRoaXMubm9kZU5hbWUpe2UucHVzaChgPCR7dGhpcy5ub2RlTmFtZX1gKTtpZih0aGlzLmF0dHJpYnV0ZXMpZm9yKGNvbnN0IHQgb2YgdGhpcy5hdHRyaWJ1dGVzKWUucHVzaChgICR7dC5uYW1lfT0iJHtlbmNvZGVUb1htbFN0cmluZyh0LnZhbHVlKX0iYCk7aWYodGhpcy5oYXNDaGlsZE5vZGVzKCkpe2UucHVzaCgiPiIpO2Zvcihjb25zdCB0IG9mIHRoaXMuY2hpbGROb2Rlcyl0LmR1bXAoZSk7ZS5wdXNoKGA8LyR7dGhpcy5ub2RlTmFtZX0+YCl9ZWxzZSB0aGlzLm5vZGVWYWx1ZT9lLnB1c2goYD4ke2VuY29kZVRvWG1sU3RyaW5nKHRoaXMubm9kZVZhbHVlKX08LyR7dGhpcy5ub2RlTmFtZX0+YCk6ZS5wdXNoKCIvPiIpfWVsc2UgZS5wdXNoKGVuY29kZVRvWG1sU3RyaW5nKHRoaXMubm9kZVZhbHVlKSl9fWNsYXNzIFNpbXBsZVhNTFBhcnNlciBleHRlbmRzIFhNTFBhcnNlckJhc2V7Y29uc3RydWN0b3Ioe2hhc0F0dHJpYnV0ZXM6ZT0hMSxsb3dlckNhc2VOYW1lOnQ9ITF9KXtzdXBlcigpO3RoaXMuX2N1cnJlbnRGcmFnbWVudD1udWxsO3RoaXMuX3N0YWNrPW51bGw7dGhpcy5fZXJyb3JDb2RlPXZuO3RoaXMuX2hhc0F0dHJpYnV0ZXM9ZTt0aGlzLl9sb3dlckNhc2VOYW1lPXR9cGFyc2VGcm9tU3RyaW5nKGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD1bXTt0aGlzLl9zdGFjaz1bXTt0aGlzLl9lcnJvckNvZGU9dm47dGhpcy5wYXJzZVhtbChlKTtpZih0aGlzLl9lcnJvckNvZGUhPT12bilyZXR1cm47Y29uc3RbdF09dGhpcy5fY3VycmVudEZyYWdtZW50O3JldHVybiB0P3tkb2N1bWVudEVsZW1lbnQ6dH06dm9pZCAwfW9uVGV4dChlKXtpZihmdW5jdGlvbiBpc1doaXRlc3BhY2VTdHJpbmcoZSl7Zm9yKGxldCB0PTAsYT1lLmxlbmd0aDt0PGE7dCsrKWlmKCFpc1doaXRlc3BhY2UoZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0oZSkpcmV0dXJuO2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkNkYXRhKGUpe2NvbnN0IHQ9bmV3IFNpbXBsZURPTU5vZGUoIiN0ZXh0IixlKTt0aGlzLl9jdXJyZW50RnJhZ21lbnQucHVzaCh0KX1vbkJlZ2luRWxlbWVudChlLHQsYSl7dGhpcy5fbG93ZXJDYXNlTmFtZSYmKGU9ZS50b0xvd2VyQ2FzZSgpKTtjb25zdCByPW5ldyBTaW1wbGVET01Ob2RlKGUpO3IuY2hpbGROb2Rlcz1bXTt0aGlzLl9oYXNBdHRyaWJ1dGVzJiYoci5hdHRyaWJ1dGVzPXQpO3RoaXMuX2N1cnJlbnRGcmFnbWVudC5wdXNoKHIpO2lmKCFhKXt0aGlzLl9zdGFjay5wdXNoKHRoaXMuX2N1cnJlbnRGcmFnbWVudCk7dGhpcy5fY3VycmVudEZyYWdtZW50PXIuY2hpbGROb2Rlc319b25FbmRFbGVtZW50KGUpe3RoaXMuX2N1cnJlbnRGcmFnbWVudD10aGlzLl9zdGFjay5wb3AoKXx8W107Y29uc3QgdD10aGlzLl9jdXJyZW50RnJhZ21lbnQuYXQoLTEpO2lmKCF0KXJldHVybiBudWxsO2Zvcihjb25zdCBlIG9mIHQuY2hpbGROb2RlcyllLnBhcmVudE5vZGU9dDtyZXR1cm4gdH1vbkVycm9yKGUpe3RoaXMuX2Vycm9yQ29kZT1lfX1jbGFzcyBNZXRhZGF0YVBhcnNlcntjb25zdHJ1Y3RvcihlKXtlPXRoaXMuX3JlcGFpcihlKTtjb25zdCB0PW5ldyBTaW1wbGVYTUxQYXJzZXIoe2xvd2VyQ2FzZU5hbWU6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7dGhpcy5fbWV0YWRhdGFNYXA9bmV3IE1hcDt0aGlzLl9kYXRhPWU7dCYmdGhpcy5fcGFyc2UodCl9X3JlcGFpcihlKXtyZXR1cm4gZS5yZXBsYWNlKC9eW148XSsvLCIiKS5yZXBsYWNlQWxsKC8+XFwzNzZcXDM3NyhbXjxdKykvZyxmdW5jdGlvbihlLHQpe2NvbnN0IGE9dC5yZXBsYWNlQWxsKC9cXChbMC0zXSkoWzAtN10pKFswLTddKS9nLGZ1bmN0aW9uKGUsdCxhLHIpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKDY0KnQrOCphKzEqcil9KS5yZXBsYWNlQWxsKC8mKGFtcHxhcG9zfGd0fGx0fHF1b3QpOy9nLGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiYW1wIjpyZXR1cm4iJiI7Y2FzZSJhcG9zIjpyZXR1cm4iJyI7Y2FzZSJndCI6cmV0dXJuIj4iO2Nhc2UibHQiOnJldHVybiI8IjtjYXNlInF1b3QiOnJldHVybiciJ310aHJvdyBuZXcgRXJyb3IoYF9yZXBhaXI6ICR7dH0gaXNuJ3QgZGVmaW5lZC5gKX0pLHI9WyI+Il07Zm9yKGxldCBlPTAsdD1hLmxlbmd0aDtlPHQ7ZSs9Mil7Y29uc3QgdD0yNTYqYS5jaGFyQ29kZUF0KGUpK2EuY2hhckNvZGVBdChlKzEpO3Q+PTMyJiZ0PDEyNyYmNjAhPT10JiY2MiE9PXQmJjM4IT09dD9yLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSh0KSk6ci5wdXNoKCImI3giKyg2NTUzNit0KS50b1N0cmluZygxNikuc3Vic3RyaW5nKDEpKyI7Iil9cmV0dXJuIHIuam9pbigiIil9KX1fZ2V0U2VxdWVuY2UoZSl7Y29uc3QgdD1lLm5vZGVOYW1lO3JldHVybiJyZGY6YmFnIiE9PXQmJiJyZGY6c2VxIiE9PXQmJiJyZGY6YWx0IiE9PXQ/bnVsbDplLmNoaWxkTm9kZXMuZmlsdGVyKGU9PiJyZGY6bGkiPT09ZS5ub2RlTmFtZSl9X3BhcnNlQXJyYXkoZSl7aWYoIWUuaGFzQ2hpbGROb2RlcygpKXJldHVybjtjb25zdFt0XT1lLmNoaWxkTm9kZXMsYT10aGlzLl9nZXRTZXF1ZW5jZSh0KXx8W107dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUubm9kZU5hbWUsYS5tYXAoZT0+ZS50ZXh0Q29udGVudC50cmltKCkpKX1fcGFyc2UoZSl7bGV0IHQ9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoInJkZjpyZGYiIT09dC5ub2RlTmFtZSl7dD10LmZpcnN0Q2hpbGQ7Zm9yKDt0JiYicmRmOnJkZiIhPT10Lm5vZGVOYW1lOyl0PXQubmV4dFNpYmxpbmd9aWYodCYmInJkZjpyZGYiPT09dC5ub2RlTmFtZSYmdC5oYXNDaGlsZE5vZGVzKCkpZm9yKGNvbnN0IGUgb2YgdC5jaGlsZE5vZGVzKWlmKCJyZGY6ZGVzY3JpcHRpb24iPT09ZS5ub2RlTmFtZSlmb3IoY29uc3QgdCBvZiBlLmNoaWxkTm9kZXMpe2NvbnN0IGU9dC5ub2RlTmFtZTtzd2l0Y2goZSl7Y2FzZSIjdGV4dCI6Y29udGludWU7Y2FzZSJkYzpjcmVhdG9yIjpjYXNlImRjOnN1YmplY3QiOnRoaXMuX3BhcnNlQXJyYXkodCk7Y29udGludWV9dGhpcy5fbWV0YWRhdGFNYXAuc2V0KGUsdC50ZXh0Q29udGVudC50cmltKCkpfX1nZXQgc2VyaWFsaXphYmxlKCl7cmV0dXJue3BhcnNlZERhdGE6dGhpcy5fbWV0YWRhdGFNYXAscmF3RGF0YTp0aGlzLl9kYXRhfX19Y29uc3QgUm49MSxCbj0yLE5uPTMsUG49NCxFbj01O2NsYXNzIFN0cnVjdFRyZWVSb290e2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLnhyZWY9ZTt0aGlzLmRpY3Q9dDt0aGlzLnJlZj1hIGluc3RhbmNlb2YgUmVmP2E6bnVsbDt0aGlzLnJvbGVNYXA9bmV3IE1hcDt0aGlzLnN0cnVjdFBhcmVudElkcz1udWxsO3RoaXMua2lkUmVmVG9Qb3NpdGlvbj12b2lkIDA7dGhpcy5wYXJlbnRUcmVlPW51bGx9Z2V0S2lkUG9zaXRpb24oZSl7aWYodm9pZCAwPT09dGhpcy5raWRS
101ZWZUb1Bvc2l0aW9uKXtjb25zdCBlPXRoaXMuZGljdC5nZXQoIksiKTtpZihBcnJheS5pc0FycmF5KGUpKXtjb25zdCB0PXRoaXMua2lkUmVmVG9Qb3NpdGlvbj1uZXcgTWFwO2ZvcihsZXQgYT0wLHI9ZS5sZW5ndGg7YTxyO2ErKyl7Y29uc3Qgcj1lW2FdO3ImJnQuc2V0KHIudG9TdHJpbmcoKSxhKX19ZWxzZSB0aGlzLmtpZFJlZlRvUG9zaXRpb249ZSBpbnN0YW5jZW9mIERpY3Q/bmV3IE1hcChbW2Uub2JqSWQsMF1dKTplP251bGw6bmV3IE1hcH1yZXR1cm4gdGhpcy5raWRSZWZUb1Bvc2l0aW9uP3RoaXMua2lkUmVmVG9Qb3NpdGlvbi5nZXQoZSk/P05hTjotMX1pbml0KCl7dGhpcy5yZWFkUm9sZU1hcCgpO2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUGFyZW50VHJlZSIpO2UmJih0aGlzLnBhcmVudFRyZWU9bmV3IE51bWJlclRyZWUoZSx0aGlzLnhyZWYpKX0jbWUoZSx0LGEpe2lmKCEoZSBpbnN0YW5jZW9mIFJlZil8fHQ8MClyZXR1cm47dGhpcy5zdHJ1Y3RQYXJlbnRJZHN8fD1uZXcgUmVmU2V0Q2FjaGU7bGV0IHI9dGhpcy5zdHJ1Y3RQYXJlbnRJZHMuZ2V0KGUpO2lmKCFyKXtyPVtdO3RoaXMuc3RydWN0UGFyZW50SWRzLnB1dChlLHIpfXIucHVzaChbdCxhXSl9YWRkQW5ub3RhdGlvbklkVG9QYWdlKGUsdCl7dGhpcy4jbWUoZSx0LFBuKX1yZWFkUm9sZU1hcCgpe2NvbnN0IGU9dGhpcy5kaWN0LmdldCgiUm9sZU1hcCIpO2lmKGUgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFt0LGFdb2YgZSlhIGluc3RhbmNlb2YgTmFtZSYmdGhpcy5yb2xlTWFwLnNldCh0LGEubmFtZSl9c3RhdGljIGFzeW5jIGNhbkNyZWF0ZVN0cnVjdHVyZVRyZWUoe2NhdGFsb2dSZWY6ZSxwZGZNYW5hZ2VyOnQsbmV3QW5ub3RhdGlvbnNCeVBhZ2U6YX0pe2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpe3dhcm4oIkNhbm5vdCBzYXZlIHRoZSBzdHJ1Y3QgdHJlZTogbm8gY2F0YWxvZyByZWZlcmVuY2UuIik7cmV0dXJuITF9bGV0IHI9MCxpPSEwO2Zvcihjb25zdFtlLG5db2YgYSl7Y29uc3R7cmVmOmF9PWF3YWl0IHQuZ2V0UGFnZShlKTtpZighKGEgaW5zdGFuY2VvZiBSZWYpKXt3YXJuKGBDYW5ub3Qgc2F2ZSB0aGUgc3RydWN0IHRyZWU6IHBhZ2UgJHtlfSBoYXMgbm8gcmVmLmApO2k9ITA7YnJlYWt9Zm9yKGNvbnN0IGUgb2YgbilpZihlLmFjY2Vzc2liaWxpdHlEYXRhPy50eXBlKXtlLnBhcmVudFRyZWVJZD1yKys7aT0hMX19aWYoaSl7Zm9yKGNvbnN0IGUgb2YgYS52YWx1ZXMoKSlmb3IoY29uc3QgdCBvZiBlKWRlbGV0ZSB0LnBhcmVudFRyZWVJZDtyZXR1cm4hMX1yZXR1cm4hMH1zdGF0aWMgYXN5bmMgY3JlYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSx4cmVmOnQsY2F0YWxvZ1JlZjphLHBkZk1hbmFnZXI6cixjaGFuZ2VzOml9KXtjb25zdCBuPWF3YWl0IHIuZW5zdXJlQ2F0YWxvZygiY2xvbmVEaWN0Iikscz1uZXcgUmVmU2V0Q2FjaGU7cy5wdXQoYSxuKTtjb25zdCBvPXQuZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7bi5zZXQoIlN0cnVjdFRyZWVSb290IixvKTtjb25zdCBjPW5ldyBEaWN0KHQpO2Muc2V0KCJUeXBlIixOYW1lLmdldCgiU3RydWN0VHJlZVJvb3QiKSk7Y29uc3QgbD10LmdldE5ld1RlbXBvcmFyeVJlZigpO2Muc2V0KCJQYXJlbnRUcmVlIixsKTtjb25zdCBoPVtdO2Muc2V0KCJLIixoKTtzLnB1dChvLGMpO2NvbnN0IHU9bmV3IERpY3QodCksZD1bXTt1LnNldCgiTnVtcyIsZCk7Y29uc3QgZj1hd2FpdCB0aGlzLiNiZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6ZSxzdHJ1Y3RUcmVlUm9vdFJlZjpvLHN0cnVjdFRyZWVSb290Om51bGwsa2lkczpoLG51bXM6ZCx4cmVmOnQscGRmTWFuYWdlcjpyLGNoYW5nZXM6aSxjYWNoZTpzfSk7Yy5zZXQoIlBhcmVudFRyZWVOZXh0S2V5IixmKTtzLnB1dChsLHUpO2Zvcihjb25zdFtlLHRdb2Ygcy5pdGVtcygpKWkucHV0KGUse2RhdGE6dH0pfWFzeW5jIGNhblVwZGF0ZVN0cnVjdFRyZWUoe3BkZk1hbmFnZXI6ZSxuZXdBbm5vdGF0aW9uc0J5UGFnZTp0fSl7aWYoIXRoaXMucmVmKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogbm8gcm9vdCByZWZlcmVuY2UuIik7cmV0dXJuITF9bGV0IGE9dGhpcy5kaWN0LmdldCgiUGFyZW50VHJlZU5leHRLZXkiKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwwKXt3YXJuKCJDYW5ub3QgdXBkYXRlIHRoZSBzdHJ1Y3QgdHJlZTogaW52YWxpZCBuZXh0IGtleS4iKTtyZXR1cm4hMX1jb25zdCByPXRoaXMuZGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighKHIgaW5zdGFuY2VvZiBEaWN0KSl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IFBhcmVudFRyZWUgaXNuJ3QgYSBkaWN0LiIpO3JldHVybiExfWNvbnN0IGk9ci5nZXQoIk51bXMiKTtpZighQXJyYXkuaXNBcnJheShpKSl7d2FybigiQ2Fubm90IHVwZGF0ZSB0aGUgc3RydWN0IHRyZWU6IG51bXMgaXNuJ3QgYW4gYXJyYXkuIik7cmV0dXJuITF9Y29uc3Qgbj1uZXcgTnVtYmVyVHJlZShyLHRoaXMueHJlZik7Zm9yKGNvbnN0IGEgb2YgdC5rZXlzKCkpe2NvbnN0e3BhZ2VEaWN0OnR9PWF3YWl0IGUuZ2V0UGFnZShhKTtpZighdC5oYXMoIlN0cnVjdFBhcmVudHMiKSljb250aW51ZTtjb25zdCByPXQuZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoIU51bWJlci5pc0ludGVnZXIocil8fCFBcnJheS5pc0FycmF5KG4uZ2V0KHIpKSl7d2FybihgQ2Fubm90IHNhdmUgdGhlIHN0cnVjdCB0cmVlOiBwYWdlICR7YX0gaGFzIGEgd3JvbmcgaWQuYCk7cmV0dXJuITF9fWxldCBzPSEwO2Zvcihjb25zdFtyLGldb2YgdCl7Y29uc3R7cGFnZURpY3Q6dH09YXdhaXQgZS5nZXRQYWdlKHIpO1N0cnVjdFRyZWVSb290LiN5ZSh7ZWxlbWVudHM6aSx4cmVmOnRoaXMueHJlZixwYWdlRGljdDp0LG51bWJlclRyZWU6bn0pO2Zvcihjb25zdCBlIG9mIGkpaWYoZS5hY2Nlc3NpYmlsaXR5RGF0YT8udHlwZSl7ZS5hY2Nlc3NpYmlsaXR5RGF0YS5zdHJ1Y3RQYXJlbnQ+PTB8fChlLnBhcmVudFRyZWVJZD1hKyspO3M9ITF9fWlmKHMpe2Zvcihjb25zdCBlIG9mIHQudmFsdWVzKCkpZm9yKGNvbnN0IHQgb2YgZSl7ZGVsZXRlIHQucGFyZW50VHJlZUlkO2RlbGV0ZSB0LnN0cnVjdFRyZWVQYXJlbnR9cmV0dXJuITF9cmV0dXJuITB9YXN5bmMgdXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeV
101BhZ2U6ZSxwZGZNYW5hZ2VyOnQsY2hhbmdlczphfSl7Y29uc3R7cmVmOnIseHJlZjppfT10aGlzLG49dGhpcy5kaWN0LmNsb25lKCkscz1uZXcgUmVmU2V0Q2FjaGU7cy5wdXQocixuKTtsZXQgbyxjPW4uZ2V0UmF3KCJQYXJlbnRUcmVlIik7aWYoYyBpbnN0YW5jZW9mIFJlZilvPWkuZmV0Y2goYyk7ZWxzZXtvPWM7Yz1pLmdldE5ld1RlbXBvcmFyeVJlZigpO24uc2V0KCJQYXJlbnRUcmVlIixjKX1vPW8uY2xvbmUoKTtzLnB1dChjLG8pO2xldCBsPW8uZ2V0UmF3KCJOdW1zIiksaD1udWxsO2lmKGwgaW5zdGFuY2VvZiBSZWYpe2g9bDtsPWkuZmV0Y2goaCl9bD1sLnNsaWNlKCk7aHx8by5zZXQoIk51bXMiLGwpO2NvbnN0IHU9YXdhaXQgU3RydWN0VHJlZVJvb3QuI2JlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOnIsc3RydWN0VHJlZVJvb3Q6dGhpcyxraWRzOm51bGwsbnVtczpsLHhyZWY6aSxwZGZNYW5hZ2VyOnQsY2hhbmdlczphLGNhY2hlOnN9KTtpZigtMSE9PXUpe24uc2V0KCJQYXJlbnRUcmVlTmV4dEtleSIsdSk7aCYmcy5wdXQoaCxsKTtmb3IoY29uc3RbZSx0XW9mIHMuaXRlbXMoKSlhLnB1dChlLHtkYXRhOnR9KX19c3RhdGljIGFzeW5jI2JlKHtuZXdBbm5vdGF0aW9uc0J5UGFnZTplLHN0cnVjdFRyZWVSb290UmVmOnQsc3RydWN0VHJlZVJvb3Q6YSxraWRzOnIsbnVtczppLHhyZWY6bixwZGZNYW5hZ2VyOnMsY2hhbmdlczpvLGNhY2hlOmN9KXtjb25zdCBsPU5hbWUuZ2V0KCJPQkpSIik7bGV0IGgsdT0tMTtmb3IoY29uc3RbZCxmXW9mIGUpe2NvbnN0IGU9YXdhaXQgcy5nZXRQYWdlKGQpLHtyZWY6Z309ZSxwPWcgaW5zdGFuY2VvZiBSZWY7Zm9yKGNvbnN0e2FjY2Vzc2liaWxpdHlEYXRhOnMscmVmOm0scGFyZW50VHJlZUlkOmIsc3RydWN0VHJlZVBhcmVudDp5fW9mIGYpe2lmKCFzPy50eXBlKWNvbnRpbnVlO2NvbnN0e3N0cnVjdFBhcmVudDpmfT1zO2lmKGEmJk51bWJlci5pc0ludGVnZXIoZikmJmY+PTApe2xldCB0PShofHw9bmV3IE1hcCkuZ2V0KGQpO2lmKHZvaWQgMD09PXQpe3Q9bmV3IFN0cnVjdFRyZWVQYWdlKGEsZS5wYWdlRGljdCkuY29sbGVjdE9iamVjdHMoZyk7aC5zZXQoZCx0KX1jb25zdCByPXQ/LmdldChmKTtpZihyKXtjb25zdCBlPW4uZmV0Y2gocikuY2xvbmUoKTtTdHJ1Y3RUcmVlUm9vdC4jd2UoZSxzKTtvLnB1dChyLHtkYXRhOmV9KTtjb250aW51ZX19dT1NYXRoLm1heCh1LGIpO2NvbnN0IHc9bi5nZXROZXdUZW1wb3JhcnlSZWYoKSx4PW5ldyBEaWN0KG4pO1N0cnVjdFRyZWVSb290LiN3ZSh4LHMpO2F3YWl0IHRoaXMuI3hlKHtzdHJ1Y3RUcmVlUGFyZW50OnksdGFnRGljdDp4LG5ld1RhZ1JlZjp3LHN0cnVjdFRyZWVSb290UmVmOnQsZmFsbGJhY2tLaWRzOnIseHJlZjpuLGNhY2hlOmN9KTtjb25zdCBTPW5ldyBEaWN0KG4pO3guc2V0KCJLIixTKTtTLnNldCgiVHlwZSIsbCk7cCYmUy5zZXQoIlBnIixnKTtTLnNldCgiT2JqIixtKTtjLnB1dCh3LHgpO2kucHVzaChiLHcpfX1yZXR1cm4gdSsxfXN0YXRpYyN3ZShlLHt0eXBlOnQsdGl0bGU6YSxsYW5nOnIsYWx0OmksZXhwYW5kZWQ6bixhY3R1YWxUZXh0OnN9KXtlLnNldCgiUyIsTmFtZS5nZXQodCkpO2EmJmUuc2V0KCJUIixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKGEpKTtyJiZlLnNldCgiTGFuZyIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShyKSk7aSYmZS5zZXQoIkFsdCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShpKSk7biYmZS5zZXQoIkUiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUobikpO3MmJmUuc2V0KCJBY3R1YWxUZXh0IixzdHJpbmdUb0FzY2lpT3JVVEYxNkJFKHMpKX1zdGF0aWMjeWUoe2VsZW1lbnRzOmUseHJlZjp0LHBhZ2VEaWN0OmEsbnVtYmVyVHJlZTpyfSl7Y29uc3QgaT1uZXcgTWFwO2Zvcihjb25zdCB0IG9mIGUpaWYodC5zdHJ1Y3RUcmVlUGFyZW50SWQpe2NvbnN0IGU9cGFyc2VJbnQodC5zdHJ1Y3RUcmVlUGFyZW50SWQuc3BsaXQoIl9tYyIpWzFdLDEwKTtsZXQgYT1pLmdldChlKTtpZighYSl7YT1bXTtpLnNldChlLGEpfWEucHVzaCh0KX1jb25zdCBuPWEuZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoIU51bWJlci5pc0ludGVnZXIobikpcmV0dXJuO2NvbnN0IHM9ci5nZXQobiksdXBkYXRlRWxlbWVudD0oZSxhLHIpPT57Y29uc3Qgbj1pLmdldChlKTtpZihuKXtjb25zdCBlPWEuZ2V0UmF3KCJQIiksaT10LmZldGNoSWZSZWYoZSk7aWYoZSBpbnN0YW5jZW9mIFJlZiYmaSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9e3JlZjpyLGRpY3Q6YX07Zm9yKGNvbnN0IHQgb2Ygbil0LnN0cnVjdFRyZWVQYXJlbnQ9ZX1yZXR1cm4hMH1yZXR1cm4hMX07Zm9yKGNvbnN0IGUgb2Ygcyl7aWYoIShlIGluc3RhbmNlb2YgUmVmKSljb250aW51ZTtjb25zdCBhPXQuZmV0Y2goZSkscj1hLmdldCgiSyIpO2lmKE51bWJlci5pc0ludGVnZXIocikpdXBkYXRlRWxlbWVudChyLGEsZSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHIpKWZvcihsZXQgaSBvZiByKXtpPXQuZmV0Y2hJZlJlZihpKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGkpJiZ1cGRhdGVFbGVtZW50KGksYSxlKSlicmVhaztpZighKGkgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtpZighaXNOYW1lKGkuZ2V0KCJUeXBlIiksIk1DUiIpKWJyZWFrO2NvbnN0IHI9aS5nZXQoIk1DSUQiKTtpZihOdW1iZXIuaXNJbnRlZ2VyKHIpJiZ1cGRhdGVFbGVtZW50KHIsYSxlKSlicmVha319fXN0YXRpYyBhc3luYyN4ZSh7c3RydWN0VHJlZVBhcmVudDplLHRhZ0RpY3Q6dCxuZXdUYWdSZWY6YSxzdHJ1Y3RUcmVlUm9vdFJlZjpyLGZhbGxiYWNrS2lkczppLHhyZWY6bixjYWNoZTpzfSl7bGV0IG8sYz1udWxsO2lmKGUpeyh7cmVmOmN9PWUpO289ZS5kaWN0LmdldFJhdygiUCIpfHxyfWVsc2Ugbz1yO3Quc2V0KCJQIixvKTtjb25zdCBsPW4uZmV0Y2hJZlJlZihvKTtpZighbCl7aS5wdXNoKGEpO3JldHVybn1sZXQgaD1zLmdldChvKTtpZighaCl7aD1sLmNsb25lKCk7cy5wdXQobyxoKX1jb25zdCB1PWguZ2V0UmF3KCJLIik7bGV0IGQ9dSBpbnN0YW5jZW9mIFJlZj9zLmdldCh1KTpudWxsO2lmKCFkKXtkPW4uZmV0Y2hJZlJlZih1KTtkPUFycmF5LmlzQXJyYXkoZCk/ZC5zbGljZSgpOlt1XTtjb25zdCBlPW4uZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7aC5zZXQoIksiLGUpO3MucHV0KGUsZCl9Y29uc3QgZj1kLmluZGV4T2YoYyk7ZC5zcGxpY2UoZj49MD9mKzE6ZC5sZW5ndGgsMCxhKX19Y2xhc3MgU3RydWN0RWxlbWVudE5vZGV7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnRyZWU9ZTt0aGlzLnhyZWY9ZS54cmVmO3RoaXMuZGljdD10O3RoaXMua2lkcz1bXTt0aGlzLnBhcnNlS2lkcygpfWdldCByb2xlKCl7Y29uc3QgZT10aGlzLmRpY3QuZ2V0KCJTIiksdD1lIGluc3RhbmNlb2YgTmFtZT9lLm5hbWU6IiIse3Jvb3Q6YX09dGhpcy50cmVlO3JldHVybiBhLnJvbGVNYXAuZ2V0KHQpPz90fWdldCBtYXRoTUwoKXtsZXQgZT10aGlzLmRpY3QuZ2V0KCJBRiIpfHxbXTtBcnJheS5pc0FycmF
1015KGUpfHwoZT1bZV0pO2ZvcihsZXQgdCBvZiBlKXt0PXRoaXMueHJlZi5mZXRjaElmUmVmKHQpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2lmKCFpc05hbWUodC5nZXQoIlR5cGUiKSwiRmlsZXNwZWMiKSljb250aW51ZTtpZighaXNOYW1lKHQuZ2V0KCJBRlJlbGF0aW9uc2hpcCIpLCJTdXBwbGVtZW50IikpY29udGludWU7Y29uc3QgZT10LmdldCgiRUYiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCBhPWUuZ2V0KCJVRiIpfHxlLmdldCgiRiIpO2lmKGEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYoaXNOYW1lKGEuZGljdC5nZXQoIlR5cGUiKSwiRW1iZWRkZWRGaWxlIikmJmlzTmFtZShhLmRpY3QuZ2V0KCJTdWJ0eXBlIiksImFwcGxpY2F0aW9uL21hdGhtbCt4bWwiKSkpcmV0dXJuIHN0cmluZ1RvVVRGOFN0cmluZyhhLmdldFN0cmluZygpKX1jb25zdCB0PXRoaXMuZGljdC5nZXQoIkEiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7aWYoaXNOYW1lKHQuZ2V0KCJPIiksIk1TRlRfT2ZmaWNlIikpe2NvbnN0IGU9dC5nZXQoIk1TRlRfTWF0aE1MIik7cmV0dXJuIGU/c3RyaW5nVG9QREZTdHJpbmcoZSk6bnVsbH19cmV0dXJuIG51bGx9cGFyc2VLaWRzKCl7bGV0IGU9bnVsbDtjb25zdCB0PXRoaXMuZGljdC5nZXRSYXcoIlBnIik7dCBpbnN0YW5jZW9mIFJlZiYmKGU9dC50b1N0cmluZygpKTtjb25zdCBhPXRoaXMuZGljdC5nZXQoIksiKTtpZihBcnJheS5pc0FycmF5KGEpKWZvcihjb25zdCB0IG9mIGEpe2NvbnN0IGE9dGhpcy5wYXJzZUtpZChlLHRoaXMueHJlZi5mZXRjaElmUmVmKHQpKTthJiZ0aGlzLmtpZHMucHVzaChhKX1lbHNle2NvbnN0IHQ9dGhpcy5wYXJzZUtpZChlLGEpO3QmJnRoaXMua2lkcy5wdXNoKHQpfX1wYXJzZUtpZChlLHQpe2lmKE51bWJlci5pc0ludGVnZXIodCkpcmV0dXJuIHRoaXMudHJlZS5wYWdlRGljdC5vYmpJZCE9PWU/bnVsbDpuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpSbixtY2lkOnQscGFnZU9iaklkOmV9KTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtjb25zdCBhPXQuZ2V0UmF3KCJQZyIpO2EgaW5zdGFuY2VvZiBSZWYmJihlPWEudG9TdHJpbmcoKSk7Y29uc3Qgcj10LmdldCgiVHlwZSIpaW5zdGFuY2VvZiBOYW1lP3QuZ2V0KCJUeXBlIikubmFtZTpudWxsO2lmKCJNQ1IiPT09cil7aWYodGhpcy50cmVlLnBhZ2VEaWN0Lm9iaklkIT09ZSlyZXR1cm4gbnVsbDtjb25zdCBhPXQuZ2V0UmF3KCJTdG0iKTtyZXR1cm4gbmV3IFN0cnVjdEVsZW1lbnQoe3R5cGU6Qm4scmVmT2JqSWQ6YSBpbnN0YW5jZW9mIFJlZj9hLnRvU3RyaW5nKCk6bnVsbCxwYWdlT2JqSWQ6ZSxtY2lkOnQuZ2V0KCJNQ0lEIil9KX1pZigiT0JKUiI9PT1yKXtpZih0aGlzLnRyZWUucGFnZURpY3Qub2JqSWQhPT1lKXJldHVybi
101BudWxsO2NvbnN0IGE9dC5nZXRSYXcoIk9iaiIpO3JldHVybiBuZXcgU3RydWN0RWxlbWVudCh7dHlwZTpObixyZWZPYmpJZDphIGluc3RhbmNlb2YgUmVmP2EudG9TdHJpbmcoKTpudWxsLHBhZ2VPYmpJZDplfSl9cmV0dXJuIG5ldyBTdHJ1Y3RFbGVtZW50KHt0eXBlOkVuLGRpY3Q6dH0pfX1jbGFzcyBTdHJ1Y3RFbGVtZW50e2NvbnN0cnVjdG9yKHt0eXBlOmUsZGljdDp0PW51bGwsbWNpZDphPW51bGwscGFnZU9iaklkOnI9bnVsbCxyZWZPYmpJZDppPW51bGx9KXt0aGlzLnR5cGU9ZTt0aGlzLmRpY3Q9dDt0aGlzLm1jaWQ9YTt0aGlzLnBhZ2VPYmpJZD1yO3RoaXMucmVmT2JqSWQ9aTt0aGlzLnBhcmVudE5vZGU9bnVsbH19Y2xhc3MgU3RydWN0VHJlZVBhZ2V7Y29uc3RydWN0b3IoZSx0KXt0aGlzLnJvb3Q9ZTt0aGlzLnhyZWY9ZT8ueHJlZj8/bnVsbDt0aGlzLnJvb3REaWN0PWU/LmRpY3Q/P251bGw7dGhpcy5wYWdlRGljdD10O3RoaXMubm9kZXM9W119Y29sbGVjdE9iamVjdHMoZSl7aWYoISh0aGlzLnJvb3QmJnRoaXMucm9vdERpY3QmJmUgaW5zdGFuY2VvZiBSZWYpKXJldHVybiBudWxsO2NvbnN0IHQ9dGhpcy5yb290RGljdC5nZXQoIlBhcmVudFRyZWUiKTtpZighdClyZXR1cm4gbnVsbDtjb25zdCBhPXRoaXMucm9vdC5zdHJ1Y3RQYXJlbnRJZHM/LmdldChlKTtpZighYSlyZXR1cm4gbnVsbDtjb25zdCByPW5ldyBNYXAsaT1uZXcgTnVtYmVyVHJlZSh0LHRoaXMueHJlZik7Zm9yKGNvbnN0W2Vdb2YgYSl7Y29uc3QgdD1pLmdldFJhdyhlKTt0IGluc3RhbmNlb2YgUmVmJiZyLnNldChlLHQpfXJldHVybiByfXBhcnNlKGUpe2lmKCEodGhpcy5yb290JiZ0aGlzLnJvb3REaWN0JiZlIGluc3RhbmNlb2YgUmVmKSlyZXR1cm47Y29uc3R7cGFyZW50VHJlZTp0fT10aGlzLnJvb3Q7aWYoIXQpcmV0dXJuO2NvbnN0IGE9dGhpcy5wYWdlRGljdC5nZXQoIlN0cnVjdFBhcmVudHMiKSxyPXRoaXMucm9vdC5zdHJ1Y3RQYXJlbnRJZHM/LmdldChlKTtpZighTnVtYmVyLmlzSW50ZWdlcihhKSYmIXIpcmV0dXJuO2NvbnN0IGk9bmV3IE1hcDtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpKXtjb25zdCBlPXQuZ2V0KGEpO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKGNvbnN0IHQgb2YgZSl0IGluc3RhbmNlb2YgUmVmJiZ0aGlzLmFkZE5vZGUodGhpcy54cmVmLmZldGNoKHQpLGkpfWlmKHIpZm9yKGNvbnN0W2UsYV1vZiByKXtjb25zdCByPXQuZ2V0KGUpO2lmKHIpe2NvbnN0IGU9dGhpcy5hZGROb2RlKHRoaXMueHJlZi5mZXRjaElmUmVmKHIpLGkpOzE9PT1lPy5raWRzPy5sZW5ndGgmJmUua2lkc1swXS50eXBlPT09Tm4mJihlLmtpZHNbMF0udHlwZT1hKX19fWFkZE5vZGUoZSx0LGE9MCl7aWYoYT40MCl7d2FybigiU3RydWN0VHJlZSBNQVhfREVQVEggcmVhY2hlZC4iKTtyZXR1cm4gbnVsbH1pZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7Y29uc3Qgcj1uZXcgU3RydWN0RWxlbWVudE5vZGUodGhpcyxlKTt0LnNldChlLHIpO3N3aXRjaC
101hyLnJvbGUpe2Nhc2UiTCI6Y2FzZSJMQm9keSI6Y2FzZSJMSSI6Y2FzZSJUYWJsZSI6Y2FzZSJUSGVhZCI6Y2FzZSJUQm9keSI6Y2FzZSJURm9vdCI6Y2FzZSJUUiI6Zm9yKGNvbnN0IGUgb2Ygci5raWRzKWUudHlwZT09PUVuJiZ0aGlzLmFkZE5vZGUoZS5kaWN0LHQsYS0xKX1jb25zdCBpPWUuZ2V0KCJQIik7aWYoIShpIGluc3RhbmNlb2YgRGljdCl8fGlzTmFtZShpLmdldCgiVHlwZSIpLCJTdHJ1Y3RUcmVlUm9vdCIpKXt0aGlzLmFkZFRvcExldmVsTm9kZShlLHIpfHx0LmRlbGV0ZShlKTtyZXR1cm4gcn1jb25zdCBuPXRoaXMuYWRkTm9kZShpLHQsYSsxKTtpZighbilyZXR1cm4gcjtsZXQgcz0hMTtmb3IoY29uc3QgdCBvZiBuLmtpZHMpaWYodC50eXBlPT09RW4mJnQuZGljdD09PWUpe3QucGFyZW50Tm9kZT1yO3M9ITB9c3x8dC5kZWxldGUoZSk7cmV0dXJuIHJ9YWRkVG9wTGV2ZWxOb2RlKGUsdCl7Y29uc3QgYT10aGlzLnJvb3QuZ2V0S2lkUG9zaXRpb24oZS5vYmpJZCk7aWYoaXNOYU4oYSkpcmV0dXJuITE7LTEhPT1hJiYodGhpcy5ub2Rlc1thXT10KTtyZXR1cm4hMH1nZXQgc2VyaWFsaXphYmxlKCl7ZnVuY3Rpb24gbm9kZVRvU2VyaWFsaXphYmxlKGUsdCxhPTApe2lmKGE+NDApe3dhcm4oIlN0cnVjdFRyZWUgdG9vIGRlZXAgdG8gYmUgZnVsbHkgc2VyaWFsaXplZC4iKTtyZXR1cm59Y29uc3Qgcj1PYmplY3QuY3JlYXRlKG51bGwpO3Iucm9sZT1lLnJvbGU7ci5jaGlsZHJlbj1bXTt0LmNoaWxkcmVuLnB1c2gocik7bGV0IGk9ZS5kaWN0LmdldCgiQWx0Iik7InN0cmluZyIhPXR5cGVvZiBpJiYoaT1lLmRpY3QuZ2V0KCJBY3R1YWxUZXh0IikpOyJzdHJpbmciPT10eXBlb2YgaSYmKHIuYWx0PXN0cmluZ1RvUERGU3RyaW5nKGkpKTtpZigiRm9ybXVsYSI9PT1yLnJvbGUpe2NvbnN0e21hdGhNTDp0fT1lO3QmJihyLm1hdGhNTD10KX1jb25zdCBuPWUuZGljdC5nZXQoIkEiKTtpZihuIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1sb29rdXBOb3JtYWxSZWN0KG4uZ2V0QXJyYXkoIkJCb3giKSxudWxsKTtpZihlKXIuYmJveD1lO2Vsc2V7Y29uc3QgZT1uLmdldCgiV2lkdGgiKSx0PW4uZ2V0KCJIZWlnaHQiKTsibnVtYmVyIj09dHlwZW9mIGUmJmU+MCYmIm51bWJlciI9PXR5cGVvZiB0JiZ0PjAmJihyLmJib3g9WzAsMCxlLHRdKX19Y29uc3Qgcz1lLmRpY3QuZ2V0KCJMYW5nIik7InN0cmluZyI9PXR5cGVvZiBzJiYoci5sYW5nPXN0cmluZ1RvUERGU3RyaW5nKHMpKTtmb3IoY29uc3QgdCBvZiBlLmtpZHMpe2NvbnN0IGU9dC50eXBlPT09RW4/dC5wYXJlbnROb2RlOm51bGw7ZT9ub2RlVG9TZXJpYWxpemFibGUoZSxyLGErMSk6dC50eXBlPT09Um58fHQudHlwZT09PUJuP3IuY2hpbGRyZW4ucHVzaCh7dHlwZToiY29udGVudCIsaWQ6YHAke3QucGFnZU9iaklkfV9tYyR7dC5tY2lkfWB9KTp0LnR5cGU9PT1Obj9yLmNoaWxkcmVuLnB1c2goe3R5cGU6Im9iamVjdCIsaWQ6dC5yZWZPYmpJZH0pOnQudHlwZT09PVBuJiZyLmNoaWxkcmVuLnB1c2goe3R5cGU6ImFubm90YXRpb24iLGlkOmBwZGZqc19pbnRlcm5hbF9pZF8ke3QucmVmT2JqSWR9YH0pfX1jb25zdCBlPU9iamVjdC5jcmVhdGUobnVsbCk7ZS5jaGlsZHJlbj1bXTtlLnJvbGU9IlJvb3QiO2Zvcihjb25zdCB0IG9mIHRoaXMubm9kZXMpdCYmbm9kZVRvU2VyaWFsaXphYmxlKHQsZSk7cmV0dXJuIGV9fWNvbnN0IExuPWZ1bmN0aW9uIF9pc1ZhbGlkRXhwbGljaXREZXN0KGUsdCxhKXtpZighQXJyYXkuaXNBcnJheShhKXx8YS5sZW5ndGg8MilyZXR1cm4hMTtjb25zdFtyLGksLi4ubl09YTtpZighZShyKSYmIU51bWJlci5pc0ludGVnZXIocikpcmV0dXJuITE7aWYoIXQoaSkpcmV0dXJuITE7Y29uc3Qgcz1uLmxlbmd0aDtsZXQgbz0hMDtzd2l0Y2goaS5uYW1lKXtjYXNlIlhZWiI6aWYoczwyfHxzPjMpcmV0dXJuITE7YnJlYWs7Y2FzZSJGaXQiOmNhc2UiRml0QiI6cmV0dXJuIDA9PT1zO2Nhc2UiRml0SCI6Y2FzZSJGaXRCSCI6Y2FzZSJGaXRWIjpjYXNlIkZpdEJWIjppZihzPjEpcmV0dXJuITE7YnJlYWs7Y2FzZSJGaXRSIjppZig0IT09cylyZXR1cm4hMTtvPSExO2JyZWFrO2RlZmF1bHQ6cmV0dXJuITF9Zm9yKGNvbnN0IGUgb2YgbilpZighKCJudW1iZXIiPT10eXBlb2YgZXx8byYmbnVsbD09PWUpKXJldHVybiExO3JldHVybiEwfS5iaW5kKG51bGwsZT0+ZSBpbnN0YW5jZW9mIFJlZixpc05hbWUpO2Z1bmN0aW9uIGZldGNoRGVzdChlKXtlIGluc3RhbmNlb2YgRGljdCYmKGU9ZS5nZXQoIkQiKSk7cmV0dXJuIExuKGUpP2U6bnVsbH1mdW5jdGlvbiBmZXRjaFJlbW90ZURlc3QoZSl7bGV0IHQ9ZS5nZXQoIkQiKTtpZih0KXt0IGluc3RhbmNlb2YgTmFtZSYmKHQ9dC5uYW1lKTtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHN0cmluZ1RvUERGU3RyaW5nKHQsITApO2lmKExuKHQpKXJldHVybiBKU09OLnN0cmluZ2lmeSh0KX1yZXR1cm4gbnVsbH1jbGFzcyBDYXRhbG9neyNTZT1udWxsOyNBZT1udWxsO2J1aWx0SW5DTWFwQ2FjaGU9bmV3IE1hcDtmb250Q2FjaGU9bmV3IFJlZlNldENhY2hlO2dsb2JhbENvbG9yU3BhY2VDYWNoZT1uZXcgR2xvYmFsQ29sb3JTcGFjZUNhY2hlO2dsb2JhbEltYWdlQ2FjaGU9bmV3IEdsb2JhbEltYWdlQ2FjaGU7bm9uQmxlbmRNb2Rlc1NldD1uZXcgUmVmU2V0O3BhZ2VEaWN0Q2FjaGU9bmV3IFJlZlNldENhY2hlO3BhZ2VJbmRleENhY2hlPW5ldyBSZWZTZXRDYWNoZTtwYWdlS2lkc0NvdW50Q2FjaGU9bmV3IFJlZlNldENhY2hlO3N0YW5kYXJkRm9udERhdGFDYWNoZT1uZXcgTWFwO3N5c3RlbUZvbnRDYWNoZT1uZXcgTWFwO2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy54cmVmPXQ7dGhpcy4jQWU9dC5nZXRDYXRhbG9nT2JqKCk7aWYoISh0aGlzLiNBZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiQ2F0YWxvZyBvYmplY3QgaXMgbm90IGEgZGljdGlvbmFyeS4iKTt0aGlzLnRvcGxldmVsUGFnZXNEaWN0fWNsb25lRGljdCgpe3JldHVybiB0aGlzLiNBZS5jbG9uZSgpfWdldCB2ZXJzaW9uKCl7Y29uc3QgZT10aGlzLiNBZS5nZXQoIlZlcnNpb24iKTtpZihlIGluc3RhbmNlb2YgTmFtZSl7aWYodWEudGVzdChlLm5hbWUpKXJldHVybi
101BzaGFkb3codGhpcywidmVyc2lvbiIsZS5uYW1lKTt3YXJuKGBJbnZhbGlkIFBERiBjYXRhbG9nIHZlcnNpb246ICR7ZS5uYW1lfWApfXJldHVybiBzaGFkb3codGhpcywidmVyc2lvbiIsbnVsbCl9Z2V0IGxhbmcoKXtjb25zdCBlPXRoaXMuI0FlLmdldCgiTGFuZyIpO3JldHVybiBzaGFkb3codGhpcywibGFuZyIsZSYmInN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOm51bGwpfWdldCBuZWVkc1JlbmRlcmluZygpe2NvbnN0IGU9dGhpcy4jQWUuZ2V0KCJOZWVkc1JlbmRlcmluZyIpO3JldHVybiBzaGFkb3codGhpcywibmVlZHNSZW5kZXJpbmciLCJib29sZWFuIj09dHlwZW9mIGUmJmUpfWdldCBjb2xsZWN0aW9uKCl7bGV0IGU9bnVsbDt0cnl7Y29uc3QgdD10aGlzLiNBZS5nZXQoIkNvbGxlY3Rpb24iKTt0IGluc3RhbmNlb2YgRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIkNhbm5vdCBmZXRjaCBDb2xsZWN0aW9uIGVudHJ5OyBhc3N1bWluZyBubyBjb2xsZWN0aW9uIGlzIHByZXNlbnQuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJjb2xsZWN0aW9uIixlKX1nZXQgYWNyb0Zvcm0oKXtsZXQgZT1udWxsO3RyeXtjb25zdCB0PXRoaXMuI0FlLmdldCgiQWNyb0Zvcm0iKTt0IGluc3RhbmNlb2YgRGljdCYmdC5zaXplPjAmJihlPXQpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO2luZm8oIkNhbm5vdCBmZXRjaCBBY3JvRm9ybSBlbnRyeTsgYXNzdW1pbmcgbm8gZm9ybXMgYXJlIHByZXNlbnQuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJhY3JvRm9ybSIsZSl9Z2V0IGFjcm9Gb3JtUmVmKCl7Y29uc3QgZT10aGlzLiNBZS5nZXRSYXcoIkFjcm9Gb3JtIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJhY3JvRm9ybVJlZiIsZSBpbnN0YW5jZW9mIFJlZj9lOm51bGwpfWdldCBtZXRhZGF0YSgpe2NvbnN0IGU9dGhpcy4jQWUuZ2V0UmF3KCJNZXRhZGF0YSIpO2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIHNoYWRvdyh0aGlzLCJtZXRhZGF0YSIsbnVsbCk7bGV0IHQ9bnVsbDt0cnl7Y29uc3QgYT10aGlzLnhyZWYuZmV0Y2goZSwhdGhpcy54cmVmLmVuY3J5cHQ/LmVuY3J5cHRNZXRhZGF0YSk7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJmEuZGljdCBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9YS5kaWN0LmdldCgiVHlwZSIpLHI9YS5kaWN0LmdldCgiU3VidHlwZSIpO2lmKGlzTmFtZShlLCJNZXRhZGF0YSIpJiZpc05hbWUociwiWE1MIikpe2NvbnN0IGU9c3RyaW5nVG9VVEY4U3RyaW5nKGEuZ2V0U3RyaW5nKCkpO2UmJih0PW5ldyBNZXRhZGF0YVBhcnNlcihlKS5zZXJpYWxpemFibGUpfX19Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbyhgU2tpcHBpbmcgaW52YWxpZCBNZXRhZGF0YTogIiR7ZX0iLmApfXJldHVybiBzaGFkb3codGhpcywibWV0YWRhdGEiLHQpfWdldCBtYXJrSW5mbygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4ja2UoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBtYXJrIGluZm8uIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJtYXJrSW5mbyIsZSl9I2tlKCl7Y29uc3QgZT10aGlzLiNBZS5nZXQoIk1hcmtJbmZvIik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7Y29uc3QgdD17TWFya2VkOiExLFVzZXJQcm9wZXJ0aWVzOiExLFN1c3BlY3RzOiExfTtmb3IoY29uc3QgYSBpbiB0KXtjb25zdCByPWUuZ2V0KGEpOyJib29sZWFuIj09dHlwZW9mIHImJih0W2FdPXIpfXJldHVybiB0fWdldCBoYXNTdHJ1Y3RUcmVlKCl7cmV0dXJuIHRoaXMuI0FlLmhhcygiU3RydWN0VHJlZVJvb3QiKX1nZXQgc3RydWN0VHJlZVJvb3QoKXtsZXQgZT1udWxsO3RyeXtlPXRoaXMuI0NlKCl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybigiVW5hYmxlIHJlYWQgdG8gc3RydWN0VHJlZVJvb3QgaW5mby4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInN0cnVjdFRyZWVSb290IixlKX0jQ2UoKXtjb25zdCBlPXRoaXMuI0FlLmdldFJhdygiU3RydWN0VHJlZVJvb3QiKSx0PXRoaXMueHJlZi5mZXRjaElmUmVmKGUpO2lmKCEodCBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBudWxsO2NvbnN0IGE9bmV3IFN0cnVjdFRyZWVSb290KHRoaXMueHJlZix0LGUpO2EuaW5pdCgpO3JldHVybiBhfWdldCB0b3BsZXZlbFBhZ2VzRGljdCgpe2NvbnN0IGU9dGhpcy4jQWUuZ2V0KCJQYWdlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCB0b3AtbGV2ZWwgcGFnZXMgZGljdGlvbmFyeS4iKTtyZXR1cm4gc2hhZG93KHRoaXMsInRvcGxldmVsUGFnZXNEaWN0IixlKX1nZXQgZG9jdW1lbnRPdXRsaW5lKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiN2ZSgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIGRvY3VtZW50IG91dGxpbmUuIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJkb2N1bWVudE91dGxpbmUiLGUpfSN2ZSgpe2xldCBlPXRoaXMuI0FlLmdldCgiT3V0bGluZXMiKTtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gbnVsbDtlPWUuZ2V0UmF3KCJGaXJzdCIpO2lmKCEoZSBpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG51bGw7Y29uc3QgdD17aXRlbXM6W119LGE9W3tvYmo6ZSxwYXJlbnQ6dH1dLHI9bmV3IFJlZlNldDtyLnB1dChlKTtjb25zdCBpPXRoaXMueHJlZixuPW5ldyBVaW50OENsYW1wZWRBcnJheSgzKTtmb3IoO2EubGVuZ3RoPjA7KXtjb25zdCB0PWEuc2hpZnQoKSxzPWkuZmV0Y2hJZlJlZih0Lm9iaik7aWYobnVsbD09PXMpY29udGludWU7cy5oYXMoIlRpdGxlIil8fHdhcm4oIkludmFsaWQgb3V0bGluZSBpdGVtIGVuY291bnRlcmVkLiIpO2NvbnN0IG89e3VybDpudWxsLGRlc3Q6bnVsbCxhY3Rpb246bnVsbH07Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDpzLHJlc3VsdE9iajpvLGRvY0Jhc2VVcmw6dGhpcy5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOnRoaXMuYXR0YWNobWVudHN9KTtjb25zdCBjPXMuZ2V0KCJUaXRsZSIpLGw9cy5nZXQoIkYiKXx8MCxoPXMuZ2V0QXJyYXkoIkMiKSx1PXMuZ2V0KCJDb3VudCIpO2xldCBkPW47IWlzTnVtYmVyQXJyYXkoaCwzKXx8MD09PWhbMF0mJjA9PT1oWzFdJiYwPT09aFsyXXx8KGQ9Q29sb3JTcGFjZVV0aWxzLnJnYi5nZXRSZ2IoaCwwKSk7Y29uc3QgZj17YWN0aW9uOm8uYWN0aW9uLGF0dGFjaG1lbnQ6by5hdHRhY2htZW50LGRlc3Q6by5kZXN0LHVybDpvLnVybCx1bnNhZmVVcmw6by51bnNhZmVVcmwsbmV3V2luZG93Om8ubmV3V2luZG93LHNldE9DR1N0YXRlOm8uc2V0T0NHU3RhdGUsdGl0bGU6InN0cmluZyI9PXR5cGVvZiBjP3N0cmluZ1RvUERGU3RyaW5nKGMpOiIiLGNvbG9yOmQsY291bnQ6TnVtYmVyLmlzSW50ZWdlcih1KT91OnZvaWQgMCxib2xkOiEhKDImbCksaXRhbGljOiEhKDEmbCksaXRlbXM6W119O3QucGFyZW50Lml0ZW1zLnB1c2goZik7ZT1zLmdldFJhdygiRmlyc3QiKTtpZihlIGluc3RhbmNlb2YgUmVmJiYhci5oYXMoZSkpe2EucHVzaCh7b2JqOmUscGFyZW50OmZ9KTtyLnB1dChlKX1lPXMuZ2V0UmF3KCJOZXh0Iik7aWYoZSBpbnN0YW5jZW9mIFJlZiYmIXIuaGFzKGUpKXthLnB1c2goe29iajplLHBhcmVudDp0LnBhcmVudH0pO3IucHV0KGUpfX1yZXR1cm4gdC5pdGVtcy5sZW5ndGg+MD90Lml0ZW1zOm51bGx9Z2V0IHBlcm1pc3Npb25zKCl7bGV0IGU9bnVsbDt0cnl7ZT10aGlzLiNGZSgpfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oIlVuYWJsZSB0byByZWFkIHBlcm1pc3Npb25zLiIpfXJldHVybi
101BzaGFkb3codGhpcywicGVybWlzc2lvbnMiLGUpfSNGZSgpe2NvbnN0IGU9dGhpcy54cmVmLnRyYWlsZXIuZ2V0KCJFbmNyeXB0Iik7aWYoIShlIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIG51bGw7bGV0IHQ9ZS5nZXQoIlAiKTtpZigibnVtYmVyIiE9dHlwZW9mIHQpcmV0dXJuIG51bGw7dCs9MioqMzI7Y29uc3QgYT1bXTtmb3IoY29uc3QgZSBpbiB3KXtjb25zdCByPXdbZV07dCZyJiZhLnB1c2gocil9cmV0dXJuIGF9Z2V0IG9wdGlvbmFsQ29udGVudENvbmZpZygpe2xldCBlPW51bGw7dHJ5e2NvbnN0IHQ9dGhpcy4jQWUuZ2V0KCJPQ1Byb3BlcnRpZXMiKTtpZighdClyZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsbnVsbCk7Y29uc3QgYT10LmdldCgiRCIpO2lmKCFhKXJldHVybiBzaGFkb3codGhpcywib3B0aW9uYWxDb250ZW50Q29uZmlnIixudWxsKTtjb25zdCByPXQuZ2V0KCJPQ0dzIik7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIHNoYWRvdyh0aGlzLCJvcHRpb25hbENvbnRlbnRDb25maWciLG51bGwpO2NvbnN0IGk9bmV3IFJlZlNldENhY2hlO2Zvcihjb25zdCBlIG9mIHIpZSBpbnN0YW5jZW9mIFJlZiYmIWkuaGFzKGUpJiZpLnB1dChlLHRoaXMuI0llKGUpKTtlPXRoaXMuI1RlKGEsaSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7d2FybihgVW5hYmxlIHRvIHJlYWQgb3B0aW9uYWwgY29udGVudCBjb25maWc6ICR7ZX1gKX1yZXR1cm4gc2hhZG93KHRoaXMsIm9wdGlvbmFsQ29udGVudENvbmZpZyIsZSl9I0llKGUpe2NvbnN0IHQ9dGhpcy54cmVmLmZldGNoKGUpLGE9e2lkOmUudG9TdHJpbmcoKSxuYW1lOm51bGwsaW50ZW50Om51bGwsdXNhZ2U6e3ByaW50Om51bGwsdmlldzpudWxsfSxyYkdyb3VwczpbXX0scj10LmdldCgiTmFtZSIpOyJzdHJpbmciPT10eXBlb2YgciYmKGEubmFtZT1zdHJpbmdUb1BERlN0cmluZyhyKSk7bGV0IGk9dC5nZXRBcnJheSgiSW50ZW50Iik7QXJyYXkuaXNBcnJheShpKXx8KGk9W2ldKTtpLmV2ZXJ5KGU9PmUgaW5zdGFuY2VvZiBOYW1lKSYmKGEuaW50ZW50PWkubWFwKGU9PmUubmFtZSkpO2NvbnN0IG49dC5nZXQoIlVzYWdlIik7aWYoIShuIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuIGE7Y29uc3Qgcz1hLnVzYWdlLG89bi5nZXQoIlByaW50Iik7aWYobyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9by5nZXQoIlByaW50U3RhdGUiKTtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIk9OIjpjYXNlIk9GRiI6cy5wcmludD17cHJpbnRTdGF0ZTplLm5hbWV9fX1jb25zdCBjPW4uZ2V0KCJWaWV3Iik7aWYoYyBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9Yy5nZXQoIlZpZXdTdGF0ZSIpO2lmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpzLnZpZXc9e3ZpZXdTdGF0ZTplLm5hbWV9fX1yZXR1cm4gYX0jVGUoZSx0KXtmdW5jdGlvbiBwYXJzZU9uT2ZmKGUpe2NvbnN0IGE9W107aWYoQXJyYXkuaXNBcnJheShlKSlmb3IoY29uc3QgciBvZiBlKXIgaW5zdGFuY2VvZiBSZWYmJnQuaGFzKHIpJiZhLnB1c2goci50b1N0cmluZygpKTtyZXR1cm4gYX1mdW5jdGlvbiBwYXJzZU9yZGVyKGUsYT0wKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gbnVsbDtjb25zdCBpPVtdO2Zvcihjb25zdCBuIG9mIGUpe2lmKG4gaW5zdGFuY2VvZiBSZWYmJnQuaGFzKG4pKXtyLnB1dChuKTtpLnB1c2gobi50b1N0cmluZygpKTtjb250aW51ZX1jb25zdCBlPXBhcnNlTmVzdGVkT3JkZXIobixhKTtlJiZpLnB1c2goZSl9aWYoYT4wKXJldHVybiBpO2NvbnN0IG49W107Zm9yKGNvbnN0W2Vdb2YgdC5pdGVtcygpKXIuaGFzKGUpfHxuLnB1c2goZS50b1N0cmluZygpKTtuLmxlbmd0aCYmaS5wdXNoKHtuYW1lOm51bGwsb3JkZXI6bn0pO3JldHVybiBpfWZ1bmN0aW9uIHBhcnNlTmVzdGVkT3JkZXIoZSx0KXtpZigrK3Q+aSl7d2FybigicGFyc2VOZXN0ZWRPcmRlciAtIHJlYWNoZWQgTUFYX05FU1RFRF9MRVZFTFMuIik7cmV0dXJuIG51bGx9Y29uc3Qgcj1hLmZldGNoSWZSZWYoZSk7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG51bGw7Y29uc3Qgbj1hLmZldGNoSWZSZWYoclswXSk7aWYoInN0cmluZyIhPXR5cGVvZiBuKXJldHVybi
101BudWxsO2NvbnN0IHM9cGFyc2VPcmRlcihyLnNsaWNlKDEpLHQpO3JldHVybiBzPy5sZW5ndGg/e25hbWU6c3RyaW5nVG9QREZTdHJpbmcobiksb3JkZXI6c306bnVsbH1jb25zdCBhPXRoaXMueHJlZixyPW5ldyBSZWZTZXQsaT0xMDshZnVuY3Rpb24gcGFyc2VSQkdyb3VwcyhlKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9YS5mZXRjaElmUmVmKHIpO2lmKCFBcnJheS5pc0FycmF5KGUpfHwhZS5sZW5ndGgpY29udGludWU7Y29uc3QgaT1uZXcgU2V0O2Zvcihjb25zdCBhIG9mIGUpaWYoYSBpbnN0YW5jZW9mIFJlZiYmdC5oYXMoYSkmJiFpLmhhcyhhLnRvU3RyaW5nKCkpKXtpLmFkZChhLnRvU3RyaW5nKCkpO3QuZ2V0KGEpLnJiR3JvdXBzLnB1c2goaSl9fX0oZS5nZXQoIlJCR3JvdXBzIikpO3JldHVybntuYW1lOiJzdHJpbmciPT10eXBlb2YgZS5nZXQoIk5hbWUiKT9zdHJpbmdUb1BERlN0cmluZyhlLmdldCgiTmFtZSIpKTpudWxsLGNyZWF0b3I6InN0cmluZyI9PXR5cGVvZiBlLmdldCgiQ3JlYXRvciIpP3N0cmluZ1RvUERGU3RyaW5nKGUuZ2V0KCJDcmVhdG9yIikpOm51bGwsYmFzZVN0YXRlOmUuZ2V0KCJCYXNlU3RhdGUiKWluc3RhbmNlb2YgTmFtZT9lLmdldCgiQmFzZVN0YXRlIikubmFtZTpudWxsLG9uOnBhcnNlT25PZmYoZS5nZXQoIk9OIikpLG9mZjpwYXJzZU9uT2ZmKGUuZ2V0KCJPRkYiKSksb3JkZXI6cGFyc2VPcmRlcihlLmdldCgiT3JkZXIiKSksZ3JvdXBzOlsuLi50XX19c2V0QWN0dWFsTnVtUGFnZXMoZT1udWxsKXt0aGlzLiNTZT1lfWdldCBoYXNBY3R1YWxOdW1QYWdlcygpe3JldHVybiBudWxsIT09dGhpcy4jU2V9Z2V0IF9wYWdlc0NvdW50KCl7Y29uc3QgZT10aGlzLnRvcGxldmVsUGFnZXNEaWN0LmdldCgiQ291bnQiKTtpZighTnVtYmVyLmlzSW50ZWdlcihlKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2UgY291bnQgaW4gdG9wLWxldmVsIHBhZ2VzIGRpY3Rpb25hcnkgaXMgbm90IGFuIGludGVnZXIuIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJfcGFnZXNDb3VudCIsZSl9Z2V0IG51bVBhZ2VzKCl7cmV0dXJuIHRoaXMuI1NlPz90aGlzLl9wYWdlc0NvdW50fWdldCBkZXN0aW5hdGlvbnMoKXtjb25zdCBlPXRoaXMuI09lKCksdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdCBhIG9mIGUpaWYoYSBpbnN0YW5jZW9mIE5hbWVUcmVlKWZvcihjb25zdFtlLHJdb2YgYS5nZXRBbGwoKSl7Y29uc3QgYT1mZXRjaERlc3Qocik7YSYmKHRbc3RyaW5nVG9QREZTdHJpbmcoZSwhMCldPWEpfWVsc2UgaWYoYSBpbnN0YW5jZW9mIERpY3QpZm9yKGNvbnN0W2Uscl1vZiBhKXtjb25zdCBhPWZldGNoRGVzdChyKTthJiYodFtzdHJpbmdUb1BERlN0cmluZyhlLCEwKV18fD1hKX1yZXR1cm4gc2hhZG93KHRoaXMsImRlc3RpbmF0aW9ucyIsdCl9Z2V0RGVzdGluYXRpb24oZSl7aWYodGhpcy5oYXNPd25Qcm9wZXJ0eSgiZGVzdGluYXRpb25zIikpcmV0dXJuIHRoaXMuZGVzdGluYXRpb25zW2VdPz9udWxsO2NvbnN0IHQ9dGhpcy4jT2UoKTtmb3IoY29uc3QgYSBvZiB0KWlmKGEgaW5zdGFuY2VvZiBOYW1lVHJlZXx8YSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZmV0Y2hEZXN0KGEuZ2V0KGUpKTtpZih0KXJldHVybiB0fWlmKHQubGVuZ3RoKXtjb25zdCB0PXRoaXMuZGVzdGluYXRpb25zW2VdO2lmKHQpcmV0dXJuIHR9cmV0dXJuIG51bGx9I09lKCl7Y29uc3QgZT10aGlzLiNBZS5nZXQoIk5hbWVzIiksdD1bXTtlPy5oYXMoIkRlc3RzIikmJnQucHVzaChuZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkRlc3RzIiksdGhpcy54cmVmKSk7dGhpcy4jQWUuaGFzKCJEZXN0cyIpJiZ0LnB1c2godGhpcy4jQWUuZ2V0KCJEZXN0cyIpKTtyZXR1cm4gdH1nZXQgcmF3UGFnZUxhYmVscygpe2NvbnN0IGU9dGhpcy4jQWUuZ2V0UmF3KCJQYWdlTGFiZWxzIik7
101aWYoIWUpcmV0dXJuIG51bGw7cmV0dXJuIG5ldyBOdW1iZXJUcmVlKGUsdGhpcy54cmVmKS5nZXRBbGwoKX1nZXQgcGFnZUxhYmVscygpe2xldCBlPW51bGw7dHJ5e2U9dGhpcy4jRGUoKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKCJVbmFibGUgdG8gcmVhZCBwYWdlIGxhYmVscy4iKX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VMYWJlbHMiLGUpfSNEZSgpe2NvbnN0IGU9dGhpcy5yYXdQYWdlTGFiZWxzO2lmKCFlKXJldHVybiBudWxsO2NvbnN0IHQ9bmV3IEFycmF5KHRoaXMubnVtUGFnZXMpO2xldCBhPW51bGwscj0iIixpPSIiLG49MTtmb3IobGV0IHM9MCxvPXRoaXMubnVtUGFnZXM7czxvO3MrKyl7Y29uc3Qgbz1lLmdldChzKTtpZih2b2lkIDAhPT1vKXtpZighKG8gaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlBhZ2VMYWJlbCBpcyBub3QgYSBkaWN0aW9uYXJ5LiIpO2lmKG8uaGFzKCJUeXBlIikmJiFpc05hbWUoby5nZXQoIlR5cGUiKSwiUGFnZUxhYmVsIikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIHR5cGUgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7aWYoby5oYXMoIlMiKSl7Y29uc3QgZT1vLmdldCgiUyIpO2lmKCEoZSBpbnN0YW5jZW9mIE5hbWUpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBzdHlsZSBpbiBQYWdlTGFiZWwgZGljdGlvbmFyeS4iKTthPWUubmFtZX1lbHNlIGE9bnVsbDtpZihvLmhhcygiUCIpKXtjb25zdCBlPW8uZ2V0KCJQIik7aWYoInN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBwcmVmaXggaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7cj1zdHJpbmdUb1BERlN0cmluZyhlKX1lbHNlIHI9IiI7aWYoby5oYXMoIlN0Iikpe2NvbnN0IGU9by5nZXQoIlN0Iik7aWYoIShOdW1iZXIuaXNJbnRlZ2VyKGUpJiZlPj0xKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgc3RhcnQgaW4gUGFnZUxhYmVsIGRpY3Rpb25hcnkuIik7bj1lfWVsc2Ugbj0xfXN3aXRjaChhKXtjYXNlIkQiOmk9bjticmVhaztjYXNlIlIiOmNhc2UiciI6aT10b1JvbWFuTnVtZXJhbHMobiwiciI9PT1hKTticmVhaztjYXNlIkEiOmNhc2UiYSI6Y29uc3QgZT0yNix0PSJhIj09PWE/OTc6NjUscj1uLTE7aT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQrciVlKS5yZXBlYXQoTWF0aC5mbG9vcihyL2UpKzEpO2JyZWFrO2RlZmF1bHQ6aWYoYSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgc3R5bGUgIiR7YX0iIGluIFBhZ2VMYWJlbCBkaWN0aW9uYXJ5LmApO2k9IiJ9dFtzXT1yK2k7bisrfXJldHVybiB0fWdldCBwYWdlTGF5b3V0KCl7Y29uc3QgZT10aGlzLiNBZS5nZXQoIlBhZ2VMYXlvdXQiKTtsZXQgdD0iIjtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlNpbmdsZVBhZ2UiOmNhc2UiT25lQ29sdW1uIjpjYXNlIlR3b0NvbHVtbkxlZnQiOmNhc2UiVHdvQ29sdW1uUmlnaHQiOmNhc2UiVHdvUGFnZUxlZnQiOmNhc2UiVHdvUGFnZVJpZ2h0Ijp0PWUubmFtZX1yZXR1cm4gc2hhZG93KHRoaXMsInBhZ2VMYXlvdXQiLHQpfWdldCBwYWdlTW9kZSgpe2NvbnN0IGU9dGhpcy4jQWUuZ2V0KCJQYWdlTW9kZSIpO2xldCB0PSJVc2VOb25lIjtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIkZ1bGxTY3JlZW4iOmNhc2UiVXNlT0MiOmNhc2UiVXNlQXR0YWNobWVudHMiOnQ9ZS5uYW1lfXJldHVybiBzaGFkb3codGhpcywicGFnZU1vZGUiLHQpfWdldCB2aWV3ZXJQcmVmZXJlbmNlcygpe2NvbnN0IGU9dGhpcy4jQWUuZ2V0KCJWaWV3ZXJQcmVmZXJlbmNlcyIpO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXJldHVybiBzaGFkb3codGhpcywidmlld2VyUHJlZmVyZW5jZXMiLG51bGwpO2xldCB0PW51bGw7Zm9yKGNvbnN0W2Escl1vZiBlKXtsZXQgZTtzd2l0Y2goYSl7Y2FzZSJIaWRlVG9vbGJhciI6Y2FzZSJIaWRlTWVudWJhciI6Y2FzZSJIaWRlV2luZG93VUkiOmNhc2UiRml0V2luZG93IjpjYXNlIkNlbnRlcldpbmRvdyI6Y2FzZSJEaXNwbGF5RG9jVGl0bGUiOmNhc2UiUGlja1RyYXlCeVBERlNpemUiOiJib29sZWFuIj09dHlwZW9mIHImJihlPXIpO2JyZWFrO2Nhc2UiTm9uRnVsbFNjcmVlblBhZ2VNb2RlIjppZihyIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIlVzZU5vbmUiOmNhc2UiVXNlT3V0bGluZXMiOmNhc2UiVXNlVGh1bWJzIjpjYXNlIlVzZU9DIjplPXIubmFtZTticmVhaztkZWZhdWx0OmU9IlVzZU5vbmUifWJyZWFrO2Nhc2UiRGlyZWN0aW9uIjppZihyIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goci5uYW1lKXtjYXNlIkwyUiI6Y2FzZSJSMkwiOmU9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6ZT0iTDJSIn1icmVhaztjYXNlIlZpZXdBcmVhIjpjYXNlIlZpZXdDbGlwIjpjYXNlIlByaW50QXJlYSI6Y2FzZSJQcmludENsaXAiOmlmKHIgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiTWVkaWFCb3giOmNhc2UiQ3JvcEJveCI6Y2FzZSJCbGVlZEJveCI6Y2FzZSJUcmltQm94IjpjYXNlIkFydEJveCI6ZT1yLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJDcm9wQm94In1icmVhaztjYXNlIlByaW50U2NhbGluZyI6aWYociBpbnN0YW5jZW9mIE5hbWUpc3dpdGNoKHIubmFtZSl7Y2FzZSJOb25lIjpjYXNlIkFwcERlZmF1bHQiOmU9ci5uYW1lO2JyZWFrO2RlZmF1bHQ6ZT0iQXBwRGVmYXVsdCJ9YnJlYWs7Y2FzZSJEdXBsZXgiOmlmKHIgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChyLm5hbWUpe2Nhc2UiU2ltcGxleCI6Y2FzZSJEdXBsZXhGbGlwU2hvcnRFZGdlIjpjYXNlIkR1cGxleEZsaXBMb25nRWRnZSI6ZT1yLm5hbWU7YnJlYWs7ZGVmYXVsdDplPSJOb25lIn1icmVhaztjYXNlIlByaW50UGFnZVJhbmdlIjppZihBcnJheS5pc0FycmF5KHIpJiZyLmxlbmd0aCUyPT0wKXtyLmV2ZXJ5KChlLHQsYSk9Pk51bWJlci5pc0ludGVnZXIoZSkmJmU+MCYmKDA9PT10fHxlPj1hW3QtMV0pJiZlPD10aGlzLm51bVBhZ2VzKSYmKGU9cil9YnJlYWs7Y2FzZSJOdW1Db3BpZXMiOk51bWJlci5pc0ludGVnZXIocikmJnI+MCYmKGU9cik7YnJlYWs7ZGVmYXVsdDp3YXJuKGBJZ25vcmluZyBub24tc3RhbmRhcmQga2V5IGluIFZpZXdlclByZWZlcmVuY2VzOiAke2F9LmApO2NvbnRpbnVlfWlmKHZvaWQgMCE9PWUpe3Q/Pz1PYmplY3QuY3JlYXRlKG51bGwpO3RbYV09ZX1lbHNlIHdhcm4oYEJhZCB2YWx1ZSwgZm9yIGtleSAiJHthfSIsIGluIFZpZXdlclByZWZlcmVuY2VzOiAke3J9LmApfXJldHVybi
101BzaGFkb3codGhpcywidmlld2VyUHJlZmVyZW5jZXMiLHQpfWdldCBvcGVuQWN0aW9uKCl7Y29uc3QgZT10aGlzLiNBZS5nZXQoIk9wZW5BY3Rpb24iKSx0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGE9bmV3IERpY3QodGhpcy54cmVmKTthLnNldCgiQSIsZSk7Y29uc3Qgcj17dXJsOm51bGwsZGVzdDpudWxsLGFjdGlvbjpudWxsfTtDYXRhbG9nLnBhcnNlRGVzdERpY3Rpb25hcnkoe2Rlc3REaWN0OmEscmVzdWx0T2JqOnJ9KTtBcnJheS5pc0FycmF5KHIuZGVzdCk/dC5kZXN0PXIuZGVzdDpyLmFjdGlvbiYmKHQuYWN0aW9uPXIuYWN0aW9uKX1lbHNlIExuKGUpJiYodC5kZXN0PWUpO3JldHVybiBzaGFkb3codGhpcywib3BlbkFjdGlvbiIsb2JqZWN0U2l6ZSh0KT4wP3Q6bnVsbCl9Z2V0IGF0dGFjaG1lbnRzKCl7Y29uc3QgZT10aGlzLiNBZS5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIkVtYmVkZGVkRmlsZXMiKSl7Y29uc3QgYT1uZXcgTmFtZVRyZWUoZS5nZXRSYXcoIkVtYmVkZGVkRmlsZXMiKSx0aGlzLnhyZWYpO2Zvcihjb25zdFtlLHJdb2YgYS5nZXRBbGwoKSl7Y29uc3QgYT1uZXcgRmlsZVNwZWMocix0aGlzLnhyZWYpO3Q/Pz1PYmplY3QuY3JlYXRlKG51bGwpO3Rbc3RyaW5nVG9QREZTdHJpbmcoZSwhMCldPWEuc2VyaWFsaXphYmxlfX1yZXR1cm4gc2hhZG93KHRoaXMsImF0dGFjaG1lbnRzIix0KX1nZXQgeGZhSW1hZ2VzKCl7Y29uc3QgZT10aGlzLiNBZS5nZXQoIk5hbWVzIik7bGV0IHQ9bnVsbDtpZihlIGluc3RhbmNlb2YgRGljdCYmZS5oYXMoIlhGQUltYWdlcyIpKXtjb25zdCBhPW5ldyBOYW1lVHJlZShlLmdldFJhdygiWEZBSW1hZ2VzIiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxyXW9mIGEuZ2V0QWxsKCkpaWYociBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pe3Q/Pz1uZXcgTWFwO3Quc2V0KHN0cmluZ1RvUERGU3RyaW5nKGUsITApLHIuZ2V0Qnl0ZXMoKSl9fXJldHVybiBzaGFkb3codGhpcywieGZhSW1hZ2VzIix0KX0jTWUoKXtjb25zdCBlPXRoaXMuI0FlLmdldCgiTmFtZXMiKTtsZXQgdD1udWxsO2Z1bmN0aW9uIGFwcGVuZElmSmF2YVNjcmlwdERpY3QoZSxhKXtp
101ZighKGEgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47aWYoIWlzTmFtZShhLmdldCgiUyIpLCJKYXZhU2NyaXB0IikpcmV0dXJuO2xldCByPWEuZ2V0KCJKUyIpO2lmKHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXI9ci5nZXRTdHJpbmcoKTtlbHNlIGlmKCJzdHJpbmciIT10eXBlb2YgcilyZXR1cm47cj1zdHJpbmdUb1BERlN0cmluZyhyLCEwKS5yZXBsYWNlQWxsKCJcMCIsIiIpO3ImJih0fHw9bmV3IE1hcCkuc2V0KGUscil9aWYoZSBpbnN0YW5jZW9mIERpY3QmJmUuaGFzKCJKYXZhU2NyaXB0Iikpe2NvbnN0IHQ9bmV3IE5hbWVUcmVlKGUuZ2V0UmF3KCJKYXZhU2NyaXB0IiksdGhpcy54cmVmKTtmb3IoY29uc3RbZSxhXW9mIHQuZ2V0QWxsKCkpYXBwZW5kSWZKYXZhU2NyaXB0RGljdChzdHJpbmdUb1BERlN0cmluZyhlLCEwKSxhKX1jb25zdCBhPXRoaXMuI0FlLmdldCgiT3BlbkFjdGlvbiIpO2EmJmFwcGVuZElmSmF2YVNjcmlwdERpY3QoIk9wZW5BY3Rpb24iLGEpO3JldHVybiB0fWdldCBqc0FjdGlvbnMoKXtjb25zdCBlPXRoaXMuI01lKCk7bGV0IHQ9Y29sbGVjdEFjdGlvbnModGhpcy54cmVmLHRoaXMuI0FlLG5lKTtpZihlKXt0fHw9T2JqZWN0LmNyZWF0ZShudWxsKTtmb3IoY29uc3RbYSxyXW9mIGUpYSBpbiB0P3RbYV0ucHVzaChyKTp0W2FdPVtyXX1yZXR1cm4gc2hhZG93KHRoaXMsImpzQWN0aW9ucyIsdCl9YXN5bmMgY2xlYW51cChlPSExKXtjbGVhckdsb2JhbENhY2hlcygpO3RoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLmNsZWFyKCk7dGhpcy5nbG9iYWxJbWFnZUNhY2hlLmNsZWFyKGUpO3RoaXMucGFnZUtpZHNDb3VudENhY2hlLmNsZWFyKCk7dGhpcy5wYWdlSW5kZXhDYWNoZS5jbGVhcigpO3RoaXMucGFnZURpY3RDYWNoZS5jbGVhcigpO3RoaXMubm9uQmxlbmRNb2Rlc1NldC5jbGVhcigpO2Zvcihjb25zdHtkaWN0OmV9b2YgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5mb250Q2FjaGUpKWRlbGV0ZSBlLmNhY2hlS2V5O3RoaXMuZm9udENhY2hlLmNsZWFyKCk7dGhpcy5idWlsdEluQ01hcENhY2hlLmNsZWFyKCk7dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUuY2xlYXIoKTt0aGlzLnN5c3RlbUZvbnRDYWNoZS5jbGVhcigpfWFzeW5jIGdldFBhZ2VEaWN0KGUpe2NvbnN0IHQ9W3RoaXMudG9wbGV2ZWxQYWdlc0RpY3RdLGE9bmV3IFJlZlNldCxyPXRoaXMuI0FlLmdldFJhdygiUGFnZXMiKTtyIGluc3RhbmNlb2YgUmVmJiZhLnB1dChyKTtjb25zdCBpPXRoaXMueHJlZixuPXRoaXMucGFnZUtpZHNDb3VudENhY2hlLHM9dGhpcy5wYWdlSW5kZXhDYWNoZSxvPXRoaXMucGFnZURpY3RDYWNoZTtsZXQgYz0wO2Zvcig7dC5sZW5ndGg7KXtjb25zdCByPXQucG9wKCk7aWYociBpbnN0YW5jZW9mIFJlZil7Y29uc3QgbD1uLmdldChyKTtpZihsPj0wJiZjK2w8PWUpe2MrPWw7Y29udGludWV9aWYoYS5oYXMocikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJQYWdlcyB0cmVlIGNvbnRhaW5zIGNpcmN1bGFyIHJlZmVyZW5jZS4iKTthLnB1dChyKTtjb25zdCBoPWF3YWl0KG8uZ2V0KHIpfHxpLmZldGNoQXN5bmMocikpO2lmKGggaW5zdGFuY2VvZiBEaWN0KXtsZXQgdD1oLmdldFJhdygiVHlwZSIpO3QgaW5zdGFuY2VvZiBSZWYmJih0PWF3YWl0IGkuZmV0Y2hBc3luYyh0KSk7aWYoaXNOYW1lKHQsIlBhZ2UiKXx8IWguaGFzKCJLaWRzIikpe24uaGFzKHIpfHxuLnB1dChyLDEpO3MuaGFzKHIpfHxzLnB1dChyLGMpO2lmKGM9PT1lKXJldHVybltoLHJdO2MrKztjb250aW51ZX19dC5wdXNoKGgpO2NvbnRpbnVlfWlmKCEociBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpO2NvbnN0e29iaklkOmx9PXI7bGV0IGg9ci5nZXRSYXcoIkNvdW50Iik7aCBpbnN0YW5jZW9mIFJlZiYmKGg9YXdhaXQgaS5mZXRjaEFzeW5jKGgpKTtpZihOdW1iZXIuaXNJbnRlZ2VyKGgpJiZoPj0wKXtsJiYhbi5oYXMobCkmJm4ucHV0KGwsaCk7aWYoYytoPD1lKXtjKz1oO2NvbnRpbnVlfX1sZXQgdT1yLmdldFJhdygiS2lkcyIpO3UgaW5zdGFuY2VvZiBSZWYmJih1PWF3YWl0IGkuZmV0Y2hBc3luYyh1KSk7aWYoIUFycmF5LmlzQXJyYXkodSkpe2xldCB0PXIuZ2V0UmF3KCJUeXBlIik7dCBpbnN0YW5jZW9mIFJlZiYmKHQ9YXdhaXQgaS5mZXRjaEFzeW5jKHQpKTtpZihpc05hbWUodCwiUGFnZSIpfHwhci5oYXMoIktpZHMiKSl7aWYoYz09PWUpcmV0dXJuW3IsbnVsbF07YysrO2NvbnRpbnVlfXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZHMgb2JqZWN0IGlzIG5vdCBhbiBhcnJheS4iKX1mb3IobGV0IGU9dS5sZW5ndGgtMTtlPj0wO2UtLSl7Y29uc3QgYT11W2VdO3QucHVzaChhKTtyPT09dGhpcy50b3BsZXZlbFBhZ2VzRGljdCYmYSBpbnN0YW5jZW9mIFJlZiYmIW8uaGFzKGEpJiZvLnB1dChhLGkuZmV0Y2hBc3luYyhhKSl9fXRocm93IG5ldyBFcnJvcihgUGFnZSBpbmRleCAke2V9IG5vdCBmb3VuZC5gKX1hc3luYyBnZXRBbGxQYWdlRGljdHMoZT0hMSl7Y29uc3R7aWdub3JlRXJyb3JzOnR9PXRoaXMucGRmTWFuYWdlci5ldmFsdWF0b3JPcHRpb25zLGE9W3tjdXJyZW50Tm9kZTp0aGlzLnRvcGxldmVsUGFnZXNEaWN0LHBvc0luS2lkczowfV0scj1uZXcgUmVmU2V0LGk9dGhpcy4jQWUuZ2V0UmF3KCJQYWdlcyIpO2kgaW5zdGFuY2VvZiBSZWYmJnIucHV0KGkpO2NvbnN0IG49bmV3IE1hcCxzPXRoaXMueHJlZixvPXRoaXMucGFnZUluZGV4Q2FjaGU7bGV0IGM9MDtmdW5jdGlvbiBhZGRQYWdlRGljdChlLHQpe3QmJiFvLmhhcyh0KSYmby5wdXQodCxjKTtuLnNldChjKyssW2UsdF0pfWZ1bmN0aW9uIGFkZFBhZ2VFcnJvcihhKXtpZihhIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBhO2lmKGUmJnQmJjA9PT1jKXt3YXJuKGBnZXRBbGxQYWdlRGljdHMgLSBTa2lwcGluZyBpbnZhbGlkIGZpcnN0IHBhZ2U6ICIke2F9Ii5gKTthPURpY3QuZW1wdHl9bi5zZXQoYysrLFthLG51bGxdKX1mb3IoO2EubGVuZ3RoPjA7KXtjb25zdCBlPWEuYXQoLTEpLHtjdXJyZW50Tm9kZTp0LHBvc0luS2lkczppfT1lO2xldCBuPXQuZ2V0UmF3KCJLaWRzIik7aWYobiBpbnN0YW5jZW9mIFJlZil0cnl7bj1hd2FpdCBzLmZldGNoQXN5bmMobil9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfWlmKCFBcnJheS5pc0FycmF
1015KG4pKXthZGRQYWdlRXJyb3IobmV3IEZvcm1hdEVycm9yKCJQYWdlIGRpY3Rpb25hcnkga2lkcyBvYmplY3QgaXMgbm90IGFuIGFycmF5LiIpKTticmVha31pZihpPj1uLmxlbmd0aCl7YS5wb3AoKTtjb250aW51ZX1jb25zdCBvPW5baV07bGV0IGM7aWYobyBpbnN0YW5jZW9mIFJlZil7aWYoci5oYXMobykpe2FkZFBhZ2VFcnJvcihuZXcgRm9ybWF0RXJyb3IoIlBhZ2VzIHRyZWUgY29udGFpbnMgY2lyY3VsYXIgcmVmZXJlbmNlLiIpKTticmVha31yLnB1dChvKTt0cnl7Yz1hd2FpdCBzLmZldGNoQXN5bmMobyl9Y2F0Y2goZSl7YWRkUGFnZUVycm9yKGUpO2JyZWFrfX1lbHNlIGM9bztpZighKGMgaW5zdGFuY2VvZiBEaWN0KSl7YWRkUGFnZUVycm9yKG5ldyBGb3JtYXRFcnJvcigiUGFnZSBkaWN0aW9uYXJ5IGtpZCByZWZlcmVuY2UgcG9pbnRzIHRvIHdyb25nIHR5cGUgb2Ygb2JqZWN0LiIpKTticmVha31sZXQgbD1jLmdldFJhdygiVHlwZSIpO2lmKGwgaW5zdGFuY2VvZiBSZWYpdHJ5e2w9YXdhaXQgcy5mZXRjaEFzeW5jKGwpfWNhdGNoKGUpe2FkZFBhZ2VFcnJvcihlKTticmVha31pc05hbWUobCwiUGFnZSIpfHwhYy5oYXMoIktpZHMiKT9hZGRQYWdlRGljdChjLG8gaW5zdGFuY2VvZiBSZWY/bzpudWxsKTphLnB1c2goe2N1cnJlbnROb2RlOmMscG9zSW5LaWRzOjB9KTtlLnBvc0luS2lkcysrfXJldHVybiBufWdldFBhZ2VJbmRleChlKXtjb25zdCB0PXRoaXMucGFnZUluZGV4Q2FjaGUuZ2V0KGUpO2lmKHZvaWQgMCE9PXQpcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0KTtjb25zdCBhPXRoaXMueHJlZjtsZXQgcj0wO2NvbnN0IG5leHQ9dD0+ZnVuY3Rpb24gcGFnZXNCZWZvcmVSZWYodCl7bGV0IHIsaT0wO3JldHVybiBhLmZldGNoQXN5bmModCkudGhlbihmdW5jdGlvbihhKXtpZihpc1JlZnNFcXVhbCh0LGUpJiYhaXNEaWN0KGEsIlBhZ2UiKSYmIShhIGluc3RhbmNlb2YgRGljdCYmIWEuaGFzKCJUeXBlIikmJmEuaGFzKCJDb250ZW50cyIpKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSByZWZlcmVuY2UgZG9lcyBub3QgcG9pbnQgdG8gYSAvUGFnZSBkaWN0aW9uYXJ5LiIpO2lmKCFhKXJldHVybiBudWxsO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiTm9kZSBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyPWEuZ2V0UmF3KCJQYXJlbnQiKTtyZXR1cm4gYS5nZXRBc3luYygiUGFyZW50Iil9KS50aGVuKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybi
101BudWxsO2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFyZW50IG11c3QgYmUgYSBkaWN0aW9uYXJ5LiIpO3JldHVybiBlLmdldEFzeW5jKCJLaWRzIil9KS50aGVuKGZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiBudWxsO2NvbnN0IG49W107bGV0IHM9ITE7Zm9yKGNvbnN0IHIgb2YgZSl7aWYoIShyIGluc3RhbmNlb2YgUmVmKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIktpZCBtdXN0IGJlIGEgcmVmZXJlbmNlLiIpO2lmKGlzUmVmc0VxdWFsKHIsdCkpe3M9ITA7YnJlYWt9bi5wdXNoKGEuZmV0Y2hBc3luYyhyKS50aGVuKGZ1bmN0aW9uKGUpe2lmKCEoZSBpbnN0YW5jZW9mIERpY3QpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIG5vZGUgbXVzdCBiZSBhIGRpY3Rpb25hcnkuIik7ZS5oYXMoIkNvdW50Iik/aSs9ZS5nZXQoIkNvdW50Iik6aSsrfSkpfWlmKCFzKXRocm93IG5ldyBGb3JtYXRFcnJvcigiS2lkIHJlZmVyZW5jZSBub3QgZm91bmQgaW4gcGFyZW50J3Mga2lkcy4iKTtyZXR1cm4gUHJvbWlzZS5hbGwobikudGhlbigoKT0+W2kscl0pfSl9KHQpLnRoZW4odD0+e2lmKCF0KXt0aGlzLnBhZ2VJbmRleENhY2hlLnB1dChlLHIpO3JldHVybiByfWNvbnN0W2EsaV09dDtyKz1hO3JldHVybiBuZXh0KGkpfSk7cmV0dXJuIG5leHQoZSl9Z2V0IGJhc2VVcmwoKXtjb25zdCBlPXRoaXMuI0FlLmdldCgiVVJJIik7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkJhc2UiKTtpZigic3RyaW5nIj09dHlwZW9mIHQpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybCh0LG51bGwse3RyeUNvbnZlcnRFbmNvZGluZzohMH0pO2lmKGUpcmV0dXJuIHNoYWRvdyh0aGlzLCJiYXNlVXJsIixlLmhyZWYpfX1yZXR1cm4gc2hhZG93KHRoaXMsImJhc2VVcmwiLHRoaXMucGRmTWFuYWdlci5kb2NCYXNlVXJsKX1zdGF0aWMgcGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6ZSxyZXN1bHRPYmo6dCxkb2NCYXNlVXJsOmE9bnVsbCxkb2NBdHRhY2htZW50czpyPW51bGx9KXtpZighKGUgaW5zdGFuY2VvZiBEaWN0KSl7d2FybigicGFyc2VEZXN0RGljdGlvbmFyeTogYGRlc3REaWN0YCBtdXN0IGJlIGEgZGljdGlvbmFyeS4iKTtyZXR1cm59bGV0IGksbixzPWUuZ2V0KCJBIik7aWYoIShzIGluc3RhbmNlb2YgRGljdCkpaWYoZS5oYXMoIkRlc3QiKSlzPWUuZ2V0KCJEZXN0Iik7ZWxzZXtzPWUuZ2V0KCJBQSIpO3MgaW5zdGFuY2VvZiBEaWN0JiYocy5oYXMoIkQiKT9zPXMuZ2V0KCJEIik6cy5oYXMoIlUiKSYmKHM9cy5nZXQoIlUiKSkpfWlmKHMgaW5zdGFuY2VvZiBEaWN0KXtjb25zdCBlPXMuZ2V0KCJTIik7aWYoIShlIGluc3RhbmNlb2YgTmFtZSkpe3dhcm4oInBhcnNlRGVzdERpY3Rpb25hcnk6IEludmFsaWQgdHlwZSBpbiBBY3Rpb24gZGljdGlvbmFyeS4iKTtyZXR1cm59Y29uc3QgYT1lLm5hbWU7c3dpdGNoKGEpe2Nhc2UiUmVzZXRGb3JtIjpjb25zdCBlPXMuZ2V0KCJGbGFncyIpLG89ISgxJigibnVtYmVyIj09dHlwZW9mIGU/ZTowKSksYz1bXSxsPVtdO2Zvcihjb25zdCBlIG9mIHMuZ2V0KCJGaWVsZHMiKXx8W10pZSBpbnN0YW5jZW9mIFJlZj9sLnB1c2goZS50b1N0cmluZygpKToic3RyaW5nIj09dHlwZW9mIGUmJmMucHVzaChzdHJpbmdUb1BERlN0cmluZyhlKSk7dC5yZXNldEZvcm09e2ZpZWxkczpjLHJlZnM6bCxpbmNsdWRlOm99O2JyZWFrO2Nhc2UiVVJJIjppPXMuZ2V0KCJVUkkiKTtpIGluc3RhbmNlb2YgTmFtZSYmKGk9Ii8iK2kubmFtZSk7YnJlYWs7Y2FzZSJHb1RvIjpuPXMuZ2V0KCJEIik7YnJlYWs7Y2FzZSJMYXVuY2giOmNhc2UiR29Ub1IiOmNvbnN0IGg9cy5nZXQoIkYiKTtpZihoIGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT1uZXcgRmlsZVNwZWMoaCxudWxsLCEwKSx7cmF3RmlsZW5hbWU6dH09ZS5zZXJpYWxpemFibGU7aT10fWVsc2Uic3RyaW5nIj09dHlwZW9mIGgmJihpPWgpO2NvbnN0IHU9ZmV0Y2hSZW1vdGVEZXN0KHMpO3UmJiJzdHJpbmciPT10eXBlb2YgaSYmKGk9aS5zcGxpdCgiIyIsMSlbMF0rIiMiK3UpO2NvbnN0IGQ9cy5nZXQoIk5ld1dpbmRvdyIpOyJib29sZWFuIj09dHlwZW9mIGQmJih0Lm5ld1dpbmRvdz1kKTticmVhaztjYXNlIkdvVG9FIjpjb25zdCBmPXMuZ2V0KCJUIik7bGV0IGc7aWYociYmZiBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9Zi5nZXQoIlIiKSx0PWYuZ2V0KCJOIik7aXNOYW1lKGUsIkMiKSYmInN0cmluZyI9PXR5cGVvZiB0JiYoZz1yW3N0cmluZ1RvUERGU3RyaW5nKHQsITApXSl9aWYoZyl7dC5hdHRhY2htZW50PWc7Y29uc3QgZT1mZXRjaFJlbW90ZURlc3Qocyk7ZSYmKHQuYXR0YWNobWVudERlc3Q9ZSl9ZWxzZSB3YXJuKCdwYXJzZURlc3REaWN0aW9uYXJ5IC0gdW5pbXBsZW1lbnRlZCAiR29Ub0UiIGFjdGlvbi4nKTticmVhaztjYXNlIk5hbWVkIjpjb25zdCBwPXMuZ2V0KCJOIik7cCBpbnN0YW5jZW9mIE5hbWUmJih0LmFjdGlvbj1wLm5hbWUpO2JyZWFrO2Nhc2UiU2V0T0NHU3RhdGUiOmNvbnN0IG09cy5nZXQoIlN0YXRlIiksYj1zLmdldCgiUHJlc2VydmVSQiIpO2lmKCFBcnJheS5pc0FycmF5KG0pfHwwPT09bS5sZW5ndGgpYnJlYWs7Y29uc3QgeT1bXTtmb3IoY29uc3QgZSBvZiBtKWlmKGUgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChlLm5hbWUpe2Nhc2UiT04iOmNhc2UiT0ZGIjpjYXNlIlRvZ2dsZSI6eS5wdXNoKGUubmFtZSl9ZWxzZSBlIGluc3RhbmNlb2YgUmVmJiZ5LnB1c2goZS50b1N0cmluZygpKTtpZih5Lmxlbmd0aCE9PW0ubGVuZ3RoKWJyZWFrO3Quc2V0T0NHU3RhdGU9e3N0YXRlOnkscHJlc2VydmVSQjoiYm9vbGVhbiIhPXR5cGVvZiBifHxifTticmVhaztjYXNlIkphdmFTY3JpcHQiOmNvbnN0IHc9cy5nZXQoIkpTIik7bGV0IHg7dyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/eD13LmdldFN0cmluZygpOiJzdHJpbmciPT10eXBlb2YgdyYmKHg9dyk7Y29uc3QgUz14JiZyZWNvdmVySnNVUkwoc3RyaW5nVG9QREZTdHJpbmcoeCwhMCkpO2lmKFMpe2k9Uy51cmw7dC5uZXdXaW5kb3c9Uy5uZXdXaW5kb3c7YnJlYWt9ZGVmYXVsdDppZigiSmF2YVNjcmlwdCI9PT1hfHwiU3VibWl0Rm9ybSI9PT1hKWJyZWFrO3dhcm4oYHBhcnNlRGVzdERpY3Rpb25hcnkgLSB1bnN1cHBvcnRlZCBhY3Rpb246ICIke2F9Ii5gKX19ZWxzZSBlLmhhcygiRGVzdCIpJiYobj1lLmdldCgiRGVzdCIpKTtpZigic3RyaW5nIj09dHlwZW9mIGkpe2NvbnN0IGU9Y3JlYXRlVmFsaWRBYnNvbHV0ZVVybChpLGEse2FkZERlZmF1bHRQcm90b2NvbDohMCx0cnlDb252ZXJ0RW5jb2Rpbmc6ITB9KTtlJiYodC51cmw9ZS5ocmVm
101KTt0LnVuc2FmZVVybD1pfWlmKG4pe24gaW5zdGFuY2VvZiBOYW1lJiYobj1uLm5hbWUpOyJzdHJpbmciPT10eXBlb2Ygbj90LmRlc3Q9c3RyaW5nVG9QREZTdHJpbmcobiwhMCk6TG4obikmJih0LmRlc3Q9bil9fX1mdW5jdGlvbiBtYXlIYXZlQ2hpbGRyZW4oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWZ8fGUgaW5zdGFuY2VvZiBEaWN0fHxlIGluc3RhbmNlb2YgQmFzZVN0cmVhbXx8QXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBhZGRDaGlsZHJlbihlLHQpe2lmKGUgaW5zdGFuY2VvZiBEaWN0KWU9ZS5nZXRSYXdWYWx1ZXMoKTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKWU9ZS5kaWN0LmdldFJhd1ZhbHVlcygpO2Vsc2UgaWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuO2Zvcihjb25zdCBhIG9mIGUpbWF5SGF2ZUNoaWxkcmVuKGEpJiZ0LnB1c2goYSl9Y2xhc3MgT2JqZWN0TG9hZGVye3JlZlNldD1uZXcgUmVmU2V0O2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLmRpY3Q9ZTt0aGlzLmtleXM9dDt0aGlzLnhyZWY9YX1hc3luYyBsb2FkKCl7Y29uc3R7a2V5czplLGRpY3Q6dH09dGhpcyxhPVtdO2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9dC5nZXRSYXcocik7dm9pZCAwIT09ZSYmYS5wdXNoKGUpfWF3YWl0IHRoaXMuI1JlKGEpO3RoaXMucmVmU2V0PW51bGx9YXN5bmMjUmUoZSl7Y29uc3QgdD1bXSxhPVtdO2Zvcig7ZS5sZW5ndGg7KXtsZXQgcj1lLnBvcCgpO2lmKHIgaW5zdGFuY2VvZiBSZWYpe2lmKHRoaXMucmVmU2V0LmhhcyhyKSljb250aW51ZTt0cnl7dGhpcy5yZWZTZXQucHV0KHIpO3I9dGhpcy54cmVmLmZldGNoKHIpfWNhdGNoKGUpe2lmKCEoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl7d2FybihgT2JqZWN0TG9hZGVyLiN3YWxrIC0gcmVxdWVzdGluZyBhbGwgZGF0YTogIiR7ZX0iLmApO2F3YWl0IHRoaXMueHJlZi5zdHJlYW0ubWFuYWdlci5yZXF1ZXN0QWxsQ2h1bmtzKCk7cmV0dXJufXQucHVzaChyKTthLnB1c2goe2JlZ2luOmUuYmVnaW4sZW5kOmUuZW5kfSl9fWlmKHIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXtjb25zdCBlPXIuZ2V0QmFzZVN0cmVhbXMoKTtpZihlKXtsZXQgaT0hMTtmb3IoY29uc3QgdCBvZiBlKWlmKCF0LmlzRGF0YUxvYWRlZCl7aT0hMDthLnB1c2goe2JlZ2luOnQuc3RhcnQsZW5kOnQuZW5kfSl9aSYmdC5wdXNoKHIpfX1hZGRDaGlsZHJlbihyLGUpfWlmKGEubGVuZ3RoKXthd2FpdCB0aGlzLnhyZWYuc3RyZWFtLm1hbmFnZXIucmVxdWVzdFJhbmdlcyhhKTtmb3IoY29uc3QgZSBvZiB0KWUgaW5zdGFuY2VvZiBSZWYmJnRoaXMucmVmU2V0LnJlbW92ZShlKTthd2FpdCB0aGlzLiNSZSh0KX19c3RhdGljIGFzeW5jIGxvYWQoZSx0LGEpe2lmKGEuc3RyZWFtLmlzRGF0YUxvYWRlZClyZXR1cm47Y29uc3Qgcj1uZXcgT2JqZWN0TG9hZGVyKGUsdCxhKTthd2FpdCByLmxvYWQoKX19Y29uc3QgX249U3ltYm9sKCksVW49U3ltYm9sKCksam49U3ltYm9sKCksWG49U3ltYm9sKCkscW49U3ltYm9sKCksSG49U3ltYm9sKCksV249U3ltYm9sKCksem49U3ltYm9sKCksJG49U3ltYm9sKCksR249U3ltYm9sKCJjb250ZW50IiksVm49U3ltYm9sKCJkYXRhIiksS249U3ltYm9sKCksSm49U3ltYm9sKCJleHRyYSIpLFluPVN5bWJvbCgpLFpuPVN5bWJvbCgpLFFuPVN5bWJvbCgpLGVzPVN5bWJvbCgpLHRzPVN5bWJvbCgpLGFzPVN5bWJvbCgpLHJzPVN5bWJvbCgpLGlzPVN5bWJvbCgpLG5zPVN5bWJvbCgpLHNzPVN5bWJvbCgpLG9zPVN5bWJvbCgpLGNzPVN5bWJvbCgpLGxzPVN5bWJvbCgpLGhzPVN5bWJvbCgpLHVzPVN5bWJvbCgpLGRzPVN5bWJvbCgpLGZzPVN5bWJvbCgpLGdzPVN5bWJvbCgpLHBzPVN5bWJvbCgpLG1zPVN5bWJvbCgpLGJzPVN5bWJvbCgpLHlzPVN5bWJvbCgpLHdzPVN5bWJvbCgpLHhzPVN5bWJvbCgpLFNzPVN5bWJvbCgpLEFzPVN5bWJvbCgpLGtzPVN5bWJvbCgpLENzPVN5bWJvbCgpLHZzPVN5bWJvbCgpLEZzPVN5bWJvbCgpLElzPVN5bWJvbCgpLFRzPVN5bWJvbCgpLE9zPVN5bWJvbCgibmFtZXNwYWNlSWQiKSxEcz1TeW1ib2woIm5vZGVOYW1lIiksTXM9U3ltYm9sKCksUnM9U3ltYm9sKCksQnM9U3ltYm9sKCksTnM9U3ltYm9sKCksRXM9U3ltYm9sKCksTHM9U3ltYm9sKCksX3M9U3ltYm9sKCksVXM9U3ltYm9sKCksanM9U3ltYm9sKCJyb290IiksWHM9U3ltYm9sKCkscXM9U3ltYm9sKCksSHM9U3ltYm9sKCksV3M9U3ltYm9sKCksenM9U3ltYm9sKCksJHM9U3ltYm9sKCksR3M9U3ltYm9sKCksVnM9U3ltYm9sKCksS3M9U3ltYm9sKCksSnM9U3ltYm9sKCksWXM9U3ltYm9sKCksWnM9U3ltYm9sKCJ1aWQiKSxRcz1TeW1ib2woKSxlbz17Y29uZmlnOntpZDowLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94Y2kvIil9LGNvbm5lY3Rpb25TZXQ6e2lkOjEsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1jb25uZWN0aW9uLXNldC8iKX0sZGF0YXNldHM6e2lkOjIsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLyIpfSxmb3JtOntpZDozLGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtZm9ybS8iKX0sbG9jYWxlU2V0OntpZDo0LGNoZWNrOmU9PmUuc3RhcnRzV2l0aCgiaHR0cDovL3d3dy54ZmEub3JnL3NjaGVtYS94ZmEtbG9jYWxlLXNldC8iKX0scGRmOntpZDo1LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC9wZGYvIj09PWV9LHNpZ25hdHVyZTp7aWQ6NixjaGVjazplPT4iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI9PT1lfSxzb3VyY2VTZXQ6e2lkOjcsY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1zb3VyY2Utc2V0LyIpfSxzdHlsZXNoZWV0OntpZDo4LGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPT09ZX0sdGVtcGxhdGU6e2lkOjksY2hlY2s6ZT0+ZS5zdGFydHNXaXRoKCJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS10ZW1wbGF0ZS8iKX0seGRjOntpZDoxMCxjaGVjazplPT5lLnN0YXJ0c1dpdGgoImh0dHA6Ly93d3cueGZhLm9yZy9zY2hlbWEveGRjLyIpfSx4ZHA6e2lkOjExLGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3hkcC8iPT09ZX0seGZkZjp7aWQ6MTIsY2hlY2s6ZT0+Imh0dHA6Ly9ucy5hZG9iZS5jb20veGZkZi8iPT09ZX0seGh0bWw6e2lkOjEzLGNoZWNrOmU9PiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWV9LHhtcG1ldGE6e2lkOjE0LGNoZWNrOmU9PiJodHRwOi8vbnMuYWRvYmUuY29tL3htcG1ldGEvIj09PWV9fSx0bz17cHQ6ZT0+ZSxjbTplPT5lLzIuNTQqNzIsbW06ZT0+ZS8yNS40KjcyLGluOmU9PjcyKmUscHg6ZT0+ZX0sYW89LyhbKy1dP1xkK1wuP1xkKikoLiopLztmdW5jdGlvbiBzdHJpcFF1b3RlcyhlKXtyZXR1cm4gZS5zdGFydHNXaXRoKCInIil8fGUuc3RhcnRzV2l0aCgnIicpP2Uuc2xpY2UoMSwtMSk6ZX1mdW5jdGlvbiBnZXRJbnRlZ2VyKHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybi
101B0O2U9ZS50cmltKCk7Y29uc3Qgcj1wYXJzZUludChlLDEwKTtyZXR1cm4haXNOYU4ocikmJmEocik/cjp0fWZ1bmN0aW9uIGdldEZsb2F0KHtkYXRhOmUsZGVmYXVsdFZhbHVlOnQsdmFsaWRhdGU6YX0pe2lmKCFlKXJldHVybiB0O2U9ZS50cmltKCk7Y29uc3Qgcj1wYXJzZUZsb2F0KGUpO3JldHVybiFpc05hTihyKSYmYShyKT9yOnR9ZnVuY3Rpb24gZ2V0S2V5d29yZCh7ZGF0YTplLGRlZmF1bHRWYWx1ZTp0LHZhbGlkYXRlOmF9KXtyZXR1cm4gZSYmYShlPWUudHJpbSgpKT9lOnR9ZnVuY3Rpb24gZ2V0U3RyaW5nT3B0aW9uKGUsdCl7cmV0dXJuIGdldEtleXdvcmQoe2RhdGE6ZSxkZWZhdWx0VmFsdWU6dFswXSx2YWxpZGF0ZTplPT50LmluY2x1ZGVzKGUpfSl9ZnVuY3Rpb24gZ2V0TWVhc3VyZW1lbnQoZSx0PSIwIil7dHx8PSIwIjtpZighZSlyZXR1cm4gZ2V0TWVhc3VyZW1lbnQodCk7Y29uc3QgYT1lLnRyaW0oKS5tYXRjaChhbyk7aWYoIWEpcmV0dXJuIGdldE1lYXN1cmVtZW50KHQpO2NvbnN0WyxyLGldPWEsbj1wYXJzZUZsb2F0KHIpO2lmKGlzTmFOKG4pKXJldHVybiBnZXRNZWFzdXJlbWVudCh0KTtpZigwPT09bilyZXR1cm4gMDtjb25zdCBzPXRvW2ldO3JldHVybiBzP3Mobik6bn1mdW5jdGlvbiBnZXRSYXRpbyhlKXtpZighZSlyZXR1cm57bnVtOjEsZGVuOjF9O2NvbnN0IHQ9ZS5zcGxpdCgiOiIsMikubWFwKGU9PnBhcnNlRmxvYXQoZS50cmltKCkpKS5maWx0ZXIoZT0+IWlzTmFOKGUpKTsxPT09dC5sZW5ndGgmJnQucHVzaCgxKTtpZigwPT09dC5sZW5ndGgpcmV0dXJue251bToxLGRlbjoxfTtjb25zdFthLHJdPXQ7cmV0dXJue251bTphLGRlbjpyfX1mdW5jdGlvbiBnZXRSZWxldmFudChlKXtyZXR1cm4gZT9lLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKGU9Pih7ZXhjbHVkZWQ6Ii0iPT09ZVswXSx2aWV3bmFtZTplLnN1YnN0cmluZygxKX0pKTpbXX1jbGFzcyBIVE1MUmVzdWx0e3N0YXRpYyBnZXQgRkFJTFVSRSgpe3JldHVybiBzaGFkb3codGhpcywiRkFJTFVSRSIsbmV3IEhUTUxSZXN1bHQoITEsbnVsbCxudWxsLG51bGwpKX1zdGF0aWMgZ2V0IEVNUFRZKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJFTVBUWSIsbmV3IEhUTUxSZXN1bHQoITAsbnVsbCxudWxsLG51bGwpKX1jb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLnN1Y2Nlc3M9ZTt0aGlzLmh0bWw9dDt0aGlzLmJib3g9YTt0aGlzLmJyZWFrTm9kZT1yfWlzQnJlYWsoKXtyZXR1cm4hIXRoaXMuYnJlYWtOb2RlfXN0YXRpYyBicmVha05vZGUoZSl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCExLG51bGwsbnVsbCxlKX1zdGF0aWMgc3VjY2VzcyhlLHQ9bnVsbCl7cmV0dXJuIG5ldyBIVE1MUmVzdWx0KCEwLGUsdCxudWxsKX19Y2xhc3MgRm9udEZpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLmZvbnRzPW5ldyBNYXA7dGhpcy5jYWNoZT1uZXcgTWFwO3RoaXMud2FybmVkPW5ldyBTZXQ7dGhpcy5kZWZhdWx0Rm9udD1udWxsO3RoaXMuYWRkKGUpfWFkZChlLHQ9bnVsbCl7Zm9yKGNvbnN0IHQgb2YgZSl0aGlzLmFkZFBkZkZvbnQodCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5mb250cy52YWx1ZXMoKSllLnJlZ3VsYXJ8fChlLnJlZ3VsYXI9ZS5pdGFsaWN8fGUuYm9sZHx8ZS5ib2xkaXRhbGljKTtpZighdHx8MD09PXQuc2l6ZSlyZXR1cm47Y29uc3QgYT10aGlzLmZvbnRzLmdldCgiUGRmSlMtRmFsbGJhY2stUGRmSlMtWEZBIik7Zm9yKGNvbnN0IGUgb2YgdCl0aGlzLmZvbnRzLnNldChlLGEpfWFkZFBkZkZvbnQoZSl7Y29uc3QgdD1lLmNzc0ZvbnRJbmZvLGE9dC5mb250RmFtaWx5O2xldCByPXRoaXMuZm9udHMuZ2V0KGEpO2lmKCFyKXtyPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5mb250cy5zZXQoYSxyKTt0aGlzLmRlZmF1bHRGb250fHwodGhpcy5kZWZhdWx0Rm9udD1yKX1sZXQgaT0iIjtjb25zdCBuPXBhcnNlRmxvYXQodC5mb250V2VpZ2h0KTswIT09cGFyc2VGbG9hdCh0Lml0YWxpY0FuZ2xlKT9pPW4+PTcwMD8iYm9sZGl0YWxpYyI6Iml0YWxpYyI6bj49NzAwJiYoaT0iYm9sZCIpO2lmKCFpKXsoZS5uYW1lLmluY2x1ZGVzKCJCb2xkIil8fGUucHNOYW1lPy5pbmNsdWRlcygiQm9sZCIpKSYmKGk9ImJvbGQiKTsoZS5uYW1lLmluY2x1ZGVzKCJJdGFsaWMiKXx8ZS5uYW1lLmVuZHNXaXRoKCJJdCIpfHxlLnBzTmFtZT8uaW5jbHVkZXMoIkl0YWxpYyIpfHxlLnBzTmFtZT8uZW5kc1dpdGgoIkl0IikpJiYoaSs9Iml0YWxpYyIpfWl8fChpPSJyZWd1bGFyIik7cltpXT1lfWdldERlZmF1bHQoKXtyZXR1cm4gdGhpcy5kZWZhdWx0Rm9udH1maW5kKGUsdD0hMCl7bGV0IGE9dGhpcy5mb250cy5nZXQoZSl8fHRoaXMuY2FjaGUuZ2V0KGUpO2lmKGEpcmV0dXJuIGE7Y29uc3Qgcj0vLHwtfF98IHxib2xkaXRhbGljfGJvbGR8aXRhbGljfHJlZ3VsYXJ8aXQvZ2k7bGV0IGk9ZS5yZXBsYWNlQWxsKHIsIiIpO2E9dGhpcy5mb250cy5nZXQoaSk7aWYoYSl7dGhpcy5jYWNoZS5zZXQoZSxhKTtyZXR1cm4gYX1pPWkudG9Mb3dlckNhc2UoKTtjb25zdCBuPVtdO2Zvcihjb25zdFtlLHRdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZXBsYWNlQWxsKHIsIiIpLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChpKSYmbi5wdXNoKHQpO2lmKDA9PT1uLmxlbmd0aClmb3IoY29uc3RbLGVdb2YgdGhpcy5mb250cy5lbnRyaWVzKCkpZS5yZWd1bGFyLm5hbWU/LnJlcGxhY2VBbGwociwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGkpJiZuLnB1c2goZSk7aWYoMD09PW4ubGVuZ3RoKXtpPWkucmVwbGFjZUFsbCgvcHNtdHxtdC9naSwiIik7Zm9yKGNvbnN0W2UsdF1vZiB0aGlzLmZvbnRzLmVudHJpZXMoKSllLnJlcGxhY2VBbGwociwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGkpJiZuLnB1c2godCl9aWYoMD09PW4ubGVuZ3RoKWZvcihjb25zdCBlIG9mIHRoaXMuZm9udHMudmFsdWVzKCkpZS5yZWd1bGFyLm5hbWU/LnJlcGxhY2VBbGwociwiIikudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGkpJiZuLnB1c2goZSk7aWYobi5sZW5ndGg+PTEpezEhPT1uLmxlbmd0aCYmdCYmd2FybihgWEZBIC0gVG9vIG1hbnkgY2hvaWNlcyB0byBndWVzcyB0aGUgY29ycmVjdCBmb250OiAke2V9YCk7dGhpcy5jYWNoZS5zZXQoZSxuWzBdKTtyZXR1cm4gblswXX1pZih0JiYhdGhpcy53YXJuZWQuaGFzKGUpKXt0
101aGlzLndhcm5lZC5hZGQoZSk7d2FybihgWEZBIC0gQ2Fubm90IGZpbmQgdGhlIGZvbnQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19ZnVuY3Rpb24gc2VsZWN0Rm9udChlLHQpe3JldHVybiJpdGFsaWMiPT09ZS5wb3N0dXJlPyJib2xkIj09PWUud2VpZ2h0P3QuYm9sZGl0YWxpYzp0Lml0YWxpYzoiYm9sZCI9PT1lLndlaWdodD90LmJvbGQ6dC5yZWd1bGFyfWNsYXNzIHRleHRfRm9udEluZm97Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5saW5lSGVpZ2h0PWE7dGhpcy5wYXJhTWFyZ2luPXR8fHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MH07aWYoIWUpe1t0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KHIpO3JldHVybn10aGlzLnhmYUZvbnQ9e3R5cGVmYWNlOmUudHlwZWZhY2UscG9zdHVyZTplLnBvc3R1cmUsd2VpZ2h0OmUud2VpZ2h0LHNpemU6ZS5zaXplLGxldHRlclNwYWNpbmc6ZS5sZXR0ZXJTcGFjaW5nfTtjb25zdCBpPXIuZmluZChlLnR5cGVmYWNlKTtpZihpKXt0aGlzLnBkZkZvbnQ9c2VsZWN0Rm9udChlLGkpO3RoaXMucGRmRm9udHx8KFt0aGlzLnBkZkZvbnQsdGhpcy54ZmFGb250XT10aGlzLmRlZmF1bHRGb250KHIpKX1lbHNlW3RoaXMucGRmRm9udCx0aGlzLnhmYUZvbnRdPXRoaXMuZGVmYXVsdEZvbnQocil9ZGVmYXVsdEZvbnQoZSl7Y29uc3QgdD1lLmZpbmQoIkhlbHZldGljYSIsITEpfHxlLmZpbmQoIk15cmlhZCBQcm8iLCExKXx8ZS5maW5kKCJBcmlhbCIsITEpfHxlLmdldERlZmF1bHQoKTtpZih0Py5yZWd1bGFyKXtjb25zdCBlPXQucmVndWxhcjtyZXR1cm5bZSx7dHlwZWZhY2U6ZS5jc3NGb250SW5mby5mb250RmFtaWx5LHBvc3R1cmU6Im5vcm1hbCIsd2VpZ2h0OiJub3JtYWwiLHNpemU6MTAsbGV0dGVyU3BhY2luZzowfV19cmV0dXJuW251bGwse3R5cGVmYWNlOiJDb3VyaWVyIixwb3N0dXJlOiJub3JtYWwiLHdlaWdodDoibm9ybWFsIixzaXplOjEwLGxldHRlclNwYWNpbmc6MH1dfX1jbGFzcyBGb250U2VsZWN0b3J7Y29uc3RydWN0b3IoZSx0LGEscil7dGhpcy5mb250RmluZGVyPXI7dGhpcy5zdGFjaz1bbmV3IHRleHRfRm9udEluZm8oZSx0LGEscildfXB1c2hEYXRhKGUsdCxhKXtjb25zdCByPXRoaXMuc3RhY2suYXQoLTEpO2Zvcihjb25zdCB0IG9mWyJ0eXBlZmFjZSIsInBvc3R1cmUiLCJ3ZWlnaHQiLCJzaXplIiwibGV0dG
101VyU3BhY2luZyJdKWVbdF18fChlW3RdPXIueGZhRm9udFt0XSk7Zm9yKGNvbnN0IGUgb2ZbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCJdKWlzTmFOKHRbZV0pJiYodFtlXT1yLnBhcmFNYXJnaW5bZV0pO2NvbnN0IGk9bmV3IHRleHRfRm9udEluZm8oZSx0LGF8fHIubGluZUhlaWdodCx0aGlzLmZvbnRGaW5kZXIpO2kucGRmRm9udHx8KGkucGRmRm9udD1yLnBkZkZvbnQpO3RoaXMuc3RhY2sucHVzaChpKX1wb3BGb250KCl7dGhpcy5zdGFjay5wb3AoKX10b3BGb250KCl7cmV0dXJuIHRoaXMuc3RhY2suYXQoLTEpfX1jbGFzcyBUZXh0TWVhc3VyZXtjb25zdHJ1Y3RvcihlLHQsYSxyKXt0aGlzLmdseXBocz1bXTt0aGlzLmZvbnRTZWxlY3Rvcj1uZXcgRm9udFNlbGVjdG9yKGUsdCxhLHIpO3RoaXMuZXh0cmFIZWlnaHQ9MH1wdXNoRGF0YShlLHQsYSl7dGhpcy5mb250U2VsZWN0b3IucHVzaERhdGEoZSx0LGEpfXBvcEZvbnQoZSl7cmV0dXJuIHRoaXMuZm9udFNlbGVjdG9yLnBvcEZvbnQoKX1hZGRQYXJhKCl7Y29uc3QgZT10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCk7dGhpcy5leHRyYUhlaWdodCs9ZS5wYXJhTWFyZ2luLnRvcCtlLnBhcmFNYXJnaW4uYm90dG9tfWFkZFN0cmluZyhlKXtpZighZSlyZXR1cm47Y29uc3QgdD10aGlzLmZvbnRTZWxlY3Rvci50b3BGb250KCksYT10LnhmYUZvbnQuc2l6ZTtpZih0LnBkZkZvbnQpe2NvbnN0IHI9dC54ZmFGb250LmxldHRlclNwYWNpbmcsaT10LnBkZkZvbnQsbj1pLmxpbmVIZWlnaHR8fDEuMixzPXQubGluZUhlaWdodHx8TWF0aC5tYXgoMS4yLG4pKmEsbz1uLSh2b2lkIDA9PT1pLmxpbmVHYXA/LjI6aS5saW5lR2FwKSxjPU1hdGgubWF4KDEsbykqYSxsPWEvMWUzLGg9aS5kZWZhdWx0V2lkdGh8fGkuY2hhcnNUb0dseXBocygiICIpWzBdLndpZHRoO2Zvcihjb25zdCB0IG9mIGUuc3BsaXQoL1tcdTIwMjlcbl0vKSl7Y29uc3QgZT1pLmVuY29kZVN0cmluZyh0KS5qb2luKCIiKSxhPWkuY2hhcnNUb0dseXBocyhlKTtmb3IoY29uc3QgZSBvZiBhKXtjb25zdCB0PWUud2lkdGh8fGg7dGhpcy5nbHlwaHMucHVzaChbdCpsK3IscyxjLGUudW5pY29kZSwhMV0pfXRoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKTtyZXR1cm59Zm9yKGNvbnN0IHQgb2YgZS5zcGxpdCgvW1x1MjAyOVxuXS8pKXtmb3IoY29uc3QgZSBvZiB0LnNwbGl0KCIiKSl0aGlzLmdseXBocy5wdXNoKFthLDEuMiphLGEsZSwhMV0pO3RoaXMuZ2x5cGhzLnB1c2goWzAsMCwwLCJcbiIsITBdKX10aGlzLmdseXBocy5wb3AoKX1jb21wdXRlKGUpe2xldCB0PS0xLGE9MCxyPTAsaT0wLG49MCxzPTAsbz0hMSxjPSEwO2ZvcihsZXQgbD0wLGg9dGhpcy5nbHlwaHMubGVuZ3RoO2w8aDtsKyspe2NvbnN0W2gsdSxkLGYsZ109dGhpcy5nbHlwaHNbbF0scD0iICI9PT1mLG09Yz9kOnU7aWYoZyl7cj1NYXRoLm1heChyLG4pO249MDtpKz1zO3M9bTt0PS0xO2E9MDtjPSExfWVsc2UgaWYocClpZihuK2g+ZSl7cj1NYXRoLm1heChyLG4pO249MDtpKz1zO3M9bTt0PS0xO2E9MDtvPSEwO2M9ITF9ZWxzZXtzPU1hdGgubWF4KG0scyk7YT1uO24rPWg7dD1sfWVsc2UgaWYobitoPmUpe2krPXM7cz1tO2lmKC0xIT09dCl7bD10O3I9TWF0aC5tYXgocixhKTtuPTA7dD0tMTthPTB9ZWxzZXtyPU1hdGgubWF4KHIsbik7bj1ofW89ITA7Yz0hMX1lbHNle24rPWg7cz1NYXRoLm1heChtLHMpfX1yPU1hdGgubWF4KHIsbik7aSs9cyt0aGlzLmV4dHJhSGVpZ2h0O3JldHVybnt3aWR0aDoxLjAyKnIsaGVpZ2h0OmksaXNCcm9rZW46b319fWNvbnN0IHJvPS9eW14uW10rLyxpbz0vXlteXF1dKy8sbm89MCxzbz0xLG9vPTIsY289Myxsbz00LGhvPW5ldyBNYXAoW1siJGRhdGEiLChlLHQpPT5lLmRhdGFzZXRzP2UuZGF0YXNldHMuZGF0YTplXSxbIiRyZWNvcmQiLChlLHQpPT4oZS5kYXRhc2V0cz9lLmRhdGFzZXRzLmRhdGE6ZSlbY3NdKClbMF1dLFsiJHRlbXBsYXRlIiwoZSx0KT0+ZS50ZW1wbGF0ZV0sWyIkY29ubmVjdGlvblNldCIsKGUsdCk9PmUuY29ubmVjdGlvblNldF0sWyIkZm9ybSIsKGUsdCk9PmUuZm9ybV0sWyIkbGF5b3V0IiwoZSx0KT0+ZS5sYXlvdXRdLFsiJGhvc3QiLChlLHQpPT5lLmhvc3RdLFsiJGRhdGFXaW5kb3ciLChlLHQpPT5lLmRhdGFXaW5kb3ddLFsiJGV2ZW50IiwoZSx0KT0+ZS5ldmVudF0sWyIhIiwoZSx0KT0+ZS5kYXRhc2V0c10sWyIkeGZhIiwoZSx0KT0+ZV0sWyJ4ZmEiLChlLHQpPT5lXSxbIiQiLChlLHQpPT50XV0pLHVvPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHBhcnNlSW5kZXgoZSl7cmV0dXJuIioiPT09KGU9ZS50cmltKCkpPzEvMDpwYXJzZUludChlLDEwKXx8MH1mdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oZSx0LGE9ITApe2xldCByPWUubWF0Y2gocm8pO2lmKCFyKXJldHVybiBudWxsO2xldFtpXT1yO2NvbnN0IG49W3tuYW1lOmksY2FjaGVOYW1lOiIuIitpLGluZGV4OjAsanM6bnVsbCxmb3JtQ2FsYzpudWxsLG9wZXJhdG9yOm5vfV07bGV0IHM9aS5sZW5ndGg7Zm9yKDtzPGUubGVuZ3RoOyl7Y29uc3Qgbz1zO2lmKCJbIj09PWUuY2hhckF0KHMrKykpe3I9ZS5zbGljZShzKS5tYXRjaChpbyk7aWYoIXIpe3dhcm4oIlhGQSAtIEludmFsaWQgaW5kZXggaW4gU09NIGV4cHJlc3Npb24iKTtyZXR1cm4gbnVsbH1uLmF0KC0xKS5pbmRleD1wYXJzZUluZGV4KHJbMF0pO3MrPXJbMF0ubGVuZ3RoKzE7Y29udGludWV9bGV0IGM7c3dpdGNoKGUuY2hhckF0KHMpKXtjYXNlIi4iOmlmKCF0KXJldHVybiBudWxsO3MrKztjPXNvO2JyZWFrO2Nhc2UiIyI6cysrO2M9b287YnJlYWs7Y2FzZSJbIjppZihhKXt3YXJuKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEZvcm1DYWxjIHN1YmV4cHJlc3Npb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBmb3Igbm93LiIpO3JldHVybiBudWxsfWM9Y287YnJlYWs7Y2FzZSIoIjppZihhKXt3YXJuKCJYRkEgLSBTT00gZXhwcmVzc2lvbiBjb250YWlucyBhIEphdmFTY3JpcHQgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGZvciBub3cuIik7cmV0dXJuIG51bGx9Yz1sbzticmVhaztkZWZhdWx0OmM9bm99cj1lLnNsaWNlKHMpLm1hdGNoKHJvKTtpZighcilicmVhaztbaV09cjtzKz1pLmxlbmd0aDtuLnB1c2goe25hbWU6aSxjYWNoZU5hbWU6ZS5zbGljZShvLHMpLG9wZXJhdG9yOmMsaW5kZXg6MCxqczpudWxsLGZvcm1DYWxjOm51bGx9KX1yZXR1cm4gbn1mdW5jdGlvbiBzZWFyY2hOb2RlKGUsdCxhLHI9ITAsaT0hMCl7Y29uc3Qgbj1wYXJzZUV4cHJl
101c3Npb24oYSxyKTtpZighbilyZXR1cm4gbnVsbDtjb25zdCBzPWhvLmdldChuWzBdLm5hbWUpO2xldCBvLGM9MDtpZihzKXtvPSEwO2U9W3MoZSx0KV07Yz0xfWVsc2V7bz1udWxsPT09dDtlPVt0fHxlXX1mb3IobGV0IGE9bi5sZW5ndGg7YzxhO2MrKyl7Y29uc3R7bmFtZTphLGNhY2hlTmFtZTpyLG9wZXJhdG9yOnMsaW5kZXg6bH09bltjXSxoPVtdO2Zvcihjb25zdCB0IG9mIGUpe2lmKCF0LmlzWEZBT2JqZWN0KWNvbnRpbnVlO2xldCBlLG47aWYoaSl7bj11by5nZXQodCk7aWYoIW4pe249bmV3IE1hcDt1by5zZXQodCxuKX1lPW4uZ2V0KHIpfWlmKCFlKXtzd2l0Y2gocyl7Y2FzZSBubzplPXRbcnNdKGEsITEpO2JyZWFrO2Nhc2Ugc286ZT10W3JzXShhLCEwKTticmVhaztjYXNlIG9vOmU9dFthc10oYSk7ZT1lLmlzWEZBT2JqZWN0QXJyYXk/ZS5jaGlsZHJlbjpbZV19aSYmbi5zZXQocixlKX1lLmxlbmd0aD4wJiZoLnB1c2goZSl9aWYoMD09PWgubGVuZ3RoJiYhbyYmMD09PWMpe2NvbnN0IGE9dFtkc10oKTtpZighKHQ9YSkpcmV0dXJuIG51bGw7Yz0tMTtlPVt0XTtjb250aW51ZX1lPWlzRmluaXRlKGwpP2guZmlsdGVyKGU9Pmw8ZS5sZW5ndGgpLm1hcChlPT5lW2xdKTpoLmZsYXQoKX1yZXR1cm4gMD09PWUubGVuZ3RoP251bGw6ZX1mdW5jdGlvbiBjcmVhdGVEYXRhTm9kZShlLHQsYSl7Y29uc3Qgcj1wYXJzZUV4cHJlc3Npb24oYSk7aWYoIXIpcmV0dXJuIG51bGw7aWYoci5zb21lKGU9PmUub3BlcmF0b3I9PT1zbykpcmV0dXJuIG51bGw7Y29uc3QgaT1oby5nZXQoclswXS5uYW1lKTtsZXQgbj0wO2lmKGkpe2U9aShlLHQpO249MX1lbHNlIGU9dHx8ZTtmb3IobGV0IHQ9ci5sZW5ndGg7bjx0O24rKyl7Y29uc3R7bmFtZTp0LG9wZXJhdG9yOmEsaW5kZXg6aX09cltuXTtpZighaXNGaW5pdGUo
101aSkpe3Jbbl0uaW5kZXg9MDtyZXR1cm4gZS5jcmVhdGVOb2RlcyhyLnNsaWNlKG4pKX1sZXQgcztzd2l0Y2goYSl7Y2FzZSBubzpzPWVbcnNdKHQsITEpO2JyZWFrO2Nhc2Ugc286cz1lW3JzXSh0LCEwKTticmVhaztjYXNlIG9vOnM9ZVthc10odCk7cz1zLmlzWEZBT2JqZWN0QXJyYXk/cy5jaGlsZHJlbjpbc119aWYoMD09PXMubGVuZ3RoKXJldHVybiBlLmNyZWF0ZU5vZGVzKHIuc2xpY2UobikpO2lmKCEoaTxzLmxlbmd0aCkpe3Jbbl0uaW5kZXg9aS1zLmxlbmd0aDtyZXR1cm4gZS5jcmVhdGVOb2RlcyhyLnNsaWNlKG4pKX17Y29uc3QgdD1zW2ldO2lmKCF0LmlzWEZBT2JqZWN0KXt3YXJuKCJYRkEgLSBDYW5ub3QgY3JlYXRlIGEgbm9kZS4iKTtyZXR1cm4gbnVsbH1lPXR9fXJldHVybiBudWxsfWNvbnN0IGZvPVN5bWJvbCgpLGdvPVN5bWJvbCgpLHBvPVN5bWJvbCgpLG1vPVN5bWJvbCgiX2NoaWxkcmVuIiksYm89U3ltYm9sKCkseW89U3ltYm9sKCksd289U3ltYm9sKCkseG89U3ltYm9sKCksU289U3ltYm9sKCksQW89U3ltYm9sKCksa289U3ltYm9sKCksQ289U3ltYm9sKCksdm89U3ltYm9sKCksRm89U3ltYm9sKCJwYXJlbnQiKSxJbz1TeW1ib2woKSxPbz1TeW1ib2woKSxEbz1TeW1ib2woKTtsZXQgTW89MDtjb25zdCBSbz1lby5kYXRhc2V0cy5pZDtjbGFzcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0LGE9ITEpe3RoaXNbT3NdPWU7dGhpc1tEc109dDt0aGlzW2tvXT1hO3RoaXNbRm9dPW51bGw7dGhpc1ttb109W107dGhpc1tac109YCR7dH0ke01vKyt9YDt0aGlzW2dzXT1udWxsfWdldCBpc1hGQU9iamVjdCgpe3JldHVybiEwfWdldCBpc1hGQU9iamVjdEFycmF
1015KCl7cmV0dXJuITF9Y3JlYXRlTm9kZXMoZSl7bGV0IHQ9dGhpcyxhPW51bGw7Zm9yKGNvbnN0e25hbWU6cixpbmRleDppfW9mIGUpe2ZvcihsZXQgZT0wLG49aXNGaW5pdGUoaSk/aTowO2U8PW47ZSsrKXtjb25zdCBlPXRbT3NdPT09Um8/LTE6dFtPc107YT1uZXcgWG1sT2JqZWN0KGUscik7dFtqbl0oYSl9dD1hfXJldHVybiBhfVtSc10oZSl7aWYoIXRoaXNba29dfHwhdGhpc1tCc10oZSkpcmV0dXJuITE7Y29uc3QgdD1lW0RzXSxhPXRoaXNbdF07aWYoIShhIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXkpKXtudWxsIT09YSYmdGhpc1tVc10oYSk7dGhpc1t0XT1lO3RoaXNbam5dKGUpO3JldHVybiEwfWlmKGEucHVzaChlKSl7dGhpc1tqbl0oZSk7cmV0dXJuITB9bGV0IHI9IiI7dGhpcy5pZD9yPWAgKGlkOiAke3RoaXMuaWR9KWA6dGhpcy5uYW1lJiYocj1gIChuYW1lOiAke3RoaXMubmFtZX0gJHt0aGlzLmgudmFsdWV9KWApO3dhcm4oYFhGQSAtIG5vZGUgIiR7dGhpc1tEc119IiR7cn0gaGFzIGFscmVhZHkgZW5vdWdoICIke3R9IiFgKTtyZXR1cm4hMX1bQnNdKGUpe3JldHVybiB0aGlzLmhhc093blByb3BlcnR5KGVbRHNdKSYmZVtPc109PT10aGlzW09zXX1ba3NdKCl7cmV0dXJuITF9W19uXSgpe3JldHVybiExfVt3c10oKXtyZXR1cm4hMX1beHNdKCl7cmV0dXJuITF9W0xzXSgpe3RoaXMucGFyYSYmdGhpc1tmc10oKVtKbl0ucGFyYVN0YWNrLnBvcCgpfVtfc10oKXt0aGlzW2ZzXSgpW0puXS5wYXJhU3RhY2sucHVzaCh0aGlzLnBhcmEpfVtIc10oZSl7dGhpcy5pZCYmdGhpc1tPc109PT1lby50ZW1wbGF0ZS5pZCYmZS5zZXQodGhpcy5pZCx0aGlzKX1bZnNdKCl7cmV0dXJuIHRoaXNbZ3NdLnRlbXBsYXRlfVtDc10oKXtyZXR1cm4hMX1bdnNdKCl7cmV0dXJuITF9W2puXShlKXtlW0ZvXT10aGlzO3RoaXNbbW9dLnB1c2goZSk7IWVbZ3NdJiZ0aGlzW2dzXSYmKGVbZ3NdPXRoaXNbZ3NdKX1bVXNdKGUpe2NvbnN0IHQ9dGhpc1ttb10uaW5kZXhPZihlKTt0aGlzW21vXS5zcGxpY2UodCwxKX1bcHNdKCl7cmV0dXJuIHRoaXMuaGFzT3duUHJvcGVydHkoInZhbHVlIil9W3pzXShlKXt9W05zXShlKXt9W1luXSgpe31bcW5dKGUpe2RlbGV0ZSB0aGlzW2tvXTtpZih0aGlzW1duXSl7ZS5jbGVhbih0aGlzW1duXSk7ZGVsZXRlIHRoaXNbV25dfX1bYnNdKGUpe3JldHVybiB0aGlzW21vXS5pbmRleE9mKGUpfVt5c10oZSx0KXt0W0ZvXT10aGlzO3RoaXNbbW9dLnNwbGljZShlLDAsdCk7IXRbZ3NdJiZ0aGlzW2dzXSYmKHRbZ3NdPXRoaXNbZ3NdKX1bRnNdKCl7cmV0dXJuIXRoaXMubmFtZX1bVHNdKCl7cmV0dXJuIiJ9W0dzXSgpe3JldHVybiAwPT09dGhpc1ttb10ubGVuZ3RoP3RoaXNbR25dOnRoaXNbbW9dLm1hcChlPT5lW0dzXSgpKS5qb2luKCIiKX1nZXRbcG9dKCl7Y29uc3QgZT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7aWYoIWUuX2F0dHJpYnV0ZXMpe2NvbnN0IHQ9ZS5fYXR0cmlidXRlcz1uZXcgU2V0O2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZihudWxsPT09dGhpc1tlXXx8dGhpc1tlXWluc3RhbmNlb2YgWEZBT2JqZWN0fHx0aGlzW2VdaW5zdGFuY2VvZiBYRkFPYmplY3RBcnJheSlicmVhazt0LmFkZChlKX19cmV0dXJuIHNoYWRvdyh0aGlzLHBvLGUuX2F0dHJpYnV0ZXMpfVtBc10oZSl7bGV0IHQ9dGhpcztmb3IoO3Q7KXtpZih0PT09ZSlyZXR1cm4hMDt0PXRbZHNdKCl9cmV0dXJuITF9W2RzXSgpe3JldHVybiB0aGlzW0ZvXX1bdXNdKCl7cmV0dXJuIHRoaXNbZHNdKCl9W2NzXShlPW51bGwpe3JldHVybiBlP3RoaXNbZV06dGhpc1ttb119W0tuXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzW0duXSYmKGUuJGNvbnRlbnQ9dGhpc1tHbl0pO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCBhPXRoaXNbdF07bnVsbCE9PWEmJihhIGluc3RhbmNlb2YgWEZBT2JqZWN0P2VbdF09YVtLbl0oKTphIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXk/YS5pc0VtcHR5KCl8fChlW3RdPWEuZHVtcCgpKTplW3RdPWEpfXJldHVybiBlfVtZc10oKXtyZXR1cm4gbnVsbH1bS3NdKCl7cmV0dXJuIEhUTUxSZXN1bHQuRU1QVFl9Kltsc10oKXtmb3IoY29uc3QgZSBvZiB0aGlzW2NzXSgpKXlpZWxkIGV9Klt4b10oZSx0KXtmb3IoY29uc3QgYSBvZiB0aGlzW2xzXSgpKWlmKCFlfHx0PT09ZS5oYXMoYVtEc10pKXtjb25zdCBlPXRoaXNbdHNdKCksdD1hW0tzXShlKTt0LnN1Y2Nlc3N8fCh0aGlzW0puXS5mYWlsaW5nTm9kZT1hKTt5aWVsZCB0fX1bWm5dKCl7cmV0dXJuIG51bGx9W1VuXShlLHQpe3RoaXNbSm5dLmNoaWxkcmVuLnB1c2goZSl9W3RzXSgpe31bWG5dKHtmaWx0ZXI6ZT1udWxsLGluY2x1ZGU6dD0hMH0pe2lmKHRoaXNbSm5dLmdlbmVyYXRvcil7Y29uc3QgZT10aGlzW3RzXSgpLHQ9dGhpc1tKbl0uZmFpbGluZ05vZGVbS3NdKGUpO2lmKCF0LnN1Y2Nlc3MpcmV0dXJuIHQ7dC5odG1sJiZ0aGlzW1VuXSh0Lmh0bWwsdC5iYm94KTtkZWxldGUgdGhpc1tKbl0uZmFpbGluZ05vZGV9ZWxzZSB0aGlzW0puXS5nZW5lcmF0b3I9dGhpc1t4b10oZSx0KTtmb3IoOzspe2NvbnN0IGU9dGhpc1tKbl0uZ2VuZXJhdG9yLm5leHQoKTtpZihlLmRvbmUpYnJlYWs7Y29uc3QgdD1lLnZhbHVlO2lmKCF0LnN1Y2Nlc3MpcmV0dXJuIHQ7dC5odG1sJiZ0aGlzW1VuXSh0Lmh0bWwsdC5iYm94KX10aGlzW0puXS5nZW5lcmF0b3I9bnVsbDtyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1bV3NdKGUpe3RoaXNbT29dPW5ldyBTZXQoT2JqZWN0LmtleXMoZSkpfVtBb10oZSl7Y29uc3QgdD10aGlzW3BvXSxhPXRoaXNbT29dO3JldHVyblsuLi5lXS5maWx0ZXIoZT0+dC5oYXMoZSkmJiFhLmhhcyhlKSl9W1hzXShlLHQ9bmV3IFNldCl7Zm9yKGNvbnN0IGEgb2YgdGhpc1ttb10pYVtJb10oZSx0KX1bSW9dKGUsdCl7Y29uc3QgYT10aGlzW1NvXShlLHQpO2E/dGhpc1tmb10oYSxlLHQpOnRoaXNbWHNdKGUsdCl9W1NvXShlLHQpe2NvbnN0e3VzZTphLHVzZWhyZWY6cn09dGhpcztpZighYSYmIXIpcmV0dXJuIG51bGw7bGV0IGk9bnVsbCxuPW51bGwscz1udWxsLG89YTtpZihyKXtvPXI7ci5zdGFydHNXaXRoKCIjc29tKCIpJiZyLmVuZHNXaXRoKCIpIik/bj1yLnNsaWNlKDUsLTEpOnIuc3RhcnRzV2l0aCgiLiNzb20oIikmJnIuZW5kc1dpdGgoIikiKT9uPXIuc2xpY2UoNiwtMSk6ci5zdGFydHNXaXRoKCIjIik/cz1yLnNsaWNlKDEpOn
101Iuc3RhcnRzV2l0aCgiLiMiKSYmKHM9ci5zbGljZSgyKSl9ZWxzZSBhLnN0YXJ0c1dpdGgoIiMiKT9zPWEuc2xpY2UoMSk6bj1hO3RoaXMudXNlPXRoaXMudXNlaHJlZj0iIjtpZihzKWk9ZS5nZXQocyk7ZWxzZXtpPXNlYXJjaE5vZGUoZS5nZXQoanMpLHRoaXMsbiwhMCwhMSk7aSYmKGk9aVswXSl9aWYoIWkpe3dhcm4oYFhGQSAtIEludmFsaWQgcHJvdG90eXBlIHJlZmVyZW5jZTogJHtvfS5gKTtyZXR1cm4gbnVsbH1pZihpW0RzXSE9PXRoaXNbRHNdKXt3YXJuKGBYRkEgLSBJbmNvbXBhdGlibGUgcHJvdG90eXBlOiAke2lbRHNdfSAhPT0gJHt0aGlzW0RzXX0uYCk7cmV0dXJuIG51bGx9aWYodC5oYXMoaSkpe3dhcm4oIlhGQSAtIEN5Y2xlIGRldGVjdGVkIGluIHByb3RvdHlwZXMgdXNlLiIpO3JldHVybiBudWxsfXQuYWRkKGkpO2NvbnN0IGM9aVtTb10oZSx0KTtjJiZpW2ZvXShjLGUsdCk7aVtYc10oZSx0KTt0LmRlbGV0ZShpKTtyZXR1cm4gaX1bZm9dKGUsdCxhKXtpZihhLmhhcyhlKSl7d2FybigiWEZBIC0gQ3ljbGUgZGV0ZWN0ZWQgaW4gcHJvdG90eXBlcyB1c2UuIik7cmV0dXJufSF0aGlzW0duXSYmZVtHbl0mJih0aGlzW0duXT1lW0duXSk7bmV3IFNldChhKS5hZGQoZSk7Zm9yKGNvbnN0IHQgb2YgdGhpc1tBb10oZVtPb10pKXt0aGlzW3RdPWVbdF07dGhpc1tPb10mJnRoaXNbT29dLmFkZCh0KX1mb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYodGhpc1twb10uaGFzKHIpKWNvbnRpbnVlO2NvbnN0IGk9dGhpc1tyXSxuPWVbcl07aWYoaSBpbnN0YW5jZW9mIFhGQU9iamVjdEFycmF
1015KXtmb3IoY29uc3QgZSBvZiBpW21vXSllW0lvXSh0LGEpO2ZvcihsZXQgcj1pW21vXS5sZW5ndGgscz1uW21vXS5sZW5ndGg7cjxzO3IrKyl7Y29uc3Qgbj1lW21vXVtyXVt6bl0oKTtpZighaS5wdXNoKG4pKWJyZWFrO25bRm9dPXRoaXM7dGhpc1ttb10ucHVzaChuKTtuW0lvXSh0LGEpfX1lbHNlIGlmKG51bGw9PT1pKXtpZihudWxsIT09bil7Y29uc3QgZT1uW3puXSgpO2VbRm9dPXRoaXM7dGhpc1tyXT1lO3RoaXNbbW9dLnB1c2goZSk7ZVtJb10odCxhKX19ZWxzZXtpW1hzXSh0LGEpO24mJmlbZm9dKG4sdCxhKX19fXN0YXRpY1tib10oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZS5tYXAoZT0+WEZBT2JqZWN0W2JvXShlKSk6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZT9PYmplY3QuYXNzaWduKHt9LGUpOmV9W3puXSgpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykpO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGhpcykpdHJ5e2VbdF09dGhpc1t0XX1jYXRjaHtzaGFkb3coZSx0LHRoaXNbdF0pfWVbWnNdPWAke2VbRHNdfSR7TW8rK31gO2VbbW9dPVtdO2Zvcihjb25zdCB0IG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZih0aGlzW3BvXS5oYXModCkpe2VbdF09WEZBT2JqZWN0W2JvXSh0aGlzW3RdKTtjb250aW51ZX1jb25zdCBhPXRoaXNbdF07ZVt0XT1hIGluc3RhbmNlb2YgWEZBT2JqZWN0QXJyYXk/bmV3IFhGQU9iamVjdEFycmF5KGFbQ29dKTpudWxsfWZvcihjb25zdCB0IG9mIHRoaXNbbW9dKXtjb25zdCBhPXRbRHNdLHI9dFt6bl0oKTtlW21vXS5wdXNoKHIpO3JbRm9dPWU7bnVsbD09PWVbYV0/ZVthXT1yOmVbYV1bbW9dLnB1c2gocil9cmV0dXJuIGV9W2NzXShlPW51bGwpe3JldHVybiBlP3RoaXNbbW9dLmZpbHRlcih0PT50W0RzXT09PWUpOnRoaXNbbW9dfVthc10oZSl7cmV0dXJuIHRoaXNbZV19W3JzXShlLHQsYT0hMCl7cmV0dXJuIEFycmF5LmZyb20odGhpc1tpc10oZSx0LGEpKX0qW2lzXShlLHQsYT0hMCl7aWYoInBhcmVudCIhPT1lKXtmb3IoY29uc3QgYSBvZiB0aGlzW21vXSl7YVtEc109PT1lJiYoeWllbGQgYSk7YS5uYW1lPT09ZSYmKHlpZWxkIGEpOyh0fHxhW0ZzXSgpKSYmKHlpZWxkKmFbaXNdKGUsdCwhMSkpfWEmJnRoaXNbcG9dLmhhcyhlKSYmKHlpZWxkIG5ldyBYRkFBdHRyaWJ1dGUodGhpcyxlLHRoaXNbZV0pKX1lbHNlIHlpZWxkIHRoaXNbRm9dfX1jbGFzcyBYRkFPYmplY3RBcnJheXtjb25zdHJ1Y3RvcihlPTEvMCl7dGhpc1tDb109ZTt0aGlzW21vXT1bXX1nZXQgaXNYRkFPYmplY3QoKXtyZXR1cm4hMX1nZXQgaXNYRkFPYmplY3RBcnJheSgpe3JldHVybiEwfXB1c2goZSl7aWYodGhpc1ttb10ubGVuZ3RoPD10aGlzW0NvXSl7dGhpc1ttb10ucHVzaChlKTtyZXR1cm4hMH13YXJuKGBYRkEgLSBub2RlICIke2VbRHNdfSIgYWNjZXB0cyBubyBtb3JlIHRoYW4gJHt0aGlzW0NvXX0gY2hpbGRyZW5gKTtyZXR1cm4hMX1pc0VtcHR5KCl7cmV0dXJuIDA9PT10aGlzW21vXS5sZW5ndGh9ZHVtcCgpe3JldHVybiAxPT09dGhpc1ttb10ubGVuZ3RoP3RoaXNbbW9dWzBdW0tuXSgpOnRoaXNbbW9dLm1hcChlPT5lW0tuXSgpKX1bem5dKCl7Y29uc3QgZT1uZXcgWEZBT2JqZWN0QXJyYXkodGhpc1tDb10pO2VbbW9dPXRoaXNbbW9dLm1hcChlPT5lW3puXSgpKTtyZXR1cm4gZX1nZXQgY2hpbGRyZW4oKXtyZXR1cm4gdGhpc1ttb119Y2xlYXIoKXt0aGlzW21vXS5sZW5ndGg9MH19Y2xhc3MgWEZBQXR0cmlidXRle2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzW0ZvXT1lO3RoaXNbRHNdPXQ7dGhpc1tHbl09YTt0aGlzWyRuXT0hMTt0aGlzW1pzXT0iYXR0cmlidXRlIitNbysrfVtkc10oKXtyZXR1cm4gdGhpc1tGb119W1NzXSgpe3JldHVybiEwfVtuc10oKXtyZXR1cm4gdGhpc1tHbl0udHJpbSgpfVt6c10oZSl7ZT1lLnZhbHVlfHwiIjt0aGlzW0duXT1lLnRvU3RyaW5nKCl9W0dzXSgpe3JldHVybiB0aGlzW0duXX1bQXNdKGUpe3JldHVybiB0aGlzW0ZvXT09PWV8fHRoaXNbRm9dW0FzXShlKX19Y2xhc3MgWG1sT2JqZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUsdCxhPXt9KXtzdXBlcihlLHQpO3RoaXNbR25dPSIiO3RoaXNbeW9dPW51bGw7aWYoIiN0ZXh0IiE9PXQpe2NvbnN0IGU9bmV3IE1hcDt0aGlzW2dvXT1lO2Zvcihjb25zdFt0LHJdb2YgT2JqZWN0LmVud
101HJpZXMoYSkpZS5zZXQodCxuZXcgWEZBQXR0cmlidXRlKHRoaXMsdCxyKSk7aWYoYS5oYXNPd25Qcm9wZXJ0eShNcykpe2NvbnN0IGU9YVtNc10ueGZhLmRhdGFOb2RlO3ZvaWQgMCE9PWUmJigiZGF0YUdyb3VwIj09PWU/dGhpc1t5b109ITE6ImRhdGFWYWx1ZSI9PT1lJiYodGhpc1t5b109ITApKX19dGhpc1skbl09ITF9W0pzXShlKXtjb25zdCB0PXRoaXNbRHNdO2lmKCIjdGV4dCI9PT10KXtlLnB1c2goZW5jb2RlVG9YbWxTdHJpbmcodGhpc1tHbl0pKTtyZXR1cm59Y29uc3QgYT11dGY4U3RyaW5nVG9TdHJpbmcodCkscj10aGlzW09zXT09PVJvPyJ4ZmE6IjoiIjtlLnB1c2goYDwke3J9JHthfWApO2Zvcihjb25zdFt0LGFdb2YgdGhpc1tnb10uZW50cmllcygpKXtjb25zdCByPXV0ZjhTdHJpbmdUb1N0cmluZyh0KTtlLnB1c2goYCAke3J9PSIke2VuY29kZVRvWG1sU3RyaW5nKGFbR25dKX0iYCl9bnVsbCE9PXRoaXNbeW9dJiYodGhpc1t5b10/ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhVmFsdWUiJyk6ZS5wdXNoKCcgeGZhOmRhdGFOb2RlPSJkYXRhR3JvdXAiJykpO2lmKHRoaXNbR25dfHwwIT09dGhpc1ttb10ubGVuZ3RoKXtlLnB1c2goIj4iKTtpZih0aGlzW0duXSkic3RyaW5nIj09dHlwZW9mIHRoaXNbR25dP2UucHVzaChlbmNvZGVUb1htbFN0cmluZyh0aGlzW0duXSkpOnRoaXNbR25dW0pzXShlKTtlbHNlIGZvcihjb25zdCB0IG9mIHRoaXNbbW9dKXRbSnNdKGUpO2UucHVzaChgPC8ke3J9JHthfT5gKX1lbHNlIGUucHVzaCgiLz4iKX1bUnNdKGUpe2lmKHRoaXNbR25dKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tPc10sIiN0ZXh0Iik7dGhpc1tqbl0oZSk7ZVtHbl09dGhpc1tHbl07dGhpc1tHbl09IiJ9dGhpc1tqbl0oZSk7cmV0dXJuITB9W05zXShlKXt0aGlzW0duXSs9ZX1bWW5dKCl7aWYodGhpc1tHbl0mJnRoaXNbbW9dLmxlbmd0aD4wKXtjb25zdCBlPW5ldyBYbWxPYmplY3QodGhpc1tPc10sIiN0ZXh0Iik7dGhpc1tqbl0oZSk7ZVtHbl09dGhpc1tHbl07ZGVsZXRlIHRoaXNbR25dfX1bS3NdKCl7cmV0dXJuIiN0ZXh0Ij09PXRoaXNbRHNdP0hUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiI3RleHQiLHZhbHVlOnRoaXNbR25dfSk6SFRNTFJlc3VsdC5FTVBUWX1bY3NdKGU9bnVsbCl7cmV0dXJuIGU/dGhpc1ttb10uZmlsdGVyKHQ9PnRbRHNdPT09ZSk6dGhpc1ttb119W2VzXSgpe3JldHVybiB0aGlzW2dvXX1bYXNdKGUpe2NvbnN0IHQ9dGhpc1tnb10uZ2V0KGUpO3JldHVybiB2b2lkIDAhPT10P3Q6dGhpc1tjc10oZSl9Kltpc10oZSx0KXtjb25zdCBhPXRoaXNbZ29dLmdldChlKTthJiYoeWllbGQgYSk7Zm9yKGNvbnN0IGEgb2YgdGhpc1ttb10pe2FbRHNdPT09ZSYmKHlpZWxkIGEpO3QmJih5aWVsZCphW2lzXShlLHQpKX19KltRbl0oZSx0KXtjb25zdCBhPXRoaXNbZ29dLmdldChlKTshYXx8dCYmYVskbl18fCh5aWVsZCBhKTtmb3IoY29uc3QgYSBvZiB0aGlzW21vXSl5aWVsZCphW1FuXShlLHQpfSpbb3NdKGUsdCxhKXtmb3IoY29uc3QgciBvZiB0aGlzW21vXSl7cltEc10hPT1lfHxhJiZyWyRuXXx8KHlpZWxkIHIpO3QmJih5aWVsZCpyW29zXShlLHQsYSkpfX1bU3NdKCl7cmV0dXJuIG51bGw9PT10aGlzW3lvXT8wPT09dGhpc1ttb10ubGVuZ3RofHx0aGlzW21vXVswXVtPc109PT1lby54aHRtbC5pZDp0aGlzW3lvXX1bbnNdKCl7cmV0dXJuIG51bGw9PT10aGlzW3lvXT8wPT09dGhpc1ttb10ubGVuZ3RoP3RoaXNbR25dLnRyaW0oKTp0aGlzW21vXVswXVtPc109PT1lby54aHRtbC5pZD90aGlzW21vXVswXVtHc10oKS50cmltKCk6bnVsbDp0aGlzW0duXS50cmltKCl9W3pzXShlKXtlPWUudmFsdWV8fCIiO3RoaXNbR25dPWUudG9TdHJpbmcoKX1bS25dKGU9ITEpe2NvbnN0IHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtlJiYodC4kbnM9dGhpc1tPc10pO3RoaXNbR25dJiYodC4kY29udGVudD10aGlzW0duXSk7dC4kbmFtZT10aGlzW0RzXTt0LmNoaWxkcmVuPVtdO2Zvcihjb25zdCBhIG9mIHRoaXNbbW9dKXQuY2hpbGRyZW4ucHVzaChhW0tuXShlKSk7dC5hdHRyaWJ1dGVzPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0W2UsYV1vZiB0aGlzW2dvXSl0LmF0dHJpYnV0ZXNbZV09YVtHbl07cmV0dXJuIHR9fWNsYXNzIENvbnRlbnRPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQpO3RoaXNbR25dPSIifVtOc10oZSl7dGhpc1tHbl0rPWV9W1luXSgpe319Y2xhc3MgT3B0aW9uT2JqZWN0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIoZSx0KTt0aGlzW3ZvXT1hfVtZbl0oKXt0aGlzW0duXT1nZXRLZXl3b3JkKHtkYXRhOnRoaXNbR25dLGRlZmF1bHRWYWx1ZTp0aGlzW3ZvXVswXSx2YWxpZGF0ZTplPT50aGlzW3ZvXS5pbmNsdWRlcyhlKX0pfVtxbl0oZSl7c3VwZXJbcW5dKGUpO2RlbGV0ZSB0aGlzW3ZvXX19Y2xhc3MgU3RyaW5nT2JqZWN0IGV4dGVuZHMgQ29udGVudE9iamVjdHtbWW5dKCl7dGhpc1tHbl09dGhpc1tHbl0udHJpbSgpfX1jbGFzcyBJbnRlZ2VyT2JqZWN0IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlLHQsYSxyKXtzdXBlcihlLHQpO3RoaXNbd29dPWE7dGhpc1tEb109cn1bWW5dKCl7dGhpc1tHbl09Z2V0SW50ZWdlcih7ZGF0YTp0aGlzW0duXSxkZWZhdWx0VmFsdWU6dGhpc1t3b10sdmFsaWRhdGU6dGhpc1tEb119KX1bcW5dKGUpe3N1cGVyW3FuXShlKTtkZWxldGUgdGhpc1t3b107ZGVsZXRlIHRoaXNbRG9dfX1jbGFzcyBPcHRpb24wMSBleHRlbmRzIEludGVnZXJPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihlLHQsMCxlPT4xPT09ZSl9fWNsYXNzIE9wdGlvbjEwIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsdCwxLGU9PjA9PT1lKX19ZnVuY3Rpb24gbWVhc3VyZVRvU3RyaW5nKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8iMHB4IjpOdW1iZXIuaXNJbnRlZ2VyKGUpP2Ake2V9cHhgOmAke2UudG9GaXhlZCgyKX1weGB9Y29uc3QgQm89e2FuY2hvclR5cGUoZSx0KXtjb25zdCBhPWVbdXNdKCk7aWYoYSYmKCFhLmxheW91dHx8InBvc2l0aW9uIj09PWEubGF5b3V0KSl7InRyYW5zZm9ybSJpbiB0fHwodC50cmFuc2Zvcm09IiIpO3N3aXRjaC
101hlLmFuY2hvclR5cGUpe2Nhc2UiYm90dG9tQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLCAtMTAwJSkiO2JyZWFrO2Nhc2UiYm90dG9tTGVmdCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoMCwtMTAwJSkiO2JyZWFrO2Nhc2UiYm90dG9tUmlnaHQiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC0xMDAlLC0xMDAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVDZW50ZXIiOnQudHJhbnNmb3JtKz0idHJhbnNsYXRlKC01MCUsLTUwJSkiO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoMCwtNTAlKSI7YnJlYWs7Y2FzZSJtaWRkbGVSaWdodCI6dC50cmFuc2Zvcm0rPSJ0cmFuc2xhdGUoLTEwMCUsLTUwJSkiO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtNTAlLDApIjticmVhaztjYXNlInRvcFJpZ2h0Ijp0LnRyYW5zZm9ybSs9InRyYW5zbGF0ZSgtMTAwJSwwKSJ9fX0sZGltZW5zaW9ucyhlLHQpe2NvbnN0IGE9ZVt1c10oKTtsZXQgcj1lLnc7Y29uc3QgaT1lLmg7aWYoYS5sYXlvdXQ/LmluY2x1ZGVzKCJyb3ciKSl7Y29uc3QgdD1hW0puXSxpPWUuY29sU3BhbjtsZXQgbjtpZigtMT09PWkpe249TWF0aC5zdW1QcmVjaXNlKHQuY29sdW1uV2lkdGhzLnNsaWNlKHQuY3VycmVudENvbHVtbikpO3QuY3VycmVudENvbHVtbj0wfWVsc2V7bj1NYXRoLnN1bVByZWNpc2UodC5jb2x1bW5XaWR0aHMuc2xpY2UodC5jdXJyZW50Q29sdW1uLHQuY3VycmVudENvbHVtbitpKSk7dC5jdXJyZW50Q29sdW1uPSh0LmN1cnJlbnRDb2x1bW4rZS5jb2xTcGFuKSV0LmNvbHVtbldpZHRocy5sZW5ndGh9aXNOYU4obil8fChyPWUudz1uKX10LndpZHRoPSIiIT09cj9tZWFzdXJlVG9TdHJpbmcocik6ImF1dG8iO3QuaGVpZ2h0PSIiIT09aT9tZWFzdXJlVG9TdHJpbmcoaSk6ImF1dG8ifSxwb3NpdGlvbihlLHQpe2NvbnN0IGE9ZVt1c10oKTtpZighYT8ubGF5b3V0fHwicG9zaXRpb24iPT09YS5sYXlvdXQpe3QucG9zaXRpb249ImFic29sdXRlIjt0LmxlZnQ9bWVhc3VyZVRvU3RyaW5nKGUueCk7dC50b3A9bWVhc3VyZVRvU3RyaW5nKGUueSl9fSxyb3RhdGUoZSx0KXtpZihlLnJvdGF0ZSl7InRyYW5zZm9ybSJpbiB0fHwodC50cmFuc2Zvcm09IiIpO3QudHJhbnNmb3JtKz1gcm90YXRlKC0ke2Uucm90YXRlfWRlZylgO3QudHJhbnNmb3JtT3JpZ2luPSJ0b3AgbGVmdCJ9fSxwcmVzZW5jZShlLHQpe3N3aXRjaChlLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6dC52aXNpYmlsaXR5PSJoaWRkZW4iO2JyZWFrO2Nhc2UiaGlkZGVuIjpjYXNlImluYWN0aXZlIjp0LmRpc3BsYXk9Im5vbmUifX0saEFsaWduKGUsdCl7aWYoInBhcmEiPT09ZVtEc10pc3dpdGNoKGUuaEFsaWduKXtjYXNlImp1c3RpZnlBbGwiOnQudGV4dEFsaWduPSJqdXN0aWZ5LWFsbCI7YnJlYWs7Y2FzZSJyYWRpeCI6dC50ZXh0QWxpZ249ImxlZnQiO2JyZWFrO2RlZmF1bHQ6dC50ZXh0QWxpZ249ZS5oQWxpZ259ZWxzZSBzd2l0Y2goZS5oQWxpZ24pe2Nhc2UibGVmdCI6dC5hbGlnblNlbGY9InN0YXJ0IjticmVhaztjYXNlImNlbnRlciI6dC5hbGlnblNlbGY9ImNlbnRlciI7YnJlYWs7Y2FzZSJyaWdodCI6dC5hbGlnblNlbGY9ImVuZCJ9fSxtYXJnaW4oZSx0KXtlLm1hcmdpbiYmKHQubWFyZ2luPWUubWFyZ2luW1lzXSgpLm1hcmdpbil9fTtmdW5jdGlvbiBzZXRNaW5NYXhEaW1lbnNpb25zKGUsdCl7aWYoInBvc2l0aW9uIj09PWVbdXNdKCkubGF5b3V0KXtlLm1pblc+MCYmKHQubWluV2lkdGg9bWVhc3VyZVRvU3RyaW5nKGUubWluVykpO2UubWF4Vz4wJiYodC5tYXhXaWR0aD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhXKSk7ZS5taW5IPjAmJih0Lm1pbkhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5taW5IKSk7ZS5tYXhIPjAmJih0Lm1heEhlaWdodD1tZWFzdXJlVG9TdHJpbmcoZS5tYXhIKSl9fWZ1bmN0aW9uIGxheW91dFRleHQoZSx0LGEscixpLG4pe2NvbnN0IHM9bmV3IFRleHRNZWFzdXJlKHQsYSxyLGkpOyJzdHJpbmciPT10eXBlb2YgZT9zLmFkZFN0cmluZyhlKTplW0VzXShzKTtyZXR1cm4gcy5jb21wdXRlKG4pfWZ1bmN0aW9uIGxheW91dE5vZGUoZSx0KXtsZXQgYT1udWxsLHI9bnVsbCxpPSExO2lmKCghZS53fHwhZS5oKSYmZS52YWx1ZSl7bGV0IG49MCxzPTA7aWYoZS5tYXJnaW4pe249ZS5tYXJnaW4ubGVmdEluc2V0K2UubWFyZ2luLnJpZ2h0SW5zZXQ7cz1lLm1hcmdpbi50b3BJbnNldCtlLm1hcmdpbi5ib3R0b21JbnNldH1sZXQgbz1udWxsLGM9bnVsbDtpZihlLnBhcmEpe2M9T2JqZWN0LmNyZWF0ZShudWxsKTtvPSIiPT09ZS5wYXJhLmxpbmVIZWlnaHQ/bnVsbDplLnBhcmEubGluZUhlaWdodDtjLnRvcD0iIj09PWUucGFyYS5zcGFjZUFib3ZlPzA6ZS5wYXJhLnNwYWNlQWJvdmU7Yy5ib3R0b209IiI9PT1lLnBhcmEuc3BhY2VCZWxvdz8wOmUucGFyYS5zcGFjZUJlbG93O2MubGVmdD0iIj09PWUucGFyYS5tYXJnaW5MZWZ0PzA6ZS5wYXJhLm1hcmdpbkxlZnQ7Yy5yaWdodD0iIj09PWUucGFyYS5tYXJnaW5SaWdodD8wOmUucGFyYS5tYXJnaW5SaWdodH1sZXQgbD1lLmZvbnQ7aWYoIWwpe2NvbnN0IHQ9ZVtmc10oKTtsZXQgYT1lW2RzXSgpO2Zvcig7YSYmYSE9PXQ7KXtpZihhLmZvbnQpe2w9YS5mb250O2JyZWFrfWE9YVtkc10oKX19Y29uc3QgaD0oZS53fHx0LndpZHRoKS1uLHU9ZVtnc10uZm9udEZpbmRlcjtpZihlLnZhbHVlLmV4RGF0YSYmZS52YWx1ZS5leERhdGFbR25dJiYidGV4dC9odG1sIj09PWUudmFsdWUuZXhEYXRhLmNvbnRlbnRUeXBlKXtjb25zdCB0PWxheW91dFRleHQoZS52YWx1ZS5leERhdGFbR25dLGwsYyxvLHUsaCk7cj10LndpZHRoO2E9dC5oZWlnaHQ7aT10LmlzQnJva2VufWVsc2V7Y29uc3QgdD1lLnZhbHVlW0dzXSgpO2lmKHQpe2NvbnN0IGU9bGF5b3V0VGV4dCh0LGwsYyxvLHUsaCk7cj1lLndpZHRoO2E9ZS5oZWlnaHQ7aT1lLmlzQnJva2VufX1udWxsPT09cnx8ZS53fHwocis9bik7bnVsbD09PWF8fGUuaHx8KGErPXMpfXJldHVybnt3OnIsaDphLGlzQnJva2VuOml9fWZ1bmN0aW9uIGNvbXB1dGVCYm94KGUsdCxhKXtsZXQgcjtpZigiIiE9PWUudyYmIiIhPT1lLmgpcj1bZS54LGUueSxlLncsZS5oXTtlbHNle2lmKCFhKXJldHVybi
101BudWxsO2xldCBpPWUudztpZigiIj09PWkpe2lmKDA9PT1lLm1heFcpe2NvbnN0IHQ9ZVt1c10oKTtpPSJwb3NpdGlvbiI9PT10LmxheW91dCYmIiIhPT10Lnc/MDplLm1pbld9ZWxzZSBpPU1hdGgubWluKGUubWF4VyxhLndpZHRoKTt0LmF0dHJpYnV0ZXMuc3R5bGUud2lkdGg9bWVhc3VyZVRvU3RyaW5nKGkpfWxldCBuPWUuaDtpZigiIj09PW4pe2lmKDA9PT1lLm1heEgpe2NvbnN0IHQ9ZVt1c10oKTtuPSJwb3NpdGlvbiI9PT10LmxheW91dCYmIiIhPT10Lmg/MDplLm1pbkh9ZWxzZSBuPU1hdGgubWluKGUubWF4SCxhLmhlaWdodCk7dC5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcobil9cj1bZS54LGUueSxpLG5dfXJldHVybiByfWZ1bmN0aW9uIGZpeERpbWVuc2lvbnMoZSl7Y29uc3QgdD1lW3VzXSgpO2lmKHQubGF5b3V0Py5pbmNsdWRlcygicm93Iikpe2NvbnN0IGE9dFtKbl0scj1lLmNvbFNwYW47bGV0IGk7aT0tMT09PXI/TWF0aC5zdW1QcmVjaXNlKGEuY29sdW1uV2lkdGhzLnNsaWNlKGEuY3VycmVudENvbHVtbikpOk1hdGguc3VtUHJlY2lzZShhLmNvbHVtbldpZHRocy5zbGljZShhLmN1cnJlbnRDb2x1bW4sYS5jdXJyZW50Q29sdW1uK3IpKTtpc05hTihpKXx8KGUudz1pKX10LmxheW91dCYmInBvc2l0aW9uIiE9PXQubGF5b3V0JiYoZS54PWUueT0wKTsidGFibGUiPT09ZS5sYXlvdXQmJiIiPT09ZS53JiZBcnJheS5pc0FycmF5KGUuY29sdW1uV2lkdGhzKSYmKGUudz1NYXRoLnN1bVByZWNpc2UoZS5jb2x1bW5XaWR0aHMpKX1mdW5jdGlvbiBsYXlvdXRDbGFzcyhlKXtzd2l0Y2goZS5sYXlvdXQpe2Nhc2UicG9zaXRpb24iOmRlZmF1bHQ6cmV0dXJuInhmYVBvc2l0aW9uIjtjYXNlImxyLXRiIjpyZXR1cm4ieGZhTHJUYiI7Y2FzZSJybC1yb3ciOnJldHVybiJ4ZmFSbFJvdyI7Y2FzZSJybC10YiI6cmV0dXJuInhmYVJsVGIiO2Nhc2Uicm93IjpyZXR1cm4ieGZhUm93IjtjYXNlInRhYmxlIjpyZXR1cm4ieGZhVGFibGUiO2Nhc2UidGIiOnJldHVybiJ4ZmFUYiJ9fWZ1bmN0aW9uIHRvU3R5bGUoZSwuLi50KXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGNvbnN0IHIgb2YgdCl7Y29uc3QgdD1lW3JdO2lmKG51bGwhPT10KWlmKEJvLmhhc093blByb3BlcnR5KHIpKUJvW3JdKGUsYSk7ZWxzZSBpZih0IGluc3RhbmNlb2YgWEZBT2JqZWN0KXtjb25zdCBlPXRbWXNdKCk7ZT9PYmplY3QuYXNzaWduKGEsZSk6d2FybihgKERFQlVHKSAtIFhGQSAtIHN0eWxlIGZvciAke3J9IG5vdCBpbXBsZW1lbnRlZCB5ZXRgKX19cmV0dXJuIGF9ZnVuY3Rpb24gY3JlYXRlV3JhcHBlcihlLHQpe2NvbnN0e2F0dHJpYnV0ZXM6YX09dCx7c3R5bGU6cn09YSxpPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhV3JhcHBlciJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOltdfTthLmNsYXNzLnB1c2goInhmYVdyYXBwZWQiKTtpZihlLmJvcmRlcil7Y29uc3R7d2lkdGhzOmEsaW5zZXRzOm59PWUuYm9yZGVyW0puXTtsZXQgcyxvLGM9blswXSxsPW5bM107Y29uc3QgaD1uWzBdK25bMl0sdT1uWzFdK25bM107c3dpdGNoKGUuYm9yZGVyLmhhbmQpe2Nhc2UiZXZlbiI6Yy09YVswXS8yO2wtPWFbM10vMjtzPWBjYWxjKDEwMCUgKyAkeyhhWzFdK2FbM10pLzItdX1weClgO289YGNhbGMoMTAwJSArICR7KGFbMF0rYVsyXSkvMi1ofXB4KWA7YnJlYWs7Y2FzZSJsZWZ0IjpjLT1hWzBdO2wtPWFbM107cz1gY2FsYygxMDAlICsgJHthWzFdK2FbM10tdX1weClgO289YGNhbGMoMTAwJSArICR7YVswXSthWzJdLWh9cHgpYDticmVhaztjYXNlInJpZ2h0IjpzPXU/YGNhbGMoMTAwJSAtICR7dX1weClgOiIxMDAlIjtvPWg/YGNhbGMoMTAwJSAtICR7aH1weClgOiIxMDAlIn1jb25zdCBkPVsieGZhQm9yZGVyIl07aXNQcmludE9ubHkoZS5ib3JkZXIpJiZkLnB1c2goInhmYVByaW50T25seSIpO2NvbnN0IGY9e25hbWU6ImRpdiIsYXR0cmlidXRlczp7Y2xhc3M6ZCxzdHlsZTp7dG9wOmAke2N9cHhgLGxlZnQ6YCR7bH1weGAsd2lkdGg6cyxoZWlnaHQ6b319LGNoaWxkcmVuOltdfTtmb3IoY29uc3QgZSBvZlsiYm9yZGVyIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJDb2xvciIsImJvcmRlclJhZGl1cyIsImJvcmRlclN0eWxlIl0paWYodm9pZCAwIT09cltlXSl7Zi5hdHRyaWJ1dGVzLnN0eWxlW2VdPXJbZV07ZGVsZXRlIHJbZV19aS5jaGlsZHJlbi5wdXNoKGYsdCl9ZWxzZSBpLmNoaWxkcmVuLnB1c2godCk7Zm9yKGNvbnN0IGUgb2ZbImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kQ2xpcCIsInRvcCIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwibWF4V2lkdGgiLCJtYXhIZWlnaHQiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm1PcmlnaW4iLCJ2aXNpYmlsaXR5Il0paWYodm9pZCAwIT09cltlXSl7aS5hdHRyaWJ1dGVzLnN0eWxlW2VdPXJbZV07ZGVsZXRlIHJbZV19aS5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI9PT1yLnBvc2l0aW9uPyJhYnNvbHV0ZSI6InJlbGF0aXZlIjtkZWxldGUgci5wb3NpdGlvbjtpZihyLmFsaWduU2VsZil7aS5hdHRyaWJ1dGVzLnN0eWxlLmFsaWduU2VsZj1yLmFsaWduU2VsZjtkZWxldGUgci5hbGlnblNlbGZ9cmV0dXJuIGl9ZnVuY3Rpb24gZml4VGV4dEluZGVudChlKXtjb25zdCB0PWdldE1lYXN1cmVtZW50KGUudGV4dEluZGVudCwiMHB4Iik7aWYodD49MClyZXR1cm47Y29uc3QgYT0icGFkZGluZyIrKCJsZWZ0Ij09PSgicmlnaHQiPT09ZS50ZXh0QWxpZ24/InJpZ2h0IjoibGVmdCIpPyJMZWZ0IjoiUmlnaHQiKSxyPWdldE1lYXN1cmVtZW50KGVbYV0sIjBweCIpO2VbYV09ci10KyJweCJ9ZnVuY3Rpb24gc2V0QWNjZXNzKGUsdCl7c3dpdGNoKGUuYWNjZXNzKXtjYXNlIm5vbkludGVyYWN0aXZlIjp0LnB1c2goInhmYU5vbkludGVyYWN0aXZlIik7YnJlYWs7Y2FzZSJyZWFkT25seSI6dC5wdXNoKCJ4ZmFSZWFkT25seSIpO2JyZWFrO2Nhc2UicHJvdGVjdGVkIjp0LnB1c2goInhmYURpc2FibGVkIil9fWZ1bmN0aW9uIGlzUHJpbnRPbmx5KGUpe3JldHVybiBlLnJlbGV2YW50Lmxlbmd0aD4wJiYhZS5yZWxldmFudFswXS5leGNsdWRlZCYmInByaW50Ij09PWUucmVsZXZhbnRbMF0udmlld25hbWV9ZnVuY3Rpb24gZ2V0Q3VycmVudFBhcmEoZSl7Y29uc3QgdD1lW2ZzXSgpW0puXS5wYXJhU3RhY2s7cmV0dXJuIHQubGVuZ3RoP3QuYXQoLTEpOm51bGx9ZnVuY3Rpb24gc2V0UGFyYShlLHQsYSl7aWYoYS5hdHRyaWJ1dGVzLmNsYXNzPy5pbmNsdWRlcygieGZhUmljaCIpKXtpZih0KXsiIj09PWUuaCYmKHQuaGVpZ2h0PSJhdXRvIik7IiI9PT1lLncmJih0LndpZHR
101oPSJhdXRvIil9Y29uc3Qgcj1nZXRDdXJyZW50UGFyYShlKTtpZihyKXtjb25zdCBlPWEuYXR0cmlidXRlcy5zdHlsZTtlLmRpc3BsYXk9ImZsZXgiO2UuZmxleERpcmVjdGlvbj0iY29sdW1uIjtzd2l0Y2goci52QWxpZ24pe2Nhc2UidG9wIjplLmp1c3RpZnlDb250ZW50PSJzdGFydCI7YnJlYWs7Y2FzZSJib3R0b20iOmUuanVzdGlmeUNvbnRlbnQ9ImVuZCI7YnJlYWs7Y2FzZSJtaWRkbGUiOmUuanVzdGlmeUNvbnRlbnQ9ImNlbnRlciJ9Y29uc3QgdD1yW1lzXSgpO2Zvcihjb25zdFthLHJdb2YgT2JqZWN0LmVudHJpZXModCkpYSBpbiBlfHwoZVthXT1yKX19fWZ1bmN0aW9uIHNldEZvbnRGYW1pbHkoZSx0LGEscil7aWYoIWEpe2RlbGV0ZSByLmZvbnRGYW1pbHk7cmV0dXJufWNvbnN0IGk9c3RyaXBRdW90ZXMoZS50eXBlZmFjZSk7ci5mb250RmFtaWx5PWAiJHtpfSJgO2NvbnN0IG49YS5maW5kKGkpO2lmKG4pe2NvbnN0e2ZvbnRGYW1pbHk6YX09bi5yZWd1bGFyLmNzc0ZvbnRJbmZvO2EhPT1pJiYoci5mb250RmFtaWx5PWAiJHthfSJgKTtjb25zdCBzPWdldEN1cnJlbnRQYXJhKHQpO2lmKHMmJiIiIT09cy5saW5lSGVpZ2h0KXJldHVybjtpZihyLmxpbmVIZWlnaHQpcmV0dXJuO2NvbnN0IG89c2VsZWN0Rm9udChlLG4pO28mJihyLmxpbmVIZWlnaHQ9TWF0aC5tYXgoMS4yLG8ubGluZUhlaWdodCkpfX1mdW5jdGlvbiBmaXhVUkwoZSl7Y29uc3QgdD1jcmVhdGVWYWxpZEFic29sdXRlVXJsKGUsbnVsbCx7YWRkRGVmYXVsdFByb3RvY29sOiEwLHRyeUNvbnZlcnRFbmNvZGluZzohMH0pO3JldHVybiB0P3QuaHJlZjpudWxsfWZ1bmN0aW9uIGNyZWF0ZUxpbmUoZSx0KXtyZXR1cm57bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbImxyLXRiIj09PWUubGF5b3V0PyJ4ZmFMciI6InhmYVJsIl19LGNoaWxkcmVuOnR9fWZ1bmN0aW9uIGZsdXNoSFRNTChlKXtpZighZVtKbl0pcmV0dXJuIG51bGw7Y29uc3QgdD17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmVbSm5dLmF0dHJpYnV0ZXMsY2hpbGRyZW46ZVtKbl0uY2hpbGRyZW59O2lmKGVbSm5dLmZhaWxpbmdOb2RlKXtjb25zdCBhPWVbSm5dLmZhaWxpbmdOb2RlW1puXSgpO2EmJihlLmxheW91dC5lbmRzV2l0aCgiLXRiIik/dC5jaGlsZHJlbi5wdXNoKGNyZWF0ZUxpbmUoZSxbYV0pKTp0LmNoaWxkcmVuLnB1c2goYSkpfXJldHVybiAwPT09dC5jaGlsZHJlbi5sZW5ndGg/bnVsbDp0fWZ1bmN0aW9uIGFkZEhUTUwoZSx0LGEpe2NvbnN0IHI9ZVtKbl0saT1yLmF2YWlsYWJsZVNwYWNlLFtuLHMsbyxjXT1hO3N3aXRjaC
101hlLmxheW91dCl7Y2FzZSJwb3NpdGlvbiI6ci53aWR0aD1NYXRoLm1heChyLndpZHRoLG4rbyk7ci5oZWlnaHQ9TWF0aC5tYXgoci5oZWlnaHQscytjKTtyLmNoaWxkcmVuLnB1c2godCk7YnJlYWs7Y2FzZSJsci10YiI6Y2FzZSJybC10YiI6aWYoIXIubGluZXx8MT09PXIuYXR0ZW1wdCl7ci5saW5lPWNyZWF0ZUxpbmUoZSxbXSk7ci5jaGlsZHJlbi5wdXNoKHIubGluZSk7ci5udW1iZXJJbkxpbmU9MH1yLm51bWJlckluTGluZSs9MTtyLmxpbmUuY2hpbGRyZW4ucHVzaCh0KTtpZigwPT09ci5hdHRlbXB0KXtyLmN1cnJlbnRXaWR0aCs9bztyLmhlaWdodD1NYXRoLm1heChyLmhlaWdodCxyLnByZXZIZWlnaHQrYyl9ZWxzZXtyLmN1cnJlbnRXaWR0aD1vO3IucHJldkhlaWdodD1yLmhlaWdodDtyLmhlaWdodCs9YztyLmF0dGVtcHQ9MH1yLndpZHRoPU1hdGgubWF4KHIud2lkdGgsci5jdXJyZW50V2lkdGgpO2JyZWFrO2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6e3IuY2hpbGRyZW4ucHVzaCh0KTtyLndpZHRoKz1vO3IuaGVpZ2h0PU1hdGgubWF4KHIuaGVpZ2h0LGMpO2NvbnN0IGU9bWVhc3VyZVRvU3RyaW5nKHIuaGVpZ2h0KTtmb3IoY29uc3QgdCBvZiByLmNoaWxkcmVuKXQuYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9ZTticmVha31jYXNlInRhYmxlIjpjYXNlInRiIjpyLndpZHRoPU1hdGhDbGFtcChvLHIud2lkdGgsaS53aWR0aCk7ci5oZWlnaHQrPWM7ci5jaGlsZHJlbi5wdXNoKHQpfX1mdW5jdGlvbiBnZXRBdmFpbGFibGVTcGFjZShlKXtjb25zdCB0PWVbSm5dLmF2YWlsYWJsZVNwYWNlLGE9ZS5tYXJnaW4/ZS5tYXJnaW4udG9wSW5zZXQrZS5tYXJnaW4uYm90dG9tSW5zZXQ6MCxyPWUubWFyZ2luP2UubWFyZ2luLmxlZnRJbnNldCtlLm1hcmdpbi5yaWdodEluc2V0OjA7c3dpdGNoKGUubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PWVbSm5dLmF0dGVtcHQ/e3dpZHRoOnQud2lkdGgtci1lW0puXS5jdXJyZW50V2lkdGgsaGVpZ2h0OnQuaGVpZ2h0LWEtZVtKbl0ucHJldkhlaWdodH06e3dpZHRoOnQud2lkdGgtcixoZWlnaHQ6dC5oZWlnaHQtYS1lW0puXS5oZWlnaHR9O2Nhc2Uicmwtcm93IjpjYXNlInJvdyI6cmV0dXJue3dpZHRoOk1hdGguc3VtUHJlY2lzZShlW0puXS5jb2x1bW5XaWR0aHMuc2xpY2UoZVtKbl0uY3VycmVudENvbHVtbikpLGhlaWdodDp0LmhlaWdodC1yfTtjYXNlInRhYmxlIjpjYXNlInRiIjpyZXR1cm57d2lkdGg6dC53aWR0aC1yLGhlaWdodDp0LmhlaWdodC1hLWVbSm5dLmhlaWdodH07ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24gY2hlY2tEaW1lbnNpb25zKGUsdCl7aWYobnVsbD09PWVbZnNdKClbSm5dLmZpcnN0VW5zcGxpdHRhYmxlKXJldHVybiEwO2lmKDA9PT1lLnd8fDA9PT1lLmgpcmV0dXJuITA7Y29uc3QgYT1lW3VzXSgpLHI9YVtKbl0/LmF0dGVtcHR8fDAsWyxpLG4sc109ZnVuY3Rpb24gZ2V0VHJhbnNmb3JtZWRCQm94KGUpe2xldCB0LGEscj0iIj09PWUudz9OYU46ZS53LGk9IiI9PT1lLmg/TmFOOmUuaCxbbixzXT1bMCwwXTtzd2l0Y2goZS5hbmNob3JUeXBlfHwiIil7Y2FzZSJib3R0b21DZW50ZXIiOltuLHNdPVtyLzIsaV07YnJlYWs7Y2FzZSJib3R0b21MZWZ0IjpbbixzXT1bMCxpXTticmVhaztjYXNlImJvdHRvbVJpZ2h0IjpbbixzXT1bcixpXTticmVhaztjYXNlIm1pZGRsZUNlbnRlciI6W24sc109W3IvMixpLzJdO2JyZWFrO2Nhc2UibWlkZGxlTGVmdCI6W24sc109WzAsaS8yXTticmVhaztjYXNlIm1pZGRsZVJpZ2h0IjpbbixzXT1bcixpLzJdO2JyZWFrO2Nhc2UidG9wQ2VudGVyIjpbbixzXT1bci8yLDBdO2JyZWFrO2Nhc2UidG9wUmlnaHQiOltuLHNdPVtyLDBdfXN3aXRjaChlLnJvdGF0ZXx8MCl7Y2FzZSAwOlt0LGFdPVstbiwtc107YnJlYWs7Y2FzZSA5MDpbdCxhXT1bLXMsbl07W3IsaV09W2ksLXJdO2JyZWFrO2Nhc2UgMTgwOlt0LGFdPVtuLHNdO1tyLGldPVstciwtaV07YnJlYWs7Y2FzZSAyNzA6W3QsYV09W3MsLW5dO1tyLGldPVstaSxyXX1yZXR1cm5bZS54K3QrTWF0aC5taW4oMCxyKSxlLnkrYStNYXRoLm1pbigwLGkpLE1hdGguYWJzKHIpLE1hdGguYWJzKGkpXX0oZSk7c3dpdGNoKGEubGF5b3V0KXtjYXNlImxyLXRiIjpjYXNlInJsLXRiIjpyZXR1cm4gMD09PXI/ZVtmc10oKVtKbl0ubm9MYXlvdXRGYWlsdXJlPyIiIT09ZS53P01hdGgucm91bmQobi10LndpZHR
101oKTw9Mjp0LndpZHRoPjI6ISgiIiE9PWUuaCYmTWF0aC5yb3VuZChzLXQuaGVpZ2h0KT4yKSYmKCIiIT09ZS53P01hdGgucm91bmQobi10LndpZHRoKTw9Mnx8MD09PWFbSm5dLm51bWJlckluTGluZSYmdC5oZWlnaHQ+Mjp0LndpZHRoPjIpOiEhZVtmc10oKVtKbl0ubm9MYXlvdXRGYWlsdXJlfHwhKCIiIT09ZS5oJiZNYXRoLnJvdW5kKHMtdC5oZWlnaHQpPjIpJiYoKCIiPT09ZS53fHxNYXRoLnJvdW5kKG4tdC53aWR0aCk8PTJ8fCFhW3ZzXSgpKSYmdC5oZWlnaHQ+Mik7Y2FzZSJ0YWJsZSI6Y2FzZSJ0YiI6cmV0dXJuISFlW2ZzXSgpW0puXS5ub0xheW91dEZhaWx1cmV8fCgiIj09PWUuaHx8ZVtDc10oKT8oIiI9PT1lLnd8fE1hdGgucm91bmQobi10LndpZHRoKTw9Mnx8IWFbdnNdKCkpJiZ0LmhlaWdodD4yOk1hdGgucm91bmQocy10LmhlaWdodCk8PTIpO2Nhc2UicG9zaXRpb24iOmlmKGVbZnNdKClbSm5dLm5vTGF5b3V0RmFpbHVyZSlyZXR1cm4hMDtpZigiIj09PWUuaHx8TWF0aC5yb3VuZChzK2ktdC5oZWlnaHQpPD0yKXJldHVybiEwO3JldHVybiBzK2k+ZVtmc10oKVtKbl0uY3VycmVudENvbnRlbnRBcmVhLmg7Y2FzZSJybC1yb3ciOmNhc2Uicm93IjpyZXR1cm4hIWVbZnNdKClbSm5dLm5vTGF5b3V0RmFpbHVyZXx8KCIiPT09ZS5ofHxNYXRoLnJvdW5kKHMtdC5oZWlnaHQpPD0yKTtkZWZhdWx0OnJldHVybiEwfX1jb25zdCBObz1lby50ZW1wbGF0ZS5pZCxQbz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLEVvPS9eSChcZCspJC8sTG89bmV3IFNldChbImltYWdlL2dpZiIsImltYWdlL2pwZWciLCJpbWFnZS9qcGciLCJpbWFnZS9wanBlZyIsImltYWdlL3BuZyIsImltYWdlL2FwbmciLCJpbWFnZS94LXBuZyIsImltYWdlL2JtcCIsImltYWdlL3gtbXMtYm1wIiwiaW1hZ2UvdGlmZiIsImltYWdlL3RpZiIsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJdKSxfbz1bW1s2Niw3N10sImltYWdlL2JtcCJdLFtbMjU1LDIxNiwyNTVdLCJpbWFnZS9qcGVnIl0sW1s3Myw3Myw0MiwwXSwiaW1hZ2UvdGlmZiJdLFtbNzcsNzcsMCw0Ml0sImltYWdlL3RpZmYiXSxbWzcxLDczLDcwLDU2LDU3LDk3XSwiaW1hZ2UvZ2lmIl0sW1sxMzcsODAsNzgsNzEsMTMsMTAsMjYsMTBdLCJpbWFnZS9wbmciXV07ZnVuY3Rpb24gZ2V0Qm9yZGVyRGltcyhlKXtpZighZXx8IWUuYm9yZGVyKXJldHVybnt3OjAsaDowfTtjb25zdCB0PWUuYm9yZGVyW3NzXSgpO3JldHVybiB0P3t3OnQud2lkdGhzWzBdK3Qud2lkdGhzWzJdK3QuaW5zZXRzWzBdK3QuaW5zZXRzWzJdLGg6dC53aWR0aHNbMV0rdC53aWR0aHNbM10rdC
1015pbnNldHNbMV0rdC5pbnNldHNbM119Ont3OjAsaDowfX1mdW5jdGlvbiBoYXNNYXJnaW4oZSl7cmV0dXJuIGUubWFyZ2luJiYoZS5tYXJnaW4udG9wSW5zZXR8fGUubWFyZ2luLnJpZ2h0SW5zZXR8fGUubWFyZ2luLmJvdHRvbUluc2V0fHxlLm1hcmdpbi5sZWZ0SW5zZXQpfWZ1bmN0aW9uIF9zZXRWYWx1ZShlLHQpe2lmKCFlLnZhbHVlKXtjb25zdCB0PW5ldyBWYWx1ZSh7fSk7ZVtqbl0odCk7ZS52YWx1ZT10fWUudmFsdWVbenNdKHQpfWZ1bmN0aW9uKmdldENvbnRhaW5lZENoaWxkcmVuKGUpe2Zvcihjb25zdCB0IG9mIGVbY3NdKCkpdCBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/eWllbGQqdFtsc10oKTp5aWVsZCB0fWZ1bmN0aW9uIGlzUmVxdWlyZWQoZSl7cmV0dXJuImVycm9yIj09PWUudmFsaWRhdGU/Lm51bGxUZXN0fWZ1bmN0aW9uIHNldFRhYkluZGV4KGUpe2Zvcig7ZTspe2lmKCFlLnRyYXZlcnNhbCl7ZVskc109ZVtkc10oKVskc107cmV0dXJufWlmKGVbJHNdKXJldHVybjtsZXQgdD1udWxsO2Zvcihjb25zdCBhIG9mIGUudHJhdmVyc2FsW2NzXSgpKWlmKCJuZXh0Ij09PWEub3BlcmF0aW9uKXt0PWE7YnJlYWt9aWYoIXR8fCF0LnJlZil7ZVskc109ZVtkc10oKVskc107cmV0dXJufWNvbnN0IGE9ZVtmc10oKTtlWyRzXT0rK2FbJHNdO2NvbnN0IHI9YVtxc10odC5yZWYsZSk7aWYoIXIpcmV0dXJuO2U9clswXX19ZnVuY3Rpb24gYXBwbHlBc3Npc3QoZSx0KXtjb25zdCBhPWUuYXNzaXN0O2lmKGEpe2NvbnN0IGU9YVtLc10oKTtlJiYodC50aXRsZT1lKTtjb25zdCByPWEucm9sZS5tYXRjaChFbyk7aWYocil7Y29uc3QgZT0iaGVhZGluZyIsYT1yWzFdO3Qucm9sZT1lO3RbImFyaWEtbGV2ZWwiXT1hfX1pZigidGFibGUiPT09ZS5sYXlvdXQpdC5yb2xlPSJ0YWJsZSI7ZWxzZSBpZigicm93Ij09PWUubGF5b3V0KXQucm9sZT0icm93IjtlbHNle2NvbnN0IGE9ZVtkc10oKTsicm93Ij09PWEubGF5b3V0JiYodC5yb2xlPSJUSCI9PT1hLmFzc2lzdD8ucm9sZT8iY29sdW1uaGVhZGVyIjoiY2VsbCIpfX1mdW5jdGlvbiBhcmlhTGFiZWwoZSl7aWYoIWUuYXNzaXN0KXJldHVybiBudWxsO2NvbnN0IHQ9ZS5hc3Npc3Q7cmV0dXJuIHQuc3BlYWsmJiIiIT09dC5zcGVha1tHbl0/dC5zcGVha1tHbl06dC50b29sVGlwP3QudG9vbFRpcFtHbl06bnVsbH1mdW5jdGlvbiB2YWx1ZVRvSHRtbChlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUmljaCJdLHN0eWxlOk9iamVjdC5jcmVhdGUobnVsbCl9LGNoaWxkcmVuOlt7bmFtZToic3BhbiIsYXR0cmlidXRlczp7c3R5bGU6T2JqZWN0LmNyZWF0ZShudWxsKX0sdmFsdWU6ZX1dfSl9ZnVuY3Rpb24gc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW2ZzXSgpO2lmKG51bGw9PT10W0puXS5maXJzdFVuc3BsaXR0YWJsZSl7dFtKbl0uZmlyc3RVbnNwbGl0dGFibGU9ZTt0W0puXS5ub0xheW91dEZhaWx1cmU9ITB9fWZ1bmN0aW9uIHVuc2V0Rmlyc3RVbnNwbGl0dGFibGUoZSl7Y29uc3QgdD1lW2ZzXSgpO3RbSm5dLmZpcnN0VW5zcGxpdHRhYmxlPT09ZSYmKHRbSm5dLm5vTGF5b3V0RmFpbHVyZT0hMSl9ZnVuY3Rpb24gaGFuZGxlQnJlYWsoZSl7aWYoZVtKbl0pcmV0dXJuITE7ZVtKbl09T2JqZWN0LmNyZWF0ZShudWxsKTtpZigiYXV0byI9PT1lLnRhcmdldFR5cGUpcmV0dXJuITE7Y29uc3QgdD1lW2ZzXSgpO2xldCBhPW51bGw7aWYoZS50YXJnZXQpe2E9dFtxc10oZS50YXJnZXQsZVtkc10oKSk7aWYoIWEpcmV0dXJuITE7YT1hWzBdfWNvbnN0e2N1cnJlbnRQYWdlQXJlYTpyLGN1cnJlbnRDb250ZW50QXJlYTppfT10W0puXTtpZigicGFnZUFyZWEiPT09ZS50YXJnZXRUeXBlKXthIGluc3RhbmNlb2YgUGFnZUFyZWF8fChhPW51bGwpO2lmKGUuc3RhcnROZXcpe2VbSm5dLnRhcmdldD1hfHxyO3JldHVybiEwfWlmKGEmJmEhPT1yKXtlW0puXS50YXJnZXQ9YTtyZXR1cm4hMH1yZXR1cm4hMX1hIGluc3RhbmNlb2YgQ29udGVudEFyZWF8fChhPW51bGwpO2NvbnN0IG49YSYmYVtkc10oKTtsZXQgcyxvPW47aWYoZS5zdGFydE5ldylpZihhKXtjb25zdCBlPW4uY29udGVudEFyZWEuY2hpbGRyZW4sdD1lLmluZGV4T2YoaSkscj1lLmluZGV4T2YoYSk7LTEhPT10JiZ0PHImJihvPW51bGwpO3M9ci0xfWVsc2Ugcz1yLmNvbnRlbn
101RBcmVhLmNoaWxkcmVuLmluZGV4T2YoaSk7ZWxzZXtpZighYXx8YT09PWkpcmV0dXJuITE7cz1uLmNvbnRlbnRBcmVhLmNoaWxkcmVuLmluZGV4T2YoYSktMTtvPW49PT1yP251bGw6bn1lW0puXS50YXJnZXQ9bztlW0puXS5pbmRleD1zO3JldHVybiEwfWZ1bmN0aW9uIGhhbmRsZU92ZXJmbG93KGUsdCxhKXtjb25zdCByPWVbZnNdKCksaT1yW0puXS5ub0xheW91dEZhaWx1cmUsbj10W3VzXTt0W3VzXT0oKT0+ZTtyW0puXS5ub0xheW91dEZhaWx1cmU9ITA7Y29uc3Qgcz10W0tzXShhKTtlW1VuXShzLmh0bWwscy5iYm94KTtyW0puXS5ub0xheW91dEZhaWx1cmU9aTt0W3VzXT1ufWNsYXNzIEFwcGVhcmFuY2VGaWx0ZXIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImFwcGVhcmFuY2VGaWx0ZXIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEFyYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYXJjIiwhMCk7dGhpcy5jaXJjdWxhcj1nZXRJbnRlZ2VyKHtkYXRhOmUuY2lyY3VsYXIsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnN0YXJ0QW5nbGU9Z2V0RmxvYXQoe2RhdGE6ZS5zdGFydEFuZ2xlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5zd2VlcEFuZ2xlPWdldEZsb2F0KHtkYXRhOmUuc3dlZXBBbmdsZSxkZWZhdWx0VmFsdWU6MzYwLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZWRnZT1udWxsO3RoaXMuZmlsbD1udWxsfVtLc10oKXtjb25zdCBlPXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLHQ9ZVtZc10oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7InZpc2libGUiPT09dGhpcy5maWxsPy5wcmVzZW5jZT9PYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW1lzXSgpKTphLmZpbGw9InRyYW5zcGFyZW50IjthLnN0cm9rZVdpZHRoPW1lYXN1cmVUb1N0cmluZygidmlzaWJsZSI9PT1lLnByZXNlbmNlP2UudGhpY2tuZXNzOjApO2Euc3Ryb2tlPXQuY29sb3I7bGV0IHI7Y29uc3QgaT17eG1sbnM6UG8sc3R5bGU6e3dpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUiLG92ZXJmbG93OiJ2aXNpYmxlIn19O2lmKDM2MD09PXRoaXMuc3dlZXBBbmdsZSlyPXtuYW1lOiJlbGxpcHNlIixhdHRyaWJ1dGVzOnt4bWxuczpQbyxjeDoiNTAlIixjeToiNTAlIixyeDoiNTAlIixyeToiNTAlIixzdHlsZTphfX07ZWxzZXtjb25zdCBlPXRoaXMuc3RhcnRBbmdsZSpNYXRoLlBJLzE4MCx0PXRoaXMuc3dlZXBBbmdsZSpNYXRoLlBJLzE4MCxuPXRoaXMuc3dlZXBBbmdsZT4xODA/MTowLFtzLG8sYyxsXT1bNTAqKDErTWF0aC5jb3MoZSkpLDUwKigxLU1hdGguc2luKGUpKSw1MCooMStNYXRoLmNvcyhlK3QpKSw1MCooMS1NYXRoLnNpbihlK3QpKV07cj17bmFtZToicGF0aCIsYXR0cmlidXRlczp7eG1sbnM6UG8sZDpgTSAke3N9ICR7b30gQSA1MCA1MCAwICR7bn0gMCAke2N9ICR7bH1gLHZlY3RvckVmZmVjdDoibm9uLXNjYWxpbmctc3Ryb2tlIixzdHlsZTphfX07T2JqZWN0LmFzc2lnbihpLHt2aWV3Qm94OiIwIDAgMTAwIDEwMCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9KX1jb25zdCBuPXtuYW1lOiJzdmciLGNoaWxkcmVuOltyXSxhdHRyaWJ1dGVzOml9O2lmKGhhc01hcmdpbih0aGlzW2RzXSgpW2RzXSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOntkaXNwbGF5OiJpbmxpbmUiLHdpZHRoOiIxMDAlIixoZWlnaHQ6IjEwMCUifX0sY2hpbGRyZW46W25dfSk7bi5hdHRyaWJ1dGVzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhuKX19Y2xhc3MgQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYXJlYSIsITApO3RoaXMuY29sU3Bhbj1nZXRJbnRlZ2VyKHtkYXRhOmUuY29sU3BhbixkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT5lPj0xfHwtMT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Kltsc10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bRnNdKCl7cmV0dXJuITB9W3hzXSgpe3JldHVybiEwfVtVbl0oZSx0KXtjb25zdFthLHIsaSxuXT10O3RoaXNbSm5dLndpZHRoPU1hdGgubWF4KHRoaXNbSm5dLndpZHRoLGEraSk7dGhpc1tKbl0uaGVpZ2h0PU1hdGgubWF4KHRoaXNbSm5dLmhlaWdodCxyK24pO3RoaXNbSm5dLmNoaWxkcmVuLnB1c2goZSl9W3RzXSgpe3JldHVybiB0aGlzW0puXS5hdmFpbGFibGVTcGFjZX1bS3NdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJwb3NpdGlvbiIpLGE9e3N0eWxlOnQsaWQ6dGhpc1tac10sY2xhc3M6WyJ4ZmFBcmVhIl19O2lzUHJpbnRPbmx5KHRoaXMpJiZhLmNsYXNzLnB1c2goInhmYVByaW50T25seSIpO3RoaXMubmFtZSYmKGEueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IHI9W107dGhpc1tKbl09e2NoaWxkcmVuOnIsd2lkdGg6MCxoZWlnaHQ6MCxhdmFpbGFibGVTcGFjZTplfTtjb25zdCBpPXRoaXNbWG5dKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJleGNsR3JvdXAiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKSxpbmNsdWRlOiEwfSk7aWYoIWkuc3VjY2Vzcyl7aWYoaS5pc0JyZWFrKCkpcmV0dXJuIGk7ZGVsZXRlIHRoaXNbSm5dO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9dC53aWR0aD1tZWFzdXJlVG9TdHJpbmcodGhpc1tKbl0ud2lkdGgpO3QuaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyh0aGlzW0puXS5oZWlnaHQpO2NvbnN0IG49e25hbWU6ImRpdiIsYXR0cmlidXRlczphLGNoaWxkcmVuOnJ9LHM9W3RoaXMueCx0aGlzLnksdGhpc1tKbl0ud2lkdGgsdGhpc1tKbl0uaGVpZ2h0XTtkZWxldGUgdGhpc1tKbl07cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhuLHMpfX1jbGFzcyBBc3Npc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImFzc2lzdCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5yb2xlPWUucm9sZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuc3BlYWs9bnVsbDt0aGlzLnRvb2xUaXA9bnVsbH1bS3NdKCl7cmV0dXJuIHRoaXMudG9vbFRpcD8uW0duXXx8bnVsbH19Y2xhc3MgQmFyY29kZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYmFyY29kZSIsITApO3RoaXMuY2hhckVuY29kaW5nPWdldEtleXdvcmQoe2RhdGE6ZS5jaGFyRW5jb2Rpbmc/ZS5jaGFyRW5jb2RpbmcudG9Mb3dlckNhc2UoKToiIixkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+WyJ1dGYtOCIsImJpZy1maXZlIiwiZm9udHNwZWNpZmljIiwiZ2JrIiwiZ2ItMTgwMzAiLCJnYi0yMzEyIiwia3NjLTU2MDEiLCJub25lIiwic2hpZnQtamlzIiwidWNzLTIiLCJ1dGYtMTYiXS5pbmNsdWRlcyhlKXx8ZS5tYXRjaCgvaXNvLTg4NTktXGR7Mn0vKX0pO3RoaXMuY2hlY2tzdW09Z2V0U3RyaW5nT3B0aW9uKGUuY2hlY2tzdW0sWyJub25lIiwiMW1vZDEwIiwiMW1vZDEwXzFtb2QxMSIsIjJtb2QxMCIsImF1dG8iXSk7dGhpcy5kYXRhQ29sdW1uQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLmRhdGFDb2x1bW5Db3VudCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YUxlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YUxlbmd0aCxkZWZhdWx0VmFsdWU6LTEsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZGF0YVByZXA9Z2V0U3RyaW5nT3B0aW9uKGUuZGF0YVByZXAsWyJub25lIiwiZmxhdGVDb21wcmVzcyJdKTt0aGlzLmRhdGFSb3dDb3VudD1nZXRJbnRlZ2VyKHtkYXRhOmUuZGF0YVJvd0NvdW50LGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy5lbmRDaGFyPWUuZW5kQ2hhcnx8IiI7dGhpcy5lcnJvckNvcnJlY3Rpb25MZXZlbD1nZXRJbnRlZ2VyKHtkYXRhOmUuZXJyb3JDb3JyZWN0aW9uTGV2ZWwsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTh9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubW9kdWxlSGVpZ2h0PWdldE1lYXN1cmVtZW50KGUubW9kdWxlSGVpZ2h0LCI1bW0iKTt0aGlzLm1vZHVsZVdpZHRoPWdldE1lYXN1cmVtZW50KGUubW9kdWxlV2lkdGgsIjAuMjVtbSIpO3RoaXMucHJpbnRDaGVja0RpZ2l0PWdldEludGVnZXIoe2RhdGE6ZS5wcmludENoZWNrRGlnaXQsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLnJvd0NvbHVtblJhdGlvPWdldFJhdGlvKGUucm93Q29sdW1uUmF0aW8pO3RoaXMuc3RhcnRDaGFyPWUuc3RhcnRDaGFyfHwiIjt0aGlzLnRleHRMb2NhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS50ZXh0TG9jYXRpb24sWyJiZWxvdyIsImFib3ZlIiwiYWJvdmVFbWJlZGRlZCIsImJlbG93RW1iZWRkZWQiLCJub25lIl0pO3RoaXMudHJ1bmNhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnRydW5jYXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGU/ZS50eXBlLnRvTG93ZXJDYXNlKCk6IiIsWyJhenRlYyIsImNvZGFiYXIiLCJjb2RlMm9mNWluZHVzdHJpYWwiLCJjb2RlMm9mNWludGVybGVhdmVkIiwiY29kZTJvZjVtYXRyaXgiLCJjb2RlMm9mNXN0YW5kYXJkIiwiY29kZTNvZjkiLCJjb2RlM29mOWV4dGVuZGVkIiwiY29kZTExIiwiY29kZTQ5IiwiY29kZTkzIiwiY29kZTEyOCIsImNvZGUxMjhhIiwiY29kZTEyOGIiLCJjb2RlMTI4YyIsImNvZGUxMjhzc2NjIiwiZGF0YW1hdHJpeCIsImVhbjgiLCJlYW44YWRkMiIsImVhbjhhZGQ1IiwiZWFuMTMiLCJlYW4xM2FkZDIiLCJlYW4xM2FkZDUiLCJlYW4xM3B3Y2QiLCJmaW0iLCJsb2dtYXJzIiwibWF4aWNvZGUiLCJtc2kiLCJwZGY0MTciLCJwZGY0MTdtYWNybyIsInBsZXNzZXkiLCJwb3N0YXVzY3VzdDIiLCJwb3N0YXVzY3VzdDMiLCJwb3N0YXVzcmVwbHlwYWlkIiwicG9zdGF1c3N0YW5kYXJkIiwicG9zdHVrcm00c2NjIiwicG9zdHVzZHBiYyIsInBvc3R1c2ltYiIsInBvc3R1c3N0YW5kYXJkIiwicG9zdHVzNXppcCIsInFyY29kZSIsInJmaWQiLCJyc3MxNCIsInJzczE0ZXhwYW5kZWQiLCJyc3MxNGxpbWl0ZWQiLCJyc3MxNHN0YWNrZWQiLCJyc3MxNHN0YWNrZWRvbW5pIiwicnNzMTR0cnVuY2F0ZWQiLCJ0ZWxlcGVuIiwidWNjMTI4IiwidWNjMTI4cmFuZG9tIiwidWNjMTI4c3NjYyIsInVwY2EiLCJ1cGNhYWRkMiIsInVwY2FhZGQ1IiwidXBjYXB3Y2QiLCJ1cGNlIiwidXBjZWFkZDIiLCJ1cGNlYWRkNSIsInVwY2VhbjIiLCJ1cGNlYW41IiwidXBzbWF4aWNvZGUiXSk7dGhpcy51cHNNb2RlPWdldFN0cmluZ09wdGlvbihlLnVwc01vZGUsWyJ1c0NhcnJpZXIiLCJpbnRlcm5hdGlvbmFsQ2FycmllciIsInNlY3VyZVN5bWJvbCIsInN0YW5kYXJkU3ltYm9sIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLndpZGVOYXJyb3dSYXRpbz1nZXRSYXRpbyhlLndpZGVOYXJyb3dSYXRpbyk7dGhpcy5lbmNyeXB0PW51bGw7dGhpcy5leHRyYXM9bnVsbH19Y2xhc3MgQmluZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYmluZCIsITApO3RoaXMubWF0Y2g9Z2V0U3RyaW5nT3B0aW9uKGUubWF0Y2gsWyJvbmNlIiwiZGF0YVJlZiIsImdsb2JhbCIsIm5vbmUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMucGljdHVyZT1udWxsfX1jbGFzcyBCaW5kSXRlbXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImJpbmRJdGVtcyIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMubGFiZWxSZWY9ZS5sYWJlbFJlZnx8IiI7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMudmFsdWVSZWY9ZS52YWx1ZVJlZnx8IiJ9fWNsYXNzIEJvb2tlbmQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImJvb2tlbmQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEJvb2xlYW5
101FbGVtZW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImJvb2xlYW4iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bS3NdKGUpe3JldHVybiB2YWx1ZVRvSHRtbCgxPT09dGhpc1tHbl0/IjEiOiIwIil9fWNsYXNzIEJvcmRlciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYm9yZGVyIiwhMCk7dGhpcy5icmVhaz1nZXRTdHJpbmdPcHRpb24oZS5icmVhayxbImNsb3NlIiwib3BlbiJdKTt0aGlzLmhhbmQ9Z2V0U3RyaW5nT3B0aW9uKGUuaGFuZCxbImV2ZW4iLCJsZWZ0IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29ybmVyPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmVkZ2U9bmV3IFhGQU9iamVjdEFycmF5KDQpO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5maWxsPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bc3NdKCl7aWYoIXRoaXNbSm5dKXtjb25zdCBlPXRoaXMuZWRnZS5jaGlsZHJlbi5zbGljZSgpO2lmKGUubGVuZ3RoPDQpe2NvbnN0IHQ9ZS5hdCgtMSl8fG5ldyBFZGdlKHt9KTtmb3IobGV0IGE9ZS5sZW5ndGg7YTw0O2ErKyllLnB1c2godCl9Y29uc3QgdD1lLm1hcChlPT5lLnRoaWNrbmVzcyksYT1bMCwwLDAsMF07aWYodGhpcy5tYXJnaW4pe2FbMF09dGhpcy5tYXJnaW4udG9wSW5zZXQ7YVsxXT10aGlzLm1hcmdpbi5yaWdodEluc2V0O2FbMl09dGhpcy5tYXJnaW4uYm90dG9tSW5zZXQ7YVszXT10aGlzLm1hcmdpbi5sZWZ0SW5zZXR9dGhpc1tKbl09e3dpZHRoczp0LGluc2V0czphLGVkZ2VzOmV9fXJldHVybiB0aGlzW0puXX1bWXNdKCl7Y29uc3R7ZWRnZXM6ZX09dGhpc1tzc10oKSx0PWUubWFwKGU9Pntjb25zdCB0PWVbWXNdKCk7dC5jb2xvcnx8PSIjMDAwMDAwIjtyZXR1cm4gdH0pLGE9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLm1hcmdpbiYmT2JqZWN0LmFzc2lnbihhLHRoaXMubWFyZ2luW1lzXSgpKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlJiZPYmplY3QuYXNzaWduKGEsdGhpcy5maWxsW1lzXSgpKTtpZih0aGlzLmNvcm5lci5jaGlsZHJlbi5zb21lKGU9PjAhPT1lLnJhZGl1cykpe2NvbnN0IGU9dGhpcy5jb3JuZXIuY2hpbGRyZW4ubWFwKGU9PmVbWXNdKCkpO2lmKDI9PT1lLmxlbmd0aHx8Mz09PWUubGVuZ3RoKXtjb25zdCB0PWUuYXQoLTEpO2ZvcihsZXQgYT1lLmxlbmd0aDthPDQ7YSsrKWUucHVzaCh0KX1hLmJvcmRlclJhZGl1cz1lLm1hcChlPT5lLnJhZGl1cykuam9pbigiICIpfXN3aXRjaCh0aGlzLnByZXNlbmNlKXtjYXNlImludmlzaWJsZSI6Y2FzZSJoaWRkZW4iOmEuYm9yZGVyU3R5bGU9IiI7YnJlYWs7Y2FzZSJpbmFjdGl2ZSI6YS5ib3JkZXJTdHlsZT0ibm9uZSI7YnJlYWs7ZGVmYXVsdDphLmJvcmRlclN0eWxlPXQubWFwKGU9PmUuc3R5bGUpLmpvaW4oIiAiKX1hLmJvcmRlcldpZHRoPXQubWFwKGU9PmUud2lkdGgpLmpvaW4oIiAiKTthLmJvcmRlckNvbG9yPXQubWFwKGU9PmUuY29sb3IpLmpvaW4oIiAiKTtyZXR1cm4gYX19Y2xhc3MgQnJlYWsgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImJyZWFrIiwhMCk7dGhpcy5hZnRlcj1nZXRTdHJpbmdPcHRpb24oZS5hZnRlcixbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIiwicGFnZUV2ZW4iLCJwYWdlT2RkIl0pO3RoaXMuYWZ0ZXJUYXJnZXQ9ZS5hZnRlclRhcmdldHx8IiI7dGhpcy5iZWZvcmU9Z2V0U3RyaW5nT3B0aW9uKGUuYmVmb3JlLFsiYXV0byIsImNvbnRlbnRBcmVhIiwicGFnZUFyZWEiLCJwYWdlRXZlbiIsInBhZ2VPZGQiXSk7dGhpcy5iZWZvcmVUYXJnZXQ9ZS5iZWZvcmVUYXJnZXR8fCIiO3RoaXMuYm9va2VuZExlYWRlcj1lLmJvb2tlbmRMZWFkZXJ8fCIiO3RoaXMuYm9va2VuZFRyYWlsZXI9ZS5ib29rZW5kVHJhaWxlcnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm92ZXJmbG93TGVhZGVyPWUub3ZlcmZsb3dMZWFkZXJ8fCIiO3RoaXMub3ZlcmZsb3dUYXJnZXQ9ZS5vdmVyZmxvd1RhcmdldHx8IiI7dGhpcy5vdmVyZmxvd1RyYWlsZXI9ZS5vdmVyZmxvd1RyYWlsZXJ8fCIiO3RoaXMuc3RhcnROZXc9Z2V0SW50ZWdlcih7ZGF0YTplLnN0YXJ0TmV3LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEJyZWFrQWZ0ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImJyZWFrQWZ0ZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBCcmVha0JlZm9yZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiYnJlYWtCZWZvcmUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGVhZGVyPWUubGVhZGVyfHwiIjt0aGlzLnN0YXJ0TmV3PWdldEludGVnZXIoe2RhdGE6ZS5zdGFydE5ldyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRhcmdldFR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudGFyZ2V0VHlwZSxbImF1dG8iLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl0pO3RoaXMudHJhaWxlcj1lLnRyYWlsZXJ8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnNjcmlwdD1udWxsfVtLc10oZSl7dGhpc1tKbl09e307cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX19Y2xhc3MgQnV0dG9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJidXR0b24iLCEwKTt0aGlzLmhpZ2hsaWdodD1nZXRTdHJpbmdPcHRpb24oZS5oaWdobGlnaHQsWyJpbnZlcnRlZCIsIm5vbmUiLCJvdXRsaW5lIiwicHVzaCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtLc10oZSl7Y29uc3QgdD10aGlzW2RzXSgpW2RzXSgpLGE9e25hbWU6ImJ1dHRvbiIsYXR0cmlidXRlczp7aWQ6dGhpc1tac10sY2xhc3M6WyJ4ZmFCdXR0b24iXSxzdHlsZTp7fX0sY2hpbGRyZW46W119O2Zvcihjb25zdCBlIG9mIHQuZXZlbnQuY2hpbGRyZW4pe2lmKCJjbGljayIhPT1lLmFjdGl2aXR5fHwhZS5zY3JpcHQpY29udGludWU7Y29uc3QgdD1yZWNvdmVySnNVUkwoZS5zY3JpcHRbR25dKTtpZighdCljb250aW51ZTtjb25zdCByPWZpeFVSTCh0LnVybCk7ciYmYS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJhIixhdHRyaWJ1dGVzOntpZDoibGluayIrdGh
101pc1tac10saHJlZjpyLG5ld1dpbmRvdzp0Lm5ld1dpbmRvdyxjbGFzczpbInhmYUxpbmsiXSxzdHlsZTp7fX0sY2hpbGRyZW46W119KX1yZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGEpfX1jbGFzcyBDYWxjdWxhdGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImNhbGN1bGF0ZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vdmVycmlkZT1nZXRTdHJpbmdPcHRpb24oZS5vdmVycmlkZSxbImRpc2FibGVkIiwiZXJyb3IiLCJpZ25vcmUiLCJ3YXJuaW5nIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWVzc2FnZT1udWxsO3RoaXMuc2NyaXB0PW51bGx9fWNsYXNzIENhcHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImNhcHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGxhY2VtZW50PWdldFN0cmluZ09wdGlvbihlLnBsYWNlbWVudCxbImxlZnQiLCJib3R0b20iLCJpbmxpbmUiLCJyaWdodCIsInRvcCJdKTt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVzZXJ2ZT1NYXRoLmNlaWwoZ2V0TWVhc3VyZW1lbnQoZS5yZXNlcnZlKSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5mb250PW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnZhbHVlPW51bGx9W3pzXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bc3NdKGUpe2lmKCF0aGlzW0puXSl7bGV0e3dpZHRoOnQsaGVpZ2h0OmF9PWU7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0PXRoaXMucmVzZXJ2ZTw9MD90OnRoaXMucmVzZXJ2ZTticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOmE9dGhpcy5yZXNlcnZlPD0wP2E6dGhpcy5yZXNlcnZlfXRoaXNbSm5dPWxheW91dE5vZGUodGhpcyx7d2lkdGg6dCxoZWlnaHQ6YX0pfXJldHVybiB0aGlzW0puXX1bS3NdKGUpe2lmKCF0aGlzLnZhbHVlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO3RoaXNbX3NdKCk7Y29uc3QgdD10aGlzLnZhbHVlW0tzXShlKS5odG1sO2lmKCF0KXt0aGlzW0xzXSgpO3JldHVybiBIVE1MUmVzdWx0LkVNUFRZfWNvbnN0IGE9dGhpcy5yZXNlcnZlO2lmKHRoaXMucmVzZXJ2ZTw9MCl7Y29uc3R7dzp0LGg6YX09dGhpc1tzc10oZSk7c3dpdGNoKHRoaXMucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UicmlnaHQiOmNhc2UiaW5saW5lIjp0aGlzLnJlc2VydmU9dDticmVhaztjYXNlInRvcCI6Y2FzZSJib3R0b20iOnRoaXMucmVzZXJ2ZT1hfX1jb25zdCByPVtdOyJzdHJpbmciPT10eXBlb2YgdD9yLnB1c2goe25hbWU6IiN0ZXh0Iix2YWx1ZTp0fSk6ci5wdXNoKHQpO2NvbnN0IGk9dG9TdHlsZSh0aGlzLCJmb250IiwibWFyZ2luIiwidmlzaWJpbGl0eSIpO3N3aXRjaC
101h0aGlzLnBsYWNlbWVudCl7Y2FzZSJsZWZ0IjpjYXNlInJpZ2h0Ijp0aGlzLnJlc2VydmU+MCYmKGkud2lkdGg9bWVhc3VyZVRvU3RyaW5nKHRoaXMucmVzZXJ2ZSkpO2JyZWFrO2Nhc2UidG9wIjpjYXNlImJvdHRvbSI6dGhpcy5yZXNlcnZlPjAmJihpLmhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5yZXNlcnZlKSl9c2V0UGFyYSh0aGlzLG51bGwsdCk7dGhpc1tMc10oKTt0aGlzLnJlc2VydmU9YTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6e3N0eWxlOmksY2xhc3M6WyJ4ZmFDYXB0aW9uIl19LGNoaWxkcmVuOnJ9KX19Y2xhc3MgQ2VydGlmaWNhdGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImNlcnRpZmljYXRlIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIENlcnRpZmljYXRlcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiY2VydGlmaWNhdGVzIiwhMCk7dGhpcy5jcmVkZW50aWFsU2VydmVyUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmNyZWRlbnRpYWxTZXJ2ZXJQb2xpY3ksWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51cmw9ZS51cmx8fCIiO3RoaXMudXJsUG9saWN5PWUudXJsUG9saWN5fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lbmNyeXB0aW9uPW51bGw7dGhpcy5pc3N1ZXJzPW51bGw7dGhpcy5rZXlVc2FnZT1udWxsO3RoaXMub2lkcz1udWxsO3RoaXMuc2lnbmluZz1udWxsO3RoaXMuc3ViamVjdEROcz1udWxsfX1jbGFzcyBDaGVja0J1dHRvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiY2hlY2tCdXR0b24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWFyaz1nZXRTdHJpbmdPcHRpb24oZS5tYXJrLFsiZGVmYXVsdCIsImNoZWNrIiwiY2lyY2xlIiwiY3Jvc3MiLCJkaWFtb25kIiwic3F1YXJlIiwic3RhciJdKTt0aGlzLnNoYXBlPWdldFN0cmluZ09wdGlvbihlLnNoYXBlLFsic3F1YXJlIiwicm91bmQiXSk7dGhpcy5zaXplPWdldE1lYXN1cmVtZW50KGUuc2l6ZSwiMTBwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bS3NdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJtYXJnaW4iKSxhPW1lYXN1cmVUb1N0cmluZyh0aGlzLnNpemUpO3Qud2lkdGg9dC5oZWlnaHQ9YTtsZXQgcixpLG47Y29uc3Qgcz10aGlzW2RzXSgpW2RzXSgpLG89cy5pdGVtcy5jaGlsZHJlbi5sZW5ndGgmJnMuaXRlbXMuY2hpbGRyZW5bMF1bS3NdKCkuaHRtbHx8W10sYz17b246KHZvaWQgMCE9PW9bMF0/b1swXToib24iKS50b1N0cmluZygpLG9mZjoodm9pZCAwIT09b1sxXT9vWzFdOiJvZmYiKS50b1N0cmluZygpfSxsPShzLnZhbHVlPy5bR3NdKCl8fCJvZmYiKT09PWMub258fHZvaWQgMCxoPXNbdXNdKCksdT1zW1pzXTtsZXQgZDtpZihoIGluc3RhbmNlb2YgRXhjbEdyb3VwKXtuPWhbWnNdO3I9InJhZGlvIjtpPSJ4ZmFSYWRpbyI7ZD1oW1ZuXT8uW1pzXXx8aFtac119ZWxzZXtyPSJjaGVja2JveCI7aT0ieGZhQ2hlY2tib3giO2Q9c1tWbl0/Lltac118fHNbWnNdfWNvbnN0IGY9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOntjbGFzczpbaV0sc3R5bGU6dCxmaWVsZElkOnUsZGF0YUlkOmQsdHlwZTpyLGNoZWNrZWQ6bCx4ZmFPbjpjLm9uLHhmYU9mZjpjLm9mZiwiYXJpYS1sYWJlbCI6YXJpYUxhYmVsKHMpLCJhcmlhLXJlcXVpcmVkIjohMX19O24mJihmLmF0dHJpYnV0ZXMubmFtZT1uKTtpZihpc1JlcXVpcmVkKHMpKXtmLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDtmLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2ZdfSl9fWNsYXNzIENob2ljZUxpc3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImNob2ljZUxpc3QiLCEwKTt0aGlzLmNvbW1pdE9uPWdldFN0cmluZ09wdGlvbihlLmNvbW1pdE9uLFsic2VsZWN0IiwiZXhpdCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3Blbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVuLFsidXNlckNvbnRyb2wiLCJhbHdheXMiLCJtdWx0aVNlbGVjdCIsIm9uRW50cnkiXSk7dGhpcy50ZXh0RW50cnk9Z2V0SW50ZWdlcih7ZGF0YTplLnRleHRFbnRyeSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bS3NdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJtYXJnaW4iKSxhPXRoaXNbZHNdKClbZHNdKCkscj17Zm9udFNpemU6YGNhbGMoJHthLmZvbnQ/LnNpemV8fDEwfXB4ICogdmFyKC0tdG90YWwtc2NhbGUtZmFjdG9yKSlgfSxpPVtdO2lmKGEuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoPjApe2NvbnN0IGU9YS5pdGVtcztsZXQgdD0wLG49MDtpZigyPT09ZS5jaGlsZHJlbi5sZW5ndGgpe3Q9ZS5jaGlsZHJlblswXS5zYXZlO249MS10fWNvbnN0IHM9ZS5jaGlsZHJlblt0XVtLc10oKS5odG1sLG89ZS5jaGlsZHJlbltuXVtLc10oKS5odG1sO2xldCBjPSExO2NvbnN0IGw9YS52YWx1ZT8uW0dzXSgpfHwiIjtmb3IobGV0IGU9MCx0PXMubGVuZ3RoO2U8dDtlKyspe2NvbnN0IHQ9e25hbWU6Im9wdGlvbiIsYXR0cmlidXRlczp7dmFsdWU6b1tlXXx8c1tlXSxzdHlsZTpyfSx2YWx1ZTpzW2VdfTtvW2VdPT09bCYmKHQuYXR0cmlidXRlcy5zZWxlY3RlZD1jPSEwKTtpLnB1c2godCl9Y3x8aS5zcGxpY2UoMCwwLHtuYW1lOiJvcHRpb24iLGF0dHJpYnV0ZXM6e2hpZGRlbjohMCxzZWxlY3RlZDohMH0sdmFsdWU6IiAifSl9Y29uc3Qgbj17Y2xhc3M6WyJ4ZmFTZWxlY3QiXSxmaWVsZElkOmFbWnNdLGRhdGFJZDphW1ZuXT8uW1pzXXx8YVtac10sc3R5bGU6dCwiYXJpYS1sYWJlbC
101I6YXJpYUxhYmVsKGEpLCJhcmlhLXJlcXVpcmVkIjohMX07aWYoaXNSZXF1aXJlZChhKSl7blsiYXJpYS1yZXF1aXJlZCJdPSEwO24ucmVxdWlyZWQ9ITB9Im11bHRpU2VsZWN0Ij09PXRoaXMub3BlbiYmKG4ubXVsdGlwbGU9ITApO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOlt7bmFtZToic2VsZWN0IixjaGlsZHJlbjppLGF0dHJpYnV0ZXM6bn1dfSl9fWNsYXNzIENvbG9yIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJjb2xvciIsITApO3RoaXMuY1NwYWNlPWdldFN0cmluZ09wdGlvbihlLmNTcGFjZSxbIlNSR0IiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52YWx1ZT1lLnZhbHVlP2Z1bmN0aW9uIGdldENvbG9yKGUsdD1bMCwwLDBdKXtsZXRbYSxyLGldPXQ7aWYoIWUpcmV0dXJue3I6YSxnOnIsYjppfTtjb25zdCBuPWUuc3BsaXQoIiwiLDMpLm1hcChlPT5NYXRoQ2xhbXAocGFyc2VJbnQoZS50cmltKCksMTApLDAsMjU1KSkubWFwKGU9PmlzTmFOKGUpPzA6ZSk7aWYobi5sZW5ndGg8MylyZXR1cm57cjphLGc6cixiOml9O1thLHIsaV09bjtyZXR1cm57cjphLGc6cixiOml9fShlLnZhbHVlKToiIjt0aGlzLmV4dHJhcz1udWxsfVtwc10oKXtyZXR1cm4hMX1bWXNdKCl7cmV0dXJuIHRoaXMudmFsdWU/VXRpbC5tYWtlSGV4Q29sb3IodGhpcy52YWx1ZS5yLHRoaXMudmFsdWUuZyx0aGlzLnZhbHVlLmIpOm51bGx9fWNsYXNzIENvbWIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImNvbWIiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubnVtYmVyT2ZDZWxscz1nZXRJbnRlZ2VyKHtkYXRhOmUubnVtYmVyT2ZDZWxscyxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT5lPj0wfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBDb25uZWN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJjb25uZWN0IiwhMCk7dGhpcy5jb25uZWN0aW9uPWUuY29ubmVjdGlvbnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2FnZT1nZXRTdHJpbmdPcHRpb24oZS51c2FnZSxbImV4cG9ydEFuZEltcG9ydCIsImV4cG9ydE9ubHkiLCJpbXBvcnRPbmx5Il0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgQ29udGVudEFyZWEgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImNvbnRlbnRBcmVhIiwhMCk7dGhpcy5oPWdldE1lYXN1cmVtZW50KGUuaCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9Z2V0TWVhc3VyZW1lbnQoZS53KTt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtLc10oZSl7Y29uc3QgdD17bGVmdDptZWFzdXJlVG9TdHJpbmcodGhpcy54KSx0b3A6bWVhc3VyZVRvU3RyaW5nKHRoaXMueSksd2lkdGg6bWVhc3VyZVRvU3RyaW5nKHRoaXMudyksaGVpZ2h0Om1lYXN1cmVUb1N0cmluZyh0aGlzLmgpfSxhPVsieGZhQ29udGVudGFyZWEiXTtpc1ByaW50T25seSh0aGlzKSYmYS5wdXNoKCJ4ZmFQcmludE9ubHkiKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJkaXYiLGNoaWxkcmVuOltdLGF0dHJpYnV0ZXM6e3N0eWxlOnQsY2xhc3M6YSxpZDp0aGlzW1pzXX19KX19Y2xhc3MgQ29ybmVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJjb3JuZXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW52ZXJ0ZWQ9Z2V0SW50ZWdlcih7ZGF0YTplLmludmVydGVkLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5qb2luPWdldFN0cmluZ09wdGlvbihlLmpvaW4sWyJzcXVhcmUiLCJyb3VuZCJdKTt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmFkaXVzPWdldE1lYXN1cmVtZW50KGUucmFkaXVzKTt0aGlzLnN0cm9rZT1nZXRTdHJpbmdPcHRpb24oZS5zdHJva2UsWyJzb2xpZCIsImRhc2hEb3QiLCJkYXNoRG90RG90IiwiZGFzaGVkIiwiZG90dGVkIiwiZW1ib3NzZWQiLCJldGNoZWQiLCJsb3dlcmVkIiwicmFpc2VkIl0pO3RoaXMudGhpY2tuZXNzPWdldE1lYXN1cmVtZW50KGUudGhpY2tuZXNzLCIwLjVwdCIpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bWXNdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsInZpc2liaWxpdHkiKTtlLnJhZGl1cz1tZWFzdXJlVG9TdHJpbmcoInNxdWFyZSI9PT10aGlzLmpvaW4/MDp0aGlzLnJhZGl1cyk7cmV0dXJuIGV9fWNsYXNzIERhdGVFbGVtZW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZGF0ZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtZbl0oKXtjb25zdCBlPXRoaXNbR25dLnRyaW0oKTt0aGlzW0duXT1lP25ldyBEYXRlKGUpOm51bGx9W0tzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwodGhpc1tHbl0/dGhpc1tHbl0udG9TdHJpbmcoKToiIil9fWNsYXNzIERhdGVUaW1lIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZGF0ZVRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bWW5dKCl7Y29uc3QgZT10aGlzW0duXS50cmltKCk7dGhpc1tHbl09ZT9uZXcgRGF0ZShlKTpudWxsfVtLc10oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbR25dP3RoaXNbR25dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEYXRlVGltZUVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImRhdGVUaW1lRWRpdCIsITApO3RoaXMuaFNjcm9sbFBvbGljeT1nZXRTdHJpbmdPcHRpb24oZS5oU2Nyb2xsUG9saWN5LFsiYXV0byIsIm9mZiIsIm9uIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5waWNrZXI9Z2V0U3RyaW5nT3B0aW9uKGUucGlja2VyLFsiaG9zdCIsIm5vbmUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5jb21iPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtLc10oZSl7Y29uc3QgdD10b1N0eWxlKHRoaXMsImJvcmRlciIsImZvbnQiLCJtYXJnaW4iKSxhPXRoaXNbZHNdKClbZHNdKCkscj17bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGZpZWxkSWQ6YVtac10sZGF0YUlkOmFbVm5dPy5bWnNdfHxhW1pzXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChhKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKGEpKXtyLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDtyLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W3JdfSl9fWNsYXNzIERlY2ltYWwgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJkZWNpbWFsIik7dGhpcy5mcmFjRGlnaXRzPWdldEludGVnZXIoe2RhdGE6ZS5mcmFjRGlnaXRzLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxlYWREaWdpdHM9Z2V0SW50ZWdlcih7ZGF0YTplLmxlYWREaWdpdHMsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtZbl0oKXtjb25zdCBlPX
101BhcnNlRmxvYXQodGhpc1tHbl0udHJpbSgpKTt0aGlzW0duXT1pc05hTihlKT9udWxsOmV9W0tzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbR25dP3RoaXNbR25dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBEZWZhdWx0VWkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImRlZmF1bHRVaSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIERlc2MgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImRlc2MiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERpZ2VzdE1ldGhvZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZGlnZXN0TWV0aG9kIixbIiIsIlNIQTEiLCJTSEEyNTYiLCJTSEE1MTIiLCJSSVBFTUQxNjAiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIERpZ2VzdE1ldGhvZHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImRpZ2VzdE1ldGhvZHMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5kaWdlc3RNZXRob2Q9bmV3IFhGQU9iamVjdEFycmF
1015fX1jbGFzcyBEcmF3IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJkcmF3IiwhMCk7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuaD1lLmg/Z2V0TWVhc3VyZW1lbnQoZS5oKToiIjt0aGlzLmhBbGlnbj1nZXRTdHJpbmdPcHRpb24oZS5oQWxpZ24sWyJsZWZ0IiwiY2VudGVyIiwianVzdGlmeSIsImp1c3RpZnlBbGwiLCJyYWRpeCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnJvdGF0ZT1nZXRJbnRlZ2VyKHtkYXRhOmUucm90YXRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmUlOTA9PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhcHRpb249bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZm9udD1udWxsO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWx1ZT1udWxsO3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF
1015fVt6c10oZSl7X3NldFZhbHVlKHRoaXMsZSl9W0tzXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2ZpeERpbWVuc2lvbnModGhpcyk7dGhpc1tfc10oKTtjb25zdCB0PXRoaXMudyxhPXRoaXMuaCx7dzpyLGg6aSxpc0Jyb2tlbjpufT1sYXlvdXROb2RlKHRoaXMsZSk7aWYociYmIiI9PT10aGlzLncpe2lmKG4mJnRoaXNbdXNdKClbdnNdKCkpe3RoaXNbTHNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX10aGlzLnc9cn1pJiYiIj09PXRoaXMuaCYmKHRoaXMuaD1pKTtzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpe3RoaXMudz10O3RoaXMuaD1hO3RoaXNbTHNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX11bnNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2NvbnN0IHM9dG9TdHlsZSh0aGlzLCJmb250IiwiaEFsaWduIiwiZGltZW5zaW9ucyIsInBvc2l0aW9uIiwicHJlc2VuY2UiLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwiYm9yZGVyIiwibWFyZ2luIik7c2V0TWluTWF4RGltZW5zaW9ucyh0aGlzLHMpO2lmKHMubWFyZ2luKXtzLnBhZGRpbmc9cy5tYXJnaW47ZGVsZXRlIHMubWFyZ2lufWNvbnN0IG89WyJ4ZmFEcmF3Il07dGhpcy5mb250JiZvLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmby5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBjPXtzdHlsZTpzLGlkOnRoaXNbWnNdLGNsYXNzOm99O3RoaXMubmFtZSYmKGMueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGw9e25hbWU6ImRpdiIsYXR0cmlidXRlczpjLGNoaWxkcmVuOltdfTthcHBseUFzc2lzdCh0aGlzLGMpO2NvbnN0IGg9Y29tcHV0ZUJib3godGhpcyxsLGUpLHU9dGhpcy52YWx1ZT90aGlzLnZhbHVlW0tzXShlKS5odG1sOm51bGw7aWYobnVsbD09PXUpe3RoaXMudz10O3RoaXMuaD1hO3RoaXNbTHNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsbCksaCl9bC5jaGlsZHJlbi5wdXNoKHUpO3NldFBhcmEodGhpcyxzLHUpO3RoaXMudz10O3RoaXMuaD1hO3RoaXNbTHNdKCk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsbCksaCl9fWNsYXNzIEVkZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImVkZ2UiLCEwKTt0aGlzLmNhcD1nZXRTdHJpbmdPcHRpb24oZS5jYXAsWyJzcXVhcmUiLCJidXR0Iiwicm91bmQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMuc3Ryb2tlPWdldFN0cmluZ09wdGlvbihlLnN0cm9rZSxbInNvbGlkIiwiZGFzaERvdCIsImRhc2hEb3REb3QiLCJkYXNoZWQiLCJkb3R0ZWQiLCJlbWJvc3NlZCIsImV0Y2hlZCIsImxvd2VyZWQiLCJyYWlzZWQiXSk7dGhpcy50aGlja25lc3M9Z2V0TWVhc3VyZW1lbnQoZS50aGlja25lc3MsIjAuNXB0Iik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtZc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywidmlzaWJpbGl0eSIpO09iamVjdC5hc3NpZ24oZSx7bGluZWNhcDp0aGlzLmNhcCx3aWR0aDptZWFzdXJlVG9TdHJpbmcodGhpcy50aGlja25lc3MpLGNvbG9yOnRoaXMuY29sb3I/dGhpcy5jb2xvcltZc10oKToiIzAwMDAwMCIsc3R5bGU6IiJ9KTtpZigidmlzaWJsZSIhPT10aGlzLnByZXNlbmNlKWUuc3R5bGU9Im5vbmUiO2Vsc2Ugc3dpdGNoKHRoaXMuc3Ryb2tlKXtjYXNlInNvbGlkIjplLnN0eWxlPSJzb2xpZCI7YnJlYWs7Y2FzZSJkYXNoRG90IjpjYXNlImRhc2hEb3REb3QiOmNhc2UiZGFzaGVkIjplLnN0eWxlPSJkYXNoZWQiO2JyZWFrO2Nhc2UiZG90dGVkIjplLnN0eWxlPSJkb3R0ZWQiO2JyZWFrO2Nhc2UiZW1ib3NzZWQiOmUuc3R5bGU9InJpZGdlIjticmVhaztjYXNlImV0Y2hlZCI6ZS5zdHlsZT0iZ3Jvb3ZlIjticmVhaztjYXNlImxvd2VyZWQiOmUuc3R5bGU9Imluc2V0IjticmVhaztjYXNlInJhaXNlZCI6ZS5zdHlsZT0ib3V0c2V0In1yZXR1cm4gZX19Y2xhc3MgRW5jb2RpbmcgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImVuY29kaW5nIixbImFkYmUueDUwOS5yc2Ffc2hhMSIsImFkYmUucGtjczcuZGV0YWNoZWQiLCJhZGJlLnBrY3M3LnNoYTEiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIEVuY29kaW5ncyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZW5jb2RpbmdzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jb2Rpbmc9bmV3IFhGQU9iamVjdEFycmF
1015fX1jbGFzcyBFbmNyeXB0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJlbmNyeXB0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1udWxsfX1jbGFzcyBFbmNyeXB0RGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZW5jcnlwdERhdGEiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3BlcmF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9wZXJhdGlvbixbImVuY3J5cHQiLCJkZWNyeXB0Il0pO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5maWx0ZXI9bnVsbDt0aGlzLm1hbmlmZXN0PW51bGx9fWNsYXNzIEVuY3J5cHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImVuY3J5cHRpb24iLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jZXJ0aWZpY2F0ZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEVuY3J5cHRpb25NZXRob2QgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImVuY3J5cHRpb25NZXRob2QiLFsiIiwiQUVTMjU2LUNCQyIsIlRSSVBMRURFUy1DQkMiLCJBRVMxMjgtQ0JDIiwiQUVTMTkyLUNCQyJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRW5jcnlwdGlvbk1ldGhvZHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImVuY3J5cHRpb25NZXRob2RzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZW5jcnlwdGlvbk1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEV2ZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJldmVudCIsITApO3RoaXMuYWN0aXZpdHk9Z2V0U3RyaW5nT3B0aW9uKGUuYWN0aXZpdHksWyJjbGljayIsImNoYW5nZSIsImRvY0Nsb3NlIiwiZG9jUmVhZHkiLCJlbnRlciIsImV4aXQiLCJmdWxsIiwiaW5kZXhDaGFuZ2UiLCJpbml0aWFsaXplIiwibW91c2VEb3duIiwibW91c2VFbnRlciIsIm1vdXNlRXhpdCIsIm1vdXNlVXAiLCJwb3N0RXhlY3V0ZSIsInBvc3RPcGVuIiwicG9zdFByaW50IiwicG9zdFNhdmUiLCJwb3N0U2lnbiIsInBvc3RTdWJtaXQiLCJwcmVFeGVjdXRlIiwicHJlT3BlbiIsInByZVByaW50IiwicHJlU2F2ZSIsInByZVNpZ24iLCJwcmVTdWJtaXQiLCJyZWFkeSIsInZhbGlkYXRpb25TdGF0ZSJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGlzdGVuPWdldFN0cmluZ09wdGlvbihlLmxpc3RlbixbInJlZk9ubHkiLCJyZWZBbmREZXNjZW5kZW50cyJdKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJlZj1lLnJlZnx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5lbmNyeXB0RGF0YT1udWxsO3RoaXMuZXhlY3V0ZT1udWxsO3RoaXMuc2NyaXB0PW51bGw7dGhpcy5zaWduRGF0YT1udWxsO3RoaXMuc3VibWl0PW51bGx9fWNsYXNzIEV4RGF0YSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImV4RGF0YSIpO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5ocmVmPWUuaHJlZnx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm1heExlbmd0aD1nZXRJbnRlZ2VyKHtkYXRhOmUubWF4TGVuZ3RoLGRlZmF1bHRWYWx1ZTotMSx2YWxpZGF0ZTplPT5lPj0tMX0pO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnRyYW5zZmVyRW5jb2Rpbmc9Z2V0U3RyaW5nT3B0aW9uKGUudHJhbnNmZXJFbmNvZGluZyxbIm5vbmUiLCJiYXNlNjQiLCJwYWNrYWdlIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bd3NdKCl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlfVtSc10oZSl7aWYoInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZlW09zXT09PWVvLnhodG1sLmlkKXt0aGlzW0duXT1lO3JldHVybiEwfWlmKCJ0ZXh0L3htbCI9PT10aGlzLmNvbnRlbnRUeXBlKXt0aGlzW0duXT1lO3JldHVybiEwfXJldHVybiExfVtLc10oZSl7cmV0dXJuInRleHQvaHRtbCI9PT10aGlzLmNvbnRlbnRUeXBlJiZ0aGlzW0duXT90aGlzW0duXVtLc10oZSk6SFRNTFJlc3VsdC5FTVBUWX19Y2xhc3MgRXhPYmplY3QgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImV4T2JqZWN0IiwhMCk7dGhpcy5hcmNoaXZlPWUuYXJjaGl2ZXx8IiI7dGhpcy5jbGFzc0lkPWUuY2xhc3NJZHx8IiI7dGhpcy5jb2RlQmFzZT1lLmNvZGVCYXNlfHwiIjt0aGlzLmNvZGVUeXBlPWUuY29kZVR5cGV8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5ib29sZWFuPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGU9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuZGF0ZVRpbWU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGVjaW1hbD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leERhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmxvYXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW1hZ2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuaW50ZWdlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZXh0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRpbWU9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBFeGNsR3JvdXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImV4Y2xHcm91cCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxheW91dD1nZXRTdHJpbmdPcHRpb24oZS5sYXlvdXQsWyJwb3NpdGlvbiIsImxyLXRiIiwicmwtcm93IiwicmwtdGIiLCJyb3ciLCJ0YWJsZSIsInRiIl0pO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWluSD1nZXRNZWFzdXJlbWVudChlLm1pbkgsIjBwdCIpO3RoaXMubWluVz1nZXRNZWFzdXJlbWVudChlLm1pblcsIjBwdCIpO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53PWUudz9nZXRNZWFzdXJlbWVudChlLncpOiIiO3RoaXMueD1nZXRNZWFzdXJlbWVudChlLngsIjBwdCIpO3RoaXMueT1nZXRNZWFzdXJlbWVudChlLnksIjBwdCIpO3RoaXMuYXNzaXN0PW51bGw7dGhpcy5iaW5kPW51bGw7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNhbGN1bGF0ZT1udWxsO3RoaXMuY2FwdGlvbj1udWxsO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbDt0aGlzLnBhcmE9bnVsbDt0aGlzLnRyYXZlcnNhbD1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLmNvbm5lY3Q9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZmllbGQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5fVt4c10oKXtyZXR1cm4hMH1bcHNdKCl7cmV0dXJuITB9W3pzXShlKXtmb3IoY29uc3QgdCBvZiB0aGlzLmZpZWxkLmNoaWxkcmVuKXtpZighdC52YWx1ZSl7Y29uc3QgZT1uZXcgVmFsdWUoe30pO3Rbam5dKGUpO3QudmFsdWU9ZX10LnZhbHVlW3pzXShlKX19W3ZzXSgpe3JldHVybiB0aGlzLmxheW91dC5lbmRzV2l0aCgiLXRiIikmJjA9PT10aGlzW0puXS5hdHRlbXB0JiZ0aGlzW0puXS5udW1iZXJJbkxpbmU+MHx8dGhpc1tkc10oKVt2c10oKX1bQ3NdKCl7Y29uc3QgZT10aGlzW3VzXSgpO2lmKCFlW0NzXSgpKXJldHVybiExO2lmKHZvaWQgMCE9PXRoaXNbSm5dLl9pc1NwbGl0dGFibGUpcmV0dXJuIHRoaXNbSm5dLl9pc1NwbGl0dGFibGU7aWYoInBvc2l0aW9uIj09PXRoaXMubGF5b3V0fHx0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe3RoaXNbSm5dLl9pc1NwbGl0dGFibGU9ITE7cmV0dXJuITF9aWYoZS5sYXlvdXQ/LmVuZHNXaXRoKCItdGIiKSYmMCE9PWVbSm5dLm51bWJlckluTGluZSlyZXR1cm4hMTt0aGlzW0puXS5faXNTcGxpdHRhYmxlPSEwO3JldHVybiEwfVtabl0oKXtyZXR1cm4gZmx1c2hIVE1MKHRoaXMpfVtVbl0oZSx0KXthZGRIVE1MKHRoaXMsZSx0KX1bdHNdKCl7cmV0dXJuIGdldEF2YWlsYWJsZVNwYWNlKHRoaXMpfVtLc10oZSl7c2V0VGFiSW5kZXgodGhpcyk7aWYoImhpZGRlbiI9PT10aGlzLnByZXNlbmNlfHwiaW5hY3RpdmUiPT09dGhpcy5wcmVzZW5jZXx8MD09PXRoaXMuaHx8MD09PXRoaXMudylyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtmaXhEaW1lbnNpb25zKHRoaXMpO2NvbnN0IHQ9W10sYT17aWQ6dGhpc1tac10sY2xhc3M6W119O3NldEFjY2Vzcyh0aGlzLGEuY2xhc3MpO3RoaXNbSm5dfHw9T2JqZWN0LmNyZWF0ZShudWxsKTtPYmplY3QuYXNzaWduKHRoaXNbSm5dLHtjaGlsZHJlbjp0LGF0dHJpYnV0ZXM6YSxhdHRlbXB0OjAsbGluZTpudWxsLG51bWJlckluTGluZTowLGF2YWlsYWJsZVNwYWNlOnt3aWR0aDpNYXRoLm1pbih0aGlzLnd8fDEvMCxlLndpZHRoKSxoZWlnaHQ6TWF0aC5taW4odGhpcy5ofHwxLzAsZS5oZWlnaHQpfSx3aWR0aDowLGhlaWdodDowLHByZXZIZWlnaHQ6MCxjdXJyZW50V2lkdGg6MH0pO2NvbnN0IHI9dGhpc1tDc10oKTtyfHxzZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZighY2hlY2tEaW1lbnNpb25zKHRoaXMsZSkpcmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRTtjb25zdCBpPW5ldyBTZXQoWyJmaWVsZCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1t1c10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tKbl0uY29sdW1uV2lkdGhzPWU7dGhpc1tKbl0uY3VycmVudENvbHVtbj0wfX1jb25zdCBuPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIikscz1bInhmYUV4Y2xncm91cCJdLG89bGF5b3V0Q2xhc3ModGhpcyk7byYmcy5wdXNoKG8pO2lzUHJpbnRPbmx5KHRoaXMpJiZzLnB1c2goInhmYVByaW50T25seSIpO2Euc3R5bGU9bjthLmNsYXNzPXM7dGhpcy5uYW1lJiYoYS54ZmFOYW1lPXRoaXMubmFtZSk7dGhpc1tfc10oKTtjb25zdCBjPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LGw9Yz8yOjE7Zm9yKDt0aGlzW0puXS5hdHRlbXB0PGw7dGhpc1tKbl0uYXR0ZW1wdCsrKXtjJiYxPT09dGhpc1tKbl0uYXR0ZW1wdCYmKHRoaXNbSm5dLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbWG5dKHtmaWx0ZXI6aSxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW0xzXSgpO3JldHVybiBlfWlmKGMmJjA9PT10aGlzW0puXS5hdHRlbXB0JiYwPT09dGhpc1tKbl0ubnVtYmVySW5MaW5lJiYhdGhpc1tmc10oKVtKbl0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW0puXS5hdHRlbXB0PWw7YnJlYWt9fXRoaXNbTHNdKCk7cnx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtpZih0aGlzW0puXS5hdHRlbXB0PT09bCl7cnx8ZGVsZXRlIHRoaXNbSm5dO3JldHVybiBIVE1MUmVzdWx0LkZBSUxVUkV9bGV0IGg9MCx1PTA7aWYodGhpcy5tYXJnaW4pe2g9dGhpcy5tYXJnaW4ubGVmdEluc2V0K3RoaXMubWFyZ2luLnJpZ2h0SW5zZXQ7dT10aGlzLm1hcmdpbi50b3BJbnNldCt0aGlzLm1hcmdpbi5ib3R0b21JbnNldH1jb25zdCBkPU1hdGgubWF4KHRoaXNbSm5dLndpZHRoK2gsdGhpcy53fHwwKSxmPU1hdGgubWF4KHRoaXNbSm5dLmhlaWdodCt1LHRoaXMuaHx8MCksZz1bdGhpcy54LHRoaXMueSxkLGZdOyIiPT09dGhpcy53JiYobi53aWR0aD1tZWFzdXJlVG9TdHJpbmcoZCkpOyIiPT09dGhpcy5oJiYobi5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGYpKTtjb25zdCBwPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6YSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGEpO2RlbGV0ZSB0aGlzW0puXTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxwKSxnKX19Y2xhc3MgRXhlY3V0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZXhlY3V0ZSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMuZXhlY3V0ZVR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuZXhlY3V0ZVR5cGUsWyJpbXBvcnQiLCJyZW1lcmdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5ydW5BdD1nZXRTdHJpbmdPcHRpb24oZS5ydW5BdCxbImNsaWVudCIsImJvdGgiLCJzZXJ2ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBFeHRyYXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImV4dHJhcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZpZWxkIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJmaWVsZCIsITApO3RoaXMuYWNjZXNzPWdldFN0cmluZ09wdGlvbihlLmFjY2VzcyxbIm9wZW4iLCJub25JbnRlcmFjdGl2ZSIsInByb3RlY3RlZCIsInJlYWRPbmx5Il0pO3RoaXMuYWNjZXNzS2V5PWUuYWNjZXNzS2V5fHwiIjt0aGlzLmFuY2hvclR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUuYW5jaG9yVHlwZSxbInRvcExlZnQiLCJib3R0b21DZW50ZXIiLCJib3R0b21MZWZ0IiwiYm90dG9tUmlnaHQiLCJtaWRkbGVDZW50ZXIiLCJtaWRkbGVMZWZ0IiwibWlkZGxlUmlnaHQiLCJ0b3BDZW50ZXIiLCJ0b3BSaWdodCJdKTt0aGlzLmNvbFNwYW49Z2V0SW50ZWdlcih7ZGF0YTplLmNvbFNwYW4sZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ZT49MXx8LTE9PT1lfSk7dGhpcy5oPWUuaD9nZXRNZWFzdXJlbWVudChlLmgpOiIiO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxvY2FsZT1lLmxvY2FsZXx8IiI7dGhpcy5tYXhIPWdldE1lYXN1cmVtZW50KGUubWF4SCwiMHB0Iik7dGhpcy5tYXhXPWdldE1lYXN1cmVtZW50KGUubWF4VywiMHB0Iik7dGhpcy5taW5IPWdldE1lYXN1cmVtZW50KGUubWluSCwiMHB0Iik7dGhpcy5taW5XPWdldE1lYXN1cmVtZW50KGUubWluVywiMHB0Iik7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMucm90YXRlPWdldEludGVnZXIoe2RhdGE6ZS5yb3RhdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZSU5MD09MH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnc9ZS53P2dldE1lYXN1cmVtZW50KGUudyk6IiI7dGhpcy54PWdldE1lYXN1cmVtZW50KGUueCwiMHB0Iik7dGhpcy55PWdldE1lYXN1cmVtZW50KGUueSwiMHB0Iik7dGhpcy5hc3Npc3Q9bnVsbDt0aGlzLmJpbmQ9bnVsbDt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5jYXB0aW9uPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZvbnQ9bnVsbDt0aGlzLmZvcm1hdD1udWxsO3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF
1015KDIpO3RoaXMua2VlcD1udWxsO3RoaXMubWFyZ2luPW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnVpPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsdWU9bnVsbDt0aGlzLmJpbmRJdGVtcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV2ZW50PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheX1beHNdKCl7cmV0dXJuITB9W3pzXShlKXtfc2V0VmFsdWUodGhpcyxlKX1bS3NdKGUpe3NldFRhYkluZGV4KHRoaXMpO2lmKCF0aGlzLnVpKXt0aGlzLnVpPW5ldyBVaSh7fSk7dGhpcy51aVtnc109dGhpc1tnc107dGhpc1tqbl0odGhpcy51aSk7bGV0IGU7c3dpdGNoKHRoaXMuaXRlbXMuY2hpbGRyZW4ubGVuZ3RoKXtjYXNlIDA6ZT1uZXcgVGV4dEVkaXQoe30pO3RoaXMudWkudGV4dEVkaXQ9ZTticmVhaztjYXNlIDE6ZT1uZXcgQ2hlY2tCdXR0b24oe30pO3RoaXMudWkuY2hlY2tCdXR0b249ZTticmVhaztjYXNlIDI6ZT1uZXcgQ2hvaWNlTGlzdCh7fSk7dGhpcy51aS5jaG9pY2VMaXN0PWV9dGhpcy51aVtqbl0oZSl9aWYoIXRoaXMudWl8fCJoaWRkZW4iPT09dGhpcy5wcmVzZW5jZXx8ImluYWN0aXZlIj09PXRoaXMucHJlc2VuY2V8fDA9PT10aGlzLmh8fDA9PT10aGlzLncpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7dGhpcy5jYXB0aW9uJiZkZWxldGUgdGhpcy5jYXB0aW9uW0puXTt0aGlzW19zXSgpO2NvbnN0IHQ9dGhpcy5jYXB0aW9uP3RoaXMuY2FwdGlvbltLc10oZSkuaHRtbDpudWxsLGE9dGhpcy53LHI9dGhpcy5oO2xldCBpPTAsbj0wO2lmKHRoaXMubWFyZ2luKXtpPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O249dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9bGV0IHM9bnVsbDtpZigiIj09PXR
101oaXMud3x8IiI9PT10aGlzLmgpe2xldCB0PW51bGwsYT1udWxsLHI9MCxvPTA7aWYodGhpcy51aS5jaGVja0J1dHRvbilyPW89dGhpcy51aS5jaGVja0J1dHRvbi5zaXplO2Vsc2V7Y29uc3R7dzp0LGg6YX09bGF5b3V0Tm9kZSh0aGlzLGUpO2lmKG51bGwhPT10KXtyPXQ7bz1hfWVsc2Ugbz1mdW5jdGlvbiBmb250c19nZXRNZXRyaWNzKGUsdD0hMSl7bGV0IGE9bnVsbDtpZihlKXtjb25zdCB0PXN0cmlwUXVvdGVzKGUudHlwZWZhY2UpLHI9ZVtnc10uZm9udEZpbmRlci5maW5kKHQpO2E9c2VsZWN0Rm9udChlLHIpfWlmKCFhKXJldHVybntsaW5lSGVpZ2h0OjEyLGxpbmVHYXA6MixsaW5lTm9HYXA6MTB9O2NvbnN0IHI9ZS5zaXplfHwxMCxpPWEubGluZUhlaWdodD9NYXRoLm1heCh0PzA6MS4yLGEubGluZUhlaWdodCk6MS4yLG49dm9pZCAwPT09YS5saW5lR2FwPy4yOmEubGluZUdhcDtyZXR1cm57bGluZUhlaWdodDppKnIsbGluZUdhcDpuKnIsbGluZU5vR2FwOk1hdGgubWF4KDEsaS1uKSpyfX0odGhpcy5mb250LCEwKS5saW5lTm9HYXB9cz1nZXRCb3JkZXJEaW1zKHRoaXMudWlbc3NdKCkpO3IrPXMudztvKz1zLmg7aWYodGhpcy5jYXB0aW9uKXtjb25zdHt3OmksaDpuLGlzQnJva2VuOnN9PXRoaXMuY2FwdGlvbltzc10oZSk7aWYocyYmdGhpc1t1c10oKVt2c10oKSl7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXQ9aTthPW47c3dpdGNoKHRoaXMuY2FwdGlvbi5wbGFjZW1lbnQpe2Nhc2UibGVmdCI6Y2FzZSJyaWdodCI6Y2FzZSJpbmxpbmUiOnQrPXI7YnJlYWs7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjphKz1vfX1lbHNle3Q9cjthPW99aWYodCYmIiI9PT10aGlzLncpe3QrPWk7dGhpcy53PU1hdGgubWluKHRoaXMubWF4Vzw9MD8xLzA6dGhpcy5tYXhXLHRoaXMubWluVysxPHQ/dDp0aGlzLm1pblcpfWlmKGEmJiIiPT09dGhpcy5oKXthKz1uO3RoaXMuaD1NYXRoLm1pbih0aGlzLm1heEg8PTA/MS8wOnRoaXMubWF4SCx0aGlzLm1pbkgrMTxhP2E6dGhpcy5taW5IKX19dGhpc1tMc10oKTtmaXhEaW1lbnNpb25zKHRoaXMpO3NldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSl7dGhpcy53PWE7dGhpcy5oPXI7dGhpc1tMc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFfXVuc2V0Rmlyc3RVbnNwbGl0dGFibGUodGhpcyk7Y29uc3Qgbz10b1N0eWxlKHRoaXMsImZvbnQiLCJkaW1lbnNpb25zIiwicG9zaXRpb24iLCJyb3RhdGUiLCJhbmNob3JUeXBlIiwicHJlc2VuY2UiLCJtYXJnaW4iLCJoQWxpZ24iKTtzZXRNaW5NYXhEaW1lbnNpb25zKHRoaXMsbyk7Y29uc3QgYz1bInhmYUZpZWxkIl07dGhpcy5mb250JiZjLnB1c2goInhmYUZvbnQiKTtpc1ByaW50T25seSh0aGlzKSYmYy5wdXNoKCJ4ZmFQcmludE9ubHkiKTtjb25zdCBsPXtzdHlsZTpvLGlkOnRoaXNbWnNdLGNsYXNzOmN9O2lmKG8ubWFyZ2luKXtvLnBhZGRpbmc9by5tYXJnaW47ZGVsZXRlIG8ubWFyZ2lufXNldEFjY2Vzcyh0aGlzLGMpO3RoaXMubmFtZSYmKGwueGZhTmFtZT10aGlzLm5hbWUpO2NvbnN0IGg9W10sdT17bmFtZToiZGl2IixhdHRyaWJ1dGVzOmwsY2hpbGRyZW46aH07YXBwbHlBc3Npc3QodGhpcyxsKTtjb25zdCBkPXRoaXMuYm9yZGVyP3RoaXMuYm9yZGVyW1lzXSgpOm51bGwsZj1jb21wdXRlQmJveCh0aGlzLHUsZSksZz10aGlzLnVpW0tzXSgpLmh0bWw7aWYoIWcpe09iamVjdC5hc3NpZ24obyxkKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyx1KSxmKX10aGlzWyRzXSYmKGcuY2hpbGRyZW4/LlswXT9nLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXMudGFiaW5kZXg9dGhpc1skc106Zy5hdHRyaWJ1dGVzLnRhYmluZGV4PXRoaXNbJHNdKTtnLmF0dHJpYnV0ZXMuc3R5bGV8fD1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBwPW51bGw7aWYodGhpcy51aS5idXR0b24pezE9PT1nLmNoaWxkcmVuLmxlbmd0aCYmKFtwXT1nLmNoaWxkcmVuLnNwbGljZSgwLDEpKTtPYmplY3QuYXNzaWduKGcuYXR0cmlidXRlcy5zdHlsZSxkKX1lbHNlIE9iamVjdC5hc3NpZ24obyxkKTtoLnB1c2goZyk7aWYodGhpcy52YWx1ZSlpZih0aGlzLnVpLmltYWdlRWRpdClnLmNoaWxkcmVuLnB1c2godGhpcy52YWx1ZVtLc10oKS5odG1sKTtlbHNlIGlmKCF0aGlzLnVpLmJ1dHRvbil7bGV0IGU9IiI7aWYodGhpcy52YWx1ZS5leERhdGEpZT10aGlzLnZhbHVlLmV4RGF0YVtHc10oKTtlbHNlIGlmKHRoaXMudmFsdWUudGV4dCllPXRoaXMudmFsdWUudGV4dFtzc10oKTtlbHNle2NvbnN0IHQ9dGhpcy52YWx1ZVtLc10oKS5odG1sO251bGwhPT10JiYoZT10LmNoaWxkcmVuWzBdLnZhbHVlKX10aGlzLnVpLnRleHRFZGl0JiZ0aGlzLnZhbHVlLnRleHQ/Lm1heENoYXJzJiYoZy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLm1heExlbmd0aD10aGlzLnZhbHVlLnRleHQubWF4Q2hhcnMpO2lmKGUpe2lmKHRoaXMudWkubnVtZXJpY0VkaXQpe2U9cGFyc2VGbG9hdChlKTtlPWlzTmFOKGUpPyIiOmUudG9TdHJpbmcoKX0idGV4dGFyZWEiPT09Zy5jaGlsZHJlblswXS5uYW1lP2cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy50ZXh0Q29udGVudD1lOmcuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy52YWx1ZT1lfX1pZighdGhpcy51aS5pbWFnZUVkaXQmJmcuY2hpbGRyZW4/LlswXSYmdGhpcy5oKXtzPXN8fGdldEJvcmRlckRpbXModGhpcy51aVtzc10oKSk7bGV0IHQ9MDtpZih0aGlzLmNhcHRpb24mJlsidG9wIiwiYm90dG9tIl0uaW5jbHVkZXModGhpcy5jYXB0aW9uLnBsYWNlbWVudCkpe3Q9dGhpcy5jYXB0aW9uLnJlc2VydmU7dDw9MCYmKHQ9dGhpcy5jYXB0aW9uW3NzXShlKS5oKTtjb25zdCBhPXRoaXMuaC10LW4tcy5oO2cuY2hpbGRyZW5bMF0uYXR0cmlidXRlcy5zdHlsZS5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKGEpfWVsc2UgZy5jaGlsZHJlblswXS5hdHRyaWJ1dGVzLnN0eWxlLmhlaWdodD0iMTAwJSJ9cCYmZy5jaGlsZHJlbi5wdXNoKHApO2lmKCF0KXtnLmF0dHJpYnV0ZXMuY2xhc3MmJmcuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFMZWZ0Iik7dGhpcy53PWE7dGhpcy5oPXI7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhjcmVhdGVXcmFwcGVyKHRoaXMsdSksZil9aWYodGhpcy51aS5idXR0b24pe28ucGFkZGluZyYmZGVsZXRlIG8ucGFkZGluZzsiZGl2Ij09PXQubmFtZSYmKHQubmFtZT0ic3BhbiIpO2cuY2hpbGRyZW4ucHVzaCh0KTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHUsZil9dGhpcy51aS5jaGVja0J1dHRvbiYmKHQuYXR0cmlidXRlcy5jbGFzc1swXT0ieGZhQ2FwdGlvbkZvckNoZWNrQnV0dG9uIik7Zy5hdHRyaWJ1dGVzLmNsYXNzfHw9W107Zy5jaGlsZHJlbi5zcGxpY2UoMCwwLHQpO3N3aXRjaC
101h0aGlzLmNhcHRpb24ucGxhY2VtZW50KXtjYXNlImxlZnQiOmNhc2UiaW5saW5lIjpnLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhTGVmdCIpO2JyZWFrO2Nhc2UicmlnaHQiOmcuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFSaWdodCIpO2JyZWFrO2Nhc2UidG9wIjpnLmF0dHJpYnV0ZXMuY2xhc3MucHVzaCgieGZhVG9wIik7YnJlYWs7Y2FzZSJib3R0b20iOmcuYXR0cmlidXRlcy5jbGFzcy5wdXNoKCJ4ZmFCb3R0b20iKX10aGlzLnc9YTt0aGlzLmg9cjtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyx1KSxmKX19Y2xhc3MgRmlsbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZmlsbCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmVzZW5jZT1nZXRTdHJpbmdPcHRpb24oZS5wcmVzZW5jZSxbInZpc2libGUiLCJoaWRkZW4iLCJpbmFjdGl2ZSIsImludmlzaWJsZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5jb2xvcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5saW5lYXI9bnVsbDt0aGlzLnBhdHRlcm49bnVsbDt0aGlzLnJhZGlhbD1udWxsO3RoaXMuc29saWQ9bnVsbDt0aGlzLnN0aXBwbGU9bnVsbH1bWXNdKCl7Y29uc3QgZT10aGlzW2RzXSgpLHQ9ZVtkc10oKVtkc10oKSxhPU9iamVjdC5jcmVhdGUobnVsbCk7bGV0IHI9ImNvbG9yIixpPXI7aWYoZSBpbnN0YW5jZW9mIEJvcmRlcil7cj0iYmFja2dyb3VuZC1jb2xvciI7aT0iYmFja2dyb3VuZCI7dCBpbnN0YW5jZW9mIFVpJiYoYS5iYWNrZ3JvdW5kQ29sb3I9IndoaXRlIil9aWYoZSBpbnN0YW5jZW9mIFJlY3RhbmdsZXx8ZSBpbnN0YW5jZW9mIEFyYyl7cj1pPSJmaWxsIjthLmZpbGw9IndoaXRlIn1mb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImV4dHJhcyI9PT1lfHwiY29sb3IiPT09ZSljb250aW51ZTtjb25zdCB0PXRoaXNbZV07aWYoISh0IGluc3RhbmNlb2YgWEZBT2JqZWN0KSljb250aW51ZTtjb25zdCBuPXRbWXNdKHRoaXMuY29sb3IpO24mJihhW24uc3RhcnRzV2l0aCgiIyIpP3I6aV09bik7cmV0dXJuIGF9aWYodGhpcy5jb2xvcj8udmFsdWUpe2NvbnN0IGU9dGhpcy5jb2xvcltZc10oKTthW2Uuc3RhcnRzV2l0aCgiIyIpP3I6aV09ZX1yZXR1cm4gYX19Y2xhc3MgRmlsdGVyIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJmaWx0ZXIiLCEwKTt0aGlzLmFkZFJldm9jYXRpb25JbmZvPWdldFN0cmluZ09wdGlvbihlLmFkZFJldm9jYXRpb25JbmZvLFsiIiwicmVxdWlyZWQiLCJvcHRpb25hbCIsIm5vbmUiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52ZXJzaW9uPWdldEludGVnZXIoe2RhdGE6dGhpcy52ZXJzaW9uLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmU9PmU+PTEmJmU8PTV9KTt0aGlzLmFwcGVhcmFuY2VGaWx0ZXI9bnVsbDt0aGlzLmNlcnRpZmljYXRlcz1udWxsO3RoaXMuZGlnZXN0TWV0aG9kcz1udWxsO3RoaXMuZW5jb2RpbmdzPW51bGw7dGhpcy5lbmNyeXB0aW9uTWV0aG9kcz1udWxsO3RoaXMuaGFuZGxlcj1udWxsO3RoaXMubG9ja0RvY3VtZW50PW51bGw7dGhpcy5tZHA9bnVsbDt0aGlzLnJlYXNvbnM9bnVsbDt0aGlzLnRpbWVTdGFtcD1udWxsfX1jbGFzcyBGbG9hdCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImZsb2F0Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W1luXSgpe2NvbnN0IGU9cGFyc2VGbG9hdCh0aGlzW0duXS50cmltKCkpO3RoaXNbR25dPWlzTmFOKGUpP251bGw6ZX1bS3NdKGUpe3JldHVybiB2YWx1ZVRvSHRtbChudWxsIT09dGhpc1tHbl0/dGhpc1tHbl0udG9TdHJpbmcoKToiIil9fWNsYXNzIHRlbXBsYXRlX0ZvbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImZvbnQiLCEwKTt0aGlzLmJhc2VsaW5lU2hpZnQ9Z2V0TWVhc3VyZW1lbnQoZS5iYXNlbGluZVNoaWZ0KTt0aGlzLmZvbnRIb3Jpem9udGFsU2NhbGU9Z2V0RmxvYXQoe2RhdGE6ZS5mb250SG9yaXpvbnRhbFNjYWxlLGRlZmF1bHRWYWx1ZToxMDAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuZm9udFZlcnRpY2FsU2NhbGU9Z2V0RmxvYXQoe2RhdGE6ZS5mb250VmVydGljYWxTY2FsZSxkZWZhdWx0VmFsdWU6MTAwLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMua2VybmluZ01vZGU9Z2V0U3RyaW5nT3B0aW9uKGUua2VybmluZ01vZGUsWyJub25lIiwicGFpciJdKTt0aGlzLmxldHRlclNwYWNpbmc9Z2V0TWVhc3VyZW1lbnQoZS5sZXR0ZXJTcGFjaW5nLCIwIik7dGhpcy5saW5lVGhyb3VnaD1nZXRJbnRlZ2VyKHtkYXRhOmUubGluZVRocm91Z2gsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5saW5lVGhyb3VnaFBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS5saW5lVGhyb3VnaFBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5vdmVybGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUub3ZlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy5vdmVybGluZVBlcmlvZD1nZXRTdHJpbmdPcHRpb24oZS5vdmVybGluZVBlcmlvZCxbImFsbCIsIndvcmQiXSk7dGhpcy5wb3N0dXJlPWdldFN0cmluZ09wdGlvbihlLnBvc3R1cmUsWyJub3JtYWwiLCJpdGFsaWMiXSk7dGhpcy5zaXplPWdldE1lYXN1cmVtZW50KGUuc2l6ZSwiMTBwdCIpO3RoaXMudHlwZWZhY2U9ZS50eXBlZmFjZXx8IkNvdXJpZXIiO3RoaXMudW5kZXJsaW5lPWdldEludGVnZXIoe2RhdGE6ZS51bmRlcmxpbmUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV8fDI9PT1lfSk7dGhpcy51bmRlcmxpbmVQZXJpb2Q9Z2V0U3RyaW5nT3B0aW9uKGUudW5kZXJsaW5lUGVyaW9kLFsiYWxsIiwid29yZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53ZWlnaHQ9Z2V0U3RyaW5nT3B0aW9uKGUud2VpZ2h0LFsibm9ybWFsIiwiYm9sZCJdKTt0aGlzLmV4dHJhcz1udWxsO3RoaXMuZmlsbD1udWxsfVtxbl0oZSl7c3VwZXJbcW5dKGUpO3RoaXNbZ3NdLnVzZWRUeXBlZmFjZXMuYWRkKHRoaXMudHlwZWZhY2UpfVtZc10oKXtjb25zdCBlPXRvU3R5bGUodGhpcywiZmlsbCIpLHQ9ZS5jb2xvcjtpZih0KWlmKCIjMDAwMDAwIj09PXQpZGVsZXRlIGUuY29sb3I7ZWxzZSBpZighdC5zdGFydHNXaXRoKCIjIikpe2UuYmFja2dyb3VuZD10O2UuYmFja2dyb3VuZENsaXA9InRleHQiO2UuY29sb3I9InRyYW5zcGFyZW50In10aGlzLmJhc2VsaW5lU2hpZnQmJihlLnZlcnRpY2FsQWxpZ249bWVhc3VyZVRvU3RyaW5nKHRoaXMuYmFzZWxpbmVTaGlmdCkpO2UuZm9udEtlcm5pbmc9Im5vbmUiPT09dGhpcy5rZXJuaW5nTW9kZT8ibm9uZSI6Im5vcm1hbCI7ZS5sZXR0ZXJTcGFjaW5nPW1lYXN1cmVUb1N0cmluZyh0aGlzLmxldHRlclNwYWNpbmcpO2lmKDAhPT10aGlzLmxpbmVUaHJvdWdoKXtlLnRleHREZWNvcmF0aW9uPSJsaW5lLXRocm91Z2giOzI9PT10aGlzLmxpbmVUaHJvdWdoJiYo
101ZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1pZigwIT09dGhpcy5vdmVybGluZSl7ZS50ZXh0RGVjb3JhdGlvbj0ib3ZlcmxpbmUiOzI9PT10aGlzLm92ZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRTdHlsZT10aGlzLnBvc3R1cmU7ZS5mb250U2l6ZT1tZWFzdXJlVG9TdHJpbmcoLjk5KnRoaXMuc2l6ZSk7c2V0Rm9udEZhbWlseSh0aGlzLHRoaXMsdGhpc1tnc10uZm9udEZpbmRlcixlKTtpZigwIT09dGhpcy51bmRlcmxpbmUpe2UudGV4dERlY29yYXRpb249InVuZGVybGluZSI7Mj09PXRoaXMudW5kZXJsaW5lJiYoZS50ZXh0RGVjb3JhdGlvblN0eWxlPSJkb3VibGUiKX1lLmZvbnRXZWlnaHQ9dGhpcy53ZWlnaHQ7cmV0dXJuIGV9fWNsYXNzIEZvcm1hdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiZm9ybWF0IiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbH19Y2xhc3MgSGFuZGxlciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiaGFuZGxlciIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgSHlwaGVuYXRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImh5cGhlbmF0aW9uIik7dGhpcy5leGNsdWRlQWxsQ2Fwcz1nZXRJbnRlZ2VyKHtkYXRhOmUuZXhjbHVkZUFsbENhcHMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmV4Y2x1ZGVJbml0aWFsQ2FwPWdldEludGVnZXIoe2RhdGE6ZS5leGNsdWRlSW5pdGlhbENhcCxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaHlwaGVuYXRlPWdldEludGVnZXIoe2RhdGE6ZS5oeXBoZW5hdGUsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucHVzaENoYXJhY3RlckNvdW50PWdldEludGVnZXIoe2RhdGE6ZS5wdXNoQ2hhcmFjdGVyQ291bnQsZGVmYXVsdFZhbHVlOjMsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucmVtYWluQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLnJlbWFpbkNoYXJhY3RlckNvdW50LGRlZmF1bHRWYWx1ZTozLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy53b3JkQ2hhcmFjdGVyQ291bnQ9Z2V0SW50ZWdlcih7ZGF0YTplLndvcmRDaGFyYWN0ZXJDb3VudCxkZWZhdWx0VmFsdWU6Nyx2YWxpZGF0ZTplPT5lPj0wfSl9fWNsYXNzIEltYWdlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJpbWFnZSIpO3RoaXMuYXNwZWN0PWdldFN0cmluZ09wdGlvbihlLmFzcGVjdCxbImZpdCIsImFjdHVhbCIsImhlaWdodCIsIm5vbmUiLCJ3aWR0aCJdKTt0aGlzLmNvbnRlbnRUeXBlPWUuY29udGVudFR5cGV8fCIiO3RoaXMuaHJlZj1lLmhyZWZ8fCIiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy50cmFuc2ZlckVuY29kaW5nPWdldFN0cmluZ09wdGlvbihlLnRyYW5zZmVyRW5jb2RpbmcsWyJiYXNlNjQiLCJub25lIiwicGFja2FnZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W0tzXSgpe2lmKHRoaXMuY29udGVudFR5cGUmJiFMby5oYXModGhpcy5jb250ZW50VHlwZS50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtsZXQgZT10aGlzW2dzXS5pbWFnZXM/LmdldCh0aGlzLmhyZWYpO2lmKCFlJiYodGhpcy5ocmVmfHwhdGhpc1tHbl0pKXJldHVybiBIVE1MUmVzdWx0LkVNUFRZO2V8fCJiYXNlNjQiIT09dGhpcy50cmFuc2ZlckVuY29kaW5nfHwoZT1mdW5jdGlvbiBmcm9tQmFzZTY0VXRpbChlKXtyZXR1cm4gVWludDhBcnJheS5mcm9tQmFzZTY0P1VpbnQ4QXJyYXkuZnJvbUJhc2U2NChlKTpzdHJpbmdUb0J5dGVzKGF0b2IoZSkpfSh0aGlzW0duXSkpO2lmKCFlKXJldHVybi
101BIVE1MUmVzdWx0LkVNUFRZO2lmKCF0aGlzLmNvbnRlbnRUeXBlKXtmb3IoY29uc3RbdCxhXW9mIF9vKWlmKGUubGVuZ3RoPnQubGVuZ3RoJiZ0LmV2ZXJ5KCh0LGEpPT50PT09ZVthXSkpe3RoaXMuY29udGVudFR5cGU9YTticmVha31pZighdGhpcy5jb250ZW50VHlwZSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWX1jb25zdCB0PW5ldyBCbG9iKFtlXSx7dHlwZTp0aGlzLmNvbnRlbnRUeXBlfSk7bGV0IGE7c3dpdGNoKHRoaXMuYXNwZWN0KXtjYXNlImZpdCI6Y2FzZSJhY3R1YWwiOmJyZWFrO2Nhc2UiaGVpZ2h0IjphPXtoZWlnaHQ6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9O2JyZWFrO2Nhc2Uibm9uZSI6YT17d2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsb2JqZWN0Rml0OiJmaWxsIn07YnJlYWs7Y2FzZSJ3aWR0aCI6YT17d2lkdGg6IjEwMCUiLG9iamVjdEZpdDoiZmlsbCJ9fWNvbnN0IHI9dGhpc1tkc10oKTtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJpbWciLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhSW1hZ2UiXSxzdHlsZTphLHNyYzpVUkwuY3JlYXRlT2JqZWN0VVJMKHQpLGFsdDpyP2FyaWFMYWJlbChyW2RzXSgpKTpudWxsfX0pfX1jbGFzcyBJbWFnZUVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sImltYWdlRWRpdCIsITApO3RoaXMuZGF0YT1nZXRTdHJpbmdPcHRpb24oZS5kYXRhLFsibGluayIsImVtYmVkIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1hcmdpbj1udWxsfVtLc10oZSl7cmV0dXJuImVtYmVkIj09PXRoaXMuZGF0YT9IVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W10sYXR0cmlidXRlczp7fX0pOkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIEludGVnZXIgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJpbnRlZ2VyIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W1luXSgpe2NvbnN0IGU9cGFyc2VJbnQodGhpc1tHbl0udHJpbSgpLDEwKTt0aGlzW0duXT1pc05hTihlKT9udWxsOmV9W0tzXShlKXtyZXR1cm4gdmFsdWVUb0h0bWwobnVsbCE9PXRoaXNbR25dP3RoaXNbR25dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBJc3N1ZXJzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJpc3N1ZXJzIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF
1015fX1jbGFzcyBJdGVtcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywiaXRlbXMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucHJlc2VuY2U9Z2V0U3RyaW5nT3B0aW9uKGUucHJlc2VuY2UsWyJ2aXNpYmxlIiwiaGlkZGVuIiwiaW5hY3RpdmUiLCJpbnZpc2libGUiXSk7dGhpcy5yZWY9ZS5yZWZ8fCIiO3RoaXMuc2F2ZT1nZXRJbnRlZ2VyKHtkYXRhOmUuc2F2ZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvb2xlYW49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZGF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlVGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbWFnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9W0tzXSgpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgdGhpc1tjc10oKSllLnB1c2godFtHc10oKSk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2VzcyhlKX19Y2xhc3MgS2VlcCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywia2VlcCIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7Y29uc3QgdD1bIm5vbmUiLCJjb250ZW50QXJlYSIsInBhZ2VBcmVhIl07dGhpcy5pbnRhY3Q9Z2V0U3RyaW5nT3B0aW9uKGUuaW50YWN0LHQpO3RoaXMubmV4dD1nZXRTdHJpbmdPcHRpb24oZS5uZXh0LHQpO3RoaXMucHJldmlvdXM9Z2V0U3RyaW5nT3B0aW9uKGUucHJldmlvdXMsdCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9fWNsYXNzIEtleVVzYWdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJrZXlVc2FnZSIpO2NvbnN0IHQ9WyIiLCJ5ZXMiLCJubyJdO3RoaXMuY3JsU2lnbj1nZXRTdHJpbmdPcHRpb24oZS5jcmxTaWduLHQpO3RoaXMuZGF0YUVuY2lwaGVybWVudD1nZXRTdHJpbmdPcHRpb24oZS5kYXRhRW5jaXBoZXJtZW50LHQpO3RoaXMuZGVjaXBoZXJPbmx5PWdldFN0cmluZ09wdGlvbihlLmRlY2lwaGVyT25seSx0KTt0aGlzLmRpZ2l0YWxTaWduYXR1cmU9Z2V0U3RyaW5nT3B0aW9uKGUuZGlnaXRhbFNpZ25hdHVyZSx0KTt0aGlzLmVuY2lwaGVyT25seT1nZXRTdHJpbmdPcHRpb24oZS5lbmNpcGhlck9ubHksdCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmtleUFncmVlbWVudD1nZXRTdHJpbmdPcHRpb24oZS5rZXlBZ3JlZW1lbnQsdCk7dGhpcy5rZXlDZXJ0U2lnbj1nZXRTdHJpbmdPcHRpb24oZS5rZXlDZXJ0U2lnbix0KTt0aGlzLmtleUVuY2lwaGVybWVudD1nZXRTdHJpbmdPcHRpb24oZS5rZXlFbmNpcGhlcm1lbnQsdCk7dGhpcy5ub25SZXB1ZGlhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5ub25SZXB1ZGlhdGlvbix0KTt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBMaW5lIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJsaW5lIiwhMCk7dGhpcy5oYW5kPWdldFN0cmluZ09wdGlvbihlLmhhbmQsWyJldmVuIiwibGVmdCIsInJpZ2h0Il0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zbG9wZT1nZXRTdHJpbmdPcHRpb24oZS5zbG9wZSxbIlxcIiwiLyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5lZGdlPW51bGx9W0tzXSgpe2NvbnN0IGU9dGhpc1tkc10oKVtkc10oKSx0PXRoaXMuZWRnZXx8bmV3IEVkZ2Uoe30pLGE9dFtZc10oKSxyPU9iamVjdC5jcmVhdGUobnVsbCksaT0idmlzaWJsZSI9PT10LnByZXNlbmNlP3QudGhpY2tuZXNzOjA7ci5zdHJva2VXaWR0aD1tZWFzdXJlVG9TdHJpbmcoaSk7ci5zdHJva2U9YS5jb2xvcjtsZXQgbixzLG8sYyxsPSIxMDAlIixoPSIxMDAlIjtpZihlLnc8PWkpe1tuLHMsbyxjXT1bIjUwJSIsMCwiNTAlIiwiMTAwJSJdO2w9ci5zdHJva2VXaWR0aH1lbHNlIGlmKGUuaDw9aSl7W24scyxvLGNdPVswLCI1MCUiLCIxMDAlIiwiNTAlIl07aD1yLnN0cm9rZVdpZHRofWVsc2UiXFwiPT09dGhpcy5zbG9wZT9bbixzLG8sY109WzAsMCwiMTAwJSIsIjEwMCUiXTpbbixzLG8sY109WzAsIjEwMCUiLCIxMDAlIiwwXTtjb25zdCB1PXtuYW1lOiJzdmciLGNoaWxkcmVuOlt7bmFtZToibGluZSIsYXR0cmlidXRlczp7eG1sbnM6UG8seDE6bix5MTpzLHgyOm8seTI6YyxzdHlsZTpyfX1dLGF0dHJpYnV0ZXM6e3htbG5zOlBvLHdpZHRoOmwsaGVpZ2h0Omgsc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn19fTtpZihoYXNNYXJnaW4oZSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOlt1XX0pO3UuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3ModSl9fWNsYXNzIExpbmVhciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywibGluZWFyIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbInRvUmlnaHQiLCJ0b0JvdHRvbSIsInRvTGVmdCIsInRvVG9wIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bWXNdKGUpe2U9ZT9lW1lzXSgpOiIjRkZGRkZGIjtyZXR1cm5gbGluZWFyLWdyYWRpZW50KCR7dGhpcy50eXBlLnJlcGxhY2UoLyhbUkJMVF0pLywiICQxIikudG9Mb3dlckNhc2UoKX0sICR7ZX0sICR7dGhpcy5jb2xvcj90aGlzLmNvbG9yW
1011lzXSgpOiIjMDAwMDAwIn0pYH19Y2xhc3MgTG9ja0RvY3VtZW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywibG9ja0RvY3VtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtZbl0oKXt0aGlzW0duXT1nZXRTdHJpbmdPcHRpb24odGhpc1tHbl0sWyJhdXRvIiwiMCIsIjEiXSl9fWNsYXNzIE1hbmlmZXN0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJtYW5pZmVzdCIsITApO3RoaXMuYWN0aW9uPWdldFN0cmluZ09wdGlvbihlLmFjdGlvbixbImluY2x1ZGUiLCJhbGwiLCJleGNsdWRlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5yZWY9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBNYXJnaW4gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sIm1hcmdpbiIsITApO3RoaXMuYm90dG9tSW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5ib3R0b21JbnNldCwiMCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWZ0SW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5sZWZ0SW5zZXQsIjAiKTt0aGlzLnJpZ2h0SW5zZXQ9Z2V0TWVhc3VyZW1lbnQoZS5yaWdodEluc2V0LCIwIik7dGhpcy50b3BJb
101nNldD1nZXRNZWFzdXJlbWVudChlLnRvcEluc2V0LCIwIik7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W1lzXSgpe3JldHVybnttYXJnaW46bWVhc3VyZVRvU3RyaW5nKHRoaXMudG9wSW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5yaWdodEluc2V0KSsiICIrbWVhc3VyZVRvU3RyaW5nKHRoaXMuYm90dG9tSW5zZXQpKyIgIittZWFzdXJlVG9TdHJpbmcodGhpcy5sZWZ0SW5zZXQpfX19Y2xhc3MgTWRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJtZHAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucGVybWlzc2lvbnM9Z2V0SW50ZWdlcih7ZGF0YTplLnBlcm1pc3Npb25zLGRlZmF1bHRWYWx1ZToyLHZhbGlkYXRlOmU9PjE9PT1lfHwzPT09ZX0pO3RoaXMuc2lnbmF0dXJlVHlwZT1nZXRTdHJpbmdPcHRpb24oZS5zaWduYXR1cmVUeXBlLFsiZmlsbGVyIiwiYXV0aG9yIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgTWVkaXVtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJtZWRpdW0iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW1hZ2luZ0JCb3g9ZnVuY3Rpb24gZ2V0QkJveChlKXtjb25zdCB0PS0xO2lmKCFlKXJldHVybnt4OnQseTp0LHdpZHRoOnQsaGVpZ2h0OnR9O2NvbnN0IGE9ZS5zcGxpdCgiLCIsNCkubWFwKGU9PmdldE1lYXN1cmVtZW50KGUudHJpbSgpLCItMSIpKTtpZihhLmxlbmd0aDw0fHxhWzJdPDB8fGFbM108MClyZXR1cm57eDp0LHk6dCx3aWR0aDp0LGhlaWdodDp0fTtjb25zdFtyLGksbixzXT1hO3JldHVybnt4OnIseTppLHdpZHRoOm4saGVpZ2h0OnN9fShlLmltYWdpbmdCQm94KTt0aGlzLmxvbmc9Z2V0TWVhc3VyZW1lbnQoZS5sb25nKTt0aGlzLm9yaWVudGF0aW9uPWdldFN0cmluZ09wdGlvbihlLm9yaWVudGF0aW9uLFsicG9ydHJhaXQiLCJsYW5kc2NhcGUiXSk7dGhpcy5zaG9ydD1nZXRNZWFzdXJlbWVudChlLnNob3J0KTt0aGlzLnN0b2NrPWUuc3RvY2t8fCIiO3RoaXMudHJheUluPWdldFN0cmluZ09wdGlvbihlLnRyYXlJbixbImF1dG8iLCJkZWxlZ2F0ZSIsInBhZ2VGcm9udCJdKTt0aGlzLnRyYXlPdXQ9Z2V0U3RyaW5nT3B0aW9uKGUudHJheU91dCxbImF1dG8iLCJkZWxlZ2F0ZSJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sIm1lc3NhZ2UiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF
1015fX1jbGFzcyBOdW1lcmljRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywibnVtZXJpY0VkaXQiLCEwKTt0aGlzLmhTY3JvbGxQb2xpY3k9Z2V0U3RyaW5nT3B0aW9uKGUuaFNjcm9sbFBvbGljeSxbImF1dG8iLCJvZmYiLCJvbiJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuY29tYj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH1bS3NdKGUpe2NvbnN0IHQ9dG9TdHlsZSh0aGlzLCJib3JkZXIiLCJmb250IiwibWFyZ2luIiksYT10aGlzW2RzXSgpW2RzXSgpLHI9e25hbWU6ImlucHV0IixhdHRyaWJ1dGVzOnt0eXBlOiJ0ZXh0IixmaWVsZElkOmFbWnNdLGRhdGFJZDphW1ZuXT8uW1pzXXx8YVtac10sY2xhc3M6WyJ4ZmFUZXh0ZmllbGQiXSxzdHlsZTp0LCJhcmlhLWxhYmVsIjphcmlhTGFiZWwoYSksImFyaWEtcmVxdWlyZWQiOiExfX07aWYoaXNSZXF1aXJlZChhKSl7ci5hdHRyaWJ1dGVzWyJhcmlhLXJlcXVpcmVkIl09ITA7ci5hdHRyaWJ1dGVzLnJlcXVpcmVkPSEwfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImxhYmVsIixhdHRyaWJ1dGVzOntjbGFzczpbInhmYUxhYmVsIl19LGNoaWxkcmVuOltyXX0pfX1jbGFzcyBPY2N1ciBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywib2NjdXIiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5pdGlhbD0iIiE9PWUuaW5pdGlhbD9nZXRJbnRlZ2VyKHtkYXRhOmUuaW5pdGlhbCxkZWZhdWx0VmFsdWU6IiIsdmFsaWRhdGU6ZT0+ITB9KToiIjt0aGlzLm1heD0iIiE9PWUubWF4P2dldEludGVnZXIoe2RhdGE6ZS5tYXgsZGVmYXVsdFZhbHVlOi0xLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy5taW49IiIhPT1lLm1pbj9nZXRJbnRlZ2VyKHtkYXRhOmUubWluLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk6IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZXh0cmFzPW51bGx9W3FuXSgpe2NvbnN0IGU9dGhpc1tkc10oKSx0PXRoaXMubWluOyIiPT09dGhpcy5taW4mJih0aGlzLm1pbj1lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0PzA6MSk7IiI9PT10aGlzLm1heCYmKHRoaXMubWF4PSIiPT09dD9lIGluc3RhbmNlb2YgUGFnZUFyZWF8fGUgaW5zdGFuY2VvZiBQYWdlU2V0Py0xOjE6dGhpcy5taW4pOy0xIT09dGhpcy5tYXgmJnRoaXMubWF4PHRoaXMubWluJiYodGhpcy5tYXg9dGhpcy5taW4pOyIiPT09dGhpcy5pbml0aWFsJiYodGhpcy5pbml0aWFsPWUgaW5zdGFuY2VvZiBUZW1wbGF0ZT8xOnRoaXMubWluKX19Y2xhc3MgT2lkIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJvaWQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgT2lkcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywib2lkcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLm9pZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE92ZXJmbG93IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJvdmVyZmxvdyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5sZWFkZXI9ZS5sZWFkZXJ8fCIiO3RoaXMudGFyZ2V0PWUudGFyZ2V0fHwiIjt0aGlzLnRyYWlsZXI9ZS50cmFpbGVyfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9W3NzXSgpe2lmKCF0aGlzW0puXSl7Y29uc3QgZT10aGlzW2RzXSgpLHQ9dGhpc1tmc10oKSxhPXRbcXNdKHRoaXMudGFyZ2V0LGUpLHI9dFtxc10odGhpcy5sZWFkZXIsZSksaT10W3FzXSh0aGlzLnRyYWlsZXIsZSk7dGhpc1tKbl09e3RhcmdldDphPy5bMF18fG51bGwsbGVhZGVyOnI/LlswXXx8bnVsbCx0cmFpbGVyOmk/LlswXXx8bnVsbCxhZGRMZWFkZXI6ITEsYWRkVHJhaWxlcjohMX19cmV0dXJuIHRoaXNbSm5dfX1jbGFzcyBQYWdlQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywicGFnZUFyZWEiLCEwKTt0aGlzLmJsYW5rT3JOb3RCbGFuaz1nZXRTdHJpbmdPcHRpb24oZS5ibGFua09yTm90QmxhbmssWyJhbnkiLCJibGFuayIsIm5vdEJsYW5rIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5pbml0aWFsTnVtYmVyPWdldEludGVnZXIoe2RhdGE6ZS5pbml0aWFsTnVtYmVyLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PiEwfSk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5udW1iZXJlZD1nZXRJbnRlZ2VyKHtkYXRhOmUubnVtYmVyZWQsZGVmYXVsdFZhbHVlOjEsdmFsaWRhdGU6ZT0+ITB9KTt0aGlzLm9kZE9yRXZlbj1nZXRTdHJpbmdPcHRpb24oZS5vZGRPckV2ZW4sWyJhbnkiLCJldmVuIiwib2RkIl0pO3RoaXMucGFnZVBvc2l0aW9uPWdldFN0cmluZ09wdGlvbihlLnBhZ2VQb3NpdGlvbixbImFueSIsImZpcnN0IiwibGFzdCIsIm9ubHkiLCJyZXN0Il0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZGVzYz1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tZWRpdW09bnVsbDt0aGlzLm9jY3VyPW51bGw7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbnRlbnRBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5fVtJc10oKXtpZighdGhpc1tKbl0pe3RoaXNbSm5dPXtudW1iZXJPZlVzZTowfTtyZXR1cm4hMH1yZXR1cm4hdGhpcy5vY2N1cnx8LTE9PT10aGlzLm9jY3VyLm1heHx8dGhpc1tKbl0ubnVtYmVyT2ZVc2U8dGhpcy5vY2N1ci5tYXh9W0huXSgpe2RlbGV0ZSB0aGlzW0puXX1baHNdKCl7dGhpc1tKbl18fD17bnVtYmVyT2ZVc2U6MH07Y29uc3QgZT10aGlzW2RzXSgpO2lmKCJvcmRlcmVkT2NjdXJyZW5jZSI9PT1lLnJlbGF0aW9uJiZ0aGlzW0lzXSgpKXt0aGlzW0puXS5udW1iZXJPZlVzZSs9MTtyZXR1cm4gdGhpc31yZXR1cm4gZVtoc10oKX1bdHNdKCl7cmV0dXJuIHRoaXNbSm5dLnNwYWNlfHx7d2lkdGg6MCxoZWlnaHQ6MH19W0tzXSgpe3RoaXNbSm5dfHw9e251bWJlck9mVXNlOjF9O2NvbnN0IGU9W107dGhpc1tKbl0uY2hpbGRyZW49ZTtjb25zdCB0PU9iamVjdC5jcmVhdGUobnVsbCk7aWYodGhpcy5tZWRpdW0mJnRoaXMubWVkaXVtLnNob3J0JiZ0aGlzLm1lZGl1bS5sb25nKXt0LndpZHRoPW1lYXN1cmVUb1N0cmluZyh0aGlzLm1lZGl1bS5zaG9ydCk7dC5oZWlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWVkaXVtLmxvbmcpO3RoaXNbSm5dLnNwYWNlPXt3aWR0aDp0aGlzLm1lZGl1bS5zaG9ydCxoZWlnaHQ6dGhpcy5tZWRpdW0ubG9uZ307aWYoImxhbmRzY2FwZSI9PT10aGlzLm1lZGl1bS5vcmllbnRhdGlvbil7Y29uc3QgZT10LndpZHRoO3Qud2lkdGg9dC5oZWlnaHQ7dC5oZWlnaHQ9ZTt0aGlzW0puXS5zcGFjZT17d2lkdGg6dGhpcy5tZWRpdW0ubG9uZyxoZWlnaHQ6dGhpcy5tZWRpdW0uc2hvcnR9fX1lbHNlIHdhcm4oIlhGQSAtIE5vIG1lZGl1bSBzcGVjaWZpZWQgaW4gcGFnZUFyZWE6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbWG5dKHtmaWx0ZXI6bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZmllbGQiLCJzdWJmb3JtIl0pLGluY2x1ZGU6ITB9KTt0aGlzW1huXSh7ZmlsdGVyOm5ldyBTZXQoWyJjb250ZW50QXJlYSJdKSxpbmNsdWRlOiEwfSk7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixjaGlsZHJlbjplLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhUGFnZSJdLGlkOnRoaXNbWnNdLHN0eWxlOnQseGZhTmFtZTp0aGlzLm5hbWV9fSl9fWNsYXNzIFBhZ2VTZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInBhZ2VTZXQiLCEwKTt0aGlzLmR1cGxleEltcG9zaXRpb249Z2V0U3RyaW5nT3B0aW9uKGUuZHVwbGV4SW1wb3NpdGlvbixbImxvbmdFZGdlIiwic2hvcnRFZGdlIl0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yZWxhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5yZWxhdGlvbixbIm9yZGVyZWRPY2N1cnJlbmNlIiwiZHVwbGV4UGFnaW5hdGVkIiwic2ltcGxleFBhZ2luYXRlZCJdKTt0aGlzLnJlbGV2YW50PWdldFJlbGV2YW50KGUucmVsZXZhbnQpO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLnBhZ2VBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhZ2VTZXQ9bmV3IFhGQU9iamVjdEFycmF
1015fVtIbl0oKXtmb3IoY29uc3QgZSBvZiB0aGlzLnBhZ2VBcmVhLmNoaWxkcmVuKWVbSG5dKCk7Zm9yKGNvbnN0IGUgb2YgdGhpcy5wYWdlU2V0LmNoaWxkcmVuKWVbSG5dKCl9W0lzXSgpe3JldHVybiF0aGlzLm9jY3VyfHwtMT09PXRoaXMub2NjdXIubWF4fHx0aGlzW0puXS5udW1iZXJPZlVzZTx0aGlzLm9jY3VyLm1heH1baHNdKCl7dGhpc1tKbl18fD17bnVtYmVyT2ZVc2U6MSxwYWdlSW5kZXg6LTEscGFnZVNldEluZGV4Oi0xfTtpZigib3JkZXJlZE9jY3VycmVuY2UiPT09dGhpcy5yZWxhdGlvbil7aWYodGhpc1tKbl0ucGFnZUluZGV4KzE8dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbSm5dLnBhZ2VJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlQXJlYS5jaGlsZHJlblt0aGlzW0puXS5wYWdlSW5kZXhdW2hzXSgpfWlmKHRoaXNbSm5dLnBhZ2VTZXRJbmRleCsxPHRoaXMucGFnZVNldC5jaGlsZHJlbi5sZW5ndGgpe3RoaXNbSm5dLnBhZ2VTZXRJbmRleCs9MTtyZXR1cm4gdGhpcy5wYWdlU2V0LmNoaWxkcmVuW3RoaXNbSm5dLnBhZ2VTZXRJbmRleF1baHNdKCl9aWYodGhpc1tJc10oKSl7dGhpc1tKbl0ubnVtYmVyT2ZVc2UrPTE7dGhpc1tKbl0ucGFnZUluZGV4PS0xO3RoaXNbSm5dLnBhZ2VTZXRJbmRleD0tMTtyZXR1cm4gdGhpc1toc10oKX1jb25zdCBlPXRoaXNbZHNdKCk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VTZXQpcmV0dXJuIGVbaHNdKCk7dGhpc1tIbl0oKTtyZXR1cm4gdGhpc1toc10oKX1jb25zdCBlPXRoaXNbZnNdKClbSm5dLnBhZ2VOdW1iZXIsdD1lJTI9PTA/ImV2ZW4iOiJvZGQiLGE9MD09PWU/ImZpcnN0IjoicmVzdCI7bGV0IHI9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKGU9PmUub2RkT3JFdmVuPT09dCYmZS5wYWdlUG9zaXRpb249PT1hKTtpZihyKXJldHVybiByO3I9dGhpcy5wYWdlQXJlYS5jaGlsZHJlbi5maW5kKGU9PiJhbnkiPT09ZS5vZGRPckV2ZW4mJmUucGFnZVBvc2l0aW9uPT09YSk7aWYocilyZXR1cm4gcjtyPXRoaXMucGFnZUFyZWEuY2hpbGRyZW4uZmluZChlPT4iYW55Ij09PWUub2RkT3JFdmVuJiYiYW55Ij09PWUucGFnZVBvc2l0aW9uKTtyZXR1cm4gcnx8dGhpcy5wYWdlQXJlYS5jaGlsZHJlblswXX19Y2xhc3MgUGFyYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywicGFyYSIsITApO3RoaXMuaEFsaWduPWdldFN0cmluZ09wdGlvbihlLmhBbGlnbixbImxlZnQiLCJjZW50ZXIiLCJqdXN0aWZ5IiwianVzdGlmeUFsbCIsInJhZGl4IiwicmlnaHQiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLmxpbmVIZWlnaHQ9ZS5saW5lSGVpZ2h0P2dldE1lYXN1cmVtZW50KGUubGluZUhlaWdodCwiMHB0Iik6IiI7dGhpcy5tYXJnaW5MZWZ0PWUubWFyZ2luTGVmdD9nZXRNZWFzdXJlbWVudChlLm1hcmdpbkxlZnQsIjBwdCIpOiIiO3RoaXMubWFyZ2luUmlnaHQ9ZS5tYXJnaW5SaWdodD9nZXRNZWFzdXJlbWVudChlLm1hcmdpblJpZ2h0LCIwcHQiKToiIjt0aGlzLm9ycGhhbnM9Z2V0SW50ZWdlcih7ZGF0YTplLm9ycGhhbnMsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMucHJlc2VydmU9ZS5wcmVzZXJ2ZXx8IiI7dGhpcy5yYWRpeE9mZnNldD1lLnJhZGl4T2Zmc2V0P2dldE1lYXN1cmVtZW50KGUucmFkaXhPZmZzZXQsIjBwdCIpOiIiO3RoaXMuc3BhY2VBYm92ZT1lLnNwYWNlQWJvdmU/Z2V0TWVhc3VyZW1lbnQoZS5zcGFjZUFib3ZlLCIwcHQiKToiIjt0aGlzLnNwYWNlQmVsb3c9ZS5zcGFjZUJlbG93P2dldE1lYXN1cmVtZW50KGUuc3BhY2VCZWxvdywiMHB0Iik6IiI7dGhpcy50YWJEZWZhdWx0PWUudGFiRGVmYXVsdD9nZXRNZWFzdXJlbWVudCh0aGlzLnRhYkRlZmF1bHQpOiIiO3RoaXMudGFiU3RvcHM9KGUudGFiU3RvcHN8fCIiKS50cmltKCkuc3BsaXQoL1xzKy8pLm1hcCgoZSx0KT0+dCUyPT0xP2dldE1lYXN1cmVtZW50KGUpOmUpO3RoaXMudGV4dEluZGVudD1lLnRleHRJbmRlbnQ/Z2V0TWVhc3VyZW1lbnQoZS50ZXh0SW5kZW50LCIwcHQiKToiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52QWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUudkFsaWduLFsidG9wIiwiYm90dG9tIiwibWlkZGxlIl0pO3RoaXMud2lkb3dzPWdldEludGVnZXIoe2RhdGE6ZS53aWRvd3MsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+ZT49MH0pO3RoaXMuaHlwaGVuYXRpb249bnVsbH1bWXNdKCl7Y29uc3QgZT10b1N0eWxlKHRoaXMsImhBbGlnbiIpOyIiIT09dGhpcy5tYXJnaW5MZWZ0JiYoZS5wYWRkaW5nTGVmdD1tZWFzdXJlVG9TdHJpbmcodGhpcy5tYXJnaW5MZWZ0KSk7IiIhPT10aGlzLm1hcmdpblJpZ2h0JiYoZS5wYWRkaW5nUmlnaHQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMubWFyZ2luUmlnaHQpKTsiIiE9PXRoaXMuc3BhY2VBYm92ZSYmKGUucGFkZGluZ1RvcD1tZWFzdXJlVG9TdHJpbmcodGhpcy5zcGFj
101ZUFib3ZlKSk7IiIhPT10aGlzLnNwYWNlQmVsb3cmJihlLnBhZGRpbmdCb3R0b209bWVhc3VyZVRvU3RyaW5nKHRoaXMuc3BhY2VCZWxvdykpO2lmKCIiIT09dGhpcy50ZXh0SW5kZW50KXtlLnRleHRJbmRlbnQ9bWVhc3VyZVRvU3RyaW5nKHRoaXMudGV4dEluZGVudCk7Zml4VGV4dEluZGVudChlKX10aGlzLmxpbmVIZWlnaHQ+MCYmKGUubGluZUhlaWdodD1tZWFzdXJlVG9TdHJpbmcodGhpcy5saW5lSGVpZ2h0KSk7IiIhPT10aGlzLnRhYkRlZmF1bHQmJihlLnRhYlNpemU9bWVhc3VyZVRvU3RyaW5nKHRoaXMudGFiRGVmYXVsdCkpO3RoaXMudGFiU3RvcHMubGVuZ3RoO3RoaXMuaHlwaGVuYXRhdGlvbiYmT2JqZWN0LmFzc2lnbihlLHRoaXMuaHlwaGVuYXRhdGlvbltZc10oKSk7cmV0dXJuIGV9fWNsYXNzIFBhc3N3b3JkRWRpdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywicGFzc3dvcmRFZGl0IiwhMCk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnBhc3N3b3JkQ2hhcj1lLnBhc3N3b3JkQ2hhcnx8IioiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmJvcmRlcj1udWxsO3RoaXMuZXh0cmFzPW51bGw7dGhpcy5tYXJnaW49bnVsbH19Y2xhc3MgdGVtcGxhdGVfUGF0dGVybiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywicGF0dGVybiIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJjcm9zc0hhdGNoIiwiY3Jvc3NEaWFnb25hbCIsImRpYWdvbmFsTGVmdCIsImRpYWdvbmFsUmlnaHQiLCJob3Jpem9udGFsIiwidmVydGljYWwiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtZc10oZSl7ZT1lP2VbWXNdKCk6IiNGRkZGRkYiO2NvbnN0IHQ9dGhpcy5jb2xvcj90aGlzLmNvbG9yW1lzXSgpOiIjMDAwMDAwIixhPSJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50IixyPWAke2V9LCR7ZX0gNXB4LCR7dH0gNXB4LCR7dH0gMTBweGA7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSJjcm9zc0hhdGNoIjpyZXR1cm5gJHthfSh0byB0b3AsJHtyfSkgJHthfSh0byByaWdodCwke3J9KWA7Y2FzZSJjcm9zc0RpYWdvbmFsIjpyZXR1cm5gJHthfSg0NWRlZywke3J9KSAke2F9KC00NWRlZywke3J9KWA7Y2FzZSJkaWFnb25hbExlZnQiOnJldHVybmAke2F9KDQ1ZGVnLCR7cn0pYDtjYXNlImRpYWdvbmFsUmlnaHQiOnJldHVybmAke2F9KC00NWRlZywke3J9KWA7Y2FzZSJob3Jpem9udGFsIjpyZXR1cm5gJHthfSh0byB0b3AsJHtyfSlgO2Nhc2UidmVydGljYWwiOnJldHVybmAke2F9KHRvIHJpZ2h0LCR7cn0pYH1yZXR1cm4iIn19Y2xhc3MgUGljdHVyZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywicGljdHVyZSIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBQcm90byBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywicHJvdG8iLCEwKTt0aGlzLmFwcGVhcmFuY2VGaWx0ZXI9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuYXJjPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYXNzaXN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJhcmNvZGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYmluZEl0ZW1zPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJvb2tlbmQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5ib3JkZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWs9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5idXR0b249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2FsY3VsYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNhcHRpb249bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY2VydGlmaWNhdGVzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNoZWNrQnV0dG9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNob2ljZUxpc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29sb3I9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuY29tYj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvbnRlbnRBcmVhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmNvcm5lcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWNpbWFsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlZmF1bHRVaT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZXNjPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRpZ2VzdE1ldGhvZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kaWdlc3RNZXRob2RzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuZWRnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNvZGluZ3M9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0RGF0YT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lbmNyeXB0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmVuY3J5cHRpb25NZXRob2Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZW5jcnlwdGlvbk1ldGhvZHM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4T2JqZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4Y2xHcm91cD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5leGVjdXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmV4dHJhcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWVsZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5maWxsPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpbHRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mbG9hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5mb250PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZvcm1hdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5oYW5kbGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmh5cGhlbmF0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5pbnRlZ2VyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmlzc3VlcnM9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuaXRlbXM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMua2VlcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5rZXlVc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5saW5lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxpbmVhcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5sb2NrRG9jdW1lbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFyZ2luPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLm1kcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5tZWRpdW09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWVzc2FnZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5udW1lcmljRWRpdD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vY2N1cj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vaWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMub2lkcz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5vdmVyZmxvdz1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlQXJlYT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wYWdlU2V0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhcmE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGFzc3dvcmRFZGl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucGljdHVyZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5yYWRpYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMucmVhc29uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlYXNvbnM9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMucmVjdGFuZ2xlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnJlZj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zY3JpcHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2V0UHJvcGVydHk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbkRhdGE9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2lnbmF0dXJlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNpZ25pbmc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc29saWQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3BlYWs9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3RpcHBsZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5zdWJmb3JtPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm1TZXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViamVjdEROPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmplY3RETnM9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3VibWl0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGV4dEVkaXQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50aW1lU3RhbXA9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudG9vbFRpcD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50cmF2ZXJzYWw9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudHJhdmVyc2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudWk9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudmFsaWRhdGU9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudmFsdWU9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMudmFyaWFibGVzPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgUmFkaWFsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJyYWRpYWwiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsidG9FZGdlIiwidG9DZW50ZXIiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY29sb3I9bnVsbDt0aGlzLmV4dHJhcz1udWxsfVtZc10oZSl7ZT1lP2VbWXNdKCk6IiNGRkZGRkYiO2NvbnN0IHQ9dGhpcy5jb2xvcj90aGlzLmNvbG9yW1lzXSgpOiIjMDAwMDAwIjtyZXR1cm5gcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCBjZW50ZXIsICR7InRvRWRnZSI9PT10aGlzLnR5cGU/YCR7ZX0sJHt0fWA6YCR7dH0sJHtlfWB9KWB9fWNsYXNzIFJlYXNvbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywicmVhc29uIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFJlYXNvbnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInJlYXNvbnMiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5yZWFzb249bmV3IFhGQU9iamVjdEFycmF
1015fX1jbGFzcyBSZWN0YW5nbGUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInJlY3RhbmdsZSIsITApO3RoaXMuaGFuZD1nZXRTdHJpbmdPcHRpb24oZS5oYW5kLFsiZXZlbiIsImxlZnQiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvcm5lcj1uZXcgWEZBT2JqZWN0QXJyYXkoNCk7dGhpcy5lZGdlPW5ldyBYRkFPYmplY3RBcnJheSg0KTt0aGlzLmZpbGw9bnVsbH1bS3NdKCl7Y29uc3QgZT10aGlzLmVkZ2UuY2hpbGRyZW4ubGVuZ3RoP3RoaXMuZWRnZS5jaGlsZHJlblswXTpuZXcgRWRnZSh7fSksdD1lW1lzXSgpLGE9T2JqZWN0LmNyZWF0ZShudWxsKTsidmlzaWJsZSI9PT10aGlzLmZpbGw/LnByZXNlbmNlP09iamVjdC5hc3NpZ24oYSx0aGlzLmZpbGxbWXNdKCkpOmEuZmlsbD0idHJhbnNwYXJlbnQiO2Euc3Ryb2tlV2lkdGg9bWVhc3VyZVRvU3RyaW5nKCJ2aXNpYmxlIj09PWUucHJlc2VuY2U/ZS50aGlja25lc3M6MCk7YS5zdHJva2U9dC5jb2xvcjtjb25zdCByPSh0aGlzLmNvcm5lci5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jb3JuZXIuY2hpbGRyZW5bMF06bmV3IENvcm5lcih7fSkpW1lzXSgpLGk9e25hbWU6InN2ZyIsY2hpbGRyZW46W3tuYW1lOiJyZWN0IixhdHRyaWJ1dGVzOnt4bWxuczpQbyx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIix4OjAseTowLHJ4OnIucmFkaXVzLHJ5OnIucmFkaXVzLHN0eWxlOmF9fV0sYXR0cmlidXRlczp7eG1sbnM6UG8sc3R5bGU6e292ZXJmbG93OiJ2aXNpYmxlIn0sd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSJ9fTtpZihoYXNNYXJnaW4odGhpc1tkc10oKVtkc10oKSkpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntzdHlsZTp7ZGlzcGxheToiaW5saW5lIix3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIn19LGNoaWxkcmVuOltpXX0pO2kuYXR0cmlidXRlcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO3JldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoaSl9fWNsYXNzIFJlZkVsZW1lbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInJlZiIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTY3JpcHQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInNjcmlwdCIpO3RoaXMuYmluZGluZz1lLmJpbmRpbmd8fCIiO3RoaXMuY29udGVudFR5cGU9ZS5jb250ZW50VHlwZXx8IiI7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJ1bkF0PWdldFN0cmluZ09wdGlvbihlLnJ1bkF0LFsiY2xpZW50IiwiYm90aCIsInNlcnZlciJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNldFByb3BlcnR5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJzZXRQcm9wZXJ0eSIpO3RoaXMuY29ubmVjdGlvbj1lLmNvbm5lY3Rpb258fCIiO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiJ9fWNsYXNzIFNpZ25EYXRhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJzaWduRGF0YSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5vcGVyYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUub3BlcmF0aW9uLFsic2lnbiIsImNsZWFyIiwidmVyaWZ5Il0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuZmlsdGVyPW51bGw7dGhpcy5tYW5pZmVzdD1udWxsfX1jbGFzcyBTaWduYXR1cmUgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInNpZ25hdHVyZSIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJQREYxLjMiLCJQREYxLjYiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmZpbHRlcj1udWxsO3RoaXMubWFuaWZlc3Q9bnVsbDt0aGlzLm1hcmdpbj1udWxsfX1jbGFzcyBTaWduaW5nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJzaWduaW5nIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnR5cGU9Z2V0U3RyaW5nT3B0aW9uKGUudHlwZSxbIm9wdGlvbmFsIiwicmVxdWlyZWQiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuY2VydGlmaWNhdGU9bmV3IFhGQU9iamVjdEFycmF
1015fX1jbGFzcyBTb2xpZCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywic29saWQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmV4dHJhcz1udWxsfVtZc10oZSl7cmV0dXJuIGU/ZVtZc10oKToiI0ZGRkZGRiJ9fWNsYXNzIFNwZWFrIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJzcGVhayIpO3RoaXMuZGlzYWJsZT1nZXRJbnRlZ2VyKHtkYXRhOmUuZGlzYWJsZSxkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5wcmlvcml0eT1nZXRTdHJpbmdPcHRpb24oZS5wcmlvcml0eSxbImN1c3RvbSIsImNhcHRpb24iLCJuYW1lIiwidG9vbFRpcCJdKTt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBTdGlwcGxlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJzdGlwcGxlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnJhdGU9Z2V0SW50ZWdlcih7ZGF0YTplLnJhdGUsZGVmYXVsdFZhbHVlOjUwLHZhbGlkYXRlOmU9PmU+PTAmJmU8PTEwMH0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLmNvbG9yPW51bGw7dGhpcy5leHRyYXM9bnVsbH1bWXNdKGUpe2NvbnN0IHQ9dGhpcy5yYXRlLzEwMDtyZXR1cm4gVXRpbC5tYWtlSGV4Q29sb3IoTWF0aC5yb3VuZChlLnZhbHVlLnIqKDEtdCkrdGhpcy52YWx1ZS5yKnQpLE1hdGgucm91bmQoZS52YWx1ZS
1015nKigxLXQpK3RoaXMudmFsdWUuZyp0KSxNYXRoLnJvdW5kKGUudmFsdWUuYiooMS10KSt0aGlzLnZhbHVlLmIqdCkpfX1jbGFzcyBTdWJmb3JtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJzdWJmb3JtIiwhMCk7dGhpcy5hY2Nlc3M9Z2V0U3RyaW5nT3B0aW9uKGUuYWNjZXNzLFsib3BlbiIsIm5vbkludGVyYWN0aXZlIiwicHJvdGVjdGVkIiwicmVhZE9ubHkiXSk7dGhpcy5hbGxvd01hY3JvPWdldEludGVnZXIoe2RhdGE6ZS5hbGxvd01hY3JvLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5hbmNob3JUeXBlPWdldFN0cmluZ09wdGlvbihlLmFuY2hvclR5cGUsWyJ0b3BMZWZ0IiwiYm90dG9tQ2VudGVyIiwiYm90dG9tTGVmdCIsImJvdHRvbVJpZ2h0IiwibWlkZGxlQ2VudGVyIiwibWlkZGxlTGVmdCIsIm1pZGRsZVJpZ2h0IiwidG9wQ2VudGVyIiwidG9wUmlnaHQiXSk7dGhpcy5jb2xTcGFuPWdldEludGVnZXIoe2RhdGE6ZS5jb2xTcGFuLGRlZmF1bHRWYWx1ZToxLHZhbGlkYXRlOmU9PmU+PTF8fC0xPT09ZX0pO3RoaXMuY29sdW1uV2lkdGhzPShlLmNvbHVtbldpZHRoc3x8IiIpLnRyaW0oKS5zcGxpdCgvXHMrLykubWFwKGU9PiItMSI9PT1lPy0xOmdldE1lYXN1cmVtZW50KGUpKTt0aGlzLmg9ZS5oP2dldE1lYXN1cmVtZW50KGUuaCk6IiI7dGhpcy5oQWxpZ249Z2V0U3RyaW5nT3B0aW9uKGUuaEFsaWduLFsibGVmdCIsImNlbnRlciIsImp1c3RpZnkiLCJqdXN0aWZ5QWxsIiwicmFkaXgiLCJyaWdodCJdKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubGF5b3V0PWdldFN0cmluZ09wdGlvbihlLmxheW91dCxbInBvc2l0aW9uIiwibHItdGIiLCJybC1yb3ciLCJybC10YiIsInJvdyIsInRhYmxlIiwidGIiXSk7dGhpcy5sb2NhbGU9ZS5sb2NhbGV8fCIiO3RoaXMubWF4SD1nZXRNZWFzdXJlbWVudChlLm1heEgsIjBwdCIpO3RoaXMubWF4Vz1nZXRNZWFzdXJlbWVudChlLm1heFcsIjBwdCIpO3RoaXMubWVyZ2VNb2RlPWdldFN0cmluZ09wdGlvbihlLm1lcmdlTW9kZSxbImNvbnN1bWVEYXRhIiwibWF0Y2hUZW1wbGF0ZSJdKTt0aGlzLm1pbkg9Z2V0TWVhc3VyZW1lbnQoZS5taW5ILCIwcHQiKTt0aGlzLm1pblc9Z2V0TWVhc3VyZW1lbnQoZS5taW5XLCIwcHQiKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnByZXNlbmNlPWdldFN0cmluZ09wdGlvbihlLnByZXNlbmNlLFsidmlzaWJsZSIsImhpZGRlbiIsImluYWN0aXZlIiwiaW52aXNpYmxlIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy5yZXN0b3JlU3RhdGU9Z2V0U3RyaW5nT3B0aW9uKGUucmVzdG9yZVN0YXRlLFsibWFudWFsIiwiYXV0byJdKTt0aGlzLnNjb3BlPWdldFN0cmluZ09wdGlvbihlLnNjb3BlLFsibmFtZSIsIm5vbmUiXSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMudz1lLnc/Z2V0TWVhc3VyZW1lbnQoZS53KToiIjt0aGlzLng9Z2V0TWVhc3VyZW1lbnQoZS54LCIwcHQiKTt0aGlzLnk9Z2V0TWVhc3VyZW1lbnQoZS55LCIwcHQiKTt0aGlzLmFzc2lzdD1udWxsO3RoaXMuYmluZD1udWxsO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYm9yZGVyPW51bGw7dGhpcy5icmVhaz1udWxsO3RoaXMuY2FsY3VsYXRlPW51bGw7dGhpcy5kZXNjPW51bGw7dGhpcy5leHRyYXM9bnVsbDt0aGlzLmtlZXA9bnVsbDt0aGlzLm1hcmdpbj1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5wYWdlU2V0PW51bGw7dGhpcy5wYXJhPW51bGw7dGhpcy50cmF2ZXJzYWw9bnVsbDt0aGlzLnZhbGlkYXRlPW51bGw7dGhpcy52YXJpYWJsZXM9bnVsbDt0aGlzLmFyZWE9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuYnJlYWtBZnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5icmVha0JlZm9yZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5jb25uZWN0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRyYXc9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXZlbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhPYmplY3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuZXhjbEdyb3VwPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZpZWxkPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnByb3RvPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnNldFByb3BlcnR5PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9W3VzXSgpe2NvbnN0IGU9dGhpc1tkc10oKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFN1YmZvcm1TZXQ/ZVt1c10oKTplfVt4c10oKXtyZXR1cm4hMH1bdnNdKCl7cmV0dXJuIHRoaXMubGF5b3V0LmVuZHNXaXRoKCItdGIiKSYmMD09PXRoaXNbSm5dLmF0dGVtcHQmJnRoaXNbSm5dLm51bWJlckluTGluZT4wfHx0aGlzW2RzXSgpW3ZzXSgpfSpbbHNdKCl7eWllbGQqZ2V0Q29udGFpbmVkQ2hpbGRyZW4odGhpcyl9W1puXSgpe3JldHVybiBmbHVzaEhUTUwodGhpcyl9W1VuXShlLHQpe2FkZEhUTUwodGhpcyxlLHQpfVt0c10oKXtyZXR1cm4gZ2V0QXZhaWxhYmxlU3BhY2UodGhpcyl9W0NzXSgpe2NvbnN0IGU9dGhpc1t1c10oKTtpZighZVtDc10oKSlyZXR1cm4hMTtpZih2b2lkIDAhPT10aGlzW0puXS5faXNTcGxpdHRhYmxlKXJldHVybiB0aGlzW0puXS5faXNTcGxpdHRhYmxlO2lmKCJwb3NpdGlvbiI9PT10aGlzLmxheW91dHx8dGhpcy5sYXlvdXQuaW5jbHVkZXMoInJvdyIpKXt0aGlzW0puXS5faXNTcGxpdHRhYmxlPSExO3JldHVybiExfWlmKHRoaXMua2VlcCYmIm5vbmUiIT09dGhpcy5rZWVwLmludGFjdCl7dGhpc1tKbl0uX2lzU3BsaXR0YWJsZT0hMTtyZXR1cm4hMX1pZihlLmxheW91dD8uZW5kc1dpdGgoIi10YiIpJiYwIT09ZVtKbl0ubnVtYmVySW5MaW5lKXJldHVybiExO3RoaXNbSm5dLl9pc1NwbGl0dGFibGU9ITA7cmV0dXJuITB9W0tzXShlKXtzZXRUYWJJbmRleCh0aGlzKTtpZih0aGlzLmJyZWFrKXtpZigiYXV0byIhPT10aGlzLmJyZWFrLmFmdGVyfHwiIiE9PXRoaXMuYnJlYWsuYWZ0ZXJUYXJnZXQpe2NvbnN0IGU9bmV3IEJyZWFrQWZ0ZXIoe3RhcmdldFR5cGU6dGhpcy5icmVhay5hZnRlcix0YXJnZXQ6dGhpcy5icmVhay5hZnRlclRhcmdldCxzdGFydE5ldzp0aGlzLmJyZWFrLnN0YXJ0TmV3LnRvU3RyaW5nKCl9KTtlW2dzXT10aGlzW2dzXTt0aGlzW2puXShlKTt0aGlzLmJyZWFrQWZ0ZXIucHVzaChlKX1pZigiYXV0byIhPT10aGlzLmJyZWFrLmJlZm9yZXx8IiIhPT10aGlzLmJyZWFrLmJlZm9yZVRhcmdldCl7Y29uc3QgZT1uZXcgQnJlYWtCZWZvcmUoe3RhcmdldFR5cGU6dGhpcy5icmVhay5iZWZvcmUsdGFyZ2V0OnRoaXMuYnJlYWsuYmVmb3JlVGFyZ2V0LHN0YXJ0TmV3OnRoaXMuYnJlYWsuc3RhcnROZXcudG9TdHJpbmcoKX0pO2VbZ3NdPXRoaXNbZ3NdO3RoaXNbam5dKGUpO3RoaXMuYnJlYWtCZWZvcmUucHVzaChlKX1pZigiIiE9PXRoaXMuYnJlYWsub3ZlcmZsb3dUYXJnZXQpe2NvbnN0IGU9bmV3IE92ZXJmbG93KHt0YXJnZXQ6dGhpcy5icmVhay5vdmVyZmxvd1RhcmdldCxsZWFkZXI6dGhpcy5icmVhay5vdmVyZmxvd0xlYWRlcix0cmFpbGVyOnRoaXMuYnJlYWsub3ZlcmZsb3dUcmFpbGVyfSk7ZVtnc109dGhpc1tnc107dGhpc1tqbl0oZSk7dGhpcy5vdmVyZmxvdy5wdXNoKGUpfXRoaXNbVXNdKHRoaXMuYnJlYWspO3RoaXMuYnJlYWs9bnVsbH1pZigiaGlkZGVuIj09PXRoaXMucHJlc2VuY2V8fCJpbmFjdGl2ZSI9PT10aGlzLnByZXNlbmNlKXJldHVybi
101BIVE1MUmVzdWx0LkVNUFRZOyh0aGlzLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD4xfHx0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPjEpJiZ3YXJuKCJYRkEgLSBTZXZlcmFsIGJyZWFrQmVmb3JlIG9yIGJyZWFrQWZ0ZXIgaW4gc3ViZm9ybXM6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO2lmKHRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07aWYoaGFuZGxlQnJlYWsoZSkpcmV0dXJuIEhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfWlmKHRoaXNbSm5dPy5hZnRlckJyZWFrQWZ0ZXIpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7Zml4RGltZW5zaW9ucyh0aGlzKTtjb25zdCB0PVtdLGE9e2lkOnRoaXNbWnNdLGNsYXNzOltdfTtzZXRBY2Nlc3ModGhpcyxhLmNsYXNzKTt0aGlzW0puXXx8PU9iamVjdC5jcmVhdGUobnVsbCk7T2JqZWN0LmFzc2lnbih0aGlzW0puXSx7Y2hpbGRyZW46dCxsaW5lOm51bGwsYXR0cmlidXRlczphLGF0dGVtcHQ6MCxudW1iZXJJbkxpbmU6MCxhdmFpbGFibGVTcGFjZTp7d2lkdGg6TWF0aC5taW4odGhpcy53fHwxLzAsZS53aWR0aCksaGVpZ2h0Ok1hdGgubWluKHRoaXMuaHx8MS8wLGUuaGVpZ2h0KX0sd2lkdGg6MCxoZWlnaHQ6MCxwcmV2SGVpZ2h0OjAsY3VycmVudFdpZHRoOjB9KTtjb25zdCByPXRoaXNbZnNdKCksaT1yW0puXS5ub0xheW91dEZhaWx1cmUsbj10aGlzW0NzXSgpO258fHNldEZpcnN0VW5zcGxpdHRhYmxlKHRoaXMpO2lmKCFjaGVja0RpbWVuc2lvbnModGhpcyxlKSlyZXR1cm4gSFRNTFJlc3VsdC5GQUlMVVJFO2NvbnN0IHM9bmV3IFNldChbImFyZWEiLCJkcmF3IiwiZXhjbEdyb3VwIiwiZmllbGQiLCJzdWJmb3JtIiwic3ViZm9ybVNldCJdKTtpZih0aGlzLmxheW91dC5pbmNsdWRlcygicm93Iikpe2NvbnN0IGU9dGhpc1t1c10oKS5jb2x1bW5XaWR0aHM7aWYoQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGg+MCl7dGhpc1tKbl0uY29sdW1uV2lkdGhzPWU7dGhpc1tKbl0uY3VycmVudENvbHVtbj0wfX1jb25zdCBvPXRvU3R5bGUodGhpcywiYW5jaG9yVHlwZSIsImRpbWVuc2lvbnMiLCJwb3NpdGlvbiIsInByZXNlbmNlIiwiYm9yZGVyIiwibWFyZ2luIiwiaEFsaWduIiksYz1bInhmYVN1YmZvcm0iXSxsPWxheW91dENsYXNzKHRoaXMpO2wmJmMucHVzaChsKTthLnN0eWxlPW87YS5jbGFzcz1jO3RoaXMubmFtZSYmKGEueGZhTmFtZT10aGlzLm5hbWUpO2lmKHRoaXMub3ZlcmZsb3cpe2NvbnN0IHQ9dGhpcy5vdmVyZmxvd1tzc10oKTtpZih0LmFkZExlYWRlcil7dC5hZGRMZWFkZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LmxlYWRlcixlKX19dGhpc1tfc10oKTtjb25zdCBoPSJsci10YiI9PT10aGlzLmxheW91dHx8InJsLXRiIj09PXRoaXMubGF5b3V0LHU9aD8yOjE7Zm9yKDt0aGlzW0puXS5hdHRlbXB0PHU7dGhpc1tKbl0uYXR0ZW1wdCsrKXtoJiYxPT09dGhpc1tKbl0uYXR0ZW1wdCYmKHRoaXNbSm5dLm51bWJlckluTGluZT0wKTtjb25zdCBlPXRoaXNbWG5dKHtmaWx0ZXI6cyxpbmNsdWRlOiEwfSk7aWYoZS5zdWNjZXNzKWJyZWFrO2lmKGUuaXNCcmVhaygpKXt0aGlzW0xzXSgpO3JldHVybiBlfWlmKGgmJjA9PT10aGlzW0puXS5hdHRlbXB0JiYwPT09dGhpc1tKbl0ubnVtYmVySW5MaW5lJiYhcltKbl0ubm9MYXlvdXRGYWlsdXJlKXt0aGlzW0puXS5hdHRlbXB0PXU7YnJlYWt9fXRoaXNbTHNdKCk7bnx8dW5zZXRGaXJzdFVuc3BsaXR0YWJsZSh0aGlzKTtyW0puXS5ub0xheW91dEZhaWx1cmU9aTtpZih0aGlzW0puXS5hdHRlbXB0PT09dSl7dGhpcy5vdmVyZmxvdyYmKHRoaXNbZnNdKClbSm5dLm92ZXJmbG93Tm9kZT10aGlzLm92ZXJmbG93KTtufHxkZWxldGUgdGhpc1tKbl07cmV0dXJuIEhUTUxSZXN1bHQuRkFJTFVSRX1pZih0aGlzLm92ZXJmbG93KXtjb25zdCB0PXRoaXMub3ZlcmZsb3dbc3NdKCk7aWYodC5hZGRUcmFpbGVyKXt0LmFkZFRyYWlsZXI9ITE7aGFuZGxlT3ZlcmZsb3codGhpcyx0LnRyYWlsZXIsZSl9fWxldCBkPTAsZj0wO2lmKHRoaXMubWFyZ2luKXtkPXRoaXMubWFyZ2luLmxlZnRJbnNldCt0aGlzLm1hcmdpbi5yaWdodEluc2V0O2Y9dGhpcy5tYXJnaW4udG9wSW5zZXQrdGhpcy5tYXJnaW4uYm90dG9tSW5zZXR9Y29uc3QgZz1NYXRoLm1heCh0aGlzW0puXS53aWR0aCtkLHRoaXMud3x8MCkscD1NYXRoLm1heCh0aGlzW0puXS5oZWlnaHQrZix0aGlzLmh8fDApLG09W3RoaXMueCx0aGlzLnksZyxwXTsiIj09PXRoaXMudyYmKG8ud2lkdGg9bWVhc3VyZVRvU3RyaW5nKGcpKTsiIj09PXRoaXMuaCYmKG8uaGVpZ2h0PW1lYXN1cmVUb1N0cmluZyhwKSk7aWYoKCIwcHgiPT09by53aWR0aHx8IjBweCI9PT1vLmhlaWdodCkmJjA9PT10Lmxlbmd0aClyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtjb25zdCBiPXtuYW1lOiJkaXYiLGF0dHJpYnV0ZXM6YSxjaGlsZHJlbjp0fTthcHBseUFzc2lzdCh0aGlzLGEpO2NvbnN0IHk9SFRNTFJlc3VsdC5zdWNjZXNzKGNyZWF0ZVdyYXBwZXIodGhpcyxiKSxtKTtpZih0aGlzLmJyZWFrQWZ0ZXIuY2hpbGRyZW4ubGVuZ3RoPj0xKXtjb25zdCBlPXRoaXMuYnJlYWtBZnRlci5jaGlsZHJlblswXTtpZihoYW5kbGVCcmVhayhlKSl7dGhpc1tKbl0uYWZ0ZXJCcmVha0FmdGVyPXk7cmV0dXJuIEhUTUxSZXN1bHQuYnJlYWtOb2RlKGUpfX1kZWxldGUgdGhpc1tKbl07cmV0dXJuIHl9fWNsYXNzIFN1YmZvcm1TZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInN1YmZvcm1TZXQiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMucmVsYXRpb249Z2V0U3RyaW5nT3B0aW9uKGUucmVsYXRpb24sWyJvcmRlcmVkIiwiY2hvaWNlIiwidW5vcmRlcmVkIl0pO3RoaXMucmVsZXZhbnQ9Z2V0UmVsZXZhbnQoZS5yZWxldmFudCk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9va2VuZD1udWxsO3RoaXMuYnJlYWs9bnVsbDt0aGlzLmRlc2M9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMub2NjdXI9bnVsbDt0aGlzLm92ZXJmbG93PW51bGw7dGhpcy5icmVha0FmdGVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmJyZWFrQmVmb3JlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuc3ViZm9ybVNldD1uZXcgWEZBT2JqZWN0QXJyYXl9Kltsc10oKXt5aWVsZCpnZXRDb250YWluZWRDaGlsZHJlbih0aGlzKX1bdXNdKCl7bGV0IGU9dGhpc1tkc10oKTtmb3IoOyEoZSBpbnN0YW5jZW9mIFN1YmZvcm0pOyllPWVbZHNdKCk7cmV0dXJuIGV9W3hzXSgpe3JldHVybiEwfX1jbGFzcyBTdWJqZWN0RE4gZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJzdWJqZWN0RE4iKTt0aGlzLmRlbGltaXRlcj1lLmRlbGltaXRlcnx8IiwiO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtZbl0oKXt0aGlzW0duXT1uZXcgTWFwKHRoaXNbR25dLnNwbGl0KHRoaXMuZGVsaW1pdGVyKS5tYXAoZT0+eyhlPWUuc3BsaXQoIj0iLDIpKVswXT1lWzBdLnRyaW0oKTtyZXR1cm4gZX0pKX19Y2xhc3MgU3ViamVjdEROcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywic3ViamVjdEROcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy50eXBlPWdldFN0cmluZ09wdGlvbihlLnR5cGUsWyJvcHRpb25hbCIsInJlcXVpcmVkIl0pO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIjt0aGlzLnN1YmplY3RETj1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIFN1Ym1pdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywic3VibWl0IiwhMCk7dGhpcy5lbWJlZFBERj1nZXRJbnRlZ2VyKHtkYXRhOmUuZW1iZWRQREYsZGVmYXVsdFZhbHVlOjAsdmFsaWRhdGU6ZT0+MT09PWV9KTt0aGlzLmZvcm1hdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXQsWyJ4ZHAiLCJmb3JtZGF0YSIsInBkZiIsInVybGVuY29kZWQiLCJ4ZmQiLCJ4bWwiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnRhcmdldD1lLnRhcmdldHx8IiI7dGhpcy50ZXh0RW5jb2Rpbmc9Z2V0S2V5d29yZCh7ZGF0YTplLnRleHRFbmNvZGluZz9lLnRleHRFbmNvZGluZy50b0xvd2VyQ2FzZSgpOiIiLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT5bInV0Zi04IiwiYmlnLWZpdmUiLCJmb250c3BlY2lmaWMiLCJnYmsiLCJnYi0xODAzMCIsImdiLTIzMTIiLCJrc2MtNTYwMSIsIm5vbmUiLCJzaGlmdC1qaXMiLCJ1Y3MtMiIsInV0Zi0xNiJdLmluY2x1ZGVzKGUpfHxlLm1hdGNoKC9pc28tODg1OS1cZHsyfS8pfSk7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMueGRwQ29udGVudD1lLnhkcENvbnRlbnR8fCIiO3RoaXMuZW5jcnlwdD1udWxsO3RoaXMuZW5jcnlwdERhdGE9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuc2lnbkRhdGE9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBUZW1wbGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2VQcm9maWxlPWdldFN0cmluZ09wdGlvbihlLmJhc2VQcm9maWxlLFsiZnVsbCIsImludGVyYWN0aXZlRm9ybXMiXSk7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnN1YmZvcm09bmV3IFhGQU9iamVjdEFycmF5fVtZbl0oKXswPT09dGhpcy5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aCYmd2FybigiWEZBIC0gTm8gc3ViZm9ybXMgaW4gdGVtcGxhdGUgbm9kZS4iKTt0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0yJiZ3YXJuKCJYRkEgLSBTZXZlcmFsIHN1YmZvcm1zIGluIHRlbXBsYXRlIG5vZGU6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3RoaXNbJHNdPTVlM31bQ3NdKCl7cmV0dXJuITB9W3FzXShlLHQpe3JldHVybiBlLnN0YXJ0c1dpdGgoIiMiKT9bdGhpc1ttc10uZ2V0KGUuc2xpY2UoMSkpXTpzZWFyY2hOb2RlKHRoaXMsdCxlLCEwLCEwKX0qW1ZzXSgpe2lmKCF0aGlzLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3Moe25hbWU6ImRpdiIsY2hpbGRyZW46W119KTt0aGlzW0puXT17b3ZlcmZsb3dOb2RlOm51bGwsZmlyc3RVbnNwbGl0dGFibGU6bnVsbCxjdXJyZW50Q29udGVudEFyZWE6bnVsbCxjdXJyZW50UGFnZUFyZWE6bnVsbCxub0xheW91dEZhaWx1cmU6ITEscGFnZU51bWJlcjoxLHBhZ2VQb3NpdGlvbjoiZmlyc3QiLG9kZE9yRXZlbjoib2RkIixibGFua09yTm90Qmxhbms6Im5vbkJsYW5rIixwYXJhU3RhY2s6W119O2NvbnN0IGU9dGhpcy5zdWJmb3JtLmNoaWxkcmVuWzBdO2UucGFnZVNldFtIbl0oKTtjb25zdCB0PWUucGFnZVNldC5wYWdlQXJlYS5jaGlsZHJlbixhPXtuYW1lOiJkaXYiLGNoaWxkcmVuOltdfTtsZXQgcj1udWxsLGk9bnVsbCxuPW51bGw7aWYoZS5icmVha0JlZm9yZS5jaGlsZHJlbi5sZW5ndGg+PTEpe2k9ZS5icmVha0JlZm9yZS5jaGlsZHJlblswXTtuPWkudGFyZ2V0fWVsc2UgaWYoZS5zdWJmb3JtLmNoaWxkcmVuLmxlbmd0aD49MSYmZS5zdWJmb3JtLmNoaWxkcmVuWzBdLmJyZWFrQmVmb3JlLmNoaWxkcmVuLmxlbmd0aD49MSl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWtCZWZvcmUuY2hpbGRyZW5bMF07bj1pLnRhcmdldH1lbHNlIGlmKGUuYnJlYWs/LmJlZm9yZVRhcmdldCl7aT1lLmJyZWFrO249aS5iZWZvcmVUYXJnZXR9ZWxzZSBpZihlLnN1YmZvcm0uY2hpbGRyZW4ubGVuZ3RoPj0xJiZlLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs/LmJlZm9yZVRhcmdldCl7aT1lLnN1YmZvcm0uY2hpbGRyZW5bMF0uYnJlYWs7bj1pLmJlZm9yZVRhcmdldH1pZihpKXtjb25zdCBlPXRoaXNbcXNdKG4saVtkc10oKSk7aWYoZSBpbnN0YW5jZW9mIFBhZ2VBcmVhKXtyPWU7aVtKbl09e319fXJ8fD10WzBdO3JbSm5dPXtudW1iZXJPZlVzZToxfTtjb25zdCBzPXJbZHNdKCk7c1tKbl09e251bWJlck9mVXNlOjEscGFnZUluZGV4OnMucGFnZUFyZWEuY2hpbGRyZW4uaW5kZXhPZihyKSxwYWdlU2V0SW5kZXg6MH07bGV0IG8sYz1udWxsLGw9bnVsbCxoPSEwLHU9MCxkPTA7Zm9yKDs7KXtpZihoKXU9MDtlbHNle2EuY2hpbGRyZW4ucG9wKCk7aWYoMz09PSsrdSl7d2FybigiWEZBIC0gU29tZXRoaW5nIGdvZXMgd3Jvbmc6IHBsZWFzZSBmaWxlIGEgYnVnLiIpO3JldHVybiBhfX1vPW51bGw7dGhpc1tKbl0uY3VycmVudFBhZ2VBcmVhPXI7Y29uc3QgdD1yW0tzXSgpLmh0bWw7YS5jaGlsZHJlbi5wdXNoKHQpO2lmKGMpe3RoaXNbSm5dLm5vTGF5b3V0RmFpbHVyZT0hMDt0LmNoaWxkcmVuLnB1c2goY1tLc10ocltKbl0uc3BhY2UpLmh0bWwpO2M9bnVsbH1pZihsKXt0aGlzW0puXS5ub0xheW91dEZhaWx1cmU9ITA7dC5jaGlsZHJlbi5wdXNoKGxbS3NdKHJbSm5dLnNwYWNl
101KS5odG1sKTtsPW51bGx9Y29uc3QgaT1yLmNvbnRlbnRBcmVhLmNoaWxkcmVuLG49dC5jaGlsZHJlbi5maWx0ZXIoZT0+ZS5hdHRyaWJ1dGVzLmNsYXNzLmluY2x1ZGVzKCJ4ZmFDb250ZW50YXJlYSIpKTtoPSExO3RoaXNbSm5dLmZpcnN0VW5zcGxpdHRhYmxlPW51bGw7dGhpc1tKbl0ubm9MYXlvdXRGYWlsdXJlPSExO2NvbnN0IGZsdXNoPXQ9Pntjb25zdCBhPWVbWm5dKCk7aWYoYSl7aHx8PWEuY2hpbGRyZW4/Lmxlbmd0aD4wO25bdF0uY2hpbGRyZW4ucHVzaChhKX19O2ZvcihsZXQgdD1kLHI9aS5sZW5ndGg7dDxyO3QrKyl7Y29uc3Qgcj10aGlzW0puXS5jdXJyZW50Q29udGVudEFyZWE9aVt0XSxzPXt3aWR0aDpyLncsaGVpZ2h0OnIuaH07ZD0wO2lmKGMpe25bdF0uY2hpbGRyZW4ucHVzaChjW0tzXShzKS5odG1sKTtjPW51bGx9aWYobCl7blt0XS5jaGlsZHJlbi5wdXNoKGxbS3NdKHMpLmh0bWwpO2w9bnVsbH1jb25zdCB1PWVbS3NdKHMpO2lmKHUuc3VjY2Vzcyl7aWYodS5odG1sKXtofHw9dS5odG1sLmNoaWxkcmVuPy5sZW5ndGg+MDtuW3RdLmNoaWxkcmVuLnB1c2godS5odG1sKX1lbHNlIWgmJmEuY2hpbGRyZW4ubGVuZ3RoPjEmJmEuY2hpbGRyZW4ucG9wKCk7cmV0dXJuIGF9aWYodS5pc0JyZWFrKCkpe2NvbnN0IGU9dS5icmVha05vZGU7Zmx1c2godCk7aWYoImF1dG8iPT09ZS50YXJnZXRUeXBlKWNvbnRpbnVlO2lmKGUubGVhZGVyKXtjPXRoaXNbcXNdKGUubGVhZGVyLGVbZHNdKCkpO2M9Yz9jWzBdOm51bGx9aWYoZS50cmFpbGVyKXtsPXRoaXNbcXNdKGUudHJhaWxlcixlW2RzXSgpKTtsPWw/bFswXTpudWxsfWlmKCJwYWdlQXJlYSI9PT1lLnRhcmdldFR5cGUpe289ZVtKbl0udGFyZ2V0O3Q9MS8wfWVsc2UgaWYoZVtKbl0udGFyZ2V0KXtvPWVbSm5dLnRhcmdldDtkPWVbSm5dLmluZGV4KzE7dD0xLzB9ZWxzZSB0PWVbSm5dLmluZGV4O2NvbnRpbnVlfWlmKHRoaXNbSm5dLm92ZXJmbG93Tm9kZSl7Y29uc3QgZT10aGlzW0puXS5vdmVyZmxvd05vZGU7dGhpc1tKbl0ub3ZlcmZsb3dOb2RlPW51bGw7Y29uc3QgYT1lW3NzXSgpLHI9YS50YXJnZXQ7YS5hZGRMZWFkZXI9bnVsbCE9PWEubGVhZGVyO2EuYWRkVHJhaWxlcj1udWxsIT09YS50cmFpbGVyO2ZsdXNoKHQpO2NvbnN0IG49dDt0PTEvMDtpZihyIGluc3RhbmNlb2YgUGFnZUFyZWEpbz1yO2Vsc2UgaWYociBpbnN0YW5jZW9mIENvbnRlbnRBcmVhKXtjb25zdCBlPWkuaW5kZXhPZihyKTtpZigtMSE9PWUpZT5uP3Q9ZS0xOmQ9ZTtlbHNle289cltkc10oKTtkPW8uY29udGVudEFyZWEuY2hpbGRyZW4uaW5kZXhPZihyKX19Y29udGludWV9Zmx1c2godCl9dGhpc1tKbl0ucGFnZU51bWJlcis9MTtvJiYob1tJc10oKT9vW0puXS5udW1iZXJPZlVzZSs9MTpvPW51bGwpO3I9b3x8cltoc10oKTt5aWVsZCBudWxsfX19Y2xhc3MgVGV4dCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInRleHQiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubWF4Q2hhcnM9Z2V0SW50ZWdlcih7ZGF0YTplLm1heENoYXJzLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTB9KTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnJpZD1lLnJpZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifVtfbl0oKXtyZXR1cm4hMH1bUnNdKGUpe2lmKGVbT3NdPT09ZW8ueGh0bWwuaWQpe3RoaXNbR25dPWU7cmV0dXJuITB9d2FybihgWEZBIC0gSW52YWxpZCBjb250ZW50IGluIFRleHQ6ICR7ZVtEc119LmApO3JldHVybiExfVtOc10oZSl7dGhpc1tHbl1pbnN0YW5jZW9mIFhGQU9iamVjdHx8c3VwZXJbTnNdKGUpfVtZbl0oKXsic3RyaW5nIj09dHlwZW9mIHRoaXNbR25dJiYodGhpc1tHbl09dGhpc1tHbl0ucmVwbGFjZUFsbCgiXHJcbiIsIlxuIikpfVtzc10oKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHRoaXNbR25dP3RoaXNbR25dLnNwbGl0KC9bXHUyMDI5XHUyMDI4XG5dLykuZmlsdGVyKGU9PiEhZSkuam9pbigiXG4iKTp0aGlzW0duXVtHc10oKX1bS3NdKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdGhpc1tHbl0pe2NvbnN0IGU9dmFsdWVUb0h0bWwodGhpc1tHbl0pLmh0bWw7aWYodGhpc1tHbl0uaW5jbHVkZXMoIlx1MjAyOSIpKXtlLm5hbWU9ImRpdiI7ZS5jaGlsZHJlbj1bXTt0aGlzW0duXS5zcGxpdCgiXHUyMDI5IikubWFwKGU9PmUuc3BsaXQoL1tcdTIwMjhcbl0vKS5mbGF0TWFwKGU9Plt7bmFtZToic3BhbiIsdmFsdWU6ZX0se25hbWU6ImJyIn1dKSkuZm9yRWFjaCh0PT57ZS5jaGlsZHJlbi5wdXNoKHtuYW1lOiJwIixjaGlsZHJlbjp0fSl9KX1lbHNlIGlmKC9bXHUyMDI4XG5dLy50ZXN0KHRoaXNbR25dKSl7ZS5uYW1lPSJkaXYiO2UuY2hpbGRyZW49W107dGhpc1tHbl0uc3BsaXQoL1tcdTIwMjhcbl0vKS5mb3JFYWNoKHQ9PntlLmNoaWxkcmVuLnB1c2goe25hbWU6InNwYW4iLHZhbHVlOnR9LHtuYW1lOiJiciJ9KX0pfXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIHRoaXNbR25dW0tzXShlKX19Y2xhc3MgVGV4dEVkaXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInRleHRFZGl0IiwhMCk7dGhpcy5hbGxvd1JpY2hUZXh0PWdldEludGVnZXIoe2RhdGE6ZS5hbGxvd1JpY2hUZXh0LGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5oU2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLmhTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm11bHRpTGluZT1nZXRJbnRlZ2VyKHtkYXRhOmUubXVsdGlMaW5lLGRlZmF1bHRWYWx1ZToiIix2YWxpZGF0ZTplPT4wPT09ZXx8MT09PWV9KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy52U2Nyb2xsUG9saWN5PWdldFN0cmluZ09wdGlvbihlLnZTY3JvbGxQb2xpY3ksWyJhdXRvIiwib2ZmIiwib24iXSk7dGhpcy5ib3JkZXI9bnVsbDt0aGlzLmNvbWI9bnVsbDt0aGlzLmV4dHJhcz1udWxsO3RoaXMubWFyZ2luPW51bGx9W0tzXShlKXtjb25zdCB0PXRvU3R5bGUodGhpcywiYm9yZGVyIiwi
101Zm9udCIsIm1hcmdpbiIpO2xldCBhO2NvbnN0IHI9dGhpc1tkc10oKVtkc10oKTsiIj09PXRoaXMubXVsdGlMaW5lJiYodGhpcy5tdWx0aUxpbmU9ciBpbnN0YW5jZW9mIERyYXc/MTowKTthPTE9PT10aGlzLm11bHRpTGluZT97bmFtZToidGV4dGFyZWEiLGF0dHJpYnV0ZXM6e2RhdGFJZDpyW1ZuXT8uW1pzXXx8cltac10sZmllbGRJZDpyW1pzXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChyKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTp7bmFtZToiaW5wdXQiLGF0dHJpYnV0ZXM6e3R5cGU6InRleHQiLGRhdGFJZDpyW1ZuXT8uW1pzXXx8cltac10sZmllbGRJZDpyW1pzXSxjbGFzczpbInhmYVRleHRmaWVsZCJdLHN0eWxlOnQsImFyaWEtbGFiZWwiOmFyaWFMYWJlbChyKSwiYXJpYS1yZXF1aXJlZCI6ITF9fTtpZihpc1JlcXVpcmVkKHIpKXthLmF0dHJpYnV0ZXNbImFyaWEtcmVxdWlyZWQiXT0hMDthLmF0dHJpYnV0ZXMucmVxdWlyZWQ9ITB9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToibGFiZWwiLGF0dHJpYnV0ZXM6e2NsYXNzOlsieGZhTGFiZWwiXX0sY2hpbGRyZW46W2FdfSl9fWNsYXNzIFRpbWUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInRpbWUiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn1bWW5dKCl7Y29uc3QgZT10aGlzW0duXS50cmltKCk7dGhpc1tHbl09ZT9uZXcgRGF0ZShlKTpudWxsfVtLc10oZSl7cmV0dXJuIHZhbHVlVG9IdG1sKHRoaXNbR25dP3RoaXNbR25dLnRvU3RyaW5nKCk6IiIpfX1jbGFzcyBUaW1lU3RhbXAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInRpbWVTdGFtcCIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5zZXJ2ZXI9ZS5zZXJ2ZXJ8fCIiO3RoaXMudHlwZT1nZXRTdHJpbmdPcHRpb24oZS50eXBlLFsib3B0aW9uYWwiLCJyZXF1aXJlZCJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRvb2xUaXAgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInRvb2xUaXAiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMucmlkPWUucmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFRyYXZlcnNhbCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywidHJhdmVyc2FsIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnRyYXZlcnNlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhdmVyc2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInRyYXZlcnNlIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm9wZXJhdGlvbj1nZXRTdHJpbmdPcHRpb24oZS5vcGVyYXRpb24sWyJuZXh0IiwiYmFjayIsImRvd24iLCJmaXJzdCIsImxlZnQiLCJyaWdodCIsInVwIl0pO3RoaXMucmVmPWUucmVmfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnNjcmlwdD1udWxsfWdldCBuYW1lKCl7cmV0dXJuIHRoaXMub3BlcmF0aW9ufVtGc10oKXtyZXR1cm4hMX19Y2xhc3MgVWkgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInVpIiwhMCk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLmJhcmNvZGU9bnVsbDt0aGlzLmJ1dHRvbj1udWxsO3RoaXMuY2hlY2tCdXR0b249bnVsbDt0aGlzLmNob2ljZUxpc3Q9bnVsbDt0aGlzLmRhdGVUaW1lRWRpdD1udWxsO3RoaXMuZGVmYXVsdFVpPW51bGw7dGhpcy5pbWFnZUVkaXQ9bnVsbDt0aGlzLm51bWVyaWNFZGl0PW51bGw7dGhpcy5wYXNzd29yZEVkaXQ9bnVsbDt0aGlzLnNpZ25hdHVyZT1udWxsO3RoaXMudGV4dEVkaXQ9bnVsbH1bc3NdKCl7aWYodm9pZCAwPT09dGhpc1tKbl0pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtpZigiZXh0cmFzIj09PWV8fCJwaWN0dXJlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3Qpe3RoaXNbSm5dPXQ7cmV0dXJuIHR9fXRoaXNbSm5dPW51bGx9cmV0dXJuIHRoaXNbSm5dfVtLc10oZSl7Y29uc3QgdD10aGlzW3NzXSgpO3JldHVybiB0P3RbS3NdKGUpOkhUTUxSZXN1bHQuRU1QVFl9fWNsYXNzIFZhbGlkYXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKE5vLCJ2YWxpZGF0ZSIsITApO3RoaXMuZm9ybWF0VGVzdD1nZXRTdHJpbmdPcHRpb24oZS5mb3JtYXRUZXN0LFsid2FybmluZyIsImRpc2FibGVkIiwiZXJyb3IiXSk7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm51bGxUZXN0PWdldFN0cmluZ09wdGlvbihlLm51bGxUZXN0LFsiZGlzYWJsZWQiLCJlcnJvciIsIndhcm5pbmciXSk7dGhpcy5zY3JpcHRUZXN0PWdldFN0cmluZ09wdGlvbihlLnNjcmlwdFRlc3QsWyJlcnJvciIsImRpc2FibGVkIiwid2FybmluZyJdKTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5leHRyYXM9bnVsbDt0aGlzLm1lc3NhZ2U9bnVsbDt0aGlzLnBpY3R1cmU9bnVsbDt0aGlzLnNjcmlwdD1udWxsfX1jbGFzcyBWYWx1ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihObywidmFsdWUiLCEwKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMub3ZlcnJpZGU9Z2V0SW50ZWdlcih7ZGF0YTplLm92ZXJyaWRlLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5yZWxldmFudD1nZXRSZWxldmFudChlLnJlbGV2YW50KTt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiI7dGhpcy5hcmM9bnVsbDt0aGlzLmJvb2xlYW49bnVsbDt0aGlzLmRhdGU9bnVsbDt0aGlzLmRhdGVUaW1lPW51bGw7dGhpcy5kZWNpbWFsPW51bGw7dGhpcy5leERhdGE9bnVsbDt0aGlzLmZsb2F0PW51bGw7dGhpcy5pbWFnZT1udWxsO3RoaXMuaW50ZWdlcj1udWxsO3RoaXMubGluZT1udWxsO3RoaXMucmVjdGFuZ2xlPW51bGw7dGhpcy50ZXh0PW51bGw7dGhpcy50aW1lPW51bGx9W3pzXShlKXtjb25zdCB0PXRoaXNbZHNdKCk7aWYodCBpbnN0YW5jZW9mIEZpZWxkJiZ0LnVpPy5pbWFnZUVkaXQpe2lmKCF0aGlzLmltYWdlKXt0aGlzLmltYWdlPW5ldyBJbWFnZSh7fSk7dGhpc1tqbl0odGhpcy5pbWFnZSl9dGhpcy5pbWFnZVtHbl09ZVtHbl07cmV0dXJufWNvbnN0IGE9ZVtEc107aWYobnVsbD09PXR
101oaXNbYV0pe2Zvcihjb25zdCBlIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMpKXtjb25zdCB0PXRoaXNbZV07aWYodCBpbnN0YW5jZW9mIFhGQU9iamVjdCl7dGhpc1tlXT1udWxsO3RoaXNbVXNdKHQpfX10aGlzW2VbRHNdXT1lO3RoaXNbam5dKGUpfWVsc2UgdGhpc1thXVtHbl09ZVtHbl19W0dzXSgpe2lmKHRoaXMuZXhEYXRhKXJldHVybiJzdHJpbmciPT10eXBlb2YgdGhpcy5leERhdGFbR25dP3RoaXMuZXhEYXRhW0duXS50cmltKCk6dGhpcy5leERhdGFbR25dW0dzXSgpLnRyaW0oKTtmb3IoY29uc3QgZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7aWYoImltYWdlIj09PWUpY29udGludWU7Y29uc3QgdD10aGlzW2VdO2lmKHQgaW5zdGFuY2VvZiBYRkFPYmplY3QpcmV0dXJuKHRbR25dfHwiIikudG9TdHJpbmcoKS50cmltKCl9cmV0dXJuIG51bGx9W0tzXShlKXtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl7Y29uc3QgYT10aGlzW3RdO2lmKGEgaW5zdGFuY2VvZiBYRkFPYmplY3QpcmV0dXJuIGFbS3NdKGUpfXJldHVybiBIVE1MUmVzdWx0LkVNUFRZfX1jbGFzcyBWYXJpYWJsZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoTm8sInZhcmlhYmxlcyIsITApO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIiO3RoaXMuYm9vbGVhbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kYXRlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRhdGVUaW1lPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmRlY2ltYWw9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMuZXhEYXRhPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmZsb2F0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmltYWdlPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmludGVnZXI9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubWFuaWZlc3Q9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuc2NyaXB0PW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRleHQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMudGltZT1uZXcgWEZBT2JqZWN0QXJyYXl9W0ZzXSgpe3JldHVybiEwfX1jbGFzcyBUZW1wbGF0ZU5hbWVzcGFjZXtzdGF0aWNbUXNdKGUsdCl7aWYoVGVtcGxhdGVOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpe2NvbnN0IGE9VGVtcGxhdGVOYW1lc3BhY2VbZV0odCk7YVtXc10odCk7cmV0dXJuIGF9fXN0YXRpYyBhcHBlYXJhbmNlRmlsdGVyKGUpe3JldHVybiBuZXcgQXBwZWFyYW5jZUZpbHRlcihlKX1zdGF0aWMgYXJjKGUpe3JldHVybiBuZXcgQXJjKGUpfXN0YXRpYyBhcmVhKGUpe3JldHVybiBuZXcgQXJlYShlKX1zdGF0aWMgYXNzaXN0KGUpe3JldHVybiBuZXcgQXNzaXN0KGUpfXN0YXRpYyBiYXJjb2RlKGUpe3JldHVybiBuZXcgQmFyY29kZShlKX1zdGF0aWMgYmluZChlKXtyZXR1cm4gbmV3IEJpbmQoZSl9c3RhdGljIGJpbmRJdGVtcyhlKXtyZXR1cm4gbmV3IEJpbmRJdGVtcyhlKX1zdGF0aWMgYm9va2VuZChlKXtyZXR1cm4gbmV3IEJvb2tlbmQoZSl9c3RhdGljIGJvb2xlYW4oZSl7cmV0dXJuIG5ldyBCb29sZWFuRWxlbWVudChlKX1zdGF0aWMgYm9yZGVyKGUpe3JldHVybiBuZXcgQm9yZGVyKGUpfXN0YXRpYyBicmVhayhlKXtyZXR1cm4gbmV3IEJyZWFrKGUpfXN0YXRpYyBicmVha0FmdGVyKGUpe3JldHVybiBuZXcgQnJlYWtBZnRlcihlKX1zdGF0aWMgYnJlYWtCZWZvcmUoZSl7cmV0dXJuIG5ldyBCcmVha0JlZm9yZShlKX1zdGF0aWMgYnV0dG9uKGUpe3JldHVybiBuZXcgQnV0dG9uKGUpfXN0YXRpYyBjYWxjdWxhdGUoZSl7cmV0dXJuIG5ldyBDYWxjdWxhdGUoZSl9c3RhdGljIGNhcHRpb24oZSl7cmV0dXJuIG5ldyBDYXB0aW9uKGUpfXN0YXRpYyBjZXJ0aWZpY2F0ZShlKXtyZXR1cm4gbmV3IENlcnRpZmljYXRlKGUpfXN0YXRpYyBjZXJ0aWZpY2F0ZXMoZSl7cmV0dXJuIG5ldyBDZXJ0aWZpY2F0ZXMoZSl9c3RhdGljIGNoZWNrQnV0dG9uKGUpe3JldHVybiBuZXcgQ2hlY2tCdXR0b24oZSl9c3RhdGljIGNob2ljZUxpc3QoZSl7cmV0dXJuIG5ldyBDaG9pY2VMaXN0KGUpfXN0YXRpYyBjb2xvcihlKXtyZXR1cm4gbmV3IENvbG9yKGUpfXN0YXRpYyBjb21iKGUpe3JldHVybiBuZXcgQ29tYihlKX1zdGF0aWMgY29ubmVjdChlKXtyZXR1cm4gbmV3IENvbm5lY3QoZSl9c3RhdGljIGNvbnRlbnRBcmVhKGUpe3JldHVybiBuZXcgQ29udGVudEFyZWEoZSl9c3RhdGljIGNvcm5lcihlKXtyZXR1cm4gbmV3IENvcm5lcihlKX1zdGF0aWMgZGF0ZShlKXtyZXR1cm4gbmV3IERhdGVFbGVtZW50KGUpfXN0YXRpYyBkYXRlVGltZShlKXtyZXR1cm4gbmV3IERhdGVUaW1lKGUpf
101XN0YXRpYyBkYXRlVGltZUVkaXQoZSl7cmV0dXJuIG5ldyBEYXRlVGltZUVkaXQoZSl9c3RhdGljIGRlY2ltYWwoZSl7cmV0dXJuIG5ldyBEZWNpbWFsKGUpfXN0YXRpYyBkZWZhdWx0VWkoZSl7cmV0dXJuIG5ldyBEZWZhdWx0VWkoZSl9c3RhdGljIGRlc2MoZSl7cmV0dXJuIG5ldyBEZXNjKGUpfXN0YXRpYyBkaWdlc3RNZXRob2QoZSl7cmV0dXJuIG5ldyBEaWdlc3RNZXRob2QoZSl9c3RhdGljIGRpZ2VzdE1ldGhvZHMoZSl7cmV0dXJuIG5ldyBEaWdlc3RNZXRob2RzKGUpfXN0YXRpYyBkcmF3KGUpe3JldHVybiBuZXcgRHJhdyhlKX1zdGF0aWMgZWRnZShlKXtyZXR1cm4gbmV3IEVkZ2UoZSl9c3RhdGljIGVuY29kaW5nKGUpe3JldHVybiBuZXcgRW5jb2RpbmcoZSl9c3RhdGljIGVuY29kaW5ncyhlKXtyZXR1cm4gbmV3IEVuY29kaW5ncyhlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IEVuY3J5cHQoZSl9c3RhdGljIGVuY3J5cHREYXRhKGUpe3JldHVybiBuZXcgRW5jcnlwdERhdGEoZSl9c3RhdGljIGVuY3J5cHRpb24oZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uKGUpfXN0YXRpYyBlbmNyeXB0aW9uTWV0aG9kKGUpe3JldHVybiBuZXcgRW5jcnlwdGlvbk1ldGhvZChlKX1zdGF0aWMgZW5jcnlwdGlvbk1ldGhvZHMoZSl7cmV0dXJuIG5ldyBFbmNyeXB0aW9uTWV0aG9kcyhlKX1zdGF0aWMgZXZlbnQoZSl7cmV0dXJuIG5ldyBFdmVudChlKX1zdGF0aWMgZXhEYXRhKGUpe3JldHVybiBuZXcgRXhEYXRhKGUpfXN0YXRpYyBleE9iamVjdChlKXtyZXR1cm4gbmV3IEV4T2JqZWN0KGUpfXN0YXRpYyBleGNsR3JvdXAoZSl7cmV0dXJuIG5ldyBFeGNsR3JvdXAoZSl9c3RhdGljIGV4ZWN1dGUoZSl7cmV0dXJuIG5ldyBFeGVjdXRlKGUpfXN0YXRpYyBleHRyYXMoZSl7cmV0dXJuIG5ldyBFeHRyYXMoZSl9c3Rh
101dGljIGZpZWxkKGUpe3JldHVybiBuZXcgRmllbGQoZSl9c3RhdGljIGZpbGwoZSl7cmV0dXJuIG5ldyBGaWxsKGUpfXN0YXRpYyBmaWx0ZXIoZSl7cmV0dXJuIG5ldyBGaWx0ZXIoZSl9c3RhdGljIGZsb2F0KGUpe3JldHVybiBuZXcgRmxvYXQoZSl9c3RhdGljIGZvbnQoZSl7cmV0dXJuIG5ldyB0ZW1wbGF0ZV9Gb250KGUpfXN0YXRpYyBmb3JtYXQoZSl7cmV0dXJuIG5ldyBGb3JtYXQoZSl9c3RhdGljIGhhbmRsZXIoZSl7cmV0dXJuIG5ldyBIYW5kbGVyKGUpfXN0YXRpYyBoeXBoZW5hdGlvbihlKXtyZXR1cm4gbmV3IEh5cGhlbmF0aW9uKGUpfXN0YXRpYyBpbWFnZShlKXtyZXR1cm4gbmV3IEltYWdlKGUpfXN0YXRpYyBpbWFnZUVkaXQoZSl7cmV0dXJuIG5ldyBJbWFnZUVkaXQoZSl9c3RhdGljIGludGVnZXIoZSl7cmV0dXJuIG5ldyBJbnRlZ2VyKGUpfXN0YXRpYyBpc3N1ZXJzKGUpe3JldHVybiBuZXcgSXNzdWVycyhlKX1zdGF0aWMgaXRlbXMoZSl7cmV0dXJuIG5ldyBJdGVtcyhlKX1zdGF0aWMga2VlcChlKXtyZXR1cm4gbmV3IEtlZXAoZSl9c3RhdGljIGtleVVzYWdlKGUpe3JldHVybiBuZXcgS2V5VXNhZ2UoZSl9c3RhdGljIGxpbmUoZSl7cmV0dXJuIG5ldyBMaW5lKGUpfXN0YXRpYyBsaW5lYXIoZSl7cmV0dXJuIG5ldyBMaW5lYXIoZSl9c3RhdGljIGxvY2tEb2N1bWVudChlKXtyZXR1cm4gbmV3IExvY2tEb2N1bWVudChlKX1zdGF0aWMgbWFuaWZlc3QoZSl7cmV0dXJuIG5ldyBNYW5pZmVzdChlKX1zdGF0aWMgbWFyZ2luKGUpe3JldHVybiBuZXcgTWFyZ2luKGUpfXN0YXRpYyBtZHAoZSl7cmV0dXJuIG5ldyBNZHAoZSl9c3RhdGljIG1lZGl1bShlKXtyZXR1cm4gbmV3IE1lZGl1bShlKX1zdGF0aWMgbWVzc2FnZShlKXtyZXR1cm4gbmV3IE1lc3NhZ2UoZSl9c3RhdGljIG51bWVyaWNFZGl0KGUpe3JldHVybiBuZXcgTnVtZXJpY0VkaXQoZSl9c3RhdGljIG9jY3VyKGUpe3JldHVybiBuZXcgT2NjdXIoZSl9c3RhdGljIG9pZChlKXtyZXR1cm4gbmV3IE9pZChlKX1zdGF0aWMgb2lkcyhlKXtyZXR1cm4gbmV3IE9pZHMoZSl9c3Rh
101dGljIG92ZXJmbG93KGUpe3JldHVybiBuZXcgT3ZlcmZsb3coZSl9c3RhdGljIHBhZ2VBcmVhKGUpe3JldHVybiBuZXcgUGFnZUFyZWEoZSl9c3RhdGljIHBhZ2VTZXQoZSl7cmV0dXJuIG5ldyBQYWdlU2V0KGUpfXN0YXRpYyBwYXJhKGUpe3JldHVybiBuZXcgUGFyYShlKX1zdGF0aWMgcGFzc3dvcmRFZGl0KGUpe3JldHVybiBuZXcgUGFzc3dvcmRFZGl0KGUpfXN0YXRpYyBwYXR0ZXJuKGUpe3JldHVybiBuZXcgdGVtcGxhdGVfUGF0dGVybihlKX1zdGF0aWMgcGljdHVyZShlKXtyZXR1cm4gbmV3IFBpY3R1cmUoZSl9c3RhdGljIHByb3RvKGUpe3JldHVybiBuZXcgUHJvdG8oZSl9c3RhdGljIHJhZGlhbChlKXtyZXR1cm4gbmV3IFJhZGlhbChlKX1zdGF0aWMgcmVhc29uKGUpe3JldHVybiBuZXcgUmVhc29uKGUpfXN0YXRpYyByZWFzb25zKGUpe3JldHVybiBuZXcgUmVhc29ucyhlKX1zdGF0aWMgcmVjdGFuZ2xlKGUpe3JldHVybiBuZXcgUmVjdGFuZ2xlKGUpfXN0YXRpYyByZWYoZSl7cmV0dXJuIG5ldyBSZWZFbGVtZW50KGUpfXN0YXRpYyBzY3JpcHQoZSl7cmV0dXJuIG5ldyBTY3JpcHQoZSl9c3RhdGljIHNldFByb3BlcnR5KGUpe3JldHVybiBuZXcgU2V0UHJvcGVydHkoZSl9c3RhdGljIHNpZ25EYXRhKGUpe3JldHVybiBuZXcgU2lnbkRhdGEoZSl9c3RhdGljIHNpZ25hdHVyZShlKXtyZXR1cm4gbmV3IFNpZ25hdHVyZShlKX1zdGF0aWMgc2lnbmluZyhlKXtyZXR1cm4gbmV3IFNpZ25pbmcoZSl9c3RhdGljIHNvbGlkKGUpe3JldHVybiBuZXcgU29saWQoZSl9c3RhdGljIHNwZWFrKGUpe3JldHVybiBuZXcgU3BlYWsoZSl9c3RhdGljIHN0aXBwbGUoZSl7cmV0dXJuIG5ldyBTdGlwcGxlKGUpfXN0YXRpYyBzdWJmb3JtKGUpe3JldHVybiBuZXcgU3ViZm9ybShlKX1zdGF0aWMgc3ViZm9ybVNldChlKXtyZXR1cm4gbmV3IFN1YmZvcm1TZXQoZSl9c3Rh
101dGljIHN1YmplY3RETihlKXtyZXR1cm4gbmV3IFN1YmplY3RETihlKX1zdGF0aWMgc3ViamVjdEROcyhlKXtyZXR1cm4gbmV3IFN1YmplY3RETnMoZSl9c3RhdGljIHN1Ym1pdChlKXtyZXR1cm4gbmV3IFN1Ym1pdChlKX1zdGF0aWMgdGVtcGxhdGUoZSl7cmV0dXJuIG5ldyBUZW1wbGF0ZShlKX1zdGF0aWMgdGV4dChlKXtyZXR1cm4gbmV3IFRleHQoZSl9c3RhdGljIHRleHRFZGl0KGUpe3JldHVybiBuZXcgVGV4dEVkaXQoZSl9c3RhdGljIHRpbWUoZSl7cmV0dXJuIG5ldyBUaW1lKGUpfXN0YXRpYyB0aW1lU3RhbXAoZSl7cmV0dXJuIG5ldyBUaW1lU3RhbXAoZSl9c3RhdGljIHRvb2xUaXAoZSl7cmV0dXJuIG5ldyBUb29sVGlwKGUpfXN0YXRpYyB0cmF2ZXJzYWwoZSl7cmV0dXJuIG5ldyBUcmF2ZXJzYWwoZSl9c3RhdGljIHRyYXZlcnNlKGUpe3JldHVybiBuZXcgVHJhdmVyc2UoZSl9c3RhdGljIHVpKGUpe3JldHVybiBuZXcgVWkoZSl9c3RhdGljIHZhbGlkYXRlKGUpe3JldHVybiBuZXcgVmFsaWRhdGUoZSl9c3RhdGljIHZhbHVlKGUpe3JldHVybiBuZXcgVmFsdWUoZSl9c3RhdGljIHZhcmlhYmxlcyhlKXtyZXR1cm4gbmV3IFZhcmlhYmxlcyhlKX19Y29uc3QgVW89ZW8uZGF0YXNldHMuaWQ7ZnVuY3Rpb24gY3JlYXRlVGV4dChlKXtjb25zdCB0PW5ldyBUZXh0KHt9KTt0W0duXT1lO3JldHVybiB0fWNsYXNzIEJpbmRlcntjb25zdHJ1Y3RvcihlKXt0aGlzLnJvb3Q9ZTt0aGlzLmRhdGFzZXRzPWUuZGF0YXNldHM7dGhpcy5kYXRhPWUuZGF0YXNldHM/LmRhdGF8fG5ldyBYbWxPYmplY3QoZW8uZGF0YXNldHMuaWQsImRhdGEiKTt0aGlzLmVtcHR5TWVyZ2U9MD09PXRoaXMuZGF0YVtjc10oKS5sZW5ndGg7dGhpcy5yb290LmZvcm09dGhpcy5mb3JtPWUudGVtcGxhdGVbem5dKCl9X2lzQ29uc3VtZURhdGEoKXtyZXR1cm4hdGhpcy5lbXB0eU1lcmdlJiZ0aGlzLl9tZXJnZU1vZGV9X2lzTWF0Y2hUZW1wbGF0ZSgpe3JldHVybiF0aGlzLl9pc0NvbnN1bWVEYXRhKCl9YmluZCgpe3RoaXMuX2JpbmRFbGVtZW50KHRoaXMuZm9ybSx0aGlzLmRhdGEpO3JldHVybiB0aGlzLmZvcm19Z2V0RGF0YSgpe3JldHVybiB0aGlzLmRhdGF9X2JpbmRWYWx1ZShlLHQsYSl7ZVtWbl09dDtpZihlW3BzXSgpKWlmKHRbU3NdKCkpe2NvbnN0IGE9dFtuc10oKTtlW3pzXShjcmVhdGVUZXh0KGEpKX1lbHNlIGlmKGUgaW5zdGFuY2VvZiBGaWVsZCYmIm11bHRpU2VsZWN0Ij09PWUudWk/LmNob2ljZUxpc3Q/Lm9wZW4pe2NvbnN0IGE9dFtjc10oKS5tYXAoZT0+ZVtHbl0udHJpbSgpKS5qb2luKCJcbiIpO2VbenNdKGNyZWF0ZVRleHQoYSkpfWVsc2UgdGhpcy5faXNDb25zdW1lRGF0YSgpJiZ3YXJuKCJYRkEgLSBOb2RlcyBoYXZlbid0IHRoZSBzYW1lIHR5cGUuIik7ZWxzZSF0W1NzXSgpfHx0aGlzLl9pc01hdGNoVGVtcGxhdGUoKT90aGlzLl9iaW5kRWxlbWVudChlLHQpOndhcm4oIlhGQSAtIE5vZGVzIGhhdmVuJ3QgdGhlIHNhbWUgdHlwZS4iKX1fZmluZERhdGFCeU5hbWVUb0NvbnN1bWUoZSx0LGEscil7aWYoIWUpcmV0dXJuIG51bGw7bGV0IGksbjtmb3IobGV0IHI9MDtyPDM7cisrKXtpPWFbb3NdKGUsITEsITApO2Zvcig7Oyl7bj1pLm5leHQoKS52YWx1ZTtpZighbilicmVhaztpZih0PT09bltTc10oKSlyZXR1cm4gbn1pZihhW09zXT09PWVvLmRhdGFzZXRzLmlkJiYiZGF0YSI9PT1hW0RzXSlicmVhazthPWFbZHNdKCl9aWYoIXIpcmV0dXJuIG51bGw7aT10aGlzLmRhdGFbb3NdKGUsITAsITEpO249aS5uZXh0KCkudmFsdWU7aWYobilyZXR1cm4gbjtpPXRoaXMuZGF0YVtRbl0oZSwhMCk7bj1pLm5leHQoKS52YWx1ZTtyZXR1cm4gbj8uW1NzXSgpP246bnVsbH1fc2V0UHJvcGVydGllcyhlLHQpe2lmKGUuaGFzT3duUHJvcGVydHkoInNldFByb3BlcnR5IikpZm9yKGNvbnN0e3JlZjphLHRhcmdldDpyLGNvbm5lY3Rpb246aX1vZiBlLnNldFByb3BlcnR5LmNoaWxkcmVuKXtpZihpKWNvbnRpbnVlO2lmKCFhKWNvbnRpbnVlO2NvbnN0IG49c2VhcmNoTm9kZSh0aGlzLnJvb3QsdCxhLCExLCExKTtpZighbil7d2FybihgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7YX0uYCk7Y29udGludWV9Y29uc3Rbc109bjtpZighc1tBc10odGhpcy5kYXRhKSl7d2FybigiWEZBIC0gSW52YWxpZCBub2RlOiBtdXN0IGJlIGEgZGF0YSBub2RlLiIpO2NvbnRpbnVlfWNvbnN0IG89c2VhcmNoTm9kZSh0aGlzLnJvb3QsZSxyLCExLCExKTtpZighbyl7d2FybihgWEZBIC0gSW52YWxpZCB0YXJnZXQ6ICR7cn0uYCk7Y29udGludWV9Y29uc3RbY109bztpZighY1tBc10oZSkpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBtdXN0IGJlIGEgcHJvcGVydHkgb3Igc3VicHJvcGVydHkuIik7Y29udGludWV9Y29uc3QgbD1jW2RzXSgpO2lmKGMgaW5zdGFuY2VvZiBTZXRQcm9wZXJ0eXx8bCBpbnN0YW5jZW9mIFNldFByb3BlcnR5KXt3YXJuKCJYRkEgLSBJbnZhbGlkIHRhcmdldDogY2Fubm90IGJlIGEgc2V0UHJvcGVydHkgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWlmKGMgaW5zdGFuY2VvZiBCaW5kSXRlbXN8fGwgaW5zdGFuY2VvZiBCaW5kSXRlbXMpe3dhcm4oIlhGQSAtIEludmFsaWQgdGFyZ2V0OiBjYW5ub3QgYmUgYSBiaW5kSXRlbXMgb3Igb25lIG9mIGl0cyBwcm9wZXJ0aWVzLiIpO2NvbnRpbnVlfWNvbnN0IGg9c1tHc10oKSx1PWNbRHNdO2lmKGMgaW5zdGFuY2VvZiBYRkFBdHRyaWJ1dGUpe2NvbnN0IGU9T2JqZWN0LmNyZWF0ZShudWxsKTtlW3VdPWg7Y29uc3QgdD1SZWZsZWN0LmNvbnN0cnVjdChPYmplY3QuZ2V0UHJvdG90eXBlT2YobCkuY29uc3RydWN0b3IsW2VdKTtsW3VdPXRbdV07Y29udGludWV9aWYoYy5oYXNPd25Qcm9wZXJ0eShHbikpe2NbVm5dPXM7Y1tHbl09aDtjW1luXSgpfWVsc2Ugd2FybigiWEZBIC0gSW52YWxpZCBub2RlIHRvIHVzZSBpbiBzZXRQcm9wZXJ0eSIpfX1fYmluZEl0ZW1zKGUsdCl7aWYoIWUuaGFzT3duUHJvcGVydHkoIml0ZW1zIil8fCFlLmhhc093blByb3BlcnR5KCJiaW5kSXRlbXMiKXx8ZS5iaW5kSXRlbXMuaXNFbXB0eSgpKXJldHVybjtmb3IoY29uc3QgdCBvZiBlLml0ZW1zLmNoaWxkcmVuKWVbVXNdKHQpO2UuaXRlbXMuY2xlYXIoKTtjb25zdCBhPW5ldyBJdGVtcyh7fSkscj1uZXcgSXRlbXMoe30pO2Vbam5dKGEpO2UuaXRlbXMucHVzaChhKTtlW2puXShyKTtlLml0ZW1zLnB1c2gocik7Zm9yKGNvbnN0e3JlZjppLGxhYmVsUmVmOm4sdmFsdWVSZWY6cyxjb25uZWN0aW9uOm99b2YgZS5iaW5kSXRlbXMuY2hpbGRyZW4pe2lmKG8pY29udGludWU7aWYoIWkpY29udGludWU7Y29uc3QgZT1zZWFyY2hOb2RlKHRoaXMucm9vdCx0LGksITEsITEpO2lmKGUpZm9yKGNvbnN0IHQgb2YgZSl7aWYoIXRbQXNdKHRoaXMuZGF0YXNldHMpKXt3YXJuKGBYRkEgLSBJbnZhbGlkIHJlZiAoJHtpfSk6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC5gKTtjb250aW51ZX1jb25zdCBlPXNlYXJjaE5vZGUodGhpcy5yb290LHQsbiwhMCw
101hMSk7aWYoIWUpe3dhcm4oYFhGQSAtIEludmFsaWQgbGFiZWw6ICR7bn0uYCk7Y29udGludWV9Y29uc3Rbb109ZTtpZighb1tBc10odGhpcy5kYXRhc2V0cykpe3dhcm4oIlhGQSAtIEludmFsaWQgbGFiZWw6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBjPXNlYXJjaE5vZGUodGhpcy5yb290LHQscywhMCwhMSk7aWYoIWMpe3dhcm4oYFhGQSAtIEludmFsaWQgdmFsdWU6ICR7c30uYCk7Y29udGludWV9Y29uc3RbbF09YztpZighbFtBc10odGhpcy5kYXRhc2V0cykpe3dhcm4oIlhGQSAtIEludmFsaWQgdmFsdWU6IG11c3QgYmUgYSBkYXRhc2V0cyBjaGlsZC4iKTtjb250aW51ZX1jb25zdCBoPWNyZWF0ZVRleHQob1tHc10oKSksdT1jcmVhdGVUZXh0KGxbR3NdKCkpO2Fbam5dKGgpO2EudGV4dC5wdXNoKGgpO3Jbam5dKHUpO3IudGV4dC5wdXNoKHUpfWVsc2Ugd2FybihgWEZBIC0gSW52YWxpZCByZWZlcmVuY2U6ICR7aX0uYCl9fV9iaW5kT2NjdXJyZW5jZXMoZSx0LGEpe2xldCByO2lmKHQubGVuZ3RoPjEpe3I9ZVt6bl0oKTtyW1VzXShyLm9jY3VyKTtyLm9jY3VyPW51bGx9dGhpcy5fYmluZFZhbHVlKGUsdFswXSxhKTt0aGlzLl9zZXRQcm9wZXJ0aWVzKGUsdFswXSk7dGhpcy5fYmluZEl0ZW1zKGUsdFswXSk7aWYoMT09PXQubGVuZ3RoKXJldHVybjtjb25zdCBpPWVbZHNdKCksbj1lW0RzXSxzPWlbYnNdKGUpO2ZvcihsZXQgZT0xLG89dC5sZW5ndGg7ZTxvO2UrKyl7Y29uc3Qgbz10W2VdLGM9clt6bl0oKTtpW25dLnB1c2goYyk7aVt5c10ocytlLGMpO3RoaXMuX2JpbmRWYWx1ZShjLG8sYSk7dGhpcy5fc2V0UHJvcGVydGllcyhjLG8pO3RoaXMuX2JpbmRJdGVtcyhjLG8pfX1fY3JlYXRlT2NjdXJyZW5jZXMoZSl7aWYoIXRoaXMuZW1wdHlNZXJnZSlyZXR1cm47Y29uc3R7b2NjdXI6dH09ZTtpZighdHx8dC5pbml0aWFsPD0xKXJldHVybjtjb25zdCBhPWVbZHNdKCkscj1lW0RzXTtpZighKGFbcl1pbnN0YW5jZW9mIFhGQU9iamVjdEFycmF
1015KSlyZXR1cm47bGV0IGk7aT1lLm5hbWU/YVtyXS5jaGlsZHJlbi5maWx0ZXIodD0+dC5uYW1lPT09ZS5uYW1lKS5sZW5ndGg6YVtyXS5jaGlsZHJlbi5sZW5ndGg7Y29uc3Qgbj1hW2JzXShlKSsxLHM9dC5pbml0aWFsLWk7aWYocyl7Y29uc3QgdD1lW3puXSgpO3RbVXNdKHQub2NjdXIpO3Qub2NjdXI9bnVsbDthW3JdLnB1c2godCk7YVt5c10obix0KTtmb3IobGV0IGU9MTtlPHM7ZSsrKXtjb25zdCBpPXRbem5dKCk7YVtyXS5wdXNoKGkpO2FbeXNdKG4rZSxpKX19fV9nZXRPY2N1ckluZm8oZSl7Y29uc3R7bmFtZTp0LG9jY3VyOmF9PWU7aWYoIWF8fCF0KXJldHVyblsxLDFdO2NvbnN0IHI9LTE9PT1hLm1heD8xLzA6YS5tYXg7cmV0dXJuW2EubWluLHJdfV9zZXRBbmRCaW5kKGUsdCl7dGhpcy5fc2V0UHJvcGVydGllcyhlLHQpO3RoaXMuX2JpbmRJdGVtcyhlLHQpO3RoaXMuX2JpbmRFbGVtZW50KGUsdCl9X2JpbmRFbGVtZW50KGUsdCl7Y29uc3QgYT1bXTt0aGlzLl9jcmVhdGVPY2N1cnJlbmNlcyhlKTtmb3IoY29uc3QgciBvZiBlW2NzXSgpKXtpZihyW1ZuXSljb250aW51ZTtpZih2b2lkIDA9PT10aGlzLl9tZXJnZU1vZGUmJiJzdWJmb3JtIj09PXJbRHNdKXt0aGlzLl9tZXJnZU1vZGU9ImNvbnN1bWVEYXRhIj09PXIubWVyZ2VNb2RlO2NvbnN0IGU9dFtjc10oKTtpZihlLmxlbmd0aD4wKXRoaXMuX2JpbmRPY2N1cnJlbmNlcyhyLFtlWzBdXSxudWxsKTtlbHNlIGlmKHRoaXMuZW1wdHlNZXJnZSl7Y29uc3QgZT10W09zXT09PVVvPy0xOnRbT3NdLGE9cltWbl09bmV3IFhtbE9iamVjdChlLHIubmFtZXx8InJvb3QiKTt0W2puXShhKTt0aGlzLl9iaW5kRWxlbWVudChyLGEpfWNvbnRpbnVlfWlmKCFyW3hzXSgpKWNvbnRpbnVlO2xldCBlPSExLGk9bnVsbCxuPW51bGwscz1udWxsO2lmKHIuYmluZCl7c3dpdGNoKHIuYmluZC5tYXRjaCl7Y2FzZSJub25lIjp0aGlzLl9zZXRBbmRCaW5kKHIsdCk7Y29udGludWU7Y2FzZSJnbG9iYWwiOmU9ITA7YnJlYWs7Y2FzZSJkYXRhUmVmIjppZighci5iaW5kLnJlZil7d2FybihgWEZBIC0gcmVmIGlzIGVtcHR5IGluIG5vZGUgJHtyW0RzXX0uYCk7dGhpcy5fc2V0QW5kQmluZChyLHQpO2NvbnRpbnVlfW49ci5iaW5kLnJlZn1yLmJpbmQucGljdHVyZSYmKGk9ci5iaW5kLnBpY3R1cmVbR25dKX1jb25zdFtvLGNdPXRoaXMuX2dldE9jY3VySW5mbyhyKTtpZihuKXtzPXNlYXJjaE5vZGUodGhpcy5yb290LHQsbiwhMCw
101hMSk7aWYobnVsbD09PXMpe3M9Y3JlYXRlRGF0YU5vZGUodGhpcy5kYXRhLHQsbik7aWYoIXMpY29udGludWU7dGhpcy5faXNDb25zdW1lRGF0YSgpJiYoc1skbl09ITApO3RoaXMuX3NldEFuZEJpbmQocixzKTtjb250aW51ZX10aGlzLl9pc0NvbnN1bWVEYXRhKCkmJihzPXMuZmlsdGVyKGU9PiFlWyRuXSkpO3MubGVuZ3RoPmM/cz1zLnNsaWNlKDAsYyk6MD09PXMubGVuZ3RoJiYocz1udWxsKTtzJiZ0aGlzLl9pc0NvbnN1bWVEYXRhKCkmJnMuZm9yRWFjaChlPT57ZVskbl09ITB9KX1lbHNle2lmKCFyLm5hbWUpe3RoaXMuX3NldEFuZEJpbmQocix0KTtjb250aW51ZX1pZih0aGlzLl9pc0NvbnN1bWVEYXRhKCkpe2NvbnN0IGE9W107Zm9yKDthLmxlbmd0aDxjOyl7Y29uc3QgaT10aGlzLl9maW5kRGF0YUJ5TmFtZVRvQ29uc3VtZShyLm5hbWUscltwc10oKSx0LGUpO2lmKCFpKWJyZWFrO2lbJG5dPSEwO2EucHVzaChpKX1zPWEubGVuZ3RoPjA/YTpudWxsfWVsc2V7cz10W29zXShyLm5hbWUsITEsdGhpcy5lbXB0eU1lcmdlKS5uZXh0KCkudmFsdWU7aWYoIXMpe2lmKDA9PT1vKXthLnB1c2gocik7Y29udGludWV9Y29uc3QgZT10W09zXT09PVVvPy0xOnRbT3NdO3M9cltWbl09bmV3IFhtbE9iamVjdChlLHIubmFtZSk7dGhpcy5lbXB0eU1lcmdlJiYoc1skbl09ITApO3Rbam5dKHMpO3RoaXMuX3NldEFuZEJpbmQocixzKTtjb250aW51ZX10aGlzLmVtcHR5TWVyZ2UmJihzWyRuXT0hMCk7cz1bc119fXM/dGhpcy5fYmluZE9jY3VycmVuY2VzKHIscyxpKTpvPjA/dGhpcy5fc2V0QW5kQmluZChyLHQpOmEucHVzaChyKX1hLmZvckVhY2goZT0+ZVtkc10oKVtVc10oZSkpfX1jbGFzcyBEYXRhSGFuZGxlcntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuZGF0YT10O3RoaXMuZGF0YXNldD1lLmRhdGFzZXRzfHxudWxsfXNlcmlhbGl6ZShlKXtjb25zdCB0PVtbLTEsdGhpcy5kYXRhW2NzXSgpXV07Zm9yKDt0Lmxlbmd0aD4wOyl7Y29uc3QgYT10LmF0KC0xKSxbcixpXT1hO2lmKHIrMT09PWkubGVuZ3RoKXt0LnBvcCgpO2NvbnRpbnVlfWNvbnN0IG49aVsrK2FbMF1dLHM9ZS5nZXQobltac10pO2lmKHMpblt6c10ocyk7ZWxzZXtjb25zdCB0PW5bZXNdKCk7Zm9yKGNvbnN0IGEgb2YgdC52YWx1ZXMoKSl7Y29uc3QgdD1lLmdldChhW1pzXSk7aWYodCl7YVt6c10odCk7YnJlYWt9fX1jb25zdCBvPW5bY3NdKCk7by5sZW5ndGg+MCYmdC5wdXNoKFstMSxvXSl9Y29uc3QgYT1bJzx4ZmE6ZGF0YXNldHMgeG1sbnM6eGZhPSJodHRwOi8vd3d3LnhmYS5vcmcvc2NoZW1hL3hmYS1kYXRhLzEuMC8iPiddO2lmKHRoaXMuZGF0YXNldClmb3IoY29uc3QgZSBvZiB0aGlzLmRhdGFzZXRbY3NdKCkpImRhdGEiIT09ZVtEc10mJmVbSnNdKGEpO3RoaXMuZGF0YVtKc10oYSk7YS5wdXNoKCI8L3hmYTpkYXRhc2V0cz4iKTtyZXR1cm4gYS5qb2luKCIiKX19Y29uc3Qgam89ZW8uY29uZmlnLmlkO2NsYXNzIEFjcm9iYXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImFjcm9iYXQiLCEwKTt0aGlzLmFjcm9iYXQ3PW51bGw7dGhpcy5hdXRvU2F2ZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy52YWxpZGF0ZT1udWxsO3RoaXMudmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXM9bnVsbDt0aGlzLnN1Ym1pdFVybD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEFjcm9iYXQ3IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJhY3JvYmF0NyIsITApO3RoaXMuZHluYW1pY1JlbmRlcj1udWxsfX1jbGFzcyBBREJFX0pTQ29uc29sZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiQURCRV9KU0NvbnNvbGUiLFsiZGVsZWdhdGUiLCJFbmFibGUiLCJEaXNhYmxlIl0pfX1jbGFzcyBBREJFX0pTRGVidWdnZXIgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIkFEQkVfSlNEZWJ1Z2dlciIsWyJkZWxlZ2F0ZSIsIkVuYWJsZSIsIkRpc2FibGUiXSl9fWNsYXNzIEFkZFNpbGVudFByaW50IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImFkZFNpbGVudFByaW50Iil9fWNsYXNzIEFkZFZpZXdlclByZWZlcmVuY2VzIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImFkZFZpZXdlclByZWZlcmVuY2VzIil9fWNsYXNzIEFkanVzdERhdGEgZXh0ZW5kcyBPcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiYWRqdXN0RGF0YSIpfX1jbGFzcyBBZG9iZUV4dGVuc2lvbkxldmVsIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiYWRvYmVFeHRlbnNpb25MZXZlbCIsMCxlPT5lPj0xJiZlPD04KX19Y2xhc3MgQWdlbnQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImFnZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuY29tbW9uPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQWx3YXlzRW1iZWQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJhbHdheXNFbWJlZCIpfX1jbGFzcyBBbWQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImFtZCIpfX1jbGFzcyBjb25maWdfQXJlYSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiYXJlYSIpO3RoaXMubGV2ZWw9Z2V0SW50ZWdlcih7ZGF0YTplLmxldmVsLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PmU+PTEmJmU8PTN9KTt0aGlzLm5hbWU9Z2V0U3RyaW5nT3B0aW9uKGUubmFtZSxbIiIsImJhcmNvZGUiLCJjb3JlaW5pdCIsImRldmljZURyaXZlciIsImZvbnQiLCJnZW5lcmFsIiwibGF5b3V0IiwibWVyZ2UiLCJzY3JpcHQiLCJzaWduYXR1cmUiLCJzb3VyY2VTZXQiLCJ0ZW1wbGF0ZUNhY2hlIl0pfX1jbGFzcyBBdHRyaWJ1dGVzIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJhdHRyaWJ1dGVzIixbInByZXNlcnZlIiwiZGVsZWdhdGUiLCJpZ25vcmUiXSl9fWNsYXNzIEF1dG9TYXZlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJhdXRvU2F2ZSIsWyJkaXNhYmxlZCIsImVuYWJsZWQiXSl9fWNsYXNzIEJhc2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImJhc2UiKX19Y2xhc3MgQmF0Y2hPdXRwdXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImJhdGNoT3V0cHV0Iik7dGhpcy5mb3JtYXQ9Z2V0U3RyaW5nT3B0aW9uKGUuZm9ybWF0LFsibm9uZSIsImNvbmNhdCIsInppcCIsInppcENvbXByZXNzIl0pfX1jbGFzcyBCZWhhdmlvck92ZXJyaWRlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiYmVoYXZpb3JPdmVycmlkZSIpfVtZbl0oKXt0aGlzW0duXT1uZXcgTWFwKHRoaXNbR25dLnRyaW0oKS5zcGxpdCgvXHMrLykuZmlsdGVyKGU9PmUuaW5jbHVkZXMoIjoiKSkubWFwKGU9PmUuc3BsaXQoIjoiLDIpKSl9fWNsYXNzIENhY2hlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJjYWNoZSIsITApO3RoaXMudGVtcGxhdGVDYWNoZT1udWxsfX1jbGFzcyBDaGFuZ2UgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiY2hhbmdlIil9fWNsYXNzIENvbW1vbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiY29tbW9uIiwhMCk7dGhpcy5kYXRhPW51bGw7dGhpcy5sb2NhbGU9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMubWVzc2FnaW5nPW51bGw7dGhpcy5zdXBwcmVzc0Jhbm5lcj1udWxsO3RoaXMudGVtcGxhdGU9b
101nVsbDt0aGlzLnZhbGlkYXRpb25NZXNzYWdpbmc9bnVsbDt0aGlzLnZlcnNpb25Db250cm9sPW51bGw7dGhpcy5sb2c9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBDb21wcmVzcyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiY29tcHJlc3MiKTt0aGlzLnNjb3BlPWdldFN0cmluZ09wdGlvbihlLnNjb3BlLFsiaW1hZ2VPbmx5IiwiZG9jdW1lbnQiXSl9fWNsYXNzIENvbXByZXNzTG9naWNhbFN0cnVjdHVyZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUiKX19Y2xhc3MgQ29tcHJlc3NPYmplY3RTdHJlYW0gZXh0ZW5kcyBPcHRpb24xMHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiY29tcHJlc3NPYmplY3RTdHJlYW0iKX19Y2xhc3MgQ29tcHJlc3Npb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImNvbXByZXNzaW9uIiwhMCk7dGhpcy5jb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmU9bnVsbDt0aGlzLmNvbXByZXNzT2JqZWN0U3RyZWFtPW51bGw7dGhpcy5sZXZlbD1udWxsO3RoaXMudHlwZT1udWxsfX1jbGFzcyBDb25maWcgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImNvbmZpZyIsITApO3RoaXMuYWNyb2JhdD1udWxsO3RoaXMucHJlc2VudD1udWxsO3RoaXMudHJhY2U9bnVsbDt0aGlzLmFnZW50PW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgQ29uZm9ybWFuY2UgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImNvbmZvcm1hbmNlIixbIkEiLCJCIl0pfX1jbGFzcyBDb250ZW50Q29weSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJjb250ZW50Q29weSIpfX1jbGFzcyBDb3BpZXMgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJjb3BpZXMiLDEsZT0+ZT49MSl9fWNsYXNzIENyZWF0b3IgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImNyZWF0b3IiKX19Y2xhc3MgQ3VycmVudFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJjdXJyZW50UGFnZSIsMCxlPT5lPj0wKX19Y2xhc3MgRGF0YSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZGF0YSIsITApO3RoaXMuYWRqdXN0RGF0YT1udWxsO3RoaXMuYXR0cmlidXRlcz1udWxsO3RoaXMuaW5jcmVtZW50YWxMb2FkPW51bGw7dGhpcy5vdXRwdXRYU0w9bnVsbDt0aGlzLnJhbmdlPW51bGw7dGhpcy5yZWNvcmQ9bnVsbDt0aGlzLnN0YXJ0Tm9kZT1udWxsO3RoaXMudXJpPW51bGw7dGhpcy53aW5kb3c9bnVsbDt0aGlzLnhzbD1udWxsO3RoaXMuZXhjbHVkZU5TPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnRyYW5zZm9ybT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIERlYnVnIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJkZWJ1ZyIsITApO3RoaXMudXJpPW51bGx9fWNsYXNzIERlZmF1bHRUeXBlZmFjZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImRlZmF1bHRUeXBlZmFjZSIpO3RoaXMud3JpdGluZ1NjcmlwdD1nZXRTdHJpbmdPcHRpb24oZS53cml0aW5nU2NyaXB0LFsiKiIsIkFyYWJpYyIsIkN5cmlsbGljIiwiRWFzdEV1cm9wZWFuUm9tYW4iLCJHcmVlayIsIkhlYnJldyIsIkphcGFuZXNlIiwiS29yZWFuIiwiUm9tYW4iLCJTaW1wbGlmaWVkQ2hpbmVzZSIsIlRoYWkiLCJUcmFkaXRpb25hbENoaW5lc2UiLCJWaWV0bmFtZXNlIl0pfX1jbGFzcyBEZXN0aW5hdGlvbiBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZGVzdGluYXRpb24iLFsicGRmIiwicGNsIiwicHMiLCJ3ZWJDbGllbnQiLCJ6cGwiXSl9fWNsYXNzIERvY3VtZW50QXNzZW1ibHkgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZG9jdW1lbnRBc3NlbWJseSIpfX1jbGFzcyBEcml2ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImRyaXZlciIsITApO3RoaXMubmFtZT1lLm5hbWU/ZS5uYW1lLnRyaW0oKToiIjt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgRHVwbGV4T3B0aW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJkdXBsZXhPcHRpb24iLFsic2ltcGxleCIsImR1cGxleEZsaXBMb25nRWRnZSIsImR1cGxleEZsaXBTaG9ydEVkZ2UiXSl9fWNsYXNzIER5bmFtaWNSZW5kZXIgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImR5bmFtaWNSZW5kZXIiLFsiZm9yYmlkZGVuIiwicmVxdWlyZWQiXSl9fWNsYXNzIEVtYmVkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImVtYmVkIil9fWNsYXNzIGNvbmZpZ19FbmNyeXB0IGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImVuY3J5cHQiKX19Y2xhc3MgY29uZmlnX0VuY3J5cHRpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImVuY3J5cHRpb24iLCEwKTt0aGlzLmVuY3J5cHQ9bnVsbDt0aGlzLmVuY3J5cHRpb25MZXZlbD1udWxsO3RoaXMucGVybWlzc2lvbnM9bnVsbH19Y2xhc3MgRW5jcnlwdGlvbkxldmVsIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJlbmNyeXB0aW9uTGV2ZWwiLFsiNDBiaXQiLCIxMjhiaXQiXSl9fWNsYXNzIEVuZm9yY2UgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImVuZm9yY2UiKX19Y2xhc3MgRXF1YXRlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJlcXVhdGUiKTt0aGlzLmZvcmNlPWdldEludGVnZXIoe2RhdGE6ZS5mb3JjZSxkZWZhdWx0VmFsdWU6MSx2YWxpZGF0ZTplPT4wPT09ZX0pO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiJ9fWNsYXNzIEVxdWF0ZVJhbmdlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJlcXVhdGVSYW5nZSIpO3RoaXMuZnJvbT1lLmZyb218fCIiO3RoaXMudG89ZS50b3x8IiI7dGhpcy5fdW5pY29kZVJhbmdlPWUudW5pY29kZVJhbmdlfHwiIn1nZXQgdW5pY29kZVJhbmdlKCl7Y29uc3QgZT1bXSx0PS9VXCsoWzAtOWEtZkEtRl0rKS8sYT10aGlzLl91bmljb2RlUmFuZ2U7Zm9yKGxldCByIG9mIGEuc3BsaXQoIiwiKS5tYXAoZT0+ZS50cmltKCkpLmZpbHRlcihlPT4hIWUpKXtyPXIuc3BsaXQoIi0iLDIpLm1hcChlPT57Y29uc3QgYT1lLm1hdGNoKHQpO3JldHVybiBhP3BhcnNlSW50KGFbMV0sMTYpOjB9KTsxPT09ci5sZW5ndGgmJnIucHVzaChyWzBdKTtlLnB1c2gocil9cmV0dXJuIHNoYWRvdyh0aGlzLCJ1bmljb2RlUmFuZ2UiLGUpfX1jbGFzcyBFeGNsdWRlIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZXhjbHVkZSIpfVtZbl0oKXt0aGlzW0duXT10aGlzW0duXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcihlPT5lJiZbImNhbGN1bGF0ZSIsImNsb3NlIiwiZW50ZXIiLCJleGl0IiwiaW5pdGlhbGl6ZSIsInJlYWR5IiwidmFsaWRhdGUiXS5pbmNsdWRlcyhlKSl9fWNsYXNzIEV4Y2x1ZGVOUyBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZXhjbHVkZU5TIil9fWNsYXNzIEZsaXBMYWJlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZmxpcExhYmVsIixbInVzZVByaW50ZXJTZXR0aW5nIiwib24iLCJvZmYiXSl9fWNsYXNzIGNvbmZpZ19Gb250SW5mbyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZm9udEluZm8iLCEwKTt0aGlzLmVtYmVkPW51bGw7dGhpcy5tYXA9bnVsbDt0aGlzLnN1YnNldEJlbG93PW51bGw7dGhpcy5hbHdheXNFbWJlZD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5kZWZh
101dWx0VHlwZWZhY2U9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMubmV2ZXJFbWJlZD1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIEZvcm1GaWVsZEZpbGxpbmcgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZm9ybUZpZWxkRmlsbGluZyIpfX1jbGFzcyBHcm91cFBhcmVudCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiZ3JvdXBQYXJlbnQiKX19Y2xhc3MgSWZFbXB0eSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiaWZFbXB0eSIsWyJkYXRhVmFsdWUiLCJkYXRhR3JvdXAiLCJpZ25vcmUiLCJyZW1vdmUiXSl9fWNsYXNzIEluY2x1ZGVYRFBDb250ZW50IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJpbmNsdWRlWERQQ29udGVudCIpfX1jbGFzcyBJbmNyZW1lbnRhbExvYWQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImluY3JlbWVudGFsTG9hZCIsWyJub25lIiwiZm9yd2FyZE9ubHkiXSl9fWNsYXNzIEluY3JlbWVudGFsTWVyZ2UgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywiaW5jcmVtZW50YWxNZXJnZSIpfX1jbGFzcyBJbnRlcmFjdGl2ZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJpbnRlcmFjdGl2ZSIpfX1jbGFzcyBKb2cgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImpvZyIsWyJ1c2VQcmludGVyU2V0dGluZyIsIm5vbmUiLCJwYWdlU2V0Il0pfX1jbGFzcyBMYWJlbFByaW50ZXIgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImxhYmVsUHJpbnRlciIsITApO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsienBsIiwiZHBsIiwiaXBsIiwidGNwbCJdKTt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mbGlwTGFiZWw9bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy54ZGM9bnVsbH19Y2xhc3MgTGF5b3V0IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJsYXlvdXQiLFsicGFnaW5hdGUiLCJwYW5lbCJdKX19Y2xhc3MgTGV2ZWwgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJsZXZlbCIsMCxlPT5lPjApfX1jbGFzcyBMaW5lYXJpemVkIGV4dGVuZHMgT3B0aW9uMDF7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sImxpbmVhcml6ZWQiKX19Y2xhc3MgTG9jYWxlIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJsb2NhbGUiKX19Y2xhc3MgTG9jYWxlU2V0IGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJsb2NhbGVTZXQiKX19Y2xhc3MgTG9nIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJsb2ciLCEwKTt0aGlzLm1vZGU9bnVsbDt0aGlzLnRocmVzaG9sZD1udWxsO3RoaXMudG89bnVsbDt0aGlzLnVyaT1udWxsfX1jbGFzcyBNYXBFbGVtZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJtYXAiLCEwKTt0aGlzLmVxdWF0ZT1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5lcXVhdGVSYW5nZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lZGl1bUluZm8gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIm1lZGl1bUluZm8iLCEwKTt0aGlzLm1hcD1udWxsfX1jbGFzcyBjb25maWdfTWVzc2FnZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywibWVzc2FnZSIsITApO3RoaXMubXNnSWQ9bnVsbDt0aGlzLnNldmVyaXR5PW51bGx9fWNsYXNzIE1lc3NhZ2luZyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywibWVzc2FnaW5nIiwhMCk7dGhpcy5tZXNzYWdlPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgTW9kZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywibW9kZSIsWyJhcHBlbmQiLCJvdmVyd3JpdGUiXSl9fWNsYXNzIE1vZGlmeUFubm90cyBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJtb2RpZnlBbm5vdHMiKX19Y2xhc3MgTXNnSWQgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJtc2dJZCIsMSxlPT5lPj0xKX19Y2xhc3MgTmFtZUF0dHIgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIm5hbWVBdHRyIil9fWNsYXNzIE5ldmVyRW1iZWQgZXh0ZW5kcyBDb250ZW50T2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJuZXZlckVtYmVkIil9fWNsYXNzIE51bWJlck9mQ29waWVzIGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywibnVtYmVyT2ZDb3BpZXMiLG51bGwsZT0+ZT49MiYmZTw9NSl9fWNsYXNzIE9wZW5BY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIm9wZW5BY3Rpb24iLCEwKTt0aGlzLmRlc3RpbmF0aW9uPW51bGx9fWNsYXNzIE91dHB1dCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywib3V0cHV0IiwhMCk7dGhpcy50bz1udWxsO3RoaXMudHlwZT1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIE91dHB1dEJpbiBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywib3V0cHV0QmluIil9fWNsYXNzIE91dHB1dFhTTCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywib3V0cHV0WFNMIiwhMCk7dGhpcy51cmk9bnVsbH19Y2xhc3MgT3ZlcnByaW50IGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJvdmVycHJpbnQiLFsibm9uZSIsImJvdGgiLCJkcmF3IiwiZmllbGQiXSl9fWNsYXNzIFBhY2tldHMgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInBhY2tldHMiKX1bWW5dKCl7IioiIT09dGhpc1tHbl0mJih0aGlzW0duXT10aGlzW0duXS50cmltKCkuc3BsaXQoL1xzKy8pLmZpbHRlcihlPT5bImNvbmZpZyIsImRhdGFzZXRzIiwidGVtcGxhdGUiLCJ4ZmRmIiwieHNsdCJdLmluY2x1ZGVzKGUpKSl9fWNsYXNzIFBhZ2VPZmZzZXQgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInBhZ2VPZmZzZXQiKTt0aGlzLng9Z2V0SW50ZWdlcih7ZGF0YTplLngsZGVmYXVsdFZhbHVlOiJ1c2VYRENTZXR0aW5nIix2YWxpZGF0ZTplPT4hMH0pO3RoaXMueT1nZXRJbnRlZ2VyKHtkYXRhOmUueSxkZWZhdWx0VmFsdWU6InVzZVhEQ1NldHRpbmciLHZhbGlkYXRlOmU9PiEwfSl9fWNsYXNzIFBhZ2VSYW5nZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicGFnZVJhbmdlIil9W1luXSgpe2NvbnN0IGU9dGhpc1tHbl0udHJpbSgpLnNwbGl0KC9ccysvKS5tYXAoZT0+cGFyc2VJbnQoZSwxMCkpLHQ9W107Zm9yKGxldCBhPTAscj1lLmxlbmd0aDthPHI7YSs9Mil0LnB1c2goZS5zbGljZShhLGErMikpO3RoaXNbR25dPXR9fWNsYXNzIFBhZ2luYXRpb24gZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInBhZ2luYXRpb24iLFsic2ltcGxleCIsImR1cGxleFNob3J0RWRnZSIsImR1cGxleExvbmdFZGdlIl0pfX1jbGFzcyBQYWdpbmF0aW9uT3ZlcnJpZGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInBhZ2luYXRpb25PdmVycmlkZSIsWyJub25lIiwiZm9yY2VEdXBsZXgiLCJmb3JjZUR1cGxleExvbmdFZGdlIiwiZm9yY2VEdXBsZXhTaG9ydEVkZ2UiLCJmb3JjZVNpbXBsZXgiXSl9fWNsYXNzIFBhcnQgZXh0ZW5kcyBJbn
101RlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwYXJ0IiwxLGU9PiExKX19Y2xhc3MgUGNsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwY2wiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLmJhdGNoT3V0cHV0PW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMuam9nPW51bGw7dGhpcy5tZWRpdW1JbmZvPW51bGw7dGhpcy5vdXRwdXRCaW49bnVsbDt0aGlzLnBhZ2VPZmZzZXQ9bnVsbDt0aGlzLnN0YXBsZT1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIFBkZiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicGRmIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5hZG9iZUV4dGVuc2lvbkxldmVsPW51bGw7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuY29tcHJlc3Npb249bnVsbDt0aGlzLmNyZWF0b3I9bnVsbDt0aGlzLmVuY3J5cHRpb249bnVsbDt0aGlzLmZvbnRJbmZvPW51bGw7dGhpcy5pbnRlcmFjdGl2ZT1udWxsO3RoaXMubGluZWFyaXplZD1udWxsO3RoaXMub3BlbkFjdGlvbj1udWxsO3RoaXMucGRmYT1udWxsO3RoaXMucHJvZHVjZXI9bnVsbDt0aGlzLnJlbmRlclBvbGljeT1udWxsO3RoaXMuc2NyaXB0TW9kZWw9bnVsbDt0aGlzLnNpbGVudFByaW50PW51bGw7dGhpcy5zdWJtaXRGb3JtYXQ9bnVsbDt0aGlzLnRhZ2dlZD1udWxsO3RoaXMudmVyc2lvbj1udWxsO3RoaXMudmlld2VyUHJlZmVyZW5jZXM9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBQZGZhIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwZGZhIiwhMCk7dGhpcy5hbWQ9bnVsbDt0aGlzLmNvbmZvcm1hbmNlPW51bGw7dGhpcy5pbmNsdWRlWERQQ29udGVudD1udWxsO3RoaXMucGFydD1udWxsfX1jbGFzcyBQZXJtaXNzaW9ucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicGVybWlzc2lvbnMiLCEwKTt0aGlzLmFjY2Vzc2libGVDb250ZW50PW51bGw7dGhpcy5jaGFuZ2U9bnVsbDt0aGlzLmNvbnRlbnRDb3B5PW51bGw7dGhpcy5kb2N1bWVudEFzc2VtYmx5PW51bGw7dGhpcy5mb3JtRmllbGRGaWxsaW5nPW51bGw7dGhpcy5tb2RpZnlBbm5vdHM9bnVsbDt0aGlzLnBsYWludGV4dE1ldGFkYXRhPW51bGw7dGhpcy5wcmludD1udWxsO3RoaXMucHJpbnRIaWdoUXVhbGl0eT1udWxsfX1jbGFzcyBQaWNrVHJheUJ5UERGU2l6ZSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwaWNrVHJheUJ5UERGU2l6ZSIpfX1jbGFzcyBjb25maWdfUGljdHVyZSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicGljdHVyZSIpfX1jbGFzcyBQbGFpbnRleHRNZXRhZGF0YSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwbGFpbnRleHRNZXRhZGF0YSIpfX1jbGFzcyBQcmVzZW5jZSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicHJlc2VuY2UiLFsicHJlc2VydmUiLCJkaXNzb2x2ZSIsImRpc3NvbHZlU3RydWN0dXJlIiwiaWdub3JlIiwicmVtb3ZlIl0pfX1jbGFzcyBQcmVzZW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwcmVzZW50IiwhMCk7dGhpcy5iZWhhdmlvck92ZXJyaWRlPW51bGw7dGhpcy5jYWNoZT1udWxsO3RoaXMuY29tbW9uPW51bGw7dGhpcy5jb3BpZXM9bnVsbDt0aGlzLmRlc3RpbmF0aW9uPW51bGw7dGhpcy5pbmNyZW1lbnRhbE1lcmdlPW51bGw7dGhpcy5sYXlvdXQ9bnVsbDt0aGlzLm91dHB1dD1udWxsO3RoaXMub3ZlcnByaW50PW51bGw7dGhpcy5wYWdpbmF0aW9uPW51bGw7dGhpcy5wYWdpbmF0aW9uT3ZlcnJpZGU9bnVsbDt0aGlzLnNjcmlwdD1udWxsO3RoaXMudmFsaWRhdGU9bnVsbDt0aGlzLnhkcD1udWxsO3RoaXMuZHJpdmVyPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLmxhYmVsUHJpbnRlcj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy5wY2w9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMucGRmPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnBzPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnN1Ym1pdFVybD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy53ZWJDbGllbnQ9bmV3IFhGQU9iamVjdEFycmF5O3RoaXMuenBsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgUHJpbnQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicHJpbnQiKX19Y2xhc3MgUHJpbnRIaWdoUXVhbGl0eSBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwcmludEhpZ2hRdWFsaXR5Iil9fWNsYXNzIFByaW50U2NhbGluZyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicHJpbnRTY2FsaW5nIixbImFwcGRlZmF1bHQiLCJub1NjYWxpbmciXSl9fWNsYXNzIFByaW50ZXJOYW1lIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJwcmludGVyTmFtZSIpfX1jbGFzcyBQcm9kdWNlciBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicHJvZHVjZXIiKX19Y2xhc3MgUHMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInBzIiwhMCk7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLmpvZz1udWxsO3RoaXMubWVkaXVtSW5mbz1udWxsO3RoaXMub3V0cHV0QmluPW51bGw7dGhpcy5zdGFwbGU9bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBSYW5nZSBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInJhbmdlIil9W1luXSgpe3RoaXNbR25dPXRoaXNbR25dLnNwbGl0KCIsIiwyKS5tYXAoZT0+ZS5zcGxpdCgiLSIpLm1hcChlPT5wYXJzZUludChlLnRyaW0oKSwxMCkpKS5maWx0ZXIoZT0+ZS5ldmVyeShlPT4haXNOYU4oZSkpKS5tYXAoZT0+ezE9PT1lLmxlbmd0aCYmZS5wdXNoKGVbMF0pO3JldHVybiBlfSl9fWNsYXNzIFJlY29yZCBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInJlY29yZCIpfVtZbl0oKXt0aGlzW0duXT10aGlzW0duXS50cmltKCk7Y29uc3QgZT1wYXJzZUludCh0aGlzW0duXSwxMCk7IWlzTmFOKGUpJiZlPj0wJiYodGhpc1tHbl09ZSl9fWNsYXNzIFJlbGV2YW50IGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicmVsZXZhbnQiKX1bWW5dKCl7dGhpc1tHbl09dGhpc1tHbl0udHJpbSgpLnNwbGl0KC9ccysvKX19Y2xhc3MgUmVuYW1lIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicmVuYW1lIil9W1luXSgpe3RoaXNbR25dPXRoaXNbR25dLnRyaW0oKTsodGhpc1tHbl0udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCJ4bWwiKXx8bmV3IFJlZ0V4cCgiW1xccHtMfV9dW1xccHtMfVxcZC5fXFxwe019LV0qIiwidSIpLnRlc3QodGhpc1tHbl0pKSYmd2FybigiWEZBIC0gUmVuYW1lOiBpbnZhbGlkIFhGQSBuYW1lIil9fWNsYXNzIFJlbmRlclBvbGljeSBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicmVuZGVyUG9saWN5IixbInNlcnZlciIsImNsaWVudCJdKX19Y2xhc3MgUnVuU2NyaXB0cyBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywicnVuU2NyaXB0cyIsWyJib3RoIiwiY2xpZW50Iiwibm9uZSIsInNlcnZlciJdKX19Y2xhc3MgY29uZmlnX1NjcmlwdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywic2NyaXB0IiwhMCk7dGhpcy5jdXJyZW50UGFnZT1udWxsO3RoaXMuZXhjbHVkZT1udWxsO3RoaXMucnVuU2NyaXB0cz1udWxsfX1jbGFzcyBTY3JpcHRNb2RlbCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywic2NyaXB0TW9kZWwiLFsiWEZBIiwibm9uZSJdKX19Y2xhc3MgU2V2ZXJpdHkgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInNldmVyaXR5IixbImlnbm9yZSIsImVycm9yIiwiaW5mb3JtYXRpb24iLCJ0cmFjZSIsIndhcm5pbmciXSl9fWNsYXNzIFNpbGVudFByaW50IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJzaWxlbnRQcmludCIsITApO3RoaXMuYWRkU2lsZW50UHJpbnQ9bnVsbDt0aGlzLnByaW50ZXJOYW1lPW51bGx9fWNsYXNzIFN0YXBsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywic3RhcGxlIik7dGhpcy5tb2RlPWdldFN0cmluZ09wdGlvbihlLm1vZGUsWyJ1c2VQcmludGVyU2V0dGluZyIsIm9uIiwib2ZmIl0pfX1jbGFzcyBTdGFydE5vZGUgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInN0YXJ0Tm9kZSIpfX1jbGFzcyBTdGFydFBhZ2UgZXh0ZW5kcyBJbnRlZ2VyT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJzdGFydFBhZ2UiLDAsZT0+ITApfX1jbGFzcyBTdWJtaXRGb3JtYXQgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInN1Ym1pdEZvcm1hdCIsWyJodG1sIiwiZGVsZWdhdGUiLCJmZGYiLCJ4bWwiLCJwZGYiXSl9fWNsYXNzIFN1Ym1pdFVybCBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywic3VibWl0VXJsIil9fWNsYXNzIFN1YnNldEJlbG93IGV4dGVuZHMgSW50ZWdlck9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywic3Vic2V0QmVsb3ciLDEwMCxlPT5lPj0wJiZlPD0xMDApfX1jbGFzcyBTdXBwcmVzc0Jhbm5lciBleHRlbmRzIE9wdGlvbjAxe2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJzdXBwcmVzc0Jhbm5lciIpfX1jbGFzcyBUYWdnZWQgZXh0ZW5kcyBPcHRpb24wMXtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywidGFnZ2VkIil9fWNsYXNzIGNvbmZpZ19UZW1wbGF0ZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywidGVtcGxhdGUiLCEwKTt0aGlzLmJhc2U9bnVsbDt0aGlzLnJlbGV2YW50PW51bGw7dGhpcy5zdGFydFBhZ2U9bnVsbDt0aGlzLnVyaT1udWxsO3RoaXMueHNsPW51bGx9fWNsYXNzIFRocmVzaG9sZCBleHRlbmRzIE9wdGlvbk9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywidGhyZXNob2xkIixbInRyYWNlIiwiZXJyb3IiLCJpbmZvcm1hdGlvbiIsIndhcm5pbmciXSl9fWNsYXNzIFRvIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ0byIsWyJudWxsIiwibWVtb3J5Iiwic3RkZXJyIiwic3Rkb3V0Iiwic3lzdGVtIiwidXJpIl0pfX1jbGFzcyBUZW1wbGF0ZUNhY2hlIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ0ZW1wbGF0ZUNhY2hlIik7dGhpcy5tYXhFbnRyaWVzPWdldEludGVnZXIoe2RhdGE6ZS5tYXhFbnRyaWVzLGRlZmF1bHRWYWx1ZTo1LHZhbGlkYXRlOmU9PmU+PTB9KX19Y2xhc3MgVHJhY2UgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInRyYWNlIiwhMCk7dGhpcy5hcmVhPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgVHJhbnNmb3JtIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ0cmFuc2Zvcm0iLCEwKTt0aGlzLmdyb3VwUGFyZW50PW51bGw7dGhpcy5pZkVtcHR5PW51bGw7dGhpcy5uYW1lQXR0cj1udWxsO3RoaXMucGljdHVyZT1udWxsO3RoaXMucHJlc2VuY2U9bnVsbDt0aGlzLnJlbmFtZT1udWxsO3RoaXMud2hpdGVzcGFjZT1udWxsfX1jbGFzcyBUeXBlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ0eXBlIixbIm5vbmUiLCJhc2NpaTg1IiwiYXNjaWlIZXgiLCJjY2l0dGZheCIsImZsYXRlIiwibHp3IiwicnVuTGVuZ3RoIiwibmF0aXZlIiwieGRwIiwibWVyZ2VkWERQIl0pfX1jbGFzcyBVcmkgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInVyaSIpfX1jbGFzcyBjb25maWdfVmFsaWRhdGUgZXh0ZW5kcyBPcHRpb25PYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInZhbGlkYXRlIixbInByZVN1Ym1pdCIsInByZVByaW50IiwicHJlRXhlY3V0ZSIsInByZVNhdmUiXSl9fWNsYXNzIFZhbGlkYXRlQXBwcm92YWxTaWduYXR1cmVzIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywidmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMiKX1bWW5dKCl7dGhpc1tHbl09dGhpc1tHbl0udHJpbSgpLnNwbGl0KC9ccysvKS5maWx0ZXIoZT0+WyJkb2NSZWFkeSIsInBvc3RTaWduIl0uaW5jbHVkZXMoZSkpfX1jbGFzcyBWYWxpZGF0aW9uTWVzc2FnaW5nIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ2YWxpZGF0aW9uTWVzc2FnaW5nIixbImFsbE1lc3NhZ2VzSW5kaXZpZHVhbGx5IiwiYWxsTWVzc2FnZXNUb2dldGhlciIsImZpcnN0TWVzc2FnZU9ubHkiLCJub01lc3NhZ2VzIl0pfX1jbGFzcyBWZXJzaW9uIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ2ZXJzaW9uIixbIjEuNyIsIjEuNiIsIjEuNSIsIjEuNCIsIjEuMyIsIjEuMiJdKX19Y2xhc3MgVmVyc2lvbkNvbnRyb2wgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIlZlcnNpb25Db250cm9sIik7dGhpcy5vdXRwdXRCZWxvdz1nZXRTdHJpbmdPcHRpb24oZS5vdXRwdXRCZWxvdyxbIndhcm4iLCJlcnJvciIsInVwZGF0ZSJdKTt0aGlzLnNvdXJjZUFib3ZlPWdldFN0cmluZ09wdGlvbihlLnNvdXJjZUFib3ZlLFsid2FybiIsImVycm9yIl0pO3RoaXMuc291cmNlQmVsb3c9Z2V0U3RyaW5nT3B0aW9uKGUuc291cmNlQmVsb3csWyJ1cGRhdGUiLCJtYWludGFpbiJdKX19Y2xhc3MgVmlld2VyUHJlZmVyZW5jZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sInZpZXdlclByZWZlcmVuY2VzIiwhMCk7dGhpcy5BREJFX0pTQ29uc29sZT1udWxsO3RoaXMuQURCRV9KU0RlYnVnZ2VyPW51bGw7dGhpcy5hZGRWaWV3ZXJQcmVmZXJlbmNlcz1udWxsO3RoaXMuZHVwbGV4T3B0aW9uPW51bGw7dGhpcy5lbmZvcmNlPW51bGw7dGhpcy5udW1iZXJPZkNvcGllcz1udWxsO3RoaXMucGFnZVJhbmdlPW51bGw7dGhpcy5waWNrVHJheUJ5UERGU2l6ZT1udWxsO3RoaXMucHJpbnRTY2FsaW5nPW51bGx9fWNsYXNzIFdlYkNsaWVudCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywid2ViQ2xpZW50IiwhMCk7dGhpcy5uYW1lPWUubmFtZT9lLm5hbWUudHJpbSgpOiIiO3RoaXMuZm9udEluZm89bnVsbDt0aGlzLnhkYz1udWxsfX1jbGFzcyBXaGl0ZXNwYWNlIGV4dGVuZHMgT3B0aW9uT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ3aGl0ZXNwYWNlIixbInByZXNlcnZlIiwibHRyaW0iLCJub3JtYWxpemUiLCJydHJpbSIsInRyaW0iXSl9fWNsYXNzIFdpbmRvdyBleHRlbmRzIENvbnRlbnRPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoam8sIndpbmRvdyIpfVtZbl0oKXtjb25zdCBlPXRoaXNbR25dLnNwbGl0KCIsIiwyKS5tYXAoZT0+cGFyc2VJbnQoZS50cmltKCksMTApKTtpZihlLnNvbWUoZT0+aXNOYU4oZSkpKXRoaXNbR25dPVswLDBdO2Vsc2V7MT09PWUubGVuZ3RoJiZlLnB1c2goZVswXSk7dGhpc1tHbl09ZX19fWNsYXNzIFhkYyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihqbywieGRjIiwhMCk7dGhpcy51cmk9bmV3IFhGQU9iamVjdEFycmF
1015O3RoaXMueHNsPW5ldyBYRkFPYmplY3RBcnJheX19Y2xhc3MgWGRwIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ4ZHAiLCEwKTt0aGlzLnBhY2tldHM9bnVsbH19Y2xhc3MgWHNsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ4c2wiLCEwKTt0aGlzLmRlYnVnPW51bGw7dGhpcy51cmk9bnVsbH19Y2xhc3MgWnBsIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGpvLCJ6cGwiLCEwKTt0aGlzLm5hbWU9ZS5uYW1lP2UubmFtZS50cmltKCk6IiI7dGhpcy5iYXRjaE91dHB1dD1udWxsO3RoaXMuZmxpcExhYmVsPW51bGw7dGhpcy5mb250SW5mbz1udWxsO3RoaXMueGRjPW51bGx9fWNsYXNzIENvbmZpZ05hbWVzcGFjZXtzdGF0aWNbUXNdKGUsdCl7aWYoQ29uZmlnTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBDb25maWdOYW1lc3BhY2VbZV0odCl9c3RhdGljIGFjcm9iYXQoZSl7cmV0dXJuIG5ldyBBY3JvYmF0KGUpfXN0YXRpYyBhY3JvYmF0NyhlKXtyZXR1cm4gbmV3IEFjcm9iYXQ3KGUpfXN0YXRpYyBBREJFX0pTQ29uc29sZShlKXtyZXR1cm4gbmV3IEFEQkVfSlNDb25zb2xlKGUpfXN0YXRpYyBBREJFX0pTRGVidWdnZXIoZSl7cmV0dXJuIG5ldyBBREJFX0pTRGVidWdnZXIoZSl9c3RhdGljIGFkZFNpbGVudFByaW50KGUpe3JldHVybiBuZXcgQWRkU2lsZW50UHJpbnQoZSl9c3RhdGljIGFkZFZpZXdlclByZWZlcmVuY2VzKGUpe3JldHVybiBuZXcgQWRkVmlld2VyUHJlZmVyZW5jZXMoZSl9c3RhdGljIGFkanVzdERhdGEoZSl7cmV0dXJuIG5ldyBBZGp1c3REYXRhKGUpfXN0YXRpYyBhZG9iZUV4dGVuc2lvbkxldmVsKGUpe3JldHVybiBuZXcgQWRvYmVFeHRlbnNpb25MZXZlbChlKX1zdGF0aWMgYWdlbnQoZSl7cmV0dXJuIG5ldyBBZ2VudChlKX1zdGF0aWMgYWx3YXlzRW1iZWQoZSl7cmV0dXJuIG5ldyBBbHdheXNFbWJlZChlKX1zdGF0aWMgYW1kKGUpe3JldHVybiBuZXcgQW1kKGUpfXN0YXRpYyBhcmVhKGUpe3JldHVybiBuZXcgY29uZmlnX0FyZWEoZSl9c3RhdGljIGF0dHJpYnV0ZXMoZSl7cmV0dXJuIG5ldyBBdHRyaWJ1dGVzKGUpfXN0YXRpYyBhdXRvU2F2ZShlKXtyZXR1cm4gbmV3IEF1dG9TYXZlKGUpfXN0YXRpYyBiYXNlKGUpe3JldHVybiBuZXcgQmFzZShlKX1zdGF0aWMgYmF0Y2hPdXRwdXQoZSl7cmV0dXJuIG5ldyBCYXRjaE91dHB1dChlKX1zdGF0aWMgYmVoYXZpb3JPdmVycmlkZShlKXtyZXR1cm4gbmV3IEJlaGF2aW9yT3ZlcnJpZGUoZSl9c3RhdGljIGNhY2hlKGUpe3JldHVybiBuZXcgQ2FjaGUoZSl9c3RhdGljIGNoYW5nZShlKXtyZXR1cm4gbmV3IENoYW5nZShlKX1zdGF0aWMgY29tbW9uKGUpe3JldHVybiBuZXcgQ29tbW9uKGUpfXN0YXRpYyBjb21wcmVzcyhlKXtyZXR1cm4gbmV3IENvbXByZXNzKGUpfXN0YXRpYyBjb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl7cmV0dXJuIG5ldyBDb21wcmVzc0xvZ2ljYWxTdHJ1Y3R1cmUoZSl9c3RhdGljIGNvbXByZXNzT2JqZWN0U3RyZWFtKGUpe3JldHVybiBuZXcgQ29tcHJlc3NPYmplY3RTdHJlYW0oZSl9c3RhdGljIGNvbXByZXNzaW9uKGUpe3JldHVybiBuZXcgQ29tcHJlc3Npb24oZSl9c3RhdGljIGNvbmZpZyhlKXtyZXR1cm4gbmV3IENvbmZpZyhlKX1zdGF0aWMgY29uZm9ybWFuY2UoZSl7cmV0dXJuIG5ldyBDb25mb3JtYW5jZShlKX1zdGF0aWMgY29udGVudENvcHkoZSl7cmV0dXJuIG5ldyBDb250ZW50Q29weShlKX1zdGF0aWMgY29waWVzKGUpe3JldHVybiBuZXcgQ29waWVzKGUpfXN0YXRpYyBjcmVhdG9yKGUpe3JldHVybiBuZXcgQ3JlYXRvcihlKX1zdGF0aWMgY3VycmVudFBhZ2UoZSl7cmV0dXJuIG5ldyBDdXJyZW50UGFnZShlKX1zdGF0aWMgZGF0YShlKXtyZXR1cm4gbmV3IERhdGEoZSl9c3RhdGljIGRlYnVnKGUpe3JldHVybiBuZXcgRGVidWcoZSl9c3Rh
101dGljIGRlZmF1bHRUeXBlZmFjZShlKXtyZXR1cm4gbmV3IERlZmF1bHRUeXBlZmFjZShlKX1zdGF0aWMgZGVzdGluYXRpb24oZSl7cmV0dXJuIG5ldyBEZXN0aW5hdGlvbihlKX1zdGF0aWMgZG9jdW1lbnRBc3NlbWJseShlKXtyZXR1cm4gbmV3IERvY3VtZW50QXNzZW1ibHkoZSl9c3RhdGljIGRyaXZlcihlKXtyZXR1cm4gbmV3IERyaXZlcihlKX1zdGF0aWMgZHVwbGV4T3B0aW9uKGUpe3JldHVybiBuZXcgRHVwbGV4T3B0aW9uKGUpfXN0YXRpYyBkeW5hbWljUmVuZGVyKGUpe3JldHVybiBuZXcgRHluYW1pY1JlbmRlcihlKX1zdGF0aWMgZW1iZWQoZSl7cmV0dXJuIG5ldyBFbWJlZChlKX1zdGF0aWMgZW5jcnlwdChlKXtyZXR1cm4gbmV3IGNvbmZpZ19FbmNyeXB0KGUpfXN0YXRpYyBlbmNyeXB0aW9uKGUpe3JldHVybiBuZXcgY29uZmlnX0VuY3J5cHRpb24oZSl9c3RhdGljIGVuY3J5cHRpb25MZXZlbChlKXtyZXR1cm4gbmV3IEVuY3J5cHRpb25MZXZlbChlKX1zdGF0aWMgZW5mb3JjZShlKXtyZXR1cm4gbmV3IEVuZm9yY2UoZSl9c3RhdGljIGVxdWF0ZShlKXtyZXR1cm4gbmV3IEVxdWF0ZShlKX1zdGF0aWMgZXF1YXRlUmFuZ2UoZSl7cmV0dXJuIG5ldyBFcXVhdGVSYW5nZShlKX1zdGF0aWMgZXhjbHVkZShlKXtyZXR1cm4gbmV3IEV4Y2x1ZGUoZSl9c3RhdGljIGV4Y2x1ZGVOUyhlKXtyZXR1cm4gbmV3IEV4Y2x1ZGVOUyhlKX1zdGF0aWMgZmxpcExhYmVsKGUpe3JldHVybiBuZXcgRmxpcExhYmVsKGUpfXN0YXRpYyBmb250SW5mbyhlKXtyZXR1cm4gbmV3IGNvbmZpZ19Gb250SW5mbyhlKX1zdGF0aWMgZm9ybUZpZWxkRmlsbGluZyhlKXtyZXR1cm4gbmV3IEZvcm1GaWVsZEZpbGxpbmcoZSl9c3RhdGljIGdyb3VwUGFyZW50KGUpe3JldHVybiBuZXcgR3JvdXBQYXJlbnQoZSl9c3RhdGljIGlmRW1wdHkoZSl7cmV0dXJuIG5ldyBJZkVtcHR5KGUpfXN0YXRpYyBpbmNsdWRlWERQQ29udGVudChlKXtyZXR1cm4gbmV3IEluY2x1ZGVYRFBDb250ZW50KGUpfXN0YXRpYyBpbmNyZW1lbnRhbExvYWQoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbExvYWQoZSl9c3RhdGljIGluY3JlbWVudGFsTWVyZ2UoZSl7cmV0dXJuIG5ldyBJbmNyZW1lbnRhbE1lcmdlKGUpfXN0YXRpYyBpbnRlcmFjdGl2ZShlKXtyZXR1cm4gbmV3IEludGVyYWN0aXZlKGUpfXN0YXRpYyBqb2coZSl7cmV0dXJuIG5ldyBKb2coZSl9c3RhdGljIGxhYmVsUHJpbnRlcihlKXtyZXR1cm4gbmV3IExhYmVsUHJpbnRlcihlKX1zdGF0aWMgbGF5b3V0KGUpe3JldHVybiBuZXcgTGF5b3V0KGUpfXN0YXRpYyBsZXZlbChlKXtyZXR1cm4gbmV3IExldmVsKGUpfXN0YXRpYyBsaW5lYXJpemVkKGUpe3JldHVybiBuZXcgTGluZWFyaXplZChlKX1zdGF0aWMgbG9jYWxlKGUpe3JldHVybiBuZXcgTG9jYWxlKGUpfXN0YXRpYyBsb2NhbGVTZXQoZSl7cmV0dXJuIG5ldyBMb2NhbGVTZXQoZSl9c3Rh
101dGljIGxvZyhlKXtyZXR1cm4gbmV3IExvZyhlKX1zdGF0aWMgbWFwKGUpe3JldHVybiBuZXcgTWFwRWxlbWVudChlKX1zdGF0aWMgbWVkaXVtSW5mbyhlKXtyZXR1cm4gbmV3IE1lZGl1bUluZm8oZSl9c3RhdGljIG1lc3NhZ2UoZSl7cmV0dXJuIG5ldyBjb25maWdfTWVzc2FnZShlKX1zdGF0aWMgbWVzc2FnaW5nKGUpe3JldHVybiBuZXcgTWVzc2FnaW5nKGUpfXN0YXRpYyBtb2RlKGUpe3JldHVybiBuZXcgTW9kZShlKX1zdGF0aWMgbW9kaWZ5QW5ub3RzKGUpe3JldHVybiBuZXcgTW9kaWZ5QW5ub3RzKGUpfXN0YXRpYyBtc2dJZChlKXtyZXR1cm4gbmV3IE1zZ0lkKGUpfXN0YXRpYyBuYW1lQXR0cihlKXtyZXR1cm4gbmV3IE5hbWVBdHRyKGUpfXN0YXRpYyBuZXZlckVtYmVkKGUpe3JldHVybiBuZXcgTmV2ZXJFbWJlZChlKX1zdGF0aWMgbnVtYmVyT2ZDb3BpZXMoZSl7cmV0dXJuIG5ldyBOdW1iZXJPZkNvcGllcyhlKX1zdGF0aWMgb3BlbkFjdGlvbihlKXtyZXR1cm4gbmV3IE9wZW5BY3Rpb24oZSl9c3RhdGljIG91dHB1dChlKXtyZXR1cm4gbmV3IE91dHB1dChlKX1zdGF0aWMgb3V0cHV0QmluKGUpe3JldHVybiBuZXcgT3V0cHV0QmluKGUpfXN0YXRpYyBvdXRwdXRYU0woZSl7cmV0dXJuIG5ldyBPdXRwdXRYU0woZSl9c3RhdGljIG92ZXJwcmludChlKXtyZXR1cm4gbmV3IE92ZXJwcmludChlKX1zdGF0aWMgcGFja2V0cyhlKXtyZXR1cm4gbmV3IFBhY2tldHMoZSl9c3RhdGljIHBhZ2VPZmZzZXQoZSl7cmV0dXJuIG5ldyBQYWdlT2Zmc2V0KGUpfXN0YXRpYyBwYWdlUmFuZ2UoZSl7cmV0dXJuIG5ldyBQYWdlUmFuZ2UoZSl9c3RhdGljIHBhZ2luYXRpb24oZSl7cmV0dXJuIG5ldyBQYWdpbmF0aW9uKGUpfXN0YXRpYyBwYWdpbmF0aW9uT3ZlcnJpZGUoZSl7cmV0dXJuIG5ldyBQYWdpbmF0aW9uT3ZlcnJpZGUoZSl9c3RhdGljIHBhcnQoZSl7cmV0dXJuIG5ldyBQYXJ0KGUpfXN0YXRpYyBwY2woZSl7cmV0dXJuIG5ldyBQY2woZSl9c3Rh
101dGljIHBkZihlKXtyZXR1cm4gbmV3IFBkZihlKX1zdGF0aWMgcGRmYShlKXtyZXR1cm4gbmV3IFBkZmEoZSl9c3RhdGljIHBlcm1pc3Npb25zKGUpe3JldHVybiBuZXcgUGVybWlzc2lvbnMoZSl9c3RhdGljIHBpY2tUcmF5QnlQREZTaXplKGUpe3JldHVybiBuZXcgUGlja1RyYXlCeVBERlNpemUoZSl9c3RhdGljIHBpY3R1cmUoZSl7cmV0dXJuIG5ldyBjb25maWdfUGljdHVyZShlKX1zdGF0aWMgcGxhaW50ZXh0TWV0YWRhdGEoZSl7cmV0dXJuIG5ldyBQbGFpbnRleHRNZXRhZGF0YShlKX1zdGF0aWMgcHJlc2VuY2UoZSl7cmV0dXJuIG5ldyBQcmVzZW5jZShlKX1zdGF0aWMgcHJlc2VudChlKXtyZXR1cm4gbmV3IFByZXNlbnQoZSl9c3RhdGljIHByaW50KGUpe3JldHVybiBuZXcgUHJpbnQoZSl9c3RhdGljIHByaW50SGlnaFF1YWxpdHkoZSl7cmV0dXJuIG5ldyBQcmludEhpZ2hRdWFsaXR5KGUpfXN0YXRpYyBwcmludFNjYWxpbmcoZSl7cmV0dXJuIG5ldyBQcmludFNjYWxpbmcoZSl9c3RhdGljIHByaW50ZXJOYW1lKGUpe3JldHVybiBuZXcgUHJpbnRlck5hbWUoZSl9c3RhdGljIHByb2R1Y2VyKGUpe3JldHVybiBuZXcgUHJvZHVjZXIoZSl9c3RhdGljIHBzKGUpe3JldHVybiBuZXcgUHMoZSl9c3RhdGljIHJhbmdlKGUpe3JldHVybiBuZXcgUmFuZ2UoZSl9c3RhdGljIHJlY29yZChlKXtyZXR1cm4gbmV3IFJlY29yZChlKX1zdGF0aWMgcmVsZXZhbnQoZSl7cmV0dXJuIG5ldyBSZWxldmFudChlKX1zdGF0aWMgcmVuYW1lKGUpe3JldHVybiBuZXcgUmVuYW1lKGUpfXN0YXRpYyByZW5kZXJQb2xpY3koZSl7cmV0dXJuIG5ldyBSZW5kZXJQb2xpY3koZSl9c3RhdGljIHJ1blNjcmlwdHMoZSl7cmV0dXJuIG5ldyBSdW5TY3JpcHRzKGUpfXN0YXRpYyBzY3JpcHQoZSl7cmV0dXJuIG5ldyBjb25maWdfU2NyaXB0KGUpfXN0YXRpYyBzY3JpcHRNb2RlbChlKXtyZXR1cm4gbmV3IFNjcmlwdE1vZGVsKGUpfXN0YXRpYyBzZXZlcml0eShlKXtyZXR1cm4gbmV3IFNldmVyaXR5KGUpfXN0YXRpYyBzaWxlbnRQcmludChlKXtyZXR1cm4gbmV3IFNpbGVudFByaW50KGUpfXN0YXRpYyBzdGFwbGUoZSl7cmV0dXJuIG5ldyBTdGFwbGUoZSl9c3Rh
101dGljIHN0YXJ0Tm9kZShlKXtyZXR1cm4gbmV3IFN0YXJ0Tm9kZShlKX1zdGF0aWMgc3RhcnRQYWdlKGUpe3JldHVybiBuZXcgU3RhcnRQYWdlKGUpfXN0YXRpYyBzdWJtaXRGb3JtYXQoZSl7cmV0dXJuIG5ldyBTdWJtaXRGb3JtYXQoZSl9c3RhdGljIHN1Ym1pdFVybChlKXtyZXR1cm4gbmV3IFN1Ym1pdFVybChlKX1zdGF0aWMgc3Vic2V0QmVsb3coZSl7cmV0dXJuIG5ldyBTdWJzZXRCZWxvdyhlKX1zdGF0aWMgc3VwcHJlc3NCYW5uZXIoZSl7cmV0dXJuIG5ldyBTdXBwcmVzc0Jhbm5lcihlKX1zdGF0aWMgdGFnZ2VkKGUpe3JldHVybiBuZXcgVGFnZ2VkKGUpfXN0YXRpYyB0ZW1wbGF0ZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19UZW1wbGF0ZShlKX1zdGF0aWMgdGVtcGxhdGVDYWNoZShlKXtyZXR1cm4gbmV3IFRlbXBsYXRlQ2FjaGUoZSl9c3RhdGljIHRocmVzaG9sZChlKXtyZXR1cm4gbmV3IFRocmVzaG9sZChlKX1zdGF0aWMgdG8oZSl7cmV0dXJuIG5ldyBUbyhlKX1zdGF0aWMgdHJhY2UoZSl7cmV0dXJuIG5ldyBUcmFjZShlKX1zdGF0aWMgdHJhbnNmb3JtKGUpe3JldHVybiBuZXcgVHJhbnNmb3JtKGUpfXN0YXRpYyB0eXBlKGUpe3JldHVybiBuZXcgVHlwZShlKX1zdGF0aWMgdXJpKGUpe3JldHVybiBuZXcgVXJpKGUpfXN0YXRpYyB2YWxpZGF0ZShlKXtyZXR1cm4gbmV3IGNvbmZpZ19WYWxpZGF0ZShlKX1zdGF0aWMgdmFsaWRhdGVBcHByb3ZhbFNpZ25hdHVyZXMoZSl7cmV0dXJuIG5ldyBWYWxpZGF0ZUFwcHJvdmFsU2lnbmF0dXJlcyhlKX1zdGF0aWMgdmFsaWRhdGlvbk1lc3NhZ2luZyhlKXtyZXR1cm4gbmV3IFZhbGlkYXRpb25NZXNzYWdpbmcoZSl9c3RhdGljIHZlcnNpb24oZSl7cmV0dXJuIG5ldyBWZXJzaW9uKGUpfXN0YXRpYyB2ZXJzaW9uQ29udHJvbChlKXtyZXR1cm4gbmV3IFZlcnNpb25Db250cm9sKGUpfXN0YXRpYyB2aWV3ZXJQcmVmZXJlbmNlcyhlKXtyZXR1cm4gbmV3IFZpZXdlclByZWZlcmVuY2VzKGUpfXN0YXRpYyB3ZWJDbGllbnQoZSl7cmV0dXJuIG5ldyBXZWJDbGllbnQoZSl9c3RhdGljIHdoaXRlc3BhY2UoZSl7cmV0dXJuIG5ldyBXaGl0ZXNwYWNlKGUpfXN0YXRpYyB3aW5kb3coZSl7cmV0dXJuIG5ldyBXaW5kb3coZSl9c3RhdGljIHhkYyhlKXtyZXR1cm4gbmV3IFhkYyhlKX1zdGF0aWMgeGRwKGUpe3JldHVybiBuZXcgWGRwKGUpfXN0YXRpYyB4c2woZSl7cmV0dXJuIG5ldyBYc2woZSl9c3RhdGljIHpwbChlKXtyZXR1cm4gbmV3IFpwbChlKX19Y29uc3QgWG89ZW8uY29ubmVjdGlvblNldC5pZDtjbGFzcyBDb25uZWN0aW9uU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhvLCJjb25uZWN0aW9uU2V0IiwhMCk7dGhpcy53c2RsQ29ubmVjdGlvbj1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy54bWxDb25uZWN0aW9uPW5ldyBYRkFPYmplY3RBcnJheTt0aGlzLnhzZENvbm5lY3Rpb249bmV3IFhGQU9iamVjdEFycmF
1015fX1jbGFzcyBFZmZlY3RpdmVJbnB1dFBvbGljeSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbywiZWZmZWN0aXZlSW5wdXRQb2xpY3kiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgRWZmZWN0aXZlT3V0cHV0UG9saWN5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhvLCJlZmZlY3RpdmVPdXRwdXRQb2xpY3kiKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgT3BlcmF0aW9uIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhvLCJvcGVyYXRpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMuaW5wdXQ9ZS5pbnB1dHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5vdXRwdXQ9ZS5vdXRwdXR8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgUm9vdEVsZW1lbnQgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG8sInJvb3RFbGVtZW50Iik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFNvYXBBY3Rpb24gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG8sInNvYXBBY3Rpb24iKTt0aGlzLmlkPWUuaWR8fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXNlPWUudXNlfHwiIjt0aGlzLnVzZWhyZWY9ZS51c2VocmVmfHwiIn19Y2xhc3MgU29hcEFkZHJlc3MgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG8sInNvYXBBZGRyZXNzIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIGNvbm5lY3Rpb25fc2V0X1VyaSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbywidXJpIik7dGhpcy5pZD1lLmlkfHwiIjt0aGlzLm5hbWU9ZS5uYW1lfHwiIjt0aGlzLnVzZT1lLnVzZXx8IiI7dGhpcy51c2VocmVmPWUudXNlaHJlZnx8IiJ9fWNsYXNzIFdzZGxBZGRyZXNzIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhvLCJ3c2RsQWRkcmVzcyIpO3RoaXMuaWQ9ZS5pZHx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy51c2U9ZS51c2V8fCIiO3RoaXMudXNlaHJlZj1lLnVzZWhyZWZ8fCIifX1jbGFzcyBXc2RsQ29ubmVjdGlvbiBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihYbywid3NkbENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5lZmZlY3RpdmVJbnB1dFBvbGljeT1udWxsO3RoaXMuZWZmZWN0aXZlT3V0cHV0UG9saWN5PW51bGw7dGhpcy5vcGVyYXRpb249bnVsbDt0aGlzLnNvYXBBY3Rpb249bnVsbDt0aGlzLnNvYXBBZGRyZXNzPW51bGw7dGhpcy53c2RsQWRkcmVzcz1udWxsfX1jbGFzcyBYbWxDb25uZWN0aW9uIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKFhvLCJ4bWxDb25uZWN0aW9uIiwhMCk7dGhpcy5kYXRhRGVzY3JpcHRpb249ZS5kYXRhRGVzY3JpcHRpb258fCIiO3RoaXMubmFtZT1lLm5hbWV8fCIiO3RoaXMudXJpPW51bGx9fWNsYXNzIFhzZENvbm5lY3Rpb24gZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoWG8sInhzZENvbm5lY3Rpb24iLCEwKTt0aGlzLmRhdGFEZXNjcmlwdGlvbj1lLmRhdGFEZXNjcmlwdGlvbnx8IiI7dGhpcy5uYW1lPWUubmFtZXx8IiI7dGhpcy5yb290RWxlbWVudD1udWxsO3RoaXMudXJpPW51bGx9fWNsYXNzIENvbm5lY3Rpb25TZXROYW1lc3BhY2V7c3RhdGljW1FzXShlLHQpe2lmKENvbm5lY3Rpb25TZXROYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIENvbm5lY3Rpb25TZXROYW1lc3BhY2VbZV0odCl9c3RhdGljIGNvbm5lY3Rpb25TZXQoZSl7cmV0dXJuIG5ldyBDb25uZWN0aW9uU2V0KGUpfXN0YXRpYyBlZmZlY3RpdmVJbnB1dFBvbGljeShlKXtyZXR1cm4gbmV3IEVmZmVjdGl2ZUlucHV0UG9saWN5KGUpfXN0YXRpYyBlZmZlY3RpdmVPdXRwdXRQb2xpY3koZSl7cmV0dXJuIG5ldyBFZmZlY3RpdmVPdXRwdXRQb2xpY3koZSl9c3RhdGljIG9wZXJhdGlvbihlKXtyZXR1cm4gbmV3IE9wZXJhdGlvbihlKX1zdGF0aWMgcm9vdEVsZW1lbnQoZSl7cmV0dXJuIG5ldyBSb290RWxlbWVudChlKX1zdGF0aWMgc29hcEFjdGlvbihlKXtyZXR1cm4gbmV3IFNvYXBBY3Rpb24oZSl9c3RhdGljIHNvYXBBZGRyZXNzKGUpe3JldHVybiBuZXcgU29hcEFkZHJlc3MoZSl9c3RhdGljIHVyaShlKXtyZXR1cm4gbmV3IGNvbm5lY3Rpb25fc2V0X1VyaShlKX1zdGF0aWMgd3NkbEFkZHJlc3MoZSl7cmV0dXJuIG5ldyBXc2RsQWRkcmVzcyhlKX1zdGF0aWMgd3NkbENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBXc2RsQ29ubmVjdGlvbihlKX1zdGF0aWMgeG1sQ29ubmVjdGlvbihlKXtyZXR1cm4gbmV3IFhtbENvbm5lY3Rpb24oZSl9c3RhdGljIHhzZENvbm5lY3Rpb24oZSl7cmV0dXJuIG5ldyBYc2RDb25uZWN0aW9uKGUpfX1jb25zdCBxbz1lby5kYXRhc2V0cy5pZDtjbGFzcyBkYXRhc2V0c19EYXRhIGV4dGVuZHMgWG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFvLCJkYXRhIixlKX1ba3NdKCl7cmV0dXJuITB9fWNsYXNzIERhdGFzZXRzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKHFvLCJkYXRhc2V0cyIsITApO3RoaXMuZGF0YT1udWxsO3RoaXMuU2lnbmF0dXJlPW51bGx9W1JzXShlKXtjb25zdCB0PWVbRHNdOygiZGF0YSI9PT10JiZlW09zXT09PXFvfHwiU2lnbmF0dXJlIj09PXQmJmVbT3NdPT09ZW8uc2lnbmF0dXJlLmlkKSYmKHRoaXNbdF09ZSk7dGhpc1tqbl0oZSl9fWNsYXNzIERhdGFzZXRzTmFtZXNwYWNle3N0YXRpY1tRc10oZSx0KXtpZihEYXRhc2V0c05hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gRGF0YXNldHNOYW1lc3BhY2VbZV0odCl9c3RhdGljIGRhdGFzZXRzKGUpe3JldHVybiBuZXcgRGF0YXNldHMoZSl9c3Rh
101dGljIGRhdGEoZSl7cmV0dXJuIG5ldyBkYXRhc2V0c19EYXRhKGUpfX1jb25zdCBIbz1lby5sb2NhbGVTZXQuaWQ7Y2xhc3MgQ2FsZW5kYXJTeW1ib2xzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJjYWxlbmRhclN5bWJvbHMiLCEwKTt0aGlzLm5hbWU9ImdyZWdvcmlhbiI7dGhpcy5kYXlOYW1lcz1uZXcgWEZBT2JqZWN0QXJyYXkoMik7dGhpcy5lcmFOYW1lcz1udWxsO3RoaXMubWVyaWRpZW1OYW1lcz1udWxsO3RoaXMubW9udGhOYW1lcz1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIEN1cnJlbmN5U3ltYm9sIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJjdXJyZW5jeVN5bWJvbCIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsic3ltYm9sIiwiaXNvbmFtZSIsImRlY2ltYWwiXSl9fWNsYXNzIEN1cnJlbmN5U3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywiY3VycmVuY3lTeW1ib2xzIiwhMCk7dGhpcy5jdXJyZW5jeVN5bWJvbD1uZXcgWEZBT2JqZWN0QXJyYXkoMyl9fWNsYXNzIERhdGVQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJkYXRlUGF0dGVybiIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZnVsbCIsImxvbmciLCJtZWQiLCJzaG9ydCJdKX19Y2xhc3MgRGF0ZVBhdHRlcm5zIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJkYXRlUGF0dGVybnMiLCEwKTt0aGlzLmRhdGVQYXR0ZXJuPW5ldyBYRkFPYmplY3RBcnJheSg0KX19Y2xhc3MgRGF0ZVRpbWVTeW1ib2xzIGV4dGVuZHMgQ29udGVudE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywiZGF0ZVRpbWVTeW1ib2xzIil9fWNsYXNzIERheSBleHRlbmRzIFN0cmluZ09iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywiZGF5Iil9fWNsYXNzIERheU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJkYXlOYW1lcyIsITApO3RoaXMuYWJicj1nZXRJbnRlZ2VyKHtkYXRhOmUuYWJicixkZWZhdWx0VmFsdWU6MCx2YWxpZGF0ZTplPT4xPT09ZX0pO3RoaXMuZGF5PW5ldyBYRkFPYmplY3RBcnJheSg3KX19Y2xhc3MgRXJhIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJlcmEiKX19Y2xhc3MgRXJhTmFtZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sImVyYU5hbWVzIiwhMCk7dGhpcy5lcmE9bmV3IFhGQU9iamVjdEFycmF
1015KDIpfX1jbGFzcyBsb2NhbGVfc2V0X0xvY2FsZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywibG9jYWxlIiwhMCk7dGhpcy5kZXNjPWUuZGVzY3x8IiI7dGhpcy5uYW1lPSJpc29uYW1lIjt0aGlzLmNhbGVuZGFyU3ltYm9scz1udWxsO3RoaXMuY3VycmVuY3lTeW1ib2xzPW51bGw7dGhpcy5kYXRlUGF0dGVybnM9bnVsbDt0aGlzLmRhdGVUaW1lU3ltYm9scz1udWxsO3RoaXMubnVtYmVyUGF0dGVybnM9bnVsbDt0aGlzLm51bWJlclN5bWJvbHM9bnVsbDt0aGlzLnRpbWVQYXR0ZXJucz1udWxsO3RoaXMudHlwZUZhY2VzPW51bGx9fWNsYXNzIGxvY2FsZV9zZXRfTG9jYWxlU2V0IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJsb2NhbGVTZXQiLCEwKTt0aGlzLmxvY2FsZT1uZXcgWEZBT2JqZWN0QXJyYXl9fWNsYXNzIE1lcmlkaWVtIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJtZXJpZGllbSIpfX1jbGFzcyBNZXJpZGllbU5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJtZXJpZGllbU5hbWVzIiwhMCk7dGhpcy5tZXJpZGllbT1uZXcgWEZBT2JqZWN0QXJyYXkoMil9fWNsYXNzIE1vbnRoIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJtb250aCIpfX1jbGFzcyBNb250aE5hbWVzIGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJtb250aE5hbWVzIiwhMCk7dGhpcy5hYmJyPWdldEludGVnZXIoe2RhdGE6ZS5hYmJyLGRlZmF1bHRWYWx1ZTowLHZhbGlkYXRlOmU9PjE9PT1lfSk7dGhpcy5tb250aD1uZXcgWEZBT2JqZWN0QXJyYXkoMTIpfX1jbGFzcyBOdW1iZXJQYXR0ZXJuIGV4dGVuZHMgU3RyaW5nT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKEhvLCJudW1iZXJQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBOdW1iZXJQYXR0ZXJucyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywibnVtYmVyUGF0dGVybnMiLCEwKTt0aGlzLm51bWJlclBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF
1015KDQpfX1jbGFzcyBOdW1iZXJTeW1ib2wgZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sIm51bWJlclN5bWJvbCIpO3RoaXMubmFtZT1nZXRTdHJpbmdPcHRpb24oZS5uYW1lLFsiZGVjaW1hbCIsImdyb3VwaW5nIiwicGVyY2VudCIsIm1pbnVzIiwiemVybyJdKX19Y2xhc3MgTnVtYmVyU3ltYm9scyBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywibnVtYmVyU3ltYm9scyIsITApO3RoaXMubnVtYmVyU3ltYm9sPW5ldyBYRkFPYmplY3RBcnJheSg1KX19Y2xhc3MgVGltZVBhdHRlcm4gZXh0ZW5kcyBTdHJpbmdPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sInRpbWVQYXR0ZXJuIik7dGhpcy5uYW1lPWdldFN0cmluZ09wdGlvbihlLm5hbWUsWyJmdWxsIiwibG9uZyIsIm1lZCIsInNob3J0Il0pfX1jbGFzcyBUaW1lUGF0dGVybnMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sInRpbWVQYXR0ZXJucyIsITApO3RoaXMudGltZVBhdHRlcm49bmV3IFhGQU9iamVjdEFycmF5KDQpfX1jbGFzcyBUeXBlRmFjZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihIbywidHlwZUZhY2UiLCEwKTt0aGlzLm5hbWU9IiJ8ZS5uYW1lfX1jbGFzcyBUeXBlRmFjZXMgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoSG8sInR5cGVGYWNlcyIsITApO3RoaXMudHlwZUZhY2U9bmV3IFhGQU9iamVjdEFycmF5fX1jbGFzcyBMb2NhbGVTZXROYW1lc3BhY2V7c3RhdGljW1FzXShlLHQpe2lmKExvY2FsZVNldE5hbWVzcGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gTG9jYWxlU2V0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBjYWxlbmRhclN5bWJvbHMoZSl7cmV0dXJuIG5ldyBDYWxlbmRhclN5bWJvbHMoZSl9c3RhdGljIGN1cnJlbmN5U3ltYm9sKGUpe3JldHVybiBuZXcgQ3VycmVuY3lTeW1ib2woZSl9c3RhdGljIGN1cnJlbmN5U3ltYm9scyhlKXtyZXR1cm4gbmV3IEN1cnJlbmN5U3ltYm9scyhlKX1zdGF0aWMgZGF0ZVBhdHRlcm4oZSl7cmV0dXJuIG5ldyBEYXRlUGF0dGVybihlKX1zdGF0aWMgZGF0ZVBhdHRlcm5zKGUpe3JldHVybiBuZXcgRGF0ZVBhdHRlcm5zKGUpfXN0YXRpYyBkYXRlVGltZVN5bWJvbHMoZSl7cmV0dXJuIG5ldyBEYXRlVGltZVN5bWJvbHMoZSl9c3RhdGljIGRheShlKXtyZXR1cm4gbmV3IERheShlKX1zdGF0aWMgZGF5TmFtZXMoZSl7cmV0dXJuIG5ldyBEYXlOYW1lcyhlKX1zdGF0aWMgZXJhKGUpe3JldHVybiBuZXcgRXJhKGUpfXN0YXRpYyBlcmFOYW1lcyhlKXtyZXR1cm4gbmV3IEVyYU5hbWVzKGUpfXN0YXRpYyBsb2NhbGUoZSl7cmV0dXJuIG5ldyBsb2NhbGVfc2V0X0xvY2FsZShlKX1zdGF0aWMgbG9jYWxlU2V0KGUpe3JldHVybiBuZXcgbG9jYWxlX3NldF9Mb2NhbGVTZXQoZSl9c3Rh
101dGljIG1lcmlkaWVtKGUpe3JldHVybiBuZXcgTWVyaWRpZW0oZSl9c3RhdGljIG1lcmlkaWVtTmFtZXMoZSl7cmV0dXJuIG5ldyBNZXJpZGllbU5hbWVzKGUpfXN0YXRpYyBtb250aChlKXtyZXR1cm4gbmV3IE1vbnRoKGUpfXN0YXRpYyBtb250aE5hbWVzKGUpe3JldHVybiBuZXcgTW9udGhOYW1lcyhlKX1zdGF0aWMgbnVtYmVyUGF0dGVybihlKXtyZXR1cm4gbmV3IE51bWJlclBhdHRlcm4oZSl9c3RhdGljIG51bWJlclBhdHRlcm5zKGUpe3JldHVybiBuZXcgTnVtYmVyUGF0dGVybnMoZSl9c3RhdGljIG51bWJlclN5bWJvbChlKXtyZXR1cm4gbmV3IE51bWJlclN5bWJvbChlKX1zdGF0aWMgbnVtYmVyU3ltYm9scyhlKXtyZXR1cm4gbmV3IE51bWJlclN5bWJvbHMoZSl9c3RhdGljIHRpbWVQYXR0ZXJuKGUpe3JldHVybiBuZXcgVGltZVBhdHRlcm4oZSl9c3RhdGljIHRpbWVQYXR0ZXJucyhlKXtyZXR1cm4gbmV3IFRpbWVQYXR0ZXJucyhlKX1zdGF0aWMgdHlwZUZhY2UoZSl7cmV0dXJuIG5ldyBUeXBlRmFjZShlKX1zdGF0aWMgdHlwZUZhY2VzKGUpe3JldHVybiBuZXcgVHlwZUZhY2VzKGUpfX1jb25zdCBXbz1lby5zaWduYXR1cmUuaWQ7Y2xhc3Mgc2lnbmF0dXJlX1NpZ25hdHVyZSBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihXbywic2lnbmF0dXJlIiwhMCl9fWNsYXNzIFNpZ25hdHVyZU5hbWVzcGFjZXtzdGF0aWNbUXNdKGUsdCl7aWYoU2lnbmF0dXJlTmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBTaWduYXR1cmVOYW1lc3BhY2VbZV0odCl9c3RhdGljIHNpZ25hdHVyZShlKXtyZXR1cm4gbmV3IHNpZ25hdHVyZV9TaWduYXR1cmUoZSl9fWNvbnN0IHpvPWVvLnN0eWxlc2hlZXQuaWQ7Y2xhc3MgU3R5bGVzaGVldCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcih6bywic3R5bGVzaGVldCIsITApfX1jbGFzcyBTdHlsZXNoZWV0TmFtZXNwYWNle3N0YXRpY1tRc10oZSx0KXtpZihTdHlsZXNoZWV0TmFtZXNwYWNlLmhhc093blByb3BlcnR5KGUpKXJldHVybiBTdHlsZXNoZWV0TmFtZXNwYWNlW2VdKHQpfXN0YXRpYyBzdHlsZXNoZWV0KGUpe3JldHVybiBuZXcgU3R5bGVzaGVldChlKX19Y29uc3QgJG89ZW8ueGRwLmlkO2NsYXNzIHhkcF9YZHAgZXh0ZW5kcyBYRkFPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoJG8sInhkcCIsITApO3RoaXMudXVpZD1lLnV1aWR8fCIiO3RoaXMudGltZVN0YW1wPWUudGltZVN0YW1wfHwiIjt0aGlzLmNvbmZpZz1udWxsO3RoaXMuY29ubmVjdGlvblNldD1udWxsO3RoaXMuZGF0YXNldHM9bnVsbDt0aGlzLmxvY2FsZVNldD1udWxsO3RoaXMuc3R5bGVzaGVldD1uZXcgWEZBT2JqZWN0QXJyYXk7dGhpcy50ZW1wbGF0ZT1udWxsfVtCc10oZSl7Y29uc3QgdD1lb1tlW0RzXV07cmV0dXJuIHQmJmVbT3NdPT09dC5pZH19Y2xhc3MgWGRwTmFtZXNwYWNle3N0YXRpY1tRc10oZSx0KXtpZihYZHBOYW1lc3BhY2UuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIFhkcE5hbWVzcGFjZVtlXSh0KX1zdGF0aWMgeGRwKGUpe3JldHVybiBuZXcgeGRwX1hkcChlKX19Y29uc3QgR289ZW8ueGh0bWwuaWQsVm89U3ltYm9sKCksS289bmV3IFNldChbImNvbG9yIiwiZm9udCIsImZvbnQtZmFtaWx5IiwiZm9udC1zaXplIiwiZm9udC1zdHJldGNoIiwiZm9udC1zdHlsZSIsImZvbnQtd2VpZ2h0IiwibWFyZ2luIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsImxldHRlci1zcGFjaW5nIiwibGluZS1oZWlnaHQiLCJvcnBoYW5zIiwicGFnZS1icmVhay1hZnRlciIsInBhZ2UtYnJlYWstYmVmb3JlIiwicGFnZS1icmVhay1pbnNpZGUiLCJ0YWItaW50ZXJ2YWwiLCJ0YWItc3RvcCIsInRleHQtYWxpZ24iLCJ0ZXh0LWRlY29yYXRpb24iLCJ0ZXh0LWluZGVudCIsInZlcnRpY2FsLWFsaWduIiwid2lkb3dzIiwia2VybmluZy1tb2RlIiwieGZhLWZvbnQtaG9yaXpvbnRhbC1zY2FsZSIsInhmYS1mb250LXZlcnRpY2FsLXNjYWxlIiwieGZhLXNwYWNlcnVuIiwieGZhLXRhYi1zdG9wcyJdKSxKbz1uZXcgTWFwKFtbInBhZ2UtYnJlYWstYWZ0ZXIiLCJicmVha0FmdGVyIl0sWyJwYWdlLWJyZWFrLWJlZm9yZSIsImJyZWFrQmVmb3JlIl0sWyJwYWdlLWJyZWFrLWluc2lkZSIsImJyZWFrSW5zaWRlIl0sWyJrZXJuaW5nLW1vZGUiLGU9PiJub25lIj09PWU/Im5vbmUiOiJub3JtYWwiXSxbInhmYS1mb250LWhvcml6b250YWwtc2NhbGUiLGU9PmBzY2FsZVgoJHtNYXRoLm1heCgwLHBhcnNlSW50KGUpLzEwMCkudG9GaXhlZCgyKX0pYF0sWyJ4ZmEtZm9udC12ZXJ0aWNhbC1zY2FsZSIsZT0+YHNjYWxlWSgke01hdGgubWF4KDAscGFyc2VJbnQoZSkvMTAwKS50b0ZpeGVkKDIpfSlgXSxbInhmYS1zcGFjZXJ1biIsIiJdLFsieGZhLXRhYi1zdG9wcyIsIiJdLFsiZm9udC1zaXplIiwoZSx0KT0+bWVhc3VyZVRvU3RyaW5nKC45OSooZT10LmZvbnRTaXplPU1hdGguYWJzKGdldE1lYXN1cmVtZW50KGUpKSkpXSxbImxldHRlci1zcGFjaW5nIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImxpbmUtaGVpZ2h0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbiIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tYm90dG9tIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1sZWZ0IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbIm1hcmdpbi1yaWdodCIsZT0+bWVhc3VyZVRvU3RyaW5nKGdldE1lYXN1cmVtZW50KGUpKV0sWyJtYXJnaW4tdG9wIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbInRleHQtaW5kZW50IixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXSxbImZvbnQtZmFtaWx5IixlPT5lXSxbInZlcnRpY2FsLWFsaWduIixlPT5tZWFzdXJlVG9TdHJpbmcoZ2V0TWVhc3VyZW1lbnQoZSkpXV0pLFlvPS9ccysvZyxabz0vW1xyXG5dKy9nLFFvPS9cclxuPy9nO2Z1bmN0aW9uIG1hcFN0eWxlKGUsdCxhKXtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIHI7Y29uc3QgaT1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFt0LGFdb2YgZS5zcGxpdCgiOyIpLm1hcChlPT5lLnNwbGl0KCI6IiwyKSkpe2NvbnN0IGU9Sm8uZ2V0KHQpO2lmKCIiPT09ZSljb250aW51ZTtsZXQgbj1hO2UmJihuPSJzdHJpbmciPT10eXBlb2YgZT9lOmUoYSxpKSk7dC5lbmRzV2l0aCgic2NhbGUiKT9yLnRyYW5zZm9ybT1yLnRyYW5zZm9ybT9gJHtyW3RdfSAke259YDpuOnJbdC5yZXBsYWNlQWxsKC8tKFthLXpBLVpdKS9nLChlLHQpPT50LnRvVXBwZXJDYXNlKCkpXT1ufXIuZm9udEZhbWlseSYmc2V0Rm9udEZhbWlseSh7dHlwZWZhY2U6ci5mb250RmFtaWx5LHdlaWdodDpyLmZvbnRXZWlnaHR8fCJub3JtYWwiLHBvc3R1cmU6ci5mb250U3R5bGV8fCJub3JtYWwiLHNpemU6aS5mb250U2l6ZXx8MH0sdCx0W2dzXS5mb250RmluZGVyLHIpO2lmKGEmJnIudmVydGljYWxBbGlnbiYmIjBweCIhPT1yLnZlcnRpY2FsQWxpZ24mJnIuZm9udFNpemUpe2NvbnN0IGU9LjU4Myx0PS4zMzMsYT1nZXRNZWFzdXJlbWVudChyLmZvbnRTaXplKTtyLmZvbnRTaXplPW1lYXN1cmVUb1N0cmluZyhhKmUpO3IudmVydGljYWxBbGlnbj1tZWFzdXJlVG9TdHJpbmc
101oTWF0aC5zaWduKGdldE1lYXN1cmVtZW50KHIudmVydGljYWxBbGlnbikpKmEqdCl9YSYmci5mb250U2l6ZSYmKHIuZm9udFNpemU9YGNhbGMoJHtyLmZvbnRTaXplfSAqIHZhcigtLXRvdGFsLXNjYWxlLWZhY3RvcikpYCk7Zml4VGV4dEluZGVudChyKTtyZXR1cm4gcn1jb25zdCBlYz1uZXcgU2V0KFsiYm9keSIsImh0bWwiXSk7Y2xhc3MgWGh0bWxPYmplY3QgZXh0ZW5kcyBYbWxPYmplY3R7Y29uc3RydWN0b3IoZSx0KXtzdXBlcihHbyx0KTt0aGlzW1ZvXT0hMTt0aGlzLnN0eWxlPWUuc3R5bGV8fCIifVtxbl0oZSl7c3VwZXJbcW5dKGUpO3RoaXMuc3R5bGU9ZnVuY3Rpb24gY2hlY2tTdHlsZShlKXtyZXR1cm4gZS5zdHlsZT9lLnN0eWxlLnNwbGl0KCI7IikuZmlsdGVyKGU9PiEhZS50cmltKCkpLm1hcChlPT5lLnNwbGl0KCI6IiwyKS5tYXAoZT0+ZS50cmltKCkpKS5maWx0ZXIoKFt0LGFdKT0+eyJmb250LWZhbWlseSI9PT10JiZlW2dzXS51c2VkVHlwZWZhY2VzLmFkZChhKTtyZXR1cm4gS28uaGFzKHQpfSkubWFwKGU9PmUuam9pbigiOiIpKS5qb2luKCI7Iik6IiJ9KHRoaXMpfVtfbl0oKXtyZXR1cm4hZWMuaGFzKHRoaXNbRHNdKX1bTnNdKGUsdD0hMSl7aWYodCl0aGlzW1ZvXT0hMDtlbHNle2U9ZS5yZXBsYWNlQWxsKFpvLCIiKTt0aGlzLnN0eWxlLmluY2x1ZGVzKCJ4ZmEtc3BhY2VydW46eWVzIil8fChlPWUucmVwbGFjZUFsbChZbywiICIpKX1lJiYodGhpc1tHbl0rPWUpfVtFc10oZSx0PSEwKXtjb25zdCBhPU9iamVjdC5jcmVhdGUobnVsbCkscj17dG9wOk5hTixib3R0b206TmFOLGxlZnQ6TmFOLHJpZ2h0Ok5hTn07bGV0IGk9bnVsbDtmb3IoY29uc3RbZSx0XW9mIHRoaXMuc3R5bGUuc3BsaXQoIjsiKS5tYXAoZT0+ZS5zcGxpdCgiOiIsMikpKXN3aXRjaChlKXtjYXNlImZvbnQtZmFtaWx5IjphLnR5cGVmYWNlPXN0cmlwUXVvdGVzKHQpO2JyZWFrO2Nhc2UiZm9udC1zaXplIjphLnNpemU9Z2V0TWVhc3VyZW1lbnQodCk7YnJlYWs7Y2FzZSJmb250LXdlaWdodCI6YS53ZWlnaHQ9dDticmVhaztjYXNlImZvbnQtc3R5bGUiOmEucG9zdHVyZT10O2JyZWFrO2Nhc2UibGV0dGVyLXNwYWNpbmciOmEubGV0dGVyU3BhY2luZz1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbiI6Y29uc3QgZT10LnNwbGl0KC8gXHQvKS5tYXAoZT0+Z2V0TWVhc3VyZW1lbnQoZSkpO3N3aXRjaChlLmxlbmd0aCl7Y2FzZSAxOnIudG9wPXIuYm90dG9tPXIubGVmdD1yLnJpZ2h0PWVbMF07YnJlYWs7Y2FzZSAyOnIudG9wPXIuYm90dG9tPWVbMF07ci5sZWZ0PXIucmlnaHQ9ZVsxXTticmVhaztjYXNlIDM6ci50b3A9ZVswXTtyLmJvdHRvbT1lWzJdO3IubGVmdD1yLnJpZ2h0PWVbMV07YnJlYWs7Y2FzZSA0OnIudG9wPWVbMF07ci5sZWZ0PWVbMV07ci5ib3R0b209ZVsyXTtyLnJpZ2h0PWVbM119YnJlYWs7Y2FzZSJtYXJnaW4tdG9wIjpyLnRvcD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbi1ib3R0b20iOnIuYm90dG9tPWdldE1lYXN1cmVtZW50KHQpO2JyZWFrO2Nhc2UibWFyZ2luLWxlZnQiOnIubGVmdD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlIm1hcmdpbi1yaWdodCI6ci5yaWdodD1nZXRNZWFzdXJlbWVudCh0KTticmVhaztjYXNlImxpbmUtaGVpZ2h0IjppPWdldE1lYXN1cmVtZW50KHQpfWUucHVzaERhdGEoYSxyLGkpO2lmKHRoaXNbR25dKWUuYWRkU3RyaW5nKHRoaXNbR25dKTtlbHNlIGZvcihjb25zdCB0IG9mIHRoaXNbY3NdKCkpIiN0ZXh0IiE9PXRbRHNdP3RbRXNdKGUpOmUuYWRkU3RyaW5nKHRbR25dKTt0JiZlLnBvcEZvbnQoKX1bS3NdKGUpe2NvbnN0IHQ9W107dGhpc1tKbl09e2NoaWxkcmVuOnR9O3RoaXNbWG5dKHt9KTtpZigwPT09dC5sZW5ndGgmJiF0aGlzW0duXSlyZXR1cm4gSFRNTFJlc3VsdC5FTVBUWTtsZXQgYTthPXRoaXNbVm9dP3RoaXNbR25dP3RoaXNbR25dLnJlcGxhY2VBbGwoUW8sIlxuIik6dm9pZCAwOnRoaXNbR25dfHx2b2lkIDA7cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZTp0aGlzW0RzXSxhdHRyaWJ1dGVzOntocmVmOnRoaXMuaHJlZixzdHlsZTptYXBTdHlsZSh0aGlzLnN0eWxlLHRoaXMsdGhpc1tWb10pfSxjaGlsZHJlbjp0LHZhbHVlOmF9KX19Y2xhc3MgQSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImEiKTt0aGlzLmhyZWY9Zml4VVJMKGUuaHJlZil8fCIifX1jbGFzcyBCIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiYiIpfVtFc10oZSl7ZS5wdXNoRm9udCh7d2VpZ2h0OiJib2xkIn0pO3N1cGVyW0VzXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgQm9keSBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImJvZHkiKX1bS3NdKGUpe2NvbnN0IHQ9c3VwZXJbS3NdKGUpLHtodG1sOmF9PXQ7aWYoIWEpcmV0dXJuIEhUTUxSZXN1bHQuRU1QVFk7YS5uYW1lPSJkaXYiO2EuYXR0cmlidXRlcy5jbGFzcz1bInhmYVJpY2giXTtyZXR1cm4gdH19Y2xhc3MgQnIgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJiciIpfVtHc10oKXtyZXR1cm4iXG4ifVtFc10oZSl7ZS5hZGRTdHJpbmcoIlxuIil9W0tzXShlKXtyZXR1cm4gSFRNTFJlc3VsdC5zdWNjZXNzKHtuYW1lOiJiciJ9KX19Y2xhc3MgSHRtbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsImh0bWwiKX1bS3NdKGUpe2NvbnN0IHQ9W107dGhpc1tKbl09e2NoaWxkcmVuOnR9O3RoaXNbWG5dKHt9KTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sdmFsdWU6dGhpc1tHbl18fCIifSk7aWYoMT09PXQubGVuZ3RoKXtjb25zdCBlPXRbMF07aWYoZS5hdHRyaWJ1dGVzPy5jbGFzcy5pbmNsdWRlcygieGZhUmljaCIpKXJldHVybiBIVE1MUmVzdWx0LnN1Y2Nlc3MoZSl9cmV0dXJuIEhUTUxSZXN1bHQuc3VjY2Vzcyh7bmFtZToiZGl2IixhdHRyaWJ1dGVzOntjbGFzczpbInhmYVJpY2giXSxzdHlsZTp7fX0sY2hpbGRyZW46dH0pfX1jbGFzcyBJIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwiaSIpfVtFc10oZSl7ZS5wdXNoRm9udCh7cG9zdHVyZToiaXRhbGljIn0pO3N1cGVyW0VzXShlKTtlLnBvcEZvbnQoKX19Y2xhc3MgTGkgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJsaSIpfX1jbGFzcyBPbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsIm9sIil9fWNsYXNzIFAgZXh0ZW5kcyBYaHRtbE9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcihlLCJwIil9W0VzXShlKXtzdXBlcltFc10oZSwhMSk7ZS5hZGRTdHJpbmcoIlxuIik7ZS5hZGRQYXJhKCk7ZS5wb3BGb250KCl9W0dzXSgpe3JldHVybiB0aGlzW2RzXSgpW2NzXSgpLmF0KC0xKT09PXRoaXM/c3VwZXJbR3NdKCk6c3VwZXJbR3NdKCkrIlxuIn19Y2xhc3MgU3BhbiBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInNwYW4iKX19Y2xhc3MgU3ViIGV4dGVuZHMgWGh0bWxPYmplY3R7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSwic3ViIil9fWNsYXNzIFN1cCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInN1cCIpfX1jbGFzcyBVbCBleHRlbmRzIFhodG1sT2JqZWN0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUsInVsIil9fWNsYXNzIFhodG1sTmFtZXNwYWNle3N0YXRpY1tRc10oZSx0KXtpZihYaHRtbE5hbWVz
101cGFjZS5oYXNPd25Qcm9wZXJ0eShlKSlyZXR1cm4gWGh0bWxOYW1lc3BhY2VbZV0odCl9c3RhdGljIGEoZSl7cmV0dXJuIG5ldyBBKGUpfXN0YXRpYyBiKGUpe3JldHVybiBuZXcgQihlKX1zdGF0aWMgYm9keShlKXtyZXR1cm4gbmV3IEJvZHkoZSl9c3RhdGljIGJyKGUpe3JldHVybiBuZXcgQnIoZSl9c3RhdGljIGh0bWwoZSl7cmV0dXJuIG5ldyBIdG1sKGUpfXN0YXRpYyBpKGUpe3JldHVybiBuZXcgSShlKX1zdGF0aWMgbGkoZSl7cmV0dXJuIG5ldyBMaShlKX1zdGF0aWMgb2woZSl7cmV0dXJuIG5ldyBPbChlKX1zdGF0aWMgcChlKXtyZXR1cm4gbmV3IFAoZSl9c3RhdGljIHNwYW4oZSl7cmV0dXJuIG5ldyBTcGFuKGUpfXN0YXRpYyBzdWIoZSl7cmV0dXJuIG5ldyBTdWIoZSl9c3RhdGljIHN1cChlKXtyZXR1cm4gbmV3IFN1cChlKX1zdGF0aWMgdWwoZSl7cmV0dXJuIG5ldyBVbChlKX19Y29uc3QgdGM9e2NvbmZpZzpDb25maWdOYW1lc3BhY2UsY29ubmVjdGlvbjpDb25uZWN0aW9uU2V0TmFtZXNwYWNlLGRhdGFzZXRzOkRhdGFzZXRzTmFtZXNwYWNlLGxvY2FsZVNldDpMb2NhbGVTZXROYW1lc3BhY2Usc2lnbmF0dXJlOlNpZ25hdHVyZU5hbWVzcGFjZSxzdHlsZXNoZWV0OlN0eWxlc2hlZXROYW1lc3BhY2UsdGVtcGxhdGU6VGVtcGxhdGVOYW1lc3BhY2UseGRwOlhkcE5hbWVzcGFjZSx4aHRtbDpYaHRtbE5hbWVzcGFjZX07Y2xhc3MgVW5rbm93bk5hbWVzcGFjZXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWVzcGFjZUlkPWV9W1FzXShlLHQpe3JldHVybiBuZXcgWG1sT2JqZWN0KHRoaXMubmFtZXNwYWNlSWQsZSx0KX19Y2xhc3MgUm9vdCBleHRlbmRzIFhGQU9iamVjdHtjb25zdHJ1Y3RvcihlKXtzdXBlcigtMSwicm9vdCIsT2JqZWN0LmNyZWF0ZShudWxsKSk7dGhpcy5lbGVtZW50PW51bGw7dGhpc1ttc109ZX1bUnNdKGUpe3RoaXMuZWxlbWVudD1lO3JldHVybiEwfVtZbl0oKXtzdXBlcltZbl0oKTtpZih0aGlzLmVsZW1lbnQudGVtcGxhdGUgaW5zdGFuY2VvZiBUZW1wbGF0ZSl7dGhpc1ttc10uc2V0KGpzLHRoaXMuZWxlbWVudCk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW1hzXSh0aGlzW21zXSk7dGhpcy5lbGVtZW50LnRlbXBsYXRlW21zXT10aGlzW21zXX19fWNsYXNzIEVtcHR5IGV4dGVuZHMgWEZBT2JqZWN0e2NvbnN0cnVjdG9yKCl7c3VwZXIoLTEsIiIsT2JqZWN0LmNyZWF0ZShudWxsKSl9W1JzXShlKXtyZXR1cm4hMX19Y2xhc3MgQnVpbGRlcntjb25zdHJ1Y3RvcihlPW51bGwpe3RoaXMuX25hbWVzcGFjZVN0YWNrPVtdO3RoaXMuX25zQWdub3N0aWNMZXZlbD0wO3RoaXMuX25hbWVzcGFjZVByZWZpeGVzPW5ldyBNYXA7dGhpcy5fbmFtZXNwYWNlcz1uZXcgTWFwO3RoaXMuX25leHROc0lkPU1hdGgubWF4KC4uLk9iamVjdC52YWx1ZXMoZW8pLm1hcCgoe2lkOmV9KT0+ZSkpO3RoaXMuX2N1cnJlbnROYW1lc3BhY2U9ZXx8bmV3IFVua25vd25OYW1lc3BhY2UoKyt0aGlzLl9uZXh0TnNJZCl9YnVpbGRSb290KGUpe3JldHVybiBuZXcgUm9vdChlKX1idWlsZCh7bnNQcmVmaXg6ZSxuYW1lOnQsYXR0cmlidXRlczphLG5hbWVzcGFjZTpyLHByZWZpeGVzOml9KXtjb25zdCBuPW51bGwhPT1yO2lmKG4pe3RoaXMuX25hbWVzcGFjZVN0YWNrLnB1c2godGhpcy5fY3VycmVudE5hbWVzcGFjZSk7dGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9zZWFyY2hOYW1lc3BhY2Uocil9aSYmdGhpcy5fYWRkTmFtZXNwYWNlUHJlZml4KGkpO2lmKGEuaGFzT3duUHJvcGVydHkoTXMpKXtjb25zdCBlPXRjLmRhdGFzZXRzLHQ9YVtNc107bGV0IHI9bnVsbDtmb3IoY29uc3RbYSxpXW9mIE9iamVjdC5lbnRyaWVzKHQpKXtpZih0aGlzLl9nZXROYW1lc3BhY2VUb1VzZShhKT09PWUpe3I9e3hmYTppfTticmVha319cj9hW01zXT1yOmRlbGV0ZSBhW01zXX1jb25zdCBzPXRoaXMuX2dldE5hbWVzcGFjZVRvVXNlKGUpLG89cz8uW1FzXSh0LGEpfHxuZXcgRW1wdHk7b1trc10oKSYmdGhpcy5fbnNBZ25vc3RpY0xldmVsKys7KG58fGl8fG9ba3NdKCkpJiYob1tXbl09e2hhc05hbWVzcGFjZTpuLHByZWZpeGVzOmksbnNBZ25vc3RpYzpvW2tzXSgpfSk7cmV0dXJuIG99aXNOc0Fnbm9zdGljKCl7cmV0dXJuIHRoaXMuX25zQWdub3N0aWNMZXZlbD4wfV9zZWFyY2hOYW1lc3BhY2UoZSl7bGV0IHQ9dGhpcy5fbmFtZXNwYWNlcy5nZXQoZSk7aWYodClyZXR1cm4gdDtmb3IoY29uc3RbYSx7Y2hlY2s6cn1db2YgT2JqZWN0LmVud
101HJpZXMoZW8pKWlmKHIoZSkpe3Q9dGNbYV07aWYodCl7dGhpcy5fbmFtZXNwYWNlcy5zZXQoZSx0KTtyZXR1cm4gdH1icmVha310PW5ldyBVbmtub3duTmFtZXNwYWNlKCsrdGhpcy5fbmV4dE5zSWQpO3RoaXMuX25hbWVzcGFjZXMuc2V0KGUsdCk7cmV0dXJuIHR9X2FkZE5hbWVzcGFjZVByZWZpeChlKXtmb3IoY29uc3R7cHJlZml4OnQsdmFsdWU6YX1vZiBlKXtjb25zdCBlPXRoaXMuX3NlYXJjaE5hbWVzcGFjZShhKTtsZXQgcj10aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQodCk7aWYoIXIpe3I9W107dGhpcy5fbmFtZXNwYWNlUHJlZml4ZXMuc2V0KHQscil9ci5wdXNoKGUpfX1fZ2V0TmFtZXNwYWNlVG9Vc2UoZSl7aWYoIWUpcmV0dXJuIHRoaXMuX2N1cnJlbnROYW1lc3BhY2U7Y29uc3QgdD10aGlzLl9uYW1lc3BhY2VQcmVmaXhlcy5nZXQoZSk7aWYodD8ubGVuZ3RoPjApcmV0dXJuIHQuYXQoLTEpO3dhcm4oYFVua25vd24gbmFtZXNwYWNlIHByZWZpeDogJHtlfS5gKTtyZXR1cm4gbnVsbH1jbGVhbihlKXtjb25zdHtoYXNOYW1lc3BhY2U6dCxwcmVmaXhlczphLG5zQWdub3N0aWM6cn09ZTt0JiYodGhpcy5fY3VycmVudE5hbWVzcGFjZT10aGlzLl9uYW1lc3BhY2VTdGFjay5wb3AoKSk7YSYmYS5mb3JFYWNoKCh7cHJlZml4OmV9KT0+e3RoaXMuX25hbWVzcGFjZVByZWZpeGVzLmdldChlKS5wb3AoKX0pO3ImJnRoaXMuX25zQWdub3N0aWNMZXZlbC0tfX1jbGFzcyBYRkFQYXJzZXIgZXh0ZW5kcyBYTUxQYXJzZXJCYXNle2NvbnN0cnVjdG9yKGU9bnVsbCx0PSExKXtzdXBlcigpO3RoaXMuX2J1aWxkZXI9bmV3IEJ1aWxkZXIoZSk7dGhpcy5fc3RhY2s9W107dGhpcy5fZ2xvYmFsRGF0YT17dXNlZFR5cGVmYWNlczpuZXcgU2V0fTt0aGlzLl9pZHM9bmV3IE1hcDt0aGlzLl9jdXJyZW50PXRoaXMuX2J1aWxkZXIuYnVpbGRSb290KHRoaXMuX2lkcyk7dGhpcy5fZXJyb3JDb2RlPXZuO3RoaXMuX3doaXRlUmVnZXg9L15ccyskLzt0aGlzLl9uYnNwcz0vXHhhMCsvZzt0aGlzLl9yaWNoVGV4dD10fXBhcnNlKGUpe3RoaXMucGFyc2VYbWwoZSk7aWYodGhpcy5fZXJyb3JDb2RlPT09dm4pe3RoaXMuX2N1cnJlbnRbWW5dKCk7cmV0dXJuIHRoaXMuX2N1cnJlbnQuZWxlbWVudH19b25UZXh0KGUpe2U9ZS5yZXBsYWNlKHRoaXMuX25ic3BzLGU9PmUuc2xpY2UoMSkrIiAiKTt0aGlzLl9yaWNoVGV4dHx8dGhpcy5fY3VycmVudFtfbl0oKT90aGlzLl9jdXJyZW50W05zXShlLHRoaXMuX3JpY2hUZXh0KTp0aGlzLl93aGl0ZVJlZ2V4LnRlc3QoZSl8fHRoaXMuX2N1cnJlbnRbTnNdKGUudHJpbSgpKX1vbkNkYXRhKGUpe3RoaXMuX2N1cnJlbnRbTnNdKGUpfV9ta0F0dHJpYnV0ZXMoZSx0KXtsZXQgYT1udWxsLHI9bnVsbDtjb25zdCBpPU9iamVjdC5jcmVhdGUoe30pO2Zvcihjb25zdHtuYW1lOm4sdmFsdWU6c31vZiBlKWlmKCJ4bWxucyI9PT1uKWE/d2FybihgWEZBIC0gbXVsdGlwbGUgbmFtZXNwYWNlIGRlZmluaXRpb24gaW4gPCR7dH0+YCk6YT1zO2Vsc2UgaWYobi5zdGFydHNXaXRoKCJ4bWxuczoiKSl7Y29uc3QgZT1uLnN1YnN0cmluZyg2KTtyPz89W107ci5wdXNoKHtwcmVmaXg6ZSx2YWx1ZTpzfSl9ZWxzZXtjb25zdCBlPW4uaW5kZXhPZigiOiIpO2lmKC0xPT09ZSlpW25dPXM7ZWxzZXtjb25zdCB0PWlbTXNdPz89T2JqZWN0LmNyZWF0ZShudWxsKSxbYSxyXT1bbi5zbGljZSgwLGUpLG4uc2xpY2UoZSsxKV07KHRbYV18fD1PYmplY3QuY3JlYXRlKG51bGwpKVtyXT1zfX1yZXR1cm5bYSxyLGldfV9nZXROYW1lQW5kUHJlZml4KGUsdCl7Y29uc3QgYT1lLmluZGV4T2YoIjoiKTtyZXR1cm4tMT09PWE/W2UsbnVsbF06W2Uuc3Vic3RyaW5nKGErMSksdD8iIjplLnN1YnN0cmluZygwLGEpXX1vbkJlZ2luRWxlbWVudChlLHQsYSl7Y29uc3RbcixpLG5dPXRoaXMuX21rQXR0cmlidXRlcyh0LGUpLFtzLG9dPXRoaXMuX2dldE5hbWVBbmRQcmVmaXgoZSx0aGlzLl9idWlsZGVyLmlzTnNBZ25vc3RpYygpKSxjPXRoaXMuX2J1aWxkZXIuYnVpbGQoe25zUHJlZml4Om8sbmFtZTpzLGF0dHJpYnV0ZXM6bixuYW1lc3BhY2U6cixwcmVmaXhlczppfSk7Y1tnc109dGhpcy5fZ2xvYmFsRGF0YTtpZihhKXtjW1luXSgpO3RoaXMuX2N1cnJlbnRbUnNdKGMpJiZjW0hzXSh0aGlzLl9p
101ZHMpO2NbcW5dKHRoaXMuX2J1aWxkZXIpfWVsc2V7dGhpcy5fc3RhY2sucHVzaCh0aGlzLl9jdXJyZW50KTt0aGlzLl9jdXJyZW50PWN9fW9uRW5kRWxlbWVudChlKXtjb25zdCB0PXRoaXMuX2N1cnJlbnQ7aWYodFt3c10oKSYmInN0cmluZyI9PXR5cGVvZiB0W0duXSl7Y29uc3QgZT1uZXcgWEZBUGFyc2VyO2UuX2dsb2JhbERhdGE9dGhpcy5fZ2xvYmFsRGF0YTtjb25zdCBhPWUucGFyc2UodFtHbl0pO3RbR25dPW51bGw7dFtSc10oYSl9dFtZbl0oKTt0aGlzLl9jdXJyZW50PXRoaXMuX3N0YWNrLnBvcCgpO3RoaXMuX2N1cnJlbnRbUnNdKHQpJiZ0W0hzXSh0aGlzLl9pZHMpO3RbcW5dKHRoaXMuX2J1aWxkZXIpfW9uRXJyb3IoZSl7dGhpcy5fZXJyb3JDb2RlPWV9fWNsYXNzIFhGQUZhY3Rvcnl7Y29uc3RydWN0b3IoZSl7dHJ5e3RoaXMucm9vdD0obmV3IFhGQVBhcnNlcikucGFyc2UoWEZBRmFjdG9yeS5fY3JlYXRlRG9jdW1lbnQoZSkpO2NvbnN0IHQ9bmV3IEJpbmRlcih0aGlzLnJvb3QpO3RoaXMuZm9ybT10LmJpbmQoKTt0aGlzLmRhdGFIYW5kbGVyPW5ldyBEYXRhSGFuZGxlcih0aGlzLnJvb3QsdC5nZXREYXRhKCkpO3RoaXMuZm9ybVtnc10udGVtcGxhdGU9dGhpcy5mb3JtfWNhdGNoKGUpe3dhcm4oYFhGQSAtIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBwYXJzaW5nIGFuZCBiaW5kaW5nOiAke2V9YCl9fWlzVmFsaWQoKXtyZXR1cm4hKCF0aGlzLnJvb3R8fCF0aGlzLmZvcm0pfV9jcmVhdGVQYWdlc0hlbHBlcigpe2NvbnN0IGU9dGhpcy5mb3JtW1ZzXSgpO3JldHVybiBuZXcgUHJvbWlzZSgodCxhKT0+e2NvbnN0IG5leHRJdGVyYXRpb249KCk9Pnt0cnl7Y29uc3QgYT1lLm5leHQoKTthLmRvbmU/dChhLnZhbHVlKTpzZXRUaW1lb3V0KG5leHRJdGVyYXRpb24sMCl9Y2F0Y2goZSl7YShlKX19O3NldFRpbWVvdXQobmV4dEl0ZXJhdGlvbiwwKX0pfWFzeW5jIF9jcmVhdGVQYWdlcygpe3RyeXt0aGlzLnBhZ2VzPWF3YWl0IHRoaXMuX2NyZWF0ZVBhZ2VzSGVscGVyKCk7dGhpcy5kaW1zPXRoaXMucGFnZXMuY2hpbGRyZW4ubWFwKGU9Pntjb25zdHt3aWR0aDp0LGhlaWdodDphfT1lLmF0dHJpYnV0ZXMuc3R5bGU7cmV0dXJuWzAsMCxwYXJzZUludCh0KSxwYXJzZUludChhKV19KX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgbGF5b3V0OiAke2V9YCl9fWdldEJvdW5kaW5nQm94KGUpe3JldHVybiB0aGlzLmRpbXNbZV19YXN5bmMgZ2V0TnVtUGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO3JldHVybiB0aGlzLmRpbXMubGVuZ3RofXNldEltYWdlcyhlKXt0aGlzLmZvcm1bZ3NdLmltYWdlcz1lfXNldEZvbnRzKGUpe3RoaXMuZm9ybVtnc10uZm9udEZpbmRlcj1uZXcgRm9udEZpbmRlcihlKTtjb25zdCB0PVtdO2ZvcihsZXQgZSBvZiB0aGlzLmZvcm1bZ3NdLnVzZWRUeXBlZmFjZXMpe2U9c3RyaXBRdW90ZXMoZSk7dGhpcy5mb3JtW2dzXS5mb250RmluZGVyLmZpbmQoZSl8fHQucHVzaChlKX1yZXR1cm4gdC5sZW5ndGg+MD90Om51bGx9YXBwZW5kRm9udHMoZSx0KXt0aGlzLmZvcm1bZ3NdLmZvbnRGaW5kZXIuYWRkKGUsdCl9YXN5bmMgZ2V0UGFnZXMoKXt0aGlzLnBhZ2VzfHxhd2FpdCB0aGlzLl9jcmVhdGVQYWdlcygpO2NvbnN0IGU9dGhpcy5wYWdlczt0aGlzLnBhZ2VzPW51bGw7cmV0dXJuIGV9c2VyaWFsaXplRGF0YShlKXtyZXR1cm4gdGhpcy5kYXRhSGFuZGxlci5zZXJpYWxpemUoZSl9c3RhdGljIF9jcmVhdGVEb2N1bWVudChlKXtyZXR1cm4gZVsiL3hkcDp4ZHAiXT9PYmplY3QudmFsdWVzKGUpLmpvaW4oIiIpOmVbInhkcDp4ZHAiXX1zdGF0aWMgZ2V0UmljaFRleHRBc0h0bWwoZSl7aWYoIWV8fCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gbnVsbDt0cnl7bGV0IHQ9bmV3IFhGQVBhcnNlcihYaHRtbE5hbWVzcGFjZSwhMCkucGFyc2UoZSk7aWYoIVsiYm9keSIsInhodG1sIl0uaW5jbHVkZXModFtEc10pKXtjb25zdCBlPVhodG1sTmFtZXNwYWNlLmJvZHkoe30pO2Vbam5dKHQpO3Q9ZX1jb25zdCBhPXRbS3NdKCk7aWYoIWEuc3VjY2VzcylyZXR1cm4gbnVsbDtjb25zdHtodG1sOnJ9PWEse2F0dHJpYnV0ZXM6aX09cjtpZihpKXtpLmNsYXNzJiYoaS5jbGFzcz1pLmNsYXNzLmZpbHRlcihlPT4hZS5zdGFydHNXaXRoKCJ4ZmEiKSkpO2kuZGlyPSJhdXRvIn1yZXR1cm57aHRtbDpyLHN0cjp0W0dzXSgpfX1jYXRjaChlKXt3YXJuKGBYRkEgLSBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGFyc2luZyBvZiByaWNoIHRleHQ6ICR7ZX1gKX1yZXR1cm4gbnVsbH19Y2xhc3MgQW5ub3RhdGlvbkZhY3Rvcnl7c3RhdGljIGNyZWF0ZUdsb2JhbHMoZSl7cmV0dXJuIFByb21pc2UuYWxsKFtlLmVuc3VyZUNhdGFsb2coImFjcm9Gb3JtIiksZS5lbnN1cmVEb2MoInhmYURhdGFzZXRzIiksZS5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpLGUuZW5zdXJlQ2F0YWxvZygiYmFzZVVybCIpLGUuZW5zdXJlQ2F0YWxvZygiYXR0YWNobWVudHMiKSxlLmVuc3VyZUNhdGFsb2coImdsb2JhbENvbG9yU3BhY2VDYWNoZSIpXSkudGhlbigoW3QsYSxyLGksbixzXSk9Pih7cGRmTWFuYWdlcjplLGFjcm9Gb3JtOnQgaW5zdGFuY2VvZiBEaWN0P3Q6RGljdC5lbXB0eSx4ZmFEYXRhc2V0czphLHN0cnVjdFRyZWVSb290OnIsYmFzZVVybDppLGF0dGFjaG1lbnRzOm4sZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnN9KSxlPT57d2FybihgY3JlYXRlR2xvYmFsczogIiR7ZX0iLmApO3JldHVybiBudWxsfSl9c3RhdGljIGFzeW5jIGNyZWF0ZShlLHQsYSxyLGksbixzLG8pe2NvbnN0IGM9aT9hd2FpdCB0aGlzLl9nZXRQYWdlSW5kZXgoZSx0LGEucGRmTWFuYWdlcik6bnVsbDtyZXR1cm4gYS5wZGZNYW5hZ2VyLmVuc3VyZSh0aGlzLCJfY3JlYXRlIixbZSx0LGEscixpLG4scyxjLG9dKX1zdGF0aWMgX2NyZWF0ZShlLHQsYSxyLGk9ITEsbj1udWxsLHM9bnVsbCxvPW51bGwsYz1udWxsKXtjb25zdCBsPWUuZmV0Y2hJZlJlZih0KTtpZighKGwgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47bGV0IGg9bC5nZXQoIlN1YnR5cGUiKTtoPWggaW5zdGFuY2VvZiBOYW1lP2gubmFtZTpudWxsO2lmKHMmJiFzLmhhcyhEW2gudG9VcHBlckNhc2UoKV0pKXJldHVybi
101BudWxsO2NvbnN0e2Fjcm9Gb3JtOnUscGRmTWFuYWdlcjpkfT1hLGY9dCBpbnN0YW5jZW9mIFJlZj90LnRvU3RyaW5nKCk6YGFubm90XyR7ci5jcmVhdGVPYmpJZCgpfWAsZz17eHJlZjplLHJlZjp0LGRpY3Q6bCxzdWJ0eXBlOmgsaWQ6Zixhbm5vdGF0aW9uR2xvYmFsczphLGNvbGxlY3RGaWVsZHM6aSxvcnBoYW5GaWVsZHM6bixuZWVkQXBwZWFyYW5jZXM6IWkmJiEwPT09dS5nZXQoIk5lZWRBcHBlYXJhbmNlcyIpLHBhZ2VJbmRleDpvLGV2YWx1YXRvck9wdGlvbnM6ZC5ldmFsdWF0b3JPcHRpb25zLHBhZ2VSZWY6Y307c3dpdGNoKGgpe2Nhc2UiTGluayI6cmV0dXJuIG5ldyBMaW5rQW5ub3RhdGlvbihnKTtjYXNlIlRleHQiOnJldHVybiBuZXcgVGV4dEFubm90YXRpb24oZyk7Y2FzZSJXaWRnZXQiOmxldCBlPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6bCxrZXk6IkZUIn0pO2U9ZSBpbnN0YW5jZW9mIE5hbWU/ZS5uYW1lOm51bGw7c3dpdGNoKGUpe2Nhc2UiVHgiOnJldHVybiBuZXcgVGV4dFdpZGdldEFubm90YXRpb24oZyk7Y2FzZSJCdG4iOnJldHVybiBuZXcgQnV0dG9uV2lkZ2V0QW5ub3RhdGlvbihnKTtjYXNlIkNoIjpyZXR1cm4gbmV3IENob2ljZVdpZGdldEFubm90YXRpb24oZyk7Y2FzZSJTaWciOnJldHVybiBuZXcgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbihnKX13YXJuKGBVbmltcGxlbWVudGVkIHdpZGdldCBmaWVsZCB0eXBlICIke2V9IiwgZmFsbGluZyBiYWNrIHRvIGJhc2UgZmllbGQgdHlwZS5gKTtyZXR1cm4gbmV3IFdpZGdldEFubm90YXRpb24oZyk7Y2FzZSJQb3B1cCI6cmV0dXJuIG5ldyBQb3B1cEFubm90YXRpb24oZyk7Y2FzZSJGcmVlVGV4dCI6cmV0dXJuIG5ldyBGcmVlVGV4dEFubm90YXRpb24oZyk7Y2FzZSJMaW5lIjpyZXR1cm4gbmV3IExpbmVBbm5vdGF0aW9uKGcpO2Nhc2UiU3F1YXJlIjpyZXR1cm4gbmV3IFNxdWFyZUFubm90YXRpb24oZyk7Y2FzZSJDaXJjbGUiOnJldHVybiBuZXcgQ2lyY2xlQW5ub3RhdGlvbihnKTtjYXNlIlBvbHlMaW5lIjpyZXR1cm4gbmV3IFBvbHlsaW5lQW5ub3RhdGlvbihnKTtjYXNlIlBvbHlnb24iOnJldHVybiBuZXcgUG9seWdvbkFubm90YXRpb24oZyk7Y2FzZSJDYXJldCI6cmV0dXJuIG5ldyBDYXJldEFubm90YXRpb24oZyk7Y2FzZSJJbmsiOnJldHVybiBuZXcgSW5rQW5ub3RhdGlvbihnKTtjYXNlIkhpZ2hsaWdodCI6cmV0dXJuIG5ldyBIaWdobGlnaHRBbm5vdGF0aW9uKGcpO2Nhc2UiVW5kZXJsaW5lIjpyZXR1cm4gbmV3IFVuZGVybGluZUFubm90YXRpb24oZyk7Y2FzZSJTcXVpZ2dseSI6cmV0dXJuIG5ldyBTcXVpZ2dseUFubm90YXRpb24oZyk7Y2FzZSJTdHJpa2VPdXQiOnJldHVybiBuZXcgU3RyaWtlT3V0QW5ub3RhdGlvbihnKTtjYXNlIlN0YW1wIjpyZXR1cm4gbmV3IFN0YW1wQW5ub3RhdGlvbihnKTtjYXNlIkZpbGVBdHRhY2htZW50IjpyZXR1cm4gbmV3IEZpbGVBdHRhY2htZW50QW5ub3RhdGlvbihnKTtkZWZhdWx0Oml8fHdhcm4oaD9gVW5pbXBsZW1lbnRlZCBhbm5vdGF0aW9uIHR5cGUgIiR7aH0iLCBmYWxsaW5nIGJhY2sgdG8gYmFzZSBhbm5vdGF0aW9uLmA6IkFubm90YXRpb24gaXMgbWlzc2luZyB0aGUgcmVxdWlyZWQgL1N1YnR5cGUuIik7cmV0dXJuIG5ldyBBbm5vdGF0aW9uKGcpfX1zdGF0aWMgYXN5bmMgX2dldFBhZ2VJbmRleChlLHQsYSl7dHJ5e2NvbnN0IHI9YXdhaXQgZS5mZXRjaElmUmVmQXN5bmModCk7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuLTE7Y29uc3QgaT1yLmdldFJhdygiUCIpO2lmKGkgaW5zdGFuY2VvZiBSZWYpdHJ5e3JldHVybiBhd2FpdCBhLmVuc3VyZUNhdGFsb2coImdldFBhZ2VJbmRleCIsW2ldKX1jYXRjaChlKXtpbmZvKGBfZ2V0UGFnZUluZGV4IC0tIG5vdCBhIHZhbGlkIHBhZ2UgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoci5oYXMoIktpZHMiKSlyZXR1cm4tMTtjb25zdCBuPWF3YWl0IGEuZW5zdXJlRG9jKCJudW1QYWdlcyIpO2ZvcihsZXQgZT0wO2U8bjtlKyspe2NvbnN0IHI9YXdhaXQgYS5nZXRQYWdlKGUpLGk9YXdhaXQgYS5lbnN1cmUociwiYW5ub3RhdGlvbnMiKTtmb3IoY29uc3QgYSBvZiBpKWlmKGEgaW5zdGFuY2VvZiBSZWYmJmlzUmVmc0VxdWFsKGEsdCkpcmV0dXJuIGV9fWNhdGNoKGUpe3dhcm4oYF9nZXRQYWdlSW5kZXg6ICIke2V9Ii5gKX1yZXR1cm4tMX1zdGF0aWMgZ2VuZXJhdGVJbWFnZXMoZSx0LGEpe2lmKCFhKXt3YXJuKCJnZW5lcmF0ZUltYWdlczogT2Zmc2NyZWVuQ2FudmFzIGlzIG5vdCBzdXBwb3J0ZWQsIGNhbm5vdCBzYXZlIG9yIHByaW50IHNvbWUgYW5ub3RhdGlvbnMgd2l0aCBpbWFnZXMuIik7cmV0dXJuIG51bGx9bGV0IHI7Zm9yKGNvbnN0e2JpdG1hcElkOmEsYml0bWFwOml9b2YgZSlpZihpKXtyfHw9bmV3IE1hcDtyLnNldChhLFN0YW1wQW5ub3RhdGlvbi5jcmVhdGVJbWFnZShpLHQpKX1yZXR1cm4gcn1zdGF0aWMgYXN5bmMgc2F2ZU5ld0Fubm90YXRpb25zKGUsdCxhLHIsaSl7Y29uc3Qgbj1lLnhyZWY7bGV0IHM7Y29uc3Qgbz1bXSx7aXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ6Y309ZS5vcHRpb25zO2Zvcihjb25zdCBsIG9mIGEpaWYoIWwuZGVsZXRlZClzd2l0Y2gobC5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBnOmlmKCFzKXtjb25zdCBlPW5ldyBEaWN0KG4pO2Uuc2V0SWZOYW1lKCJCYXNlRm9udCIsIkhlbHZldGljYSIpO2Uuc2V0SWZOYW1lKCJUeXBlIiwiRm9udCIpO2Uuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiVHlwZTEiKTtlLnNldElmTmFtZSgiRW5jb2RpbmciLCJXaW5BbnNpRW5jb2RpbmciKTtzPW4uZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7aS5wdXQocyx7ZGF0YTplfSl9by5wdXNoKEZyZWVUZXh0QW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKG4sbCxpLHtldmFsdWF0b3I6ZSx0YXNrOnQsYmFzZUZvbnRSZWY6c30pKTticmVhaztjYXNlIHA6bC5xdWFkUG9pbnRzP28ucHVzaChIaWdobGlnaHRBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixsLGkpKTpvLnB1c2goSW5rQW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKG4sbCxpKSk7YnJlYWs7Y2FzZSBiOm8ucHVzaChJbmtBbm5vdGF0aW9uLm
101NyZWF0ZU5ld0Fubm90YXRpb24obixsLGkpKTticmVhaztjYXNlIG06Y29uc3QgYT1jP2F3YWl0KHI/LmdldChsLmJpdG1hcElkKSk6bnVsbDtpZihhPy5pbWFnZVN0cmVhbSl7Y29uc3R7aW1hZ2VTdHJlYW06ZSxzbWFza1N0cmVhbTp0fT1hO2lmKHQpe2NvbnN0IGE9bi5nZXROZXdUZW1wb3JhcnlSZWYoKTtpLnB1dChhLHtkYXRhOnR9KTtlLmRpY3Quc2V0KCJTTWFzayIsYSl9Y29uc3Qgcj1hLmltYWdlUmVmPW4uZ2V0TmV3VGVtcG9yYXJ5UmVmKCk7aS5wdXQocix7ZGF0YTplfSk7YS5pbWFnZVN0cmVhbT1hLnNtYXNrU3RyZWFtPW51bGx9by5wdXNoKFN0YW1wQW5ub3RhdGlvbi5jcmVhdGVOZXdBbm5vdGF0aW9uKG4sbCxpLHtpbWFnZTphfSkpO2JyZWFrO2Nhc2UgeTpvLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0Fubm90YXRpb24obixsLGkse30pKX1yZXR1cm57YW5ub3RhdGlvbnM6KGF3YWl0IFByb21pc2UuYWxsKG8pKS5mbGF0KCl9fXN0YXRpYyBhc3luYyBwcmludE5ld0Fubm90YXRpb25zKGUsdCxhLHIsaSl7aWYoIXIpcmV0dXJuIG51bGw7Y29uc3R7b3B0aW9uczpuLHhyZWY6c309dCxvPVtdO2Zvcihjb25zdCBjIG9mIHIpaWYoIWMuZGVsZXRlZClzd2l0Y2goYy5hbm5vdGF0aW9uVHlwZSl7Y2FzZSBnOm8ucHVzaChGcmVlVGV4dEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUscyxjLHtldmFsdWF0b3I6dCx0YXNrOmEsZXZhbHVhdG9yT3B0aW9uczpufSkpO2JyZWFrO2Nhc2UgcDpjLnF1YWRQb2ludHM/by5wdXNoKEhpZ2hsaWdodEFubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUscyxjLHtldmFsdWF0b3JPcHRpb25zOm59KSk6by5wdXNoKElua0Fubm90YXRpb24uY3JlYXRlTmV3UHJpbnRBbm5vdGF0aW9uKGUscyxjLHtldmFsdWF0b3JPcHRpb25zOm59KSk7YnJlYWs7Y2FzZSBiOm8ucHVzaChJbmtBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLHMsYyx7ZXZhbHVhdG9yT3B0aW9uczpufSkpO2JyZWFrO2Nhc2UgbTpjb25zdCByPW4uaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ/YXdhaXQoaT8uZ2V0KGMuYml0bWFwSWQpKTpudWxsO2lmKHI/LmltYWdlU3RyZWFtKXtjb25zdHtpbWFnZVN0cmVhbTplLHNtYXNrU3RyZWFtOnR9PXI7dCYmZS5kaWN0LnNldCgiU01hc2siLHQpO3IuaW1hZ2VSZWY9bmV3IEpwZWdTdHJlYW0oZSxlLmxlbmd0aCk7ci5pbWFnZVN0cmVhbT1yLnNtYXNrU3RyZWFtPW51bGx9by5wdXNoKFN0YW1wQW5ub3RhdGlvbi5jcmVhdGVOZXdQcmludEFubm90YXRpb24oZSxzLGMse2ltYWdlOnIsZXZhbHVhdG9yT3B0aW9uczpufSkpO2JyZWFrO2Nhc2UgeTpvLnB1c2goU3RhbXBBbm5vdGF0aW9uLmNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLHMsYyx7ZXZhbHVhdG9yT3B0aW9uczpufSkpfXJldHVybiBQcm9taXNlLmFsbChvKX19ZnVuY3Rpb24gZ2V0UmdiQ29sb3IoZSx0PW5ldyBVaW50OENsYW1wZWRBcnJheSgzKSl7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHQ7Y29uc3QgYT10fHxuZXcgVWludDhDbGFtcGVkQXJyYXkoMyk7c3dpdGNoKGUubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG51bGw7Y2FzZSAxOkNvbG9yU3BhY2VVdGlscy5ncmF5LmdldFJnYkl0ZW0oZSwwLGEsMCk7cmV0dXJuIGE7Y2FzZSAzOkNvbG9yU3BhY2VVdGlscy5yZ2IuZ2V0UmdiSXRlbShlLDAsYSwwKTtyZXR1cm4gYTtjYXNlIDQ6Q29sb3JTcGFjZVV0aWxzLmNteWsuZ2V0UmdiSXRlbShlLDAsYSwwKTtyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB0fX1mdW5jdGlvbiBnZXRQZGZDb2xvckFycmF5KGUsdD1udWxsKXtyZXR1cm4gZSYmQXJyYXkuZnJvbShlLGU9PmUvMjU1KXx8dH1mdW5jdGlvbiBnZXRRdWFkUG9pbnRzKGUsdCl7Y29uc3QgYT1lLmdldEFycmF5KCJRdWFkUG9pbnRzIik7aWYoIWlzTnVtYmVyQXJyYXkoYSxudWxsKXx8MD09PWEubGVuZ3RofHxhLmxlbmd0aCU4PjApcmV0dXJuIG51bGw7Y29uc3Qgcj1uZXcgRmxvYXQzMkFycmF5KGEubGVuZ3RoKTtmb3IobGV0IGU9MCxpPWEubGVuZ3RoO2U8aTtlKz04KXtjb25zdFtpLG4scyxvLGMsbCxoLHVdPWEuc2xpY2UoZSxlKzgpLGQ9TWF0aC5taW4oaSxzLGMsaCksZj1NYXRoLm1heChpLHMsYyxoKSxnPU1hdGgubWluKG4sbyxsLHUpLHA9TWF0aC5tYXgobixvLGwsdSk7aWYobnVsbCE9PXQmJihkPHRbMF18fGY+dFsyXXx8Zzx0WzFdfHxwPnRbM10pKXJldHVybiBudWxsO3Iuc2V0KFtkLHAsZixwLGQsZyxmLGddLGUpfXJldHVybiByfWZ1bmN0aW9uIGdldFRyYW5zZm9ybU1hdHJpeChlLHQsYSl7Y29uc3Qgcj1uZXcgRmxvYXQzMkFycmF5KFsxLzAsMS8wLC0xLzAsLTEvMF0pO1V0aWwuYXhpYWxBbGlnbmVkQm91bmRpbmdCb3godCxhLHIpO2NvbnN0W2ksbixzLG9dPXI7aWYoaT09PXN8fG49PT1vKXJldHVyblsxLDAsMCwxLGVbMF0sZVsxXV07Y29uc3QgYz0oZVsyXS1lWzBdKS8ocy1pKSxsPShlWzNdLWVbMV0pLyhvLW4pO3JldHVybltjLDAsMCxsLGVbMF0taSpjLGVbMV0tbipsXX1jbGFzcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe2NvbnN0e2RpY3Q6dCx4cmVmOmEsYW5ub3RhdGlvbkdsb2JhbHM6cixyZWY6aSxvcnBoYW5GaWVsZHM6bn09ZSxzPW4/LmdldChpKTtzJiZ0LnNldCgiUGFyZW50IixzKTt0aGlzLnNldFRpdGxlKHQuZ2V0KCJUIikpO3RoaXMuc2V0Q29udGVudHModC5nZXQoIkNvbnRlbnRzIikpO3RoaXMuc2V0TW9kaWZpY2F0aW9uRGF0ZSh0LmdldCgiTSIpKTt0aGlzLnNldEZsYWdzKHQuZ2V0KCJGIikpO3RoaXMuc2V0UmVjdGFuZ2xlKHQuZ2V0QXJyYXkoIlJlY3QiKSk7dGhpcy5zZXRDb2xvcih0LmdldEFycmF5KCJDIikpO3RoaXMuc2V0Qm9yZGVyU3R5bGUodCk7dGhpcy5zZXRBcHBlYXJhbmNlKHQpO3RoaXMuc2V0T3B0aW9uYWxDb250ZW50KHQpO2NvbnN0IG89dC5nZXQoIk1LIik7dGhpcy5zZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQ29sb3JzKG8pO3RoaXMuc2V0Um90YXRpb24obyx0KTt0aGlzLnJlZj1lLnJlZiBpbnN0YW5jZW9mIFJlZj9lLnJlZjpudWxsO3RoaXMuX3N0cmVhbXM9W107dGhpcy5hcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy5hcHBlYXJhbmNlKTtjb25zdCBjPSEhKHRoaXMuZmxhZ3MmaiksbD0hISh0aGlzLmZsYWdzJlgpO3RoaXMuZGF0YT17YW5ub3RhdGlvbkZsYWdzOnRoaXMuZmxhZ3MsYm9yZGVyU3R5bGU6dGhpcy5ib3JkZXJTdHlsZSxjb2xvcjp0aGlzLmNvbG9yLGJhY2tncm91bmRDb2xvcjp0aGlzLmJhY2tncm91bmRDb2xvcixib3JkZXJDb2xvcjp0aGlzLmJvcmRlckNvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sY29udGVudHNPYmo6dGhpcy5fY29udGVudHMsaGFzQXBwZWFyYW5jZTohIXRoaXMuYXBwZWFyYW5jZSxpZDplLmlkLG1vZGlmaWNhdGlvbkRhdGU6dGhpcy5tb2RpZmljYXRpb25EYXRlLHJlY3Q6dGhpcy5yZWN0YW5nbGUsc3VidHlwZTplLnN1YnR5cGUsaGFzT3duQ2FudmFzOiExLG5vUm90YXRlOiEhKHRoaXMuZmxhZ3MmXyksbm9IVE1MOmMmJmwsaXNFZGl0YWJsZTohMSxzdHJ1Y3RQYXJlbnQ6LTF9O2lmKHIuc3RydWN0VHJlZVJvb3Qpe2xldCBhPXQuZ2V0KCJTdHJ1Y3RQYXJlbnQiKTt0aGlzLmRhdGEuc3RydWN0UGFyZW50PWE9TnVtYmVyLmlzSW50ZWdlcihhKSYmYT49MD9hOi0xO3Iuc3RydWN0VHJlZVJvb3QuYWRkQW5ub3RhdGlvbklkVG9QYWdlKGUucGFnZVJlZixhKX1pZihlLmNvbGxlY3RGaWVsZHMpe2NvbnN0IHI9dC5nZXQoIktpZHMiKTtpZihBcnJheS5pc0FycmF
1015KHIpKXtjb25zdCBlPVtdO2Zvcihjb25zdCB0IG9mIHIpdCBpbnN0YW5jZW9mIFJlZiYmZS5wdXNoKHQudG9TdHJpbmcoKSk7MCE9PWUubGVuZ3RoJiYodGhpcy5kYXRhLmtpZElkcz1lKX10aGlzLmRhdGEuYWN0aW9ucz1jb2xsZWN0QWN0aW9ucyhhLHQsaWUpO3RoaXMuZGF0YS5maWVsZE5hbWU9dGhpcy5fY29uc3RydWN0RmllbGROYW1lKHQpO3RoaXMuZGF0YS5wYWdlSW5kZXg9ZS5wYWdlSW5kZXh9Y29uc3QgaD10LmdldCgiSVQiKTtoIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5pdD1oLm5hbWUpO3RoaXMuX2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkPWUuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZDt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PW51bGw7dGhpcy5fbmVlZEFwcGVhcmFuY2VzPSExfV9oYXNGbGFnKGUsdCl7cmV0dXJuISEoZSZ0KX1fYnVpbGRGbGFncyhlLHQpe2xldHtmbGFnczphfT10aGlzO2lmKHZvaWQgMD09PWUpe2lmKHZvaWQgMD09PXQpcmV0dXJuO3JldHVybiB0P2Emfkw6YSZ+RXxMfWlmKGUpe2F8PUw7cmV0dXJuIHQ/YSZ+VXxFOmEmfkV8VX1hJj1+KEV8VSk7cmV0dXJuIHQ/YSZ+TDphfEx9X2lzVmlld2FibGUoZSl7cmV0dXJuIXRoaXMuX2hhc0ZsYWcoZSxOKSYmIXRoaXMuX2hhc0ZsYWcoZSxVKX1faXNQcmludGFibGUoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcoZSxMKSYmIXRoaXMuX2hhc0ZsYWcoZSxFKSYmIXRoaXMuX2hhc0ZsYWcoZSxOKX1tdXN0QmVWaWV3ZWQoZSx0KXtjb25zdCBhPWU/LmdldCh0aGlzLmRhdGEuaWQpPy5ub1ZpZXc7cmV0dXJuIHZvaWQgMCE9PWE/IWE6dGhpcy52aWV3YWJsZSYmIXRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxFKX1tdXN0QmVQcmludGVkKGUpe2NvbnN0IHQ9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/Lm5vUHJpbnQ7cmV0dXJuIHZvaWQgMCE9PXQ/IXQ6dGhpcy5wcmludGFibGV9bXVzdEJlVmlld2VkV2hlbkVkaXRpbmcoZSx0PW51bGwpe3JldHVybiBlPyF0aGlzLmRhdGEuaXNFZGl0YWJsZTohdD8uaGFzKHRoaXMuZGF0YS5pZCl9Z2V0IHZpZXdhYmxlKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmKDA9PT10aGlzLmZsYWdzfHx0aGlzLl9pc1ZpZXdhYmxlKHRoaXMuZmxhZ3MpKX1nZXQgcHJpbnRhYmxlKCl7cmV0dXJuIG51bGwhPT10aGlzLmRhdGEucXVhZFBvaW50cyYmKDAhPT10aGlzLmZsYWdzJiZ0aGlzLl9pc1ByaW50YWJsZSh0aGlzLmZsYWdzKSl9X3BhcnNlU3RyaW5nSGVscGVyKGUpe2NvbnN0IHQ9InN0cmluZyI9PXR5cGVvZiBlP3N0cmluZ1RvUERGU3RyaW5nKGUpOiIiO3JldHVybntzdHI6dCxkaXI6dCYmInJ0bCI9PT1iaWRpKHQpLmRpcj8icnRsIjoibHRyIn19c2V0RGVmYXVsdEFwcGVhcmFuY2UoZSl7Y29uc3R7ZGljdDp0LGFubm90YXRpb25HbG9iYWxzOmF9PWUscj1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJEQSJ9KXx8YS5hY3JvRm9ybS5nZXQoIkRBIik7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9InN0cmluZyI9PXR5cGVvZiByP3I6IiI7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1wYXJzZURlZmF1bHRBcHBlYXJhbmNlKHRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlKX1zZXRUaXRsZShlKXt0aGlzLl90aXRsZT10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRDb250ZW50cyhlKXt0aGlzLl9jb250ZW50cz10aGlzLl9wYXJzZVN0cmluZ0hlbHBlcihlKX1zZXRNb2RpZmljYXRpb25EYXRlKGUpe3RoaXMubW9kaWZpY2F0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfXNldEZsYWdzKGUpe3RoaXMuZmxhZ3M9TnVtYmVyLmlzSW50ZWdlcihlKSYmZT4wP2U6MDt0aGlzLmZsYWdzJk4mJiJBbm5vdGF0aW9uIiE9PXRoaXMuY29uc3RydWN0b3IubmFtZSYmKHRoaXMuZmxhZ3NePU4pfWhhc0ZsYWcoZSl7cmV0dXJuIHRoaXMuX2hhc0ZsYWcodGhpcy5mbGFncyxlKX1zZXRSZWN0YW5nbGUoZSl7dGhpcy5yZWN0YW5nbGU9bG9va3VwTm9ybWFsUmVjdChlLFswLDAsMCwwXSl9c2V0Q29sb3IoZSl7dGhpcy5jb2xvcj1nZXRSZ2JDb2xvcihlKX1zZXRMaW5lRW5kaW5ncyhlKXt0aGlzLmxpbmVFbmRpbmdzPVsiTm9uZSIsIk5vbmUiXTtpZihBcnJheS5pc0FycmF5KGUpJiYyPT09ZS5sZW5ndGgpZm9yKGxldCB0PTA7dDwyO3QrKyl7Y29uc3QgYT1lW3RdO2lmKGEgaW5zdGFuY2VvZiBOYW1lKXN3aXRjaChhLm5hbWUpe2Nhc2UiTm9uZSI6Y29udGludWU7Y2FzZSJTcXVhcmUiOmNhc2UiQ2lyY2xlIjpjYXNlIkRpYW1vbmQiOmNhc2UiT3BlbkFycm93IjpjYXNlIkNsb3NlZEFycm93IjpjYXNlIkJ1dHQiOmNhc2UiUk9wZW5BcnJvdyI6Y2FzZSJSQ2xvc2VkQXJyb3ciOmNhc2UiU2xhc2giOnRoaXMubGluZUVuZGluZ3NbdF09YS5uYW1lO2NvbnRpbnVlfXdhcm4oYElnbm9yaW5nIGludmFsaWQgbGluZUVuZGluZzogJHthfWApfX1zZXRSb3RhdGlvbihlLHQpe3RoaXMucm90YXRpb249MDtsZXQgYT1lIGluc3RhbmNlb2YgRGljdD9lLmdldCgiUiIpfHwwOnQuZ2V0KCJSb3RhdGUiKXx8MDtpZihOdW1iZXIuaXNJbnRlZ2VyKGEpJiYwIT09YSl7YSU9MzYwO2E8MCYmKGErPTM2MCk7YSU5MD09MCYmKHRoaXMucm90YXRpb249YSl9fXNldEJvcmRlckFuZEJhY2tncm91bmRDb2xvcnMoZSl7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe3RoaXMuYm9yZGVyQ29sb3I9Z2V0UmdiQ29sb3IoZS5nZXRBcnJheSgiQkMiKSxudWxsKTt0aGlzLmJhY2tncm91bmRDb2xvcj1nZXRSZ2JDb2xvcihlLmdldEFycmF5KCJCRyIpLG51bGwpfWVsc2UgdGhpcy5ib3JkZXJDb2xvcj10aGlzLmJhY2tncm91bmRDb2xvcj1udWxsfXNldEJvcmRlclN0eWxlKGUpe3RoaXMuYm9yZGVyU3R5bGU9bmV3IEFubm90YXRpb25Cb3JkZXJTdHlsZTtpZihlIGluc3RhbmNlb2YgRGljdClpZihlLmhhcygiQlMiKSl7Y29uc3QgdD1lLmdldCgiQlMiKTtpZih0IGluc3RhbmNlb2YgRGljdCl7Y29uc3QgZT10LmdldCgiVHlwZSIpO2lmKCFlfHxpc05hbWUoZSwiQm9yZGVyIikpe3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodC5nZXQoIlciKSx0aGlzLnJlY3RhbmdsZSk7dGhpcy5ib3JkZXJTdHlsZS5zZXRTdHlsZSh0LmdldCgiUyIpKTt0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0LmdldEFycmF5KCJEIikpfX19ZWxzZSBpZihlLmhhcygiQm9yZGVyIikpe2NvbnN0IHQ9ZS5nZXRBcnJheSgiQm9yZGVyIik7aWYoQXJyYXkuaXNBcnJheSh0KSYmdC5sZW5ndGg+PTMpe3RoaXMuYm9yZGVyU3R5bGUuc2V0SG9yaXpvbn
101RhbENvcm5lclJhZGl1cyh0WzBdKTt0aGlzLmJvcmRlclN0eWxlLnNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKHRbMV0pO3RoaXMuYm9yZGVyU3R5bGUuc2V0V2lkdGgodFsyXSx0aGlzLnJlY3RhbmdsZSk7ND09PXQubGVuZ3RoJiZ0aGlzLmJvcmRlclN0eWxlLnNldERhc2hBcnJheSh0WzNdLCEwKX19ZWxzZSB0aGlzLmJvcmRlclN0eWxlLnNldFdpZHRoKDApfXNldEFwcGVhcmFuY2UoZSl7dGhpcy5hcHBlYXJhbmNlPW51bGw7Y29uc3QgdD1lLmdldCgiQVAiKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgYT10LmdldCgiTiIpO2lmKGEgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXt0aGlzLmFwcGVhcmFuY2U9YTtyZXR1cm59aWYoIShhIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2NvbnN0IHI9ZS5nZXQoIkFTIik7aWYoIShyIGluc3RhbmNlb2YgTmFtZSYmYS5oYXMoci5uYW1lKSkpcmV0dXJuO2NvbnN0IGk9YS5nZXQoci5uYW1lKTtpIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmKHRoaXMuYXBwZWFyYW5jZT1pKX1zZXRPcHRpb25hbENvbnRlbnQoZSl7dGhpcy5vYz1udWxsO2NvbnN0IHQ9ZS5nZXQoIk9DIik7dCBpbnN0YW5jZW9mIE5hbWU/d2Fybigic2V0T3B0aW9uYWxDb250ZW50OiBTdXBwb3J0IGZvciAvTmFtZS1lbnRyeSBpcyBub3QgaW1wbGVtZW50ZWQuIik6dCBpbnN0YW5jZW9mIERpY3QmJih0aGlzLm9jPXQpfWFzeW5jIGxvYWRSZXNvdXJjZXMoZSx0KXtjb25zdCBhPWF3YWl0IHQuZGljdC5nZXRBc3luYygiUmVzb3VyY2VzIik7YSYmYXdhaXQgT2JqZWN0TG9hZGVyLmxvYWQoYSxlLGEueHJlZik7cmV0dXJuIGF9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLHIpe2NvbnN0e2hhc093bkNhbnZhczppLGlkOm4scmVjdDpvfT10aGlzLmRhdGE7bGV0IGM9dGhpcy5hcHBlYXJhbmNlO2NvbnN0IGw9ISEoaSYmYSZzKTtpZihsJiYoMD09PXRoaXMud2lkdGh8fDA9PT10aGlzLmhlaWdodCkpe3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITE7cmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19aWYoIWMpe2lmKCFsKXJldHVybntvcExpc3Q6bmV3IE9wZXJhdG9yTGlzdCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6ITF9O2M9bmV3IFN0cmluZ1N0cmVhbSgiIik7Yy5kaWN0PW5ldyBEaWN0fWNvbnN0IGg9Yy5kaWN0LHU9YXdhaXQgdGhpcy5sb2FkUmVzb3VyY2VzKGdhLGMpLGQ9bG9va3VwUmVjdChoLmdldEFycmF5KCJCQm94IiksWzAsMCwxLDFdKSxmPWxvb2t1cE1hdHJpeChoLmdldEFycmF5KCJNYXRyaXgiKSxmYSksZz1nZXRUcmFuc2Zvcm1NYXRyaXgobyxkLGYpLHA9bmV3IE9wZXJhdG9yTGlzdDtsZXQgbTt0aGlzLm9jJiYobT1hd2FpdCBlLnBhcnNlTWFya2VkQ29udGVudFByb3BzKHRoaXMub2MsbnVsbCkpO3ZvaWQgMCE9PW0mJnAuYWRkT3AoQ3QsWyJPQyIsbV0pO3AuYWRkT3AoUnQsW24sbyxnLGYsbF0pO2F3YWl0IGUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06Yyx0YXNrOnQscmVzb3VyY2VzOnUsb3BlcmF0b3JMaXN0OnAsZmFsbGJhY2tGb250RGljdDp0aGlzLl9mYWxsYmFja0ZvbnREaWN0fSk7cC5hZGRPcChCdCxbXSk7dm9pZCAwIT09bSYmcC5hZGRPcCh2dCxbXSk7dGhpcy5yZXNldCgpO3JldHVybntvcExpc3Q6cCxzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6bH19YXN5bmMgc2F2ZShlLHQsYSxyKXtyZXR1cm4gbnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiExfWdldCBoYXNUZXh0Q29udGVudCgpe3JldHVybiExfWFzeW5jIGV4dHJhY3RUZXh0Q29udGVudChlLHQsYSl7aWYoIXRoaXMuYXBwZWFyYW5jZSlyZXR1cm47Y29uc3Qgcj1hd2FpdCB0aGlzLmxvYWRSZXNvdXJjZXMocGEsdGhpcy5hcHBlYXJhbmNlKSxpPVtdLG49W107bGV0IHM9bnVsbDtjb25zdCBvPXtkZXNpcmVkU2l6ZTpNYXRoLkluZmluaXR5LHJlYWR5OiEwLGVucXVldWUoZSx0KXtmb3IoY29uc3QgdCBvZiBlLml0ZW1zKWlmKHZvaWQgMCE9PXQuc3RyKXtzfHw9dC50cmFuc2Zvcm0uc2xpY2UoLTIpO24ucHVzaCh0LnN0cik7aWYodC5oYXNFT0wpe2kucHVzaChuLmpvaW4oIiIpLnRyaW1FbmQoKSk7bi5sZW5ndGg9MH19fX07YXdhaXQgZS5nZXRUZXh0Q29udGVudCh7c3RyZWFtOnRoaXMuYXBwZWFyYW5jZSx0YXNrOnQscmVzb3VyY2VzOnIsaW5jbHVkZU1hcmtlZENvbnRlbnQ6ITAsa2VlcFdoaXRlU3BhY2U6ITAsc2luazpvLHZpZXdCb3g6YX0pO3RoaXMucmVzZXQoKTtuLmxlbmd0aCYmaS5wdXNoKG4uam9pbigiIikudHJpbUVuZCgpKTtpZihpLmxlbmd0aD4xfHxpWzBdKXtjb25zdCBlPXRoaXMuYXBwZWFyYW5jZS5kaWN0LHQ9bG9va3VwUmVjdChlLmdldEFycmF5KCJCQm94IiksbnVsbCksYT1sb29rdXBNYXRyaXgoZS5nZXRBcnJheSgiTWF0cml4IiksbnVsbCk7dGhpcy5kYXRhLnRleHRQb3NpdGlvbj10aGlzLl90cmFuc2Zvcm1Qb2ludChzLHQsYSk7dGhpcy5kYXRhLnRleHRDb250ZW50PWl9fV90cmFuc2Zvcm1Qb2ludChlLHQsYSl7Y29uc3R7cmVjdDpyfT10aGlzLmRhdGE7dHx8PVswLDAsMSwxXTthfHw9WzEsMCwwLDEsMCwwXTtjb25zdCBpPWdldFRyYW5zZm9ybU1hdHJpeChyLHQsYSk7aVs0XS09clswXTtpWzVdLT1yWzFdO2NvbnN0IG49ZS5zbGljZSgpO1V0aWwuYXBwbHlUcmFuc2Zvcm0obixpKTtVdGlsLmFwcGx5VHJhbnNmb3JtKG4sYSk7cmV0dXJuIG59Z2V0RmllbGRPYmplY3QoKXtyZXR1cm4gdGhpcy5kYXRhLmtpZElkcz97aWQ6dGhpcy5kYXRhLmlkLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcix0eXBlOiIiLGtpZElkczp0aGlzLmRhdGEua2lkSWRzLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxyb3RhdGlvbjp0aGlzLnJvdGF0aW9ufTpudWxsfXJlc2V0KCl7Zm9yKGNvbnN0IGUgb2YgdGhpcy5fc3RyZWFtcyllLnJlc2V0KCl9X2NvbnN0cnVjdEZpZWxkTmFtZShlKXtpZighZS5oYXMoIlQiKSYmIWUuaGFzKCJQYXJlbnQiKSl7d2FybigiVW5rbm93biBmaWVsZCBuYW1lLCBmYWxsaW5nIGJhY2sgdG8gZW1wdHkgZmllbGQgbmFtZS4iKTtyZXR1cm4iIn1pZighZS5oYXMoIlBhcmVudCIpKXJldHVybi
101BzdHJpbmdUb1BERlN0cmluZyhlLmdldCgiVCIpKTtjb25zdCB0PVtdO2UuaGFzKCJUIikmJnQudW5zaGlmdChzdHJpbmdUb1BERlN0cmluZyhlLmdldCgiVCIpKSk7bGV0IGE9ZTtjb25zdCByPW5ldyBSZWZTZXQ7ZS5vYmpJZCYmci5wdXQoZS5vYmpJZCk7Zm9yKDthLmhhcygiUGFyZW50Iik7KXthPWEuZ2V0KCJQYXJlbnQiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KXx8YS5vYmpJZCYmci5oYXMoYS5vYmpJZCkpYnJlYWs7YS5vYmpJZCYmci5wdXQoYS5vYmpJZCk7YS5oYXMoIlQiKSYmdC51bnNoaWZ0KHN0cmluZ1RvUERGU3RyaW5nKGEuZ2V0KCJUIikpKX1yZXR1cm4gdC5qb2luKCIuIil9Z2V0IHdpZHRoKCl7cmV0dXJuIHRoaXMuZGF0YS5yZWN0WzJdLXRoaXMuZGF0YS5yZWN0WzBdfWdldCBoZWlnaHQoKXtyZXR1cm4gdGhpcy5kYXRhLnJlY3RbM10tdGhpcy5kYXRhLnJlY3RbMV19fWNsYXNzIEFubm90YXRpb25Cb3JkZXJTdHlsZXtjb25zdHJ1Y3Rvcigpe3RoaXMud2lkdGg9MTt0aGlzLnJhd1dpZHRoPTE7dGhpcy5zdHlsZT1RO3RoaXMuZGFzaEFycmF5PVszXTt0aGlzLmhvcml6b250YWxDb3JuZXJSYWRpdXM9MDt0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPTB9c2V0V2lkdGgoZSx0PVswLDAsMCwwXSl7aWYoZSBpbnN0YW5jZW9mIE5hbWUpdGhpcy53aWR0aD0wO2Vsc2UgaWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZihlPjApe3RoaXMucmF3V2lkdGg9ZTtjb25zdCBhPSh0WzJdLXRbMF0pLzIscj0odFszXS10WzFdKS8yO2lmKGE+MCYmcj4wJiYoZT5hfHxlPnIpKXt3YXJuKGBBbm5vdGF0aW9uQm9yZGVyU3R5bGUuc2V0V2lkdGggLSBpZ25vcmluZyB3aWR0aDogJHtlfWApO2U9MX19dGhpcy53aWR0aD1lfX1zZXRTdHlsZShlKXtpZihlIGluc3RhbmNlb2YgTmFtZSlzd2l0Y2goZS5uYW1lKXtjYXNlIlMiOnRoaXMuc3R5bGU9UTticmVhaztjYXNlIkQiOnRoaXMuc3R5bGU9ZWU7YnJlYWs7Y2FzZSJCIjp0aGlzLnN0eWxlPXRlO2JyZWFrO2Nhc2UiSSI6dGhpcy5zdHlsZT1hZTticmVhaztjYXNlIlUiOnRoaXMuc3R5bGU9cmV9fXNldERhc2hBcnJheShlLHQ9ITEpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2xldCBhPSEwLHI9ITA7Zm9yKGNvbnN0IHQgb2YgZSl7aWYoISgrdD49MCkpe2E9ITE7YnJlYWt9dD4wJiYocj0hMSl9aWYoMD09PWUubGVuZ3RofHxhJiYhcil7dGhpcy5kYXNoQXJyYXk9ZTt0JiZ0aGlzLnNldFN0eWxlKE5hbWUuZ2V0KCJEIikpfWVsc2UgdGhpcy53aWR0aD0wfWVsc2UgZSYmKHRoaXMud2lkdGg9MCl9c2V0SG9yaXpvbn
101RhbENvcm5lclJhZGl1cyhlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYodGhpcy5ob3Jpem9udGFsQ29ybmVyUmFkaXVzPWUpfXNldFZlcnRpY2FsQ29ybmVyUmFkaXVzKGUpe051bWJlci5pc0ludGVnZXIoZSkmJih0aGlzLnZlcnRpY2FsQ29ybmVyUmFkaXVzPWUpfX1jbGFzcyBNYXJrdXBBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnR9PWU7aWYodC5oYXMoIklSVCIpKXtjb25zdCBlPXQuZ2V0UmF3KCJJUlQiKTt0aGlzLmRhdGEuaW5SZXBseVRvPWUgaW5zdGFuY2VvZiBSZWY/ZS50b1N0cmluZygpOm51bGw7Y29uc3QgYT10LmdldCgiUlQiKTt0aGlzLmRhdGEucmVwbHlUeXBlPWEgaW5zdGFuY2VvZiBOYW1lP2EubmFtZTpSfWxldCBhPW51bGw7aWYodGhpcy5kYXRhLnJlcGx5VHlwZT09PU0pe2NvbnN0IGU9dC5nZXQoIklSVCIpO3RoaXMuc2V0VGl0bGUoZS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoZS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50cztpZihlLmhhcygiQ3JlYXRpb25EYXRlIikpe3RoaXMuc2V0Q3JlYXRpb25EYXRlKGUuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5jcmVhdGlvbkRhdGU9bnVsbDtpZihlLmhhcygiTSIpKXt0aGlzLnNldE1vZGlmaWNhdGlvbkRhdGUoZS5nZXQoIk0iKSk7dGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9dGhpcy5tb2RpZmljYXRpb25EYXRlfWVsc2UgdGhpcy5kYXRhLm1vZGlmaWNhdGlvbkRhdGU9bnVsbDthPWUuZ2V0UmF3KCJQb3B1cCIpO2lmKGUuaGFzKCJDIikpe3RoaXMuc2V0Q29sb3IoZS5nZXRBcnJheSgiQyIpKTt0aGlzLmRhdGEuY29sb3I9dGhpcy5jb2xvcn1lbHNlIHRoaXMuZGF0YS5jb2xvcj1udWxsfWVsc2V7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q3JlYXRpb25EYXRlKHQuZ2V0KCJDcmVhdGlvbkRhdGUiKSk7dGhpcy5kYXRhLmNyZWF0aW9uRGF0ZT10aGlzLmNyZWF0aW9uRGF0ZTthPXQuZ2V0UmF3KCJQb3B1cCIpO3QuaGFzKCJDIil8fCh0aGlzLmRhdGEuY29sb3I9bnVsbCl9dGhpcy5kYXRhLnBvcHVwUmVmPWEgaW5zdGFuY2VvZiBSZWY/YS50b1N0cmluZygpOm51bGw7dC5oYXMoIlJDIikmJih0aGlzLmRhdGEucmljaFRleHQ9WEZBRmFjdG9yeS5nZXRSaWNoVGV4dEFzSHRtbCh0LmdldCgiUkMiKSkpfXNldENyZWF0aW9uRGF0ZShlKXt0aGlzLmNyZWF0aW9uRGF0ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpudWxsfV9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjplLGV4dHJhOnQsc3Ryb2tlQ29sb3I6YSxmaWxsQ29sb3I6cixibGVuZE1vZGU6aSxzdHJva2VBbHBoYTpuLGZpbGxBbHBoYTpzLHBvaW50c0NhbGxiYWNrOm99KXtjb25zdCBjPXRoaXMuZGF0YS5yZWN0PVsxLzAsMS8wLC0xLzAsLTEvMF0sbD1bInEiXTt0JiZsLnB1c2godCk7YSYmbC5wdXNoKGAke2FbMF19ICR7YVsxXX0gJHthWzJdfSBSR2ApO3ImJmwucHVzaChgJHtyWzBdfSAke3JbMV19ICR7clsyXX0gcmdgKTtjb25zdCBoPXRoaXMuZGF0YS5xdWFkUG9pbnRzfHxGbG9hdDMyQXJyYXkuZnJvbShbdGhpcy5yZWN0YW5nbGVbMF0sdGhpcy5yZWN0YW5nbGVbM10sdGhpcy5yZWN0YW5nbGVbMl0sdGhpcy5yZWN0YW5nbGVbM10sdGhpcy5yZWN0YW5nbGVbMF0sdGhpcy5yZWN0YW5nbGVbMV0sdGhpcy5yZWN0YW5nbGVbMl0sdGhpcy5yZWN0YW5nbGVbMV1dKTtmb3IobGV0IGU9MCx0PWgubGVuZ3RoO2U8dDtlKz04KXtjb25zdCB0PW8obCxoLnN1YmFycmF5KGUsZSs4KSk7VXRpbC5yZWN0Qm91bmRpbmdCb3goLi4udCxjKX1sLnB1c2goIlEiKTtjb25zdCB1PW5ldyBEaWN0KGUpLGQ9bmV3IERpY3QoZSk7ZC5zZXRJZk5hbWUoIlN1YnR5cGUiLCJGb3JtIik7Y29uc3QgZj1uZXcgU3RyaW5nU3RyZWFtKGwuam9pbigiICIpKTtmLmRpY3Q9ZDt1LnNldCgiRm0wIixmKTtjb25zdCBnPW5ldyBEaWN0KGUpO2kmJmcuc2V0SWZOYW1lKCJCTSIsaSk7Zy5zZXRJZk51bWJlcigiQ0EiLG4pO2cuc2V0SWZOdW1iZXIoImNhIixzKTtjb25zdCBwPW5ldyBEaWN0KGUpO3Auc2V0KCJHUzAiLGcpO2NvbnN0IG09bmV3IERpY3QoZSk7bS5zZXQoIkV4dEdTdGF0ZSIscCk7bS5zZXQoIlhPYmplY3QiLHUpO2NvbnN0IGI9bmV3IERpY3QoZSk7Yi5zZXQoIlJlc291cmNlcyIsbSk7Yi5zZXQoIkJCb3giLGMpO3RoaXMuYXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKCIvR1MwIGdzIC9GbTAgRG8iKTt0aGlzLmFwcGVhcmFuY2UuZGljdD1iO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmFwcGVhcmFuY2UsZil9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0Fubm90YXRpb24oZSx0LGEscil7Y29uc3QgaT10LnJlZnx8PWUuZ2V0TmV3VGVtcG9yYXJ5UmVmKCksbj1hd2FpdCB0aGlzLmNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0odCxlLHIpO2xldCBzO2lmKG4pe2NvbnN0IHI9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtzPXRoaXMuY3JlYXRlTmV3RGljdCh0LGUse2FwUmVmOnJ9KTthLnB1dChyLHtkYXRhOm59KX1lbHNlIHM9dGhpcy5jcmVhdGVOZXdEaWN0KHQsZSx7fSk7TnVtYmVyLmlzSW50ZWdlcih0LnBhcmVudFRyZWVJZCkmJnMuc2V0KCJTdHJ1Y3RQYXJlbnQiLHQucGFyZW50VHJlZUlkKTthLnB1dChpLHtkYXRhOnN9KTtjb25zdCBvPXtyZWY6aX0se3BvcHVwOmN9PXQ7aWYoYyl7aWYoYy5kZWxldGVkKXtzLmRlbGV0ZSgiUG9wdXAiKTtzLmRlbGV0ZSgiQ29udGVudHMiKTtzLmRlbGV0ZSgiUkMiKTtyZXR1cm4gb31jb25zdCB0PWMucmVmfHw9ZS5nZXROZXdUZW1wb3JhcnlSZWYoKTtjLnBhcmVudD1pO2NvbnN0IHI9UG9wdXBBbm5vdGF0aW9uLmNyZWF0ZU5ld0RpY3QoYyxlKTthLnB1dCh0LHtkYXRhOnJ9KTtzLnNldElmRGVmaW5lZCgiQ29udGVudHMiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYy5jb250ZW50cykpO3Muc2V0KCJQb3B1cCIsdCk7cmV0dXJuW28se3JlZjp0fV19cmV0dXJuIG99c3RhdGljIGFzeW5jIGNyZWF0ZU5ld1ByaW50QW5ub3RhdGlvbihlLHQsYSxyKXtjb25zdCBpPWF3YWl0IHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShhLHQsciksbj10aGlzLmNyZWF0ZU5ld0RpY3QoYSx0LGk/e2FwOml9Ont9KSxzPW5ldyB0aGlzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcih7ZGljdDpuLHhyZWY6dCxhbm5vdGF0aW9uR2xvYmFsczplLGV2YWx1YXRvck9wdGlvbnM6ci5ldmFsdWF0b3JPcHRpb25zfSk7YS5yZWYmJihzLnJlZj1zLnJlZlRvUmVwbGFjZT1hLnJlZik7cmV0dXJuIHN9fWNsYXNzIFdpZGdldEFubm90YXRpb24gZXh0ZW5kcyBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmEsYW5ub3RhdGlvbkdsb2JhbHM6cn09ZSxpPXRoaXMuZGF0YTt0aGlzLl9uZWVkQXBwZWFyYW5jZXM9ZS5uZWVkQXBwZWFyYW5jZXM7aS5hbm5vdGF0aW9uVHlwZT1ELldJREdFVDt2b2lkIDA9PT1pLmZpZWxkTmFtZSYmKGkuZmllbGROYW1lPXRoaXMuX2NvbnN0cnVjdEZpZWxkTmFtZSh0KSk7dm9pZCAwPT09aS5hY3Rpb25zJiYoaS5hY3Rpb25zPWNvbGxlY3RBY3Rpb25zKGEsdCxpZSkpO2xldCBuPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IlYiLGdldEFycmF5OiEwfSk7aS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShuKTtjb25zdCBzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRWIixnZXRBcnJheTohMH0pO2kuZGVmYXVsdEZpZWxkVmFsdWU9dGhpcy5fZGVjb2RlRm9ybVZhbHVlKHMpO2lmKHZvaWQgMD09PW4mJnIueGZhRGF0YXNldHMpe2NvbnN0IGU9dGhpcy5fdGl0bGUuc3RyO2lmKGUpe3RoaXMuX2hhc1ZhbHVlRnJvbVhGQT0hMDtpLmZpZWxkVmFsdWU9bj1yLn
101hmYURhdGFzZXRzLmdldFZhbHVlKGUpfX12b2lkIDA9PT1uJiZudWxsIT09aS5kZWZhdWx0RmllbGRWYWx1ZSYmKGkuZmllbGRWYWx1ZT1pLmRlZmF1bHRGaWVsZFZhbHVlKTtpLmFsdGVybmF0aXZlVGV4dD1zdHJpbmdUb1BERlN0cmluZyh0LmdldCgiVFUiKXx8IiIpO3RoaXMuc2V0RGVmYXVsdEFwcGVhcmFuY2UoZSk7aS5oYXNBcHBlYXJhbmNlfHw9dGhpcy5fbmVlZEFwcGVhcmFuY2VzJiZ2b2lkIDAhPT1pLmZpZWxkVmFsdWUmJm51bGwhPT1pLmZpZWxkVmFsdWU7Y29uc3Qgbz1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJGVCJ9KTtpLmZpZWxkVHlwZT1vIGluc3RhbmNlb2YgTmFtZT9vLm5hbWU6bnVsbDtjb25zdCBjPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkRSIn0pLGw9ci5hY3JvRm9ybS5nZXQoIkRSIiksaD10aGlzLmFwcGVhcmFuY2U/LmRpY3QuZ2V0KCJSZXNvdXJjZXMiKTt0aGlzLl9maWVsZFJlc291cmNlcz17bG9jYWxSZXNvdXJjZXM6YyxhY3JvRm9ybVJlc291cmNlczpsLGFwcGVhcmFuY2VSZXNvdXJjZXM6aCxtZXJnZWRSZXNvdXJjZXM6RGljdC5tZXJnZSh7eHJlZjphLGRpY3RBcnJheTpbYyxoLGxdLG1lcmdlU3ViRGljdHM6ITB9KX07aS5maWVsZEZsYWdzPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6IkZmIn0pOyghTnVtYmVyLmlzSW50ZWdlcihpLmZpZWxkRmxhZ3MpfHxpLmZpZWxkRmxhZ3M8MCkmJihpLmZpZWxkRmxhZ3M9MCk7aS5wYXNzd29yZD10aGlzLmhhc0ZpZWxkRmxhZyh6KTtpLnJlYWRPbmx5PXRoaXMuaGFzRmllbGRGbGFnKHEpO2kucmVxdWlyZWQ9dGhpcy5oYXNGaWVsZEZsYWcoSCk7aS5oaWRkZW49dGhpcy5faGFzRmxhZyhpLmFubm90YXRpb25GbGFncyxFKXx8dGhpcy5faGFzRmxhZyhpLmFubm90YXRpb25GbGFncyxVKX1fZGVjb2RlRm9ybVZhbHVlKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuZmlsdGVyKGU9PiJzdHJpbmciPT10eXBlb2YgZSkubWFwKGU9PnN0cmluZ1RvUERGU3RyaW5nKGUpKTplIGluc3RhbmNlb2YgTmFtZT9zdHJpbmdUb1BERlN0cmluZyhlLm5hbWUpOiJzdHJpbmciPT10eXBlb2YgZT9zdHJpbmdUb1BERlN0cmluZyhlKTpudWxsfWhhc0ZpZWxkRmxhZyhlKXtyZXR1cm4hISh0aGlzLmRhdGEuZmllbGRGbGFncyZlKX1faXNWaWV3YWJsZShlKXtyZXR1cm4hMH1tdXN0QmVWaWV3ZWQoZSx0KXtyZXR1cm4gdD90aGlzLnZpZXdhYmxlOnN1cGVyLm11c3RCZVZpZXdlZChlLHQpJiYhdGhpcy5faGFzRmxhZyh0aGlzLmZsYWdzLFUpfWdldFJvdGF0aW9uTWF0cml4KGUpe2xldCB0PWU/LmdldCh0aGlzLmRhdGEuaWQpPy5yb3RhdGlvbjt2b2lkIDA9PT10JiYodD10aGlzLnJvdGF0aW9uKTtyZXR1cm4gMD09PXQ/ZmE6Z2V0Um90YXRpb25NYXRyaXgodCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KX1nZXRCb3JkZXJBbmRCYWNrZ3JvdW5kQXBwZWFyYW5jZXMoZSl7bGV0IHQ9ZT8uZ2V0KHRoaXMuZGF0YS5pZCk/LnJvdGF0aW9uO3ZvaWQgMD09PXQmJih0PXRoaXMucm90YXRpb24pO2lmKCF0aGlzLmJhY2tncm91bmRDb2xvciYmIXRoaXMuYm9yZGVyQ29sb3IpcmV0dXJuIiI7Y29uc3QgYT0wPT09dHx8MTgwPT09dD9gMCAwICR7dGhpcy53aWR0aH0gJHt0aGlzLmhlaWdodH0gcmVgOmAwIDAgJHt0aGlzLmhlaWdodH0gJHt0aGlzLndpZHRofSByZWA7bGV0IHI9IiI7dGhpcy5iYWNrZ3JvdW5kQ29sb3ImJihyPWAke2dldFBkZkNvbG9yKHRoaXMuYmFja2dyb3VuZENvbG9yLCEwKX0gJHthfSBmIGApO2lmKHRoaXMuYm9yZGVyQ29sb3Ipe3IrPWAke3RoaXMuYm9yZGVyU3R5bGUud2lkdGh8fDF9IHcgJHtnZXRQZGZDb2xvcih0aGlzLmJvcmRlckNvbG9yLCExKX0gJHthfSBTIGB9cmV0dXJuIHJ9YXN5bmMgZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLHIpe2lmKGEmbCYmISh0aGlzIGluc3RhbmNlb2YgU2lnbmF0dXJlV2lkZ2V0QW5ub3RhdGlvbikmJiF0aGlzLmRhdGEubm9IVE1MJiYhdGhpcy5kYXRhLmhhc093bkNhbnZhcylyZXR1cm57b3BMaXN0Om5ldyBPcGVyYXRvckxpc3Qsc2VwYXJhdGVGb3JtOiEwLHNlcGFyYXRlQ2FudmFzOiExfTtpZighdGhpcy5faGFzVGV4dClyZXR1cm4gc3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLHIpO2NvbnN0IGk9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsYSxyKTtpZih0aGlzLmFwcGVhcmFuY2UmJm51bGw9PT1pKXJldHVybiBzdXBlci5nZXRPcGVyYXRvckxpc3QoZSx0LGEscik7Y29uc3Qgbj1uZXcgT3BlcmF0b3JMaXN0O2lmKCF0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8bnVsbD09PWkpcmV0dXJue29wTGlzdDpuLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX07Y29uc3Qgbz0hISh0aGlzLmRhdGEuaGFzT3duQ2FudmFzJiZhJnMpLGM9WzAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0XSxoPWdldFRyYW5zZm9ybU1hdHJpeCh0aGlzLmRhdGEucmVjdCxjLFsxLDAsMCwxLDAsMF0pO2xldCB1O3RoaXMub2MmJih1PWF3YWl0IGUucGFyc2VNYXJrZWRDb250ZW50UHJvcHModGhpcy5vYyxudWxsKSk7dm9pZCAwIT09dSYmbi5hZGRPcChDdCxbIk9DIix1XSk7bi5hZGRPcChSdCxbdGhpcy5kYXRhLmlkLHRoaXMuZGF0YS5yZWN0LGgsdGhpcy5nZXRSb3RhdGlvbk1hdHJpeChyKSxvXSk7Y29uc3QgZD1uZXcgU3RyaW5nU3RyZWFtKGkpO2F3YWl0IGUuZ2V0T3BlcmF0b3JMaXN0KHtzdHJlYW06ZCx0YXNrOnQscmVzb3VyY2VzOnRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyxvcGVyYXRvckxpc3Q6bn0pO24uYWRkT3AoQnQsW10pO3ZvaWQgMCE9PXUmJm4uYWRkT3AodnQsW10pO3JldHVybntvcExpc3Q6bixzZXBhcmF0ZUZvcm06ITEsc2VwYXJhdGVDYW52YXM6b319X2dldE1LRGljdChlKXtjb25zdCB0PW5ldyBEaWN0KG51bGwpO2UmJnQuc2V0KCJSIixlKTt0LnNldElmQXJyYXkoIkJDIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYm9yZGVyQ29sb3IpKTt0LnNldElmQXJyYXkoIkJHIixnZXRQZGZDb2xvckFycmF5KHRoaXMuYmFja2dyb3VuZENvbG9yKSk7cmV0dXJuIHQuc2l6ZT4wP3Q6bnVsbH1hbWVuZFNhdmVkRGljdChlLHQpe31zZXRWYWx1ZShlLHQsYSxyKXtjb25zdHtkaWN0OmkscmVmOm59PWZ1bmN0aW9uIGdldFBhcmVudFRvVXBkYXRlKGUsdCxhKXtjb25zdCByPW5ldyBSZWZTZXQsaT1lLG49e2RpY3Q6bnVsbCxyZWY6bnVsbH07Zm9yKDtlIGluc3RhbmNlb2YgRGljdCYmIXIuaGFzKHQpOyl7ci5wdXQodCk7aWYoZS5oYXMoIlQiKSlicmVhaztpZighKCh0PWUuZ2V0UmF3KCJQYXJlbnQiKSlpbnN0YW5jZW9mIFJlZikpcmV0dXJuIG47ZT1hLmZldGNoKHQpfWlmKGUgaW5zdGFuY2VvZiBEaWN0JiZlIT09aSl7bi5kaWN0PWU7bi5yZWY9dH1yZXR1cm4gbn0oZSx0aGlzLnJlZixhKTtpZihpKXtpZighci5oYXMobikpe2NvbnN0IGU9aS5jbG9uZSgpO2Uuc2V0KCJWIix0KTtyLnB1dChuLHtkYXRhOmV9KTtyZXR1cm4gZX19ZWxzZSBlLnNldCgiViIsdCk7cmV0dXJuIG51bGx9YXN5bmMgc2F2ZShlLHQsYSxyKXtjb25zdCBpPWE/LmdldCh0aGlzLmRhdGEuaWQpLG49dGhpcy5fYnVpbGRGbGFncyhpPy5ub1ZpZXcsaT8ubm9QcmludCk7bGV0IHM9aT8udmFsdWUsbz1pPy5yb3RhdGlvbjtpZihzPT09dGhpcy5kYXRhLmZpZWxkVmFsdWV8fHZvaWQgMD09PX
101Mpe2lmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkEmJnZvaWQgMD09PW8mJnZvaWQgMD09PW4pcmV0dXJuO3N8fD10aGlzLmRhdGEuZmllbGRWYWx1ZX1pZih2b2lkIDA9PT1vJiYhdGhpcy5faGFzVmFsdWVGcm9tWEZBJiZBcnJheS5pc0FycmF5KHMpJiZBcnJheS5pc0FycmF5KHRoaXMuZGF0YS5maWVsZFZhbHVlKSYmaXNBcnJheUVxdWFsKHMsdGhpcy5kYXRhLmZpZWxkVmFsdWUpJiZ2b2lkIDA9PT1uKXJldHVybjt2b2lkIDA9PT1vJiYobz10aGlzLnJvdGF0aW9uKTtsZXQgbD1udWxsO2lmKCF0aGlzLl9uZWVkQXBwZWFyYW5jZXMpe2w9YXdhaXQgdGhpcy5fZ2V0QXBwZWFyYW5jZShlLHQsYyxhKTtpZihudWxsPT09bCYmdm9pZCAwPT09bilyZXR1cm59bGV0IGg9ITE7aWYobD8ubmVlZEFwcGVhcmFuY2VzKXtoPSEwO2w9bnVsbH1jb25zdHt4cmVmOnV9PWUsZD11LmZldGNoSWZSZWYodGhpcy5yZWYpO2lmKCEoZCBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBmPW5ldyBEaWN0KHUpO2Zvcihjb25zdCBlIG9mIGQuZ2V0S2V5cygpKSJBUCIhPT1lJiZmLnNldChlLGQuZ2V0UmF3KGUpKTtpZih2b2lkIDAhPT1uKXtmLnNldCgiRiIsbik7aWYobnVsbD09PWwmJiFoKXtjb25zdCBlPWQuZ2V0UmF3KCJBUCIpO2UmJmYuc2V0KCJBUCIsZSl9fWNvbnN0IGc9e3BhdGg6dGhpcy5kYXRhLmZpZWxkTmFtZSx2YWx1ZTpzfSxwPXRoaXMuc2V0VmFsdWUoZixBcnJheS5pc0FycmF5KHMpP3MubWFwKHN0cmluZ1RvQXNjaWlPclVURjE2QkUpOnN0cmluZ1RvQXNjaWlPclVURjE2QkUocyksdSxyKTt0aGlzLmFtZW5kU2F2ZWREaWN0KGEscHx8Zik7Y29uc3QgbT10aGlzLl9nZXRNS0RpY3Qobyk7bSYmZi5zZXQoIk1LIixtKTtyLnB1dCh0aGlzLnJlZix7ZGF0YTpmLHhmYTpnLG5lZWRBcHBlYXJhbmNlczpofSk7aWYobnVsbCE9PWwpe2NvbnN0IGU9dS5nZXROZXdUZW1wb3JhcnlSZWYoKSx0PW5ldyBEaWN0KHUpO2Yuc2V0KCJBUCIsdCk7dC5zZXQoIk4iLGUpO2
101NvbnN0IGk9dGhpcy5fZ2V0U2F2ZUZpZWxkUmVzb3VyY2VzKHUpLG49bmV3IFN0cmluZ1N0cmVhbShsKSxzPW4uZGljdD1uZXcgRGljdCh1KTtzLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtzLnNldCgiUmVzb3VyY2VzIixpKTtjb25zdCBjPW8lMTgwPT0wP1swLDAsdGhpcy53aWR0aCx0aGlzLmhlaWdodF06WzAsMCx0aGlzLmhlaWdodCx0aGlzLndpZHRoXTtzLnNldCgiQkJveCIsYyk7Y29uc3QgaD10aGlzLmdldFJvdGF0aW9uTWF0cml4KGEpO2ghPT1mYSYmcy5zZXQoIk1hdHJpeCIsaCk7ci5wdXQoZSx7ZGF0YTpuLHhmYTpudWxsLG5lZWRBcHBlYXJhbmNlczohMX0pfWYuc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKX1hc3luYyBfZ2V0QXBwZWFyYW5jZShlLHQsYSxyKXtpZih0aGlzLmRhdGEucGFzc3dvcmQpcmV0dXJuIG51bGw7Y29uc3Qgbj1yPy5nZXQodGhpcy5kYXRhLmlkKTtsZXQgcyxvO2lmKG4pe3M9bi5mb3JtYXR0ZWRWYWx1ZXx8bi52YWx1ZTtvPW4ucm90YXRpb259aWYodm9pZCAwPT09byYmdm9pZCAwPT09cyYmIXRoaXMuX25lZWRBcHBlYXJhbmNlcyYmKCF0aGlzLl9oYXNWYWx1ZUZyb21YRkF8fHRoaXMuYXBwZWFyYW5jZSkpcmV0dXJuIG51bGw7Y29uc3QgbD10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhyKTtpZih2b2lkIDA9PT1zKXtzPXRoaXMuZGF0YS5maWVsZFZhbHVlO2lmKCFzKXJldHVybmAvVHggQk1DIHEgJHtsfVEgRU1DYH1BcnJheS5pc0FycmF5KHMpJiYxPT09cy5sZW5ndGgmJihzPXNbMF0pO2Fzc2VydCgic3RyaW5nIj09dHlwZW9mIHMsIkV4cGVjdGVkIGB2YWx1ZWAgdG8gYmUgYSBzdHJpbmcuIik7cz1zLnRyaW1FbmQoKTtpZih0aGlzLmRhdGEuY29tYm8pe2NvbnN0IGU9dGhpcy5kYXRhLm9wdGlvbnMuZmluZCgoe2V4cG9ydFZhbHVlOmV9KT0+cz09PWUpO3M9ZT8uZGlzcGxheVZhbHVlfHxzfWlmKCIiPT09cylyZXR1cm5gL1R4IEJNQyBxICR7bH1RIEVNQ2A7dm9pZCAwPT09byYmKG89dGhpcy5yb3RhdGlvbik7bGV0IGgsdT0tMTtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXtoPXMuc3BsaXQoL1xyXG4/fFxuLykubWFwKGU9PmUubm9ybWFsaXplKCJORkMiKSk7dT1oLmxlbmd0aH1lbHNlIGg9W3MucmVwbGFjZSgvXHJcbj98XG4vLCIiKS5ub3JtYWxpemUoIk5GQyIpXTtsZXR7d2lkdGg6ZCxoZWlnaHQ6Zn09dGhpczs5MCE9PW8mJjI3MCE9PW98fChbZCxmXT1bZixkXSk7dGhpcy5fZGVmYXVsdEFwcGVhcmFuY2V8fCh0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhPXBhcnNlRGVmYXVsdEFwcGVhcmFuY2UodGhpcy5fZGVmYXVsdEFwcGVhcmFuY2U9Ii9IZWx2ZXRpY2EgMCBUZiAwIGciKSk7bGV0IGcscCxtLGI9YXdhaXQgV2lkZ2V0QW5ub3RhdGlvbi5fZ2V0Rm9udERhdGEoZSx0LHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEsdGhpcy5fZmllbGRSZXNvdXJjZXMubWVyZ2VkUmVzb3VyY2VzKTtjb25zdCB5PVtdO2xldCB3PSExO2Zvcihjb25zdCBlIG9mIGgpe2NvbnN0IHQ9Yi5lbmNvZGVTdHJpbmcoZSk7dC5sZW5ndGg+MSYmKHc9ITApO3kucHVzaCh0LmpvaW4oIiIpKX1pZih3JiZhJmMpcmV0dXJue25lZWRBcHBlYXJhbmNlczohMH07aWYodyYmdGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQpe2NvbnN0IGE9dGhpcy5kYXRhLmNvbWI/Im1vbm9zcGFjZSI6InNhbnMtc2VyaWYiLHI9bmV3IEZha2VVbmljb2RlRm9udChlLnhyZWYsYSksaT1yLmNyZWF0ZUZvbnRSZXNvdXJjZXMoaC5qb2luKCIiKSksbj1pLmdldFJhdygiRm9udCIpO2lmKHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcy5oYXMoIkZvbnQiKSl7Y29uc3QgZT10aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuZ2V0KCJGb250Iik7Zm9yKGNvbnN0IHQgb2Ygbi5nZXRLZXlzKCkpZS5zZXQodCxuLmdldFJhdyh0KSl9ZWxzZSB0aGlzLl9maWVsZFJlc291cmNlcy5tZXJnZWRSZXNvdXJjZXMuc2V0KCJGb250IixuKTtjb25zdCBvPXIuZm9udE5hbWUubmFtZTtiPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx7Zm9udE5hbWU6byxmb250U2l6ZTowfSxpKTtmb3IobGV0IGU9MCx0PXkubGVuZ3RoO2U8dDtlKyspeVtlXT1zdHJpbmdUb1VURjE2U3RyaW5nKGhbZV0pO2NvbnN0IGM9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEpO3RoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGEuZm9udFNpemU9MDt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnROYW1lPW87W2cscCxtXT10aGlzLl9jb21wdXRlRm9udFNpemUoZi0yLGQtNCxzLGIsdSk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YT1jfWVsc2V7dGhpcy5faXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWR8fHdhcm4oIl9nZXRBcHBlYXJhbmNlOiBPZmZzY3JlZW5DYW52YXMgaXMgbm90IHN1cHBvcnRlZCwgYW5ub3RhdGlvbiBtYXkgbm90IHJlbmRlciBjb3JyZWN0bHkuIik7W2cscCxtXT10aGlzLl9jb21wdXRlRm9udFNpemUoZi0yLGQtNCxzLGIsdSl9bGV0IHg9Yi5kZXNjZW50O3g9aXNOYU4oeCk/aSptOk1hdGgubWF4KGkqbSxNYXRoLmFicyh4KSpwKTtjb25zdCBTPU1hdGgubWluKE1hdGguZmxvb3IoKGYtcCkvMiksMSksaz10aGlzLmRhdGEudGV4dEFsaWdubWVudDtpZih0aGlzLmRhdGEubXVsdGlMaW5lKXJldHVybiB0aGlzLl9nZXRNdWx0aWxpbmVBcHBlYXJhbmNlKGcseSxiLHAsZCxmLGssMixTLHgsbSxyKTtpZih0aGlzLmRhdGEuY29tYilyZXR1cm4gdGhpcy5fZ2V0Q29tYkFwcGVhcmFuY2UoZyxiLHlbMF0scCxkLGYsMixTLHgsbSxyKTtjb25zdCBDPVMreDtp
101ZigwPT09a3x8az4yKXJldHVybmAvVHggQk1DIHEgJHtsfUJUIGArZytgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZygyKX0gJHtudW1iZXJUb1N0cmluZyhDKX0gVG0gKCR7ZXNjYXBlU3RyaW5nKHlbMF0pfSkgVGogRVQgUSBFTUNgO3JldHVybmAvVHggQk1DIHEgJHtsfUJUIGArZytgIDEgMCAwIDEgMCAwIFRtICR7dGhpcy5fcmVuZGVyVGV4dCh5WzBdLGIscCxkLGsse3NoaWZ0OjB9LDIsQyl9IEVUIFEgRU1DYH1zdGF0aWMgYXN5bmMgX2dldEZvbnREYXRhKGUsdCxhLHIpe2NvbnN0IGk9bmV3IE9wZXJhdG9yTGlzdCxuPXtmb250Om51bGwsY2xvbmUoKXtyZXR1cm4gdGhpc319LHtmb250TmFtZTpzLGZvbnRTaXplOm99PWE7YXdhaXQgZS5oYW5kbGVTZXRGb250KHIsW3MmJk5hbWUuZ2V0KHMpLG9dLG51bGwsaSx0LG4sbnVsbCk7cmV0dXJuIG4uZm9udH1fZ2V0VGV4dFdpZHRoKGUsdCl7cmV0dXJuIE1hdGguc3VtUHJlY2lzZSh0LmNoYXJzVG9HbHlwaHMoZSkubWFwKGU9PmUud2lkdGgpKS8xZTN9X2NvbXB1dGVGb250U2l6ZShlLHQscixpLG4pe2xldHtmb250U2l6ZTpzfT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLG89KHN8fDEyKSphLGM9TWF0aC5yb3VuZChlL28pO2lmKCFzKXtjb25zdCByb3VuZFdpdGhUd29EaWdpdHM9ZT0+TWF0aC5mbG9vcigxMDAqZSkvMTAwO2lmKC0xPT09bil7Y29uc3Qgbj10aGlzLl9nZXRUZXh0V2lkdGgocixpKTtzPXJvdW5kV2l0aFR3b0RpZ2l0cyhNYXRoLm1pbihlL2EsdC9uKSk7Yz0xfWVsc2V7Y29uc3QgbD1yLnNwbGl0KC9cclxuP3xcbi8pLGg9W107Zm9yKGNvbnN0IGUgb2YgbCl7Y29uc3QgdD1pLmVuY29kZVN0cmluZyhlKS5qb2luKCIiKSxhPWkuY2hhcnNUb0dseXBocyh0KSxyPWkuZ2V0Q2hhclBvc2l0aW9ucyh0KTtoLnB1c2goe2xpbmU6dCxnbHlwaHM6YSxwb3NpdGlvbnM6cn0pfWNvbnN0IGlzVG9vQmlnPWE9PntsZXQgcj0wO2Zvcihjb25zdCBuIG9mIGgpe3IrPXRoaXMuX3NwbGl0TGluZShudWxsLGksYSx0LG4pLmxlbmd0aCphO2lmKHI+ZSlyZXR1cm4hMH1yZXR1cm4hMX07Yz1NYXRoLm1heChjLG4pO2Zvcig7Oyl7bz1lL2M7cz1yb3VuZFdpdGhUd29EaWdpdHMoby9hKTtpZighaXNUb29CaWcocykpYnJlYWs7YysrfX1jb25zdHtmb250TmFtZTpsLGZvbnRDb2xvcjpofT10aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhO3RoaXMuX2RlZmF1bHRBcHBlYXJhbmNlPWZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRBcHBlYXJhbmNlKHtmb250U2l6ZTplLGZvbnROYW1lOnQsZm9udENvbG9yOmF9KXtyZXR1cm5gLyR7ZXNjYXBlUERGTmFtZSh0KX0gJHtlfSBUZiAke2dldFBkZkNvbG9yKGEsITApfWB9KHtmb250U2l6ZTpzLGZvbnROYW1lOmwsZm9udENvbG9yOmh9KX1yZXR1cm5bdGhpcy5fZGVmYXVsdEFwcGVhcmFuY2UscyxlL2NdfV9yZW5kZXJUZXh0KGUsdCxhLHIsaSxuLHMsbyl7bGV0IGM7aWYoMT09PWkpe2M9KHItdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqYSkvMn1lbHNlIGlmKDI9PT1pKXtjPXItdGhpcy5fZ2V0VGV4dFdpZHRoKGUsdCkqYS1zfWVsc2UgYz1zO2NvbnN0IGw9bnVtYmVyVG9TdHJpbmcoYy1uLnNoaWZ0KTtuLnNoaWZ0PWM7cmV0dXJuYCR7bH0gJHtvPW51bWJlclRvU3RyaW5nKG8pfSBUZCAoJHtlc2NhcGVTdHJpbmcoZSl9KSBUamB9X2dldFNhdmVGaWVsZFJlc291cmNlcyhlKXtjb25zdHtsb2NhbFJlc291cmNlczp0LGFwcGVhcmFuY2VSZXNvdXJjZXM6YSxhY3JvRm9ybVJlc291cmNlczpyfT10aGlzLl9maWVsZFJlc291cmNlcyxpPXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE/LmZvbnROYW1lO2lmKCFpKXJldHVybiB0fHxEaWN0LmVtcHR5O2Zvcihjb25zdCBlIG9mW3QsYV0paWYoZSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IHQ9ZS5nZXQoIkZvbnQiKTtpZih0IGluc3RhbmNlb2YgRGljdCYmdC5oYXMoaSkpcmV0dXJuIGV9aWYociBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGE9ci5nZXQoIkZvbnQiKTtpZihhIGluc3RhbmNlb2YgRGljdCYmYS5oYXMoaSkpe2NvbnN0IHI9bmV3IERpY3QoZSk7ci5zZXQoaSxhLmdldFJhdyhpKSk7Y29uc3Qgbj1uZXcgRGljdChlKTtuLnNldCgiRm9udCIscik7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6ZSxkaWN0QXJyYXk6W24sdF0sbWVyZ2VTdWJEaWN0czohMH0pfX1yZXR1cm4gdHx8RGljdC5lbXB0eX1nZXRGaWVsZE9iamVjdCgpe3JldHVybiBudWxsfX1jbGFzcyBUZXh0V2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO2lmKHQuaGFzKCJQTUQiKSl7dGhpcy5mbGFnc3w9RTt0aGlzLmRhdGEuaGlkZGVuPSEwO3dhcm4oIkJhcmNvZGVzIGFyZSBub3Qgc3VwcG9ydGVkIil9dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEucmVhZE9ubHkmJiF0aGlzLmRhdGEubm9IVE1MO3RoaXMuX2hhc1RleHQ9ITA7InN0cmluZyIhPXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPSIiKTtsZXQgYT1nZXRJbmhlcml0YWJsZVByb3BlcnR5KHtkaWN0OnQsa2V5OiJRIn0pOyghTnVtYmVyLmlzSW50ZWdlcihhKXx8YTwwfHxhPjIpJiYoYT1udWxsKTt0aGlzLmRhdGEudGV4dEFsaWdubWVudD1hO2xldCByPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik1heExlbiJ9KTsoIU51bWJlci5pc0ludGVnZXIocil8fHI8MCkmJihyPTApO3RoaXMuZGF0YS5tYXhMZW49cjt0aGlzLmRhdGEubXVsdGlMaW5lPXRoaXMuaGFzRmllbGRGbGFnKFcpO3RoaXMuZGF0YS5jb21iPXRoaXMuaGFzRmllbGRGbGFnKFopJiYhdGhpcy5kYXRhLm11bHRpTGluZSYmIXRoaXMuZGF0YS5wYXNzd29yZCYmIXRoaXMuaGFzRmllbGRGbGFnKEspJiYwIT09dGhpcy5kYXRhLm1heExlbjt0aGlzLmRhdGEuZG9Ob3RTY3JvbGw9dGhpcy5oYXNGaWVsZEZsYWcoWSk7Y29uc3R7ZGF0YTp7YWN0aW9uczppfX09dGhpcztpZighaSlyZXR1cm47Y29uc3Qgbj0vXkFGKERhdGV8VGltZSlfKD86S2V5c3Ryb2tlfEZvcm1hdCkoPzpFeCk/XChbJyJdPyhbXiciXSspWyciXT9cKTskLztsZXQgcz0hMTsoMT09PWkuRm9ybWF0Py5sZW5ndGgmJjE9PT1pLktleXN0cm9rZT8ubGVuZ3RoJiZuLnRlc3QoaS5Gb3JtYXRbMF0pJiZuLnRlc3QoaS5LZXlzdHJva2VbMF0pfHwwPT09aS5Gb3JtYXQ/Lmxlbmd0aCYmMT09PWkuS2V5c3Ryb2tlPy5sZW5ndGgmJm4udGVzdChpLktleXN0cm9rZVswXSl8fDA9PT1pLktleXN0cm9rZT8ubGVuZ3RoJiYxPT09aS5Gb3JtYXQ/Lmxlbmd0aCYmbi50ZXN0KGkuRm9ybWF0WzBdKSkmJihzPSEwKTtjb25zdCBvPVtdO2kuRm9ybWF0JiZvLnB1c2goLi4uaS5Gb3JtYXQpO2kuS2V5c3Ryb2tlJiZvLnB1c2goLi4uaS5LZXlzdHJva2UpO2lmKHMpe2RlbGV0ZSBpLktleXN0cm9rZTtpLkZvcm1hdD1vfWZvcihjb25zdCBlIG9mIG8pe2NvbnN0IHQ9ZS5tYXRjaChuKTtpZighdCljb250aW51ZTtjb25zdCBhPSJEYXRlIj09PXRbMV07bGV0IHI9dFsyXTtjb25zdCBpPXBhcnNlSW50KHIsMTApO2lzTmFOKGkpfHxNYXRoLmZsb29yKE1hdGgubG9nMTAoaSkpKzEhPT10WzJdLmxlbmd0aHx8KHI9KGE/a246Q24pW2ldPz9yKTt0aGlzLmRhdGEuZGF0ZXRpbWVGb3JtYXQ9cjtpZighcylicmVhaztpZihhKXtpZigvSEh8TU18c3N8aC8udGVzdChyKSl7dGhpcy5kYXRhLmRhdGV0aW1lVHlwZT0iZGF0ZXRpbWUtbG9jYWwiO3RoaXMuZGF0YS50aW1l
101U3RlcD0vc3MvLnRlc3Qocik/MTo2MH1lbHNlIHRoaXMuZGF0YS5kYXRldGltZVR5cGU9ImRhdGUiO2JyZWFrfXRoaXMuZGF0YS5kYXRldGltZVR5cGU9InRpbWUiO3RoaXMuZGF0YS50aW1lU3RlcD0vc3MvLnRlc3Qocik/MTo2MDticmVha319Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuISF0aGlzLmFwcGVhcmFuY2UmJiF0aGlzLl9uZWVkQXBwZWFyYW5jZXN9X2dldENvbWJBcHBlYXJhbmNlKGUsdCxhLHIsaSxuLHMsbyxjLGwsaCl7Y29uc3QgdT1pL3RoaXMuZGF0YS5tYXhMZW4sZD10aGlzLmdldEJvcmRlckFuZEJhY2tncm91bmRBcHBlYXJhbmNlcyhoKSxmPVtdLGc9dC5nZXRDaGFyUG9zaXRpb25zKGEpO2Zvcihjb25zdFtlLHRdb2YgZylmLnB1c2goYCgke2VzY2FwZVN0cmluZyhhLnN1YnN0cmluZyhlLHQpKX0pIFRqYCk7Y29uc3QgcD1mLmpvaW4oYCAke251bWJlclRvU3RyaW5nKHUpfSAwIFRkIGApO3JldHVybmAvVHggQk1DIHEgJHtkfUJUIGArZStgIDEgMCAwIDEgJHtudW1iZXJUb1N0cmluZyhzKX0gJHtudW1iZXJUb1N0cmluZyhvK2MpfSBUbSAke3B9IEVUIFEgRU1DYH1fZ2V0TXVsdGlsaW5lQXBwZWFyYW5jZShlLHQsYSxyLGksbixzLG8sYyxsLGgsdSl7Y29uc3QgZD1bXSxmPWktMipvLGc9e3NoaWZ0OjB9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7Y29uc3Qgbj10W2VdLHU9dGhpcy5fc3BsaXRMaW5lKG4sYSxyLGYpO2ZvcihsZXQgdD0wLG49dS5sZW5ndGg7dDxuO3QrKyl7Y29uc3Qgbj11W3RdLGY9MD09PWUmJjA9PT10Py1jLShoLWwpOi1oO2QucHVzaCh0aGlzLl9yZW5kZXJUZXh0KG4sYSxyLGkscyxnLG8sZikpfX1jb25zdCBwPXRoaXMuZ2V0Qm9yZGVyQW5kQmFja2dyb3VuZEFwcGVhcmFuY2VzKHUpLG09ZC5qb2luKCJcbiIpO3JldHVybmAvVHggQk1DIHEgJHtwfUJUIGArZStgIDEgMCAwIDEgMCAke251bWJlclRvU3RyaW5nKG4pfSBUbSAke219IEVUIFEgRU1DYH1fc3BsaXRMaW5lKGUsdCxhLHIsaT17fSl7ZT1pLmxpbmV8fGU7Y29uc3Qgbj1pLmdseXBoc3x8dC5jaGFyc1RvR2x5cGhzKGUpO2lmKG4ubGVuZ3RoPD0xKXJldHVybltlXTtjb25zdCBzPWkucG9zaXRpb25zfHx0LmdldENoYXJQb3NpdGlvbnMoZSksbz1hLzFlMyxjPVtdO2xldCBsPS0xLGg9LTEsdT0tMSxkPTAsZj0wO2ZvcihsZXQgdD0wLGE9bi5sZW5ndGg7dDxhO3QrKyl7Y29uc3RbYSxpXT1zW3RdLGc9blt0XSxwPWcud2lkdGgqbztpZigiICI9PT1nLnVuaWNvZGUpaWYoZitwPnIpe2MucHVzaChlLnN1YnN0cmluZyhkLGEpKTtkPWE7Zj1wO2w9LTE7dT0tMX1lbHNle2YrPXA7bD1hO2g9aTt1PXR9ZWxzZSBpZihmK3A+cilpZigtMSE9PWwpe2MucHVzaChlLnN1YnN0cmluZyhkLGgpKTtkPWg7dD11KzE7bD0tMTtmPTB9ZWxzZXtjLnB1c2goZS5zdWJzdHJpbmcoZCxhKSk7ZD1hO2Y9cH1lbHNlIGYrPXB9ZDxlLmxlbmd0aCYmYy5wdXNoKGUuc3Vic3RyaW5nKGQsZS5sZW5ndGgpKTtyZXR1cm4gY31hc3luYyBleHRyYWN0VGV4dENvbnRlbnQoZSx0LGEpe2F3YWl0IHN1cGVyLmV4dHJhY3RUZXh0Q29udGVudChlLHQsYSk7Y29uc3Qgcj10aGlzLmRhdGEudGV4dENvbnRlbnQ7aWYoIXIpcmV0dXJuO2NvbnN0IGk9ci5qb2luKCJcbiIpO2lmKGk9PT10aGlzLmRhdGEuZmllbGRWYWx1ZSlyZXR1cm47Y29uc3Qgbj1pLnJlcGxhY2VBbGwoLyhbLiorP14ke30oKXxbXF1cXF0pfChccyspL2csKGUsdCk9PnQ/YFxcJHt0fWA6IlxccysiKTtuZXcgUmVnRXhwKGBeXFxzKiR7bn1cXHMqJGApLnRlc3QodGhpcy5kYXRhLmZpZWxkVmFsdWUpJiYodGhpcy5kYXRhLnRleHRDb250ZW50PXRoaXMuZGF0YS5maWVsZFZhbHVlLnNwbGl0KCJcbiIpKX1nZXRGaWVsZE9iamVjdCgpe3JldHVybntpZDp0aGlzLmRhdGEuaWQsdmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWUsZGVmYXVsdFZhbHVlOnRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZXx8IiIsbXVsdGlsaW5lOnRoaXMuZGF0YS5tdWx0aUxpbmUscGFzc3dvcmQ6dGhpcy5kYXRhLnBhc3N3b3JkLGNoYXJMaW1pdDp0aGlzLmRhdGEubWF4TGVuLGNvbWI6dGhpcy5kYXRhLmNvbWIsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxoaWRkZW46dGhpcy5kYXRhLmhpZGRlbixuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxhY3Rpb25zOnRoaXMuZGF0YS5hY3Rpb25zLHBhZ2U6dGhpcy5kYXRhLnBhZ2VJbmRleCxzdHJva2VDb2xvcjp0aGlzLmRhdGEuYm9yZGVyQ29sb3IsZmlsbENvbG9yOnRoaXMuZGF0YS5iYWNrZ3JvdW5kQ29sb3Iscm90YXRpb246dGhpcy5yb3RhdGlvbixkYXRldGltZUZvcm1hdDp0aGlzLmRhdGEuZGF0ZXRpbWVGb3JtYXQsaGFzRGF0ZXRpbWVIVE1MOiEhdGhpcy5kYXRhLmRhdGV0aW1lVHlwZSx0eXBlOiJ0ZXh0In19fWNsYXNzIEJ1dHRvbldpZGdldEFubm90YXRpb24gZXh0ZW5kcyBXaWRnZXRBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9bnVsbDt0aGlzLnVuY2hlY2tlZEFwcGVhcmFuY2U9bnVsbDtjb25zdCB0PXRoaXMuaGFzRmllbGRGbGFnKCQpLGE9dGhpcy5oYXNGaWVsZEZsYWcoRyk7dGhpcy5kYXRhLmNoZWNrQm94PSF0JiYhYTt0aGlzLmRhdGEucmFkaW9CdXR0b249dCYmIWE7dGhpcy5kYXRhLnB1c2hCdXR0b249YTt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hMTtpZih0aGlzLmRhdGEuY2hlY2tCb3gpdGhpcy5fcHJvY2Vzc0NoZWNrQm94KGUpO2Vsc2UgaWYodGhpcy5kYXRhLnJhZGlvQnV0dG9uKXRoaXMuX3Byb2Nlc3NSYWRpb0J1dHRvbihlKTtlbHNlIGlmKHRoaXMuZGF0YS5wdXNoQnV0dG9uKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPSEwO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5fcHJvY2Vzc1B1c2hCdXR0b24oZSl9ZWxzZSB3YXJuKCJJbnZhbGlkIGZpZWxkIGZsYWdzIGZvciBidXR0b24gd2lkZ2V0IGFubm90YXRpb24iKX1hc3luYyBnZXRPcGVyYXRvckxpc3QoZSx0LGEscil7aWYodGhpcy5kYXRhLnB1c2hCdXR0b24pcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSwhMSxyKTtsZXQgaT1udWxsLG49bnVsbDtpZihyKXtjb25zdCBlPXIuZ2V0KHRoaXMuZGF0YS5pZCk7aT1lP2UudmFsdWU6bnVsbDtuPWU/ZS5yb3RhdGlvbjpudWxsfWlmKG51bGw9PT1pJiZ0aGlzLmFwcGVhcmFuY2UpcmV0dXJuIHN1cGVyLmdldE9wZXJhdG9yTGlzdChlLHQsYSxyKTtudWxsPT1pJiYoaT10aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU6dGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWUpO2NvbnN0IHM9aT90aGlzLmNoZWNrZWRBc
101HBlYXJhbmNlOnRoaXMudW5jaGVja2VkQXBwZWFyYW5jZTtpZihzKXtjb25zdCBpPXRoaXMuYXBwZWFyYW5jZSxvPWxvb2t1cE1hdHJpeChzLmRpY3QuZ2V0QXJyYXkoIk1hdHJpeCIpLGZhKTtuJiZzLmRpY3Quc2V0KCJNYXRyaXgiLHRoaXMuZ2V0Um90YXRpb25NYXRyaXgocikpO3RoaXMuYXBwZWFyYW5jZT1zO2NvbnN0IGM9c3VwZXIuZ2V0T3BlcmF0b3JMaXN0KGUsdCxhLHIpO3RoaXMuYXBwZWFyYW5jZT1pO3MuZGljdC5zZXQoIk1hdHJpeCIsbyk7cmV0dXJuIGN9cmV0dXJue29wTGlzdDpuZXcgT3BlcmF0b3JMaXN0LHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19YXN5bmMgc2F2ZShlLHQsYSxyKXt0aGlzLmRhdGEuY2hlY2tCb3g/dGhpcy5fc2F2ZUNoZWNrYm94KGUsdCxhLHIpOnRoaXMuZGF0YS5yYWRpb0J1dHRvbiYmdGhpcy5fc2F2ZVJhZGlvQnV0dG9uKGUsdCxhLHIpfWFzeW5jIF9zYXZlQ2hlY2tib3goZSx0LGEscil7aWYoIWEpcmV0dXJuO2NvbnN0IGk9YS5nZXQodGhpcy5kYXRhLmlkKSxuPXRoaXMuX2J1aWxkRmxhZ3MoaT8ubm9WaWV3LGk/Lm5vUHJpbnQpO2xldCBzPWk/LnJvdGF0aW9uLG89aT8udmFsdWU7aWYodm9pZCAwPT09cyYmdm9pZCAwPT09bil7aWYodm9pZCAwPT09bylyZXR1cm47aWYodGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuZXhwb3J0VmFsdWU9PT1vKXJldHVybn1sZXQgYz1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShjIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2M9Yy5jbG9uZSgpO3ZvaWQgMD09PXMmJihzPXRoaXMucm90YXRpb24pO3ZvaWQgMD09PW8mJihvPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmV4cG9ydFZhbHVlKTtjb25zdCBsPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6bz90aGlzLmRhdGEuZXhwb3J0VmFsdWU6IiJ9LGg9TmFtZS5nZXQobz90aGlzLmRhdGEuZXhwb3J0VmFsdWU6Ik9mZiIpO3RoaXMuc2V0VmFsdWUoYyxoLGUueHJlZixyKTtjLnNldCgiQVMiLGgpO2Muc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTt2b2lkIDAhPT1uJiZjLnNldCgiRiIsbik7Y29uc3QgdT10aGlzLl9nZXRNS0RpY3Qocyk7dSYmYy5zZXQoIk1LIix1KTtyLnB1dCh0aGlzLnJlZix7ZGF0YTpjLHhmYTpsLG5lZWRBcHBlYXJhbmNlczohMX0pfWFzeW5jIF9zYXZlUmFkaW9CdXR0b24oZSx0LGEscil7aWYoIWEpcmV0dXJuO2NvbnN0IGk9YS5nZXQodGhpcy5kYXRhLmlkKSxuPXRoaXMuX2J1aWxkRmxhZ3MoaT8ubm9WaWV3LGk/Lm5vUHJpbnQpO2xldCBzPWk/LnJvdGF0aW9uLG89aT8udmFsdWU7aWYodm9pZCAwPT09cyYmdm9pZCAwPT09bil7aWYodm9pZCAwPT09bylyZXR1cm47aWYodGhpcy5kYXRhLmZpZWxkVmFsdWU9PT10aGlzLmRhdGEuYnV0dG9uVmFsdWU9PT1vKXJldHVybn1sZXQgYz1lLnhyZWYuZmV0Y2hJZlJlZih0aGlzLnJlZik7aWYoIShjIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2M9Yy5jbG9uZSgpO3ZvaWQgMD09PW8mJihvPXRoaXMuZGF0YS5maWVsZFZhbHVlPT09dGhpcy5kYXRhLmJ1dHRvblZhbHVlKTt2b2lkIDA9PT1zJiYocz10aGlzLnJvdGF0aW9uKTtjb25zdCBsPXtwYXRoOnRoaXMuZGF0YS5maWVsZE5hbWUsdmFsdWU6bz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6IiJ9LGg9TmFtZS5nZXQobz90aGlzLmRhdGEuYnV0dG9uVmFsdWU6Ik9mZiIpO28mJnRoaXMuc2V0VmFsdWUoYyxoLGUueHJlZixyKTtjLnNldCgiQVMiLGgpO2Muc2V0KCJNIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUoKX1gKTt2b2lkIDAhPT1uJiZjLnNldCgiRiIsbik7Y29uc3QgdT10aGlzLl9nZXRNS0RpY3Qocyk7dSYmYy5zZXQoIk1LIix1KTtyLnB1dCh0aGlzLnJlZix7ZGF0YTpjLHhmYTpsLG5lZWRBcHBlYXJhbmNlczohMX0pfV9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSx0KXtjb25zdHt3aWR0aDphLGhlaWdodDpyfT10aGlzLGk9WzAsMCxhLHJdLG49LjgqTWF0aC5taW4oYSxyKTtsZXQgcyxvO2lmKCJjaGVjayI9PT10KXtzPXt3aWR0aDouNzU1Km4saGVpZ2h0Oi43MDUqbn07bz0iMyJ9ZWxzZSBpZigiZGlzYyI9PT10KXtzPXt3aWR0aDouNzkxKm4saGVpZ2h0Oi43MDUqbn07bz0ibCJ9ZWxzZSB1bnJlYWNoYWJsZShgX2dldERlZmF1bHRDaGVja2VkQXBwZWFyYW5jZSAtIHVuc3VwcG9ydGVkIHR5cGU6ICR7dH1gKTtjb25zdCBjPWBxIEJUIC9QZGZKc1phRGIgJHtufSBUZiAwIGcgJHtudW1iZXJUb1N0cmluZygoYS1zLndpZHRoKS8yKX0gJHtudW1iZXJUb1N0cmluZygoci1zLmhlaWdodCkvMil9IFRkICgke299KSBUaiBFVCBRYCxsPW5ldyBEaWN0KGUueHJlZik7bC5zZXQoIkZvcm1UeXBlIiwxKTtsLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtsLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtsLnNldCgiQkJveCIsaSk7bC5zZXQoIk1hdHJpeCIsWzEsMCwwLDEsMCwwXSk7bC5zZXQoIkxlbmd0aCIsYy5sZW5ndGgpO2NvbnN0IGg9bmV3IERpY3QoZS54cmVmKSx1PW5ldyBEaWN0KGUueHJlZik7dS5zZXQoIlBkZkpzWmFEYiIsdGhpcy5mYWxsYmFja0ZvbnREaWN0KTtoLnNldCgiRm9udCIsdSk7bC5zZXQoIlJlc291cmNlcyIsaCk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1uZXcgU3RyaW5nU3RyZWFtKGMpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2UuZGljdD1sO3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKX1fcHJvY2Vzc0NoZWNrQm94KGUpe2NvbnN0IHQ9ZS5kaWN0LmdldCgiQVAiKTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm47Y29uc3QgYT10LmdldCgiTiIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCByPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShlLmRpY3QuZ2V0KCJBUyIpKTsic3RyaW5nIj09dHlwZW9mIHImJih0aGlzLmRhdGEuZmllbGRWYWx1ZT1yKTtjb25zdCBpPW51bGwhPT10aGlzLmRhdGEuZmllbGRWYWx1ZSYmIk9mZiIhPT10aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZToiWWVzIixuPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShhLmdldEtleXMoKSk7aWYoMD09PW4ubGVuZ3RoKW4ucHVzaCgiT2ZmIixpKTtlbHNlIGlmKDE9PT1uLmxlbmd0aCkiT2ZmIj09PW5bMF0/bi5wdXNoKGkpOm4udW5zaGlmdCgiT2ZmIik7ZWxzZSBpZihuLmluY2x1ZGVzKGkpKXtuLmxlbmd0aD0wO24ucHVzaCgiT2ZmIixpKX1lbHNle2NvbnN0IGU9bi5maW5kKGU9P
101iJPZmYiIT09ZSk7bi5sZW5ndGg9MDtuLnB1c2goIk9mZiIsZSl9bi5pbmNsdWRlcyh0aGlzLmRhdGEuZmllbGRWYWx1ZSl8fCh0aGlzLmRhdGEuZmllbGRWYWx1ZT0iT2ZmIik7dGhpcy5kYXRhLmV4cG9ydFZhbHVlPW5bMV07Y29uc3Qgcz1hLmdldCh0aGlzLmRhdGEuZXhwb3J0VmFsdWUpO3RoaXMuY2hlY2tlZEFwcGVhcmFuY2U9cyBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/czpudWxsO2NvbnN0IG89YS5nZXQoIk9mZiIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZT1vIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9vOm51bGw7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT90aGlzLl9zdHJlYW1zLnB1c2godGhpcy5jaGVja2VkQXBwZWFyYW5jZSk6dGhpcy5fZ2V0RGVmYXVsdENoZWNrZWRBcHBlYXJhbmNlKGUsImNoZWNrIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlJiZ0aGlzLl9zdHJlYW1zLnB1c2godGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlKTt0aGlzLl9mYWxsYmFja0ZvbnREaWN0PXRoaXMuZmFsbGJhY2tGb250RGljdDtudWxsPT09dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlJiYodGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlPSJPZmYiKX1fcHJvY2Vzc1JhZGlvQnV0dG9uKGUpe3RoaXMuZGF0YS5idXR0b25WYWx1ZT1udWxsO2NvbnN0IHQ9ZS5kaWN0LmdldCgiUGFyZW50Iik7aWYodCBpbnN0YW5jZW9mIERpY3Qpe3RoaXMucGFyZW50PWUuZGljdC5nZXRSYXcoIlBhcmVudCIpO2NvbnN0IGE9dC5nZXQoIlYiKTthIGluc3RhbmNlb2YgTmFtZSYmKHRoaXMuZGF0YS5maWVsZFZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShhKSl9Y29uc3QgYT1lLmRpY3QuZ2V0KCJBUCIpO2lmKCEoYSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCByPWEuZ2V0KCJOIik7aWYoIShyIGluc3RhbmNlb2YgRGljdCkpcmV0dXJuO2Zvcihjb25zdCBlIG9mIHIuZ2V0S2V5cygpKWlmKCJPZmYiIT09ZSl7dGhpcy5kYXRhLmJ1dHRvblZhbHVlPXRoaXMuX2RlY29kZUZvcm1WYWx1ZShlKTticmVha31jb25zdCBpPXIuZ2V0KHRoaXMuZGF0YS5idXR0b25WYWx1ZSk7dGhpcy5jaGVja2VkQXBwZWFyYW5jZT1pIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9pOm51bGw7Y29uc3Qgbj1yLmdldCgiT2ZmIik7dGhpcy51bmNoZWNrZWRBcHBlYXJhbmNlPW4gaW5zdGFuY2VvZiBCYXNlU3RyZWFtP246bnVsbDt0aGlzLmNoZWNrZWRBcHBlYXJhbmNlP3RoaXMuX3N0cmVhbXMucHVzaCh0aGlzLmNoZWNrZWRBcHBlYXJhbmNlKTp0aGlzLl9nZXREZWZhdWx0Q2hlY2tlZEFwcGVhcmFuY2UoZSwiZGlzYyIpO3RoaXMudW5jaGVja2VkQXBwZWFyYW5jZSYmdGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMudW5jaGVja2VkQXBwZWFyYW5jZSk7dGhpcy5fZmFsbGJhY2tGb250RGljdD10aGlzLmZhbGxiYWNrRm9udERpY3Q7bnVsbD09PXRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZSYmKHRoaXMuZGF0YS5kZWZhdWx0RmllbGRWYWx1ZT0iT2ZmIil9X3Byb2Nlc3NQdXNoQnV0dG9uKGUpe2NvbnN0e2RpY3Q6dCxhbm5vdGF0aW9uR2xvYmFsczphfT1lO2lmKHQuaGFzKCJBIil8fHQuaGFzKCJBQSIpfHx0aGlzLmRhdGEuYWx0ZXJuYXRpdmVUZXh0KXt0aGlzLmRhdGEuaXNUb29sdGlwT25seT0hdC5oYXMoIkEiKSYmIXQuaGFzKCJBQSIpO0NhdGFsb2cucGFyc2VEZXN0RGljdGlvbmFyeSh7ZGVzdERpY3Q6dCxyZXN1bHRPYmo6dGhpcy5kYXRhLGRvY0Jhc2VVcmw6YS5iYXNlVXJsLGRvY0F0dGFjaG1lbnRzOmEuYXR0YWNobWVudHN9KX1lbHNlIHdhcm4oIlB1c2ggYnV0dG9ucyB3aXRob3V0IGFjdGlvbiBkaWN0aW9uYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQiKX1nZXRGaWVsZE9iamVjdCgpe2xldCBlLHQ9ImJ1dHRvbiI7aWYodGhpcy5kYXRhLmNoZWNrQm94KXt0PSJjaGVja2JveCI7ZT10aGlzLmRhdGEuZXhwb3J0VmFsdWV9ZWxzZSBpZih0aGlzLmRhdGEucmFkaW9CdXR0b24pe3Q9InJhZGlvYnV0dG9uIjtlPXRoaXMuZGF0YS5idXR0b25WYWx1ZX1yZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOnRoaXMuZGF0YS5maWVsZFZhbHVlfHwiT2ZmIixkZWZhdWx0VmFsdWU6dGhpcy5kYXRhLmRlZmF1bHRGaWVsZFZhbHVlLGV4cG9ydFZhbHVlczplLGVkaXRhYmxlOiF0aGlzLmRhdGEucmVhZE9ubHksbmFtZTp0aGlzLmRhdGEuZmllbGROYW1lLHJlY3Q6dGhpcy5kYXRhLnJlY3QsaGlkZGVuOnRoaXMuZGF0YS5o
101aWRkZW4sYWN0aW9uczp0aGlzLmRhdGEuYWN0aW9ucyxwYWdlOnRoaXMuZGF0YS5wYWdlSW5kZXgsc3Ryb2tlQ29sb3I6dGhpcy5kYXRhLmJvcmRlckNvbG9yLGZpbGxDb2xvcjp0aGlzLmRhdGEuYmFja2dyb3VuZENvbG9yLHJvdGF0aW9uOnRoaXMucm90YXRpb24sdHlwZTp0fX1nZXQgZmFsbGJhY2tGb250RGljdCgpe2NvbnN0IGU9bmV3IERpY3Q7ZS5zZXRJZk5hbWUoIkJhc2VGb250IiwiWmFwZkRpbmdiYXRzIik7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGYWxsYmFja1R5cGUiKTtlLnNldElmTmFtZSgiU3VidHlwZSIsIkZhbGxiYWNrVHlwZSIpO2Uuc2V0SWZOYW1lKCJFbmNvZGluZyIsIlphcGZEaW5nYmF0c0VuY29kaW5nIik7cmV0dXJuIHNoYWRvdyh0aGlzLCJmYWxsYmFja0ZvbnREaWN0IixlKX19Y2xhc3MgQ2hvaWNlV2lkZ2V0QW5ub3RhdGlvbiBleHRlbmRzIFdpZGdldEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmluZGljZXM9dC5nZXRBcnJheSgiSSIpO3RoaXMuaGFzSW5kaWNlcz1BcnJheS5pc0FycmF5KHRoaXMuaW5kaWNlcykmJnRoaXMuaW5kaWNlcy5sZW5ndGg+MDt0aGlzLmRhdGEub3B0aW9ucz1bXTtjb25zdCByPWdldEluaGVyaXRhYmxlUHJvcGVydHkoe2RpY3Q6dCxrZXk6Ik9wdCJ9KTtpZihBcnJheS5pc0FycmF5KHIpKWZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1hLmZldGNoSWZSZWYocltlXSksaT1BcnJheS5pc0FycmF5KHQpO3RoaXMuZGF0YS5vcHRpb25zW2VdPXtleHBvcnRWYWx1ZTp0aGlzLl9kZWNvZGVGb3JtVmFsdWUoaT9hLmZldGNoSWZSZWYodFswXSk6dCksZGlzcGxheVZhbHVlOnRoaXMuX2RlY29kZUZvcm1WYWx1ZShpP2EuZmV0Y2hJZlJlZih0WzFdKTp0KX19aWYodGhpcy5oYXNJbmRpY2VzKXt0aGlzLmRhdGEuZmllbGRWYWx1ZT1bXTtjb25zdCBlPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aDtmb3IoY29uc3QgdCBvZiB0aGlzLmluZGljZXMpTnVtYmVyLmlzSW50ZWdlcih0KSYmdD49MCYmdDxlJiZ0aGlzLmRhdGEuZmllbGRWYWx1ZS5wdXNoKHRoaXMuZGF0YS5vcHRpb25zW3RdLmV4cG9ydFZhbHVlKX1lbHNlInN0cmluZyI9PXR5cGVvZiB0aGlzLmRhdGEuZmllbGRWYWx1ZT90aGlzLmRhdGEuZmllbGRWYWx1ZT1bdGhpcy5kYXRhLmZpZWxkVmFsdWVdOnRoaXMuZGF0YS5maWVsZFZhbHVlfHw9W107MD09PXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aCYmdGhpcy5kYXRhLmZpZWxkVmFsdWUubGVuZ3RoPjAmJih0aGlzLmRhdGEub3B0aW9ucz10aGlzLmRhdGEuZmllbGRWYWx1ZS5tYXAoZT0+KHtleHBvcnRWYWx1ZTplLGRpc3BsYXlWYWx1ZTplfSkpKTt0aGlzLmRhdGEuY29tYm89dGhpcy5oYXNGaWVsZEZsYWcoVik7dGhpcy5kYXRhLm11bHRpU2VsZWN0PXRoaXMuaGFzRmllbGRGbGFnKEopO3RoaXMuX2hhc1RleHQ9ITB9Z2V0RmllbGRPYmplY3QoKXtjb25zdCBlPXRoaXMuZGF0YS5jb21ibz8iY29tYm9ib3giOiJsaXN0Ym94Iix0PXRoaXMuZGF0YS5maWVsZFZhbHVlLmxlbmd0aD4wP3RoaXMuZGF0YS5maWVsZFZhbHVlWzBdOm51bGw7cmV0dXJue2lkOnRoaXMuZGF0YS5pZCx2YWx1ZTp0LGRlZmF1bHRWYWx1ZTp0aGlzLmRhdGEuZGVmYXVsdEZpZWxkVmFsdWUsZWRpdGFibGU6IXRoaXMuZGF0YS5yZWFkT25seSxuYW1lOnRoaXMuZGF0YS5maWVsZE5hbWUscmVjdDp0aGlzLmRhdGEucmVjdCxudW1JdGVtczp0aGlzLmRhdGEuZmllbGRWYWx1ZS5sZW5ndGgsbXVsdGlwbGVTZWxlY3Rpb246dGhpcy5kYXRhLm11bHRpU2VsZWN0LGhpZGRlbjp0aGlzLmRhdGEuaGlkZGVuLGFjdGlvbnM6dGhpcy5kYXRhLmFjdGlvbnMsaXRlbXM6dGhpcy5kYXRhLm9wdGlvbnMscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHN0cm9rZUNvbG9yOnRoaXMuZGF0YS5ib3JkZXJDb2xvcixmaWxsQ29sb3I6dGhpcy5kYXRhLmJhY2tncm91bmRDb2xvcixyb3RhdGlvbjp0aGlzLnJvdGF0aW9uLHR5cGU6ZX19YW1lbmRTYXZlZERpY3QoZSx0KXtpZighdGhpcy5oYXNJbmRpY2VzKXJldHVybjtsZXQgYT1lPy5nZXQodGhpcy5kYXRhLmlkKT8udmFsdWU7QXJyYXkuaXNBcnJheShhKXx8KGE9W2FdKTtjb25zdCByPVtdLHtvcHRpb25zOml9PXRoaXMuZGF0YTtmb3IobGV0IGU9MCx0PTAsbj1pLmxlbmd0aDtlPG47ZSsrKWlmKGlbZV0uZXhwb3J0VmFsdWU9PT1hW3RdKXtyLnB1c2goZSk7dCs9MX10LnNldCgiSSIscil9YXN5bmMgX2dldEFwcGVhcmFuY2UoZSx0LHIsaSl7aWYodGhpcy5kYXRhLmNvbWJvKXJldHVybiBzdXBlci5fZ2V0QXBwZWFyYW5jZShlLHQscixpKTtsZXQgbixzO2NvbnN0IG89aT8uZ2V0KHRoaXMuZGF0YS5pZCk7aWYobyl7cz1vLnJvdGF0aW9uO249by52YWx1ZX1pZih2b2lkIDA9PT1zJiZ2b2lkIDA9PT1uJiYhdGhpcy5fbmVlZEFwcGVhcmFuY2VzKXJldHVybiBudWxsO3ZvaWQgMD09PW4/bj10aGlzLmRhdGEuZmllbGRWYWx1ZTpBcnJheS5pc0FycmF5KG4pfHwobj1bbl0pO2xldHt3aWR0aDpjLGhlaWdodDpsfT10aGlzOzkwIT09cyYmMjcwIT09c3x8KFtjLGxdPVtsLGNdKTtjb25zdCBoPXRoaXMuZGF0YS5vcHRpb25zLmxlbmd0aCx1PVtdO2ZvcihsZXQgZT0wO2U8aDtlKyspe2NvbnN0e2V4cG9ydFZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdO24uaW5jbHVkZXModCkmJnUucHVzaChlKX10aGlzLl9kZWZhdWx0QXBwZWFyYW5jZXx8KHRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE9cGFyc2VEZWZhdWx0QXBwZWFyYW5jZSh0aGlzLl9kZWZhdWx0QXBwZWFyYW5jZT0iL0hlbHZldGljYSAwIFRmIDAgZyIpKTtjb25zdCBkPWF3YWl0IFdpZGdldEFubm90YXRpb24uX2dldEZvbnREYXRhKGUsdCx0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLHRoaXMuX2ZpZWxkUmVzb3VyY2VzLm1lcmdlZFJlc291cmNlcyk7bGV0IGYse2ZvbnRTaXplOmd9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYoZylmPXRoaXMuX2RlZmF1bHRBcHBlYXJhbmNlO2Vsc2V7Y29uc3QgZT0obC0xKS9oO2xldCB0LGE9LTE7Zm9yKGNvbnN0e2Rpc3BsYXlWYWx1ZTplfW9mIHRoaXMuZGF0YS5vcHRpb25zKXtjb25zdCByPXRoaXMuX2dldFRleHRXaWR0aChlLGQpO2lmKHI+YSl7YT1yO3Q9ZX19W2YsZ109dGhpcy5fY29tcHV0ZUZvbnRTaXplKGUsYy00LHQsZCwtMSl9Y29uc3QgcD1nKmEsbT0ocC1nKS8yLGI9TWF0aC5mbG9vcihsL3ApO2xldCB5PTA7aWYodS5sZW5ndGg+MCl7Y29uc3QgZT1NYXRoLm1pbiguLi51KSx0PU1hdGgubWF4KC4uLnUpO3k9TWF0aC5tYXgoMCx0LWIrMSk7eT5lJiYoeT1lKX1jb25zdCB3PU1hdGgubWluKHkrYisxLGgpLHg9WyIvVHggQk1DIHEiLGAxIDEgJHtjfSAke2x9IHJlIFcgbmBdO2lmKHUubGVuZ3RoKXt4LnB1c2goIjAuNjAwMDA2IDAuNzU2ODY2IDAuODU0OTA0IHJnIik7Zm9yKGNvbnN0IGUgb2YgdSl5PD1lJiZlPHcmJngucHVzaChgMSAke2wtKGUteSsxKSpwfSAke2N9ICR7cH0gcmUgZmApfXgucHVzaCgiQlQiLGYsYDEgMCAwIDEgMCAke2x9IFRtYCk7Y29uc3QgUz17c2hpZnQ6MH07Zm9yKGxldCBlPXk7ZTx3O2UrKyl7Y29uc3R7ZGlzcGxheVZhbHVlOnR9PXRoaXMuZGF0YS5vcHRpb25zW2VdLGE9ZT09PXk/bTowO3gucHVzaCh0aGlzLl9yZW5kZXJUZXh0KHQsZCxnLGMsMCxTLDIsLXArYSkpfXgucHVzaCgiRVQgUSBFTUMiKTtyZXR1cm4geC5qb2luKCJcbiIpfX1jbGFzcyBTaWduYXR1cmVXaWRnZXRBbm5vdGF0aW9uIGV4dGVuZHMgV2lkZ2V0QW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuZmllbGRWYWx1ZT1udWxsO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9IXRoaXMuZGF0YS5oYXNPd25DYW52YXN9Z2V0RmllbGRPYmplY3QoKXtyZXR1cm57aWQ6dGhpcy5kYXRhLmlkLHZhbHVlOm51bGwscGFnZTp0aGlzLmRhdGEucGFnZUluZGV4LHR5cGU6InNpZ25hdHVyZSJ9fX1jbGFzcyBUZXh0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLm5vUm90YXRlPSEwO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1ELlRFWFQ7aWYodGhpcy5kYXRhLmhhc0FwcGVhcmFuY2UpdGhpcy5kYXRhLm5hbWU9Ik5vSWNvbiI7ZWxzZXt0aGlzLmRhdGEucmVjdFsxXT10aGlzLmRhdGEucmVjdFszXS0yMjt0aGlzLmRhdGEucmVjdFsyXT10aGlzLmRhdGEucmVjdFswXSsyMjt0aGlzLmRhdGEubmFtZT10LmhhcygiTmFtZSIpP3QuZ2V0KCJOYW1lIikubmFtZToiTm90ZSJ9aWYodC5oYXMoIlN0YXRlIikpe3RoaXMuZGF0YS5zdGF0ZT10LmdldCgiU3RhdGUiKXx8bnVsbDt0aGlzLmRhdGEuc3RhdGVNb2RlbD10LmdldCgiU3RhdGVNb2RlbCIpfHxudWxsfWVsc2V7dGhpcy5kYXRhLnN0YXRlPW51bGw7dGhpcy5kYXRhLnN0YXRlTW9
101kZWw9bnVsbH19fWNsYXNzIExpbmtBbm5vdGF0aW9uIGV4dGVuZHMgQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQsYW5ub3RhdGlvbkdsb2JhbHM6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9RC5MSU5LO3RoaXMuZGF0YS5ub0hUTUw9ITE7Y29uc3Qgcj1nZXRRdWFkUG9pbnRzKHQsdGhpcy5yZWN0YW5nbGUpO3ImJih0aGlzLmRhdGEucXVhZFBvaW50cz1yKTt0aGlzLmRhdGEuYm9yZGVyQ29sb3J8fD10aGlzLmRhdGEuY29sb3I7Q2F0YWxvZy5wYXJzZURlc3REaWN0aW9uYXJ5KHtkZXN0RGljdDp0LHJlc3VsdE9iajp0aGlzLmRhdGEsZG9jQmFzZVVybDphLmJhc2VVcmwsZG9jQXR0YWNobWVudHM6YS5hdHRhY2htZW50c30pfWdldCBvdmVybGF5c1RleHRDb250ZW50KCl7cmV0dXJuITB9fWNsYXNzIFBvcHVwQW5ub3RhdGlvbiBleHRlbmRzIEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0fT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1ELlBPUFVQO3RoaXMuZGF0YS5ub0hUTUw9ITE7MCE9PXRoaXMud2lkdGgmJjAhPT10aGlzLmhlaWdodHx8KHRoaXMuZGF0YS5yZWN0PW51bGwpO2xldCBhPXQuZ2V0KCJQYXJlbnQiKTtpZighYSl7d2FybigiUG9wdXAgYW5ub3RhdGlvbiBoYXMgYSBtaXNzaW5nIG9yIGludmFsaWQgcGFyZW50IGFubm90YXRpb24uIik7cmV0dXJufXRoaXMuZGF0YS5wYXJlbnRSZWN0PWxvb2t1cE5vcm1hbFJlY3QoYS5nZXRBcnJheSgiUmVjdCIpLG51bGwpO3RoaXMuZGF0YS5jcmVhdGlvbkRhdGU9YS5nZXQoIkNyZWF0aW9uRGF0ZSIpfHwiIjtpc05hbWUoYS5nZXQoIlJUIiksTSkmJihhPWEuZ2V0KCJJUlQiKSk7aWYoYS5oYXMoIk0iKSl7dGhpcy5zZXRNb2RpZmljYXRpb25EYXRlKGEuZ2V0KCJNIikpO3RoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPXRoaXMubW9kaWZpY2F0aW9uRGF0ZX1lbHNlIHRoaXMuZGF0YS5tb2RpZmljYXRpb25EYXRlPW51bGw7aWYoYS5oYXMoIkMiKSl7dGhpcy5zZXRDb2xvcihhLmdldEFycmF5KCJDIikpO3RoaXMuZGF0YS5jb2xvcj10aGlzLmNvbG9yfWVsc2UgdGhpcy5kYXRhLmNvbG9yPW51bGw7aWYoIXRoaXMudmlld2FibGUpe2NvbnN0IGU9YS5nZXQoIkYiKTt0aGlzLl9pc1ZpZXdhYmxlKGUpJiZ0aGlzLnNldEZsYWdzKGUpfXRoaXMuc2V0VGl0bGUoYS5nZXQoIlQiKSk7dGhpcy5kYXRhLnRpdGxlT2JqPXRoaXMuX3RpdGxlO3RoaXMuc2V0Q29udGVudHMoYS5nZXQoIkNvbnRlbnRzIikpO3RoaXMuZGF0YS5jb250ZW50c09iaj10aGlzLl9jb250ZW50czthLmhhcygiUkMiKSYmKHRoaXMuZGF0YS5yaWNoVGV4dD1YRkFGYWN0b3J5LmdldFJpY2hUZXh0QXNIdG1sKGEuZ2V0KCJSQyIpKSk7dGhpcy5kYXRhLm9wZW49ISF0LmdldCgiT3BlbiIpfXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCxhKXtjb25zdHtvbGRBbm5vdGF0aW9uOnIscmVjdDppLHBhcmVudDpufT1lLHM9cnx8bmV3IERpY3QodCk7cy5zZXRJZk5vdEV4aXN0cygiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO3Muc2V0SWZOb3RFeGlzdHMoIlN1YnR5cGUiLE5hbWUuZ2V0KCJQb3B1cCIpKTtzLnNldElmTm90RXhpc3RzKCJPcGVuIiwhMSk7cy5zZXRJZkFycmF5KCJSZWN0IixpKTtzLnNldCgiUGFyZW50IixuKTtyZXR1cm4gc31zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7cmV0dXJuIG51bGx9fWNsYXNzIEZyZWVUZXh0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTtjb25zdHthbm5vdGF0aW9uR2xvYmFsczp0LGV2YWx1YXRvck9wdGlvbnM6YSx4cmVmOnJ9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuRlJFRVRFWFQ7dGhpcy5zZXREZWZhdWx0QXBwZWFyYW5jZShlKTt0aGlzLl9oYXNBcHBlYXJhbmNlPSEhdGhpcy5hcHBlYXJhbmNlO2lmKHRoaXMuX2hhc0FwcGVhcmFuY2Upe2NvbnN0e2ZvbnRDb2xvcjplLGZvbnRTaXplOml9PWZ1bmN0aW9uIHBhcnNlQXBwZWFyYW5jZVN0cmVhbShlLHQsYSxyKXtyZXR1cm4gbmV3IEFwcGVhcmFuY2VTdHJlYW1FdmFsdWF0b3IoZSx0LGEscikucGFyc2UoKX0odGhpcy5hcHBlYXJhbmNlLGEscix0Lmdsb2JhbENvbG9yU3BhY2VDYWNoZSk7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250Q29sb3I9ZTt0aGlzLmRhdGEuZGVmYXVsdEFwcGVhcmFuY2VEYXRhLmZvbnRTaXplPWl8fDEwfWVsc2V7dGhpcy5kYXRhLmRlZmF1bHRBcHBlYXJhbmNlRGF0YS5mb250U2l6ZXx8PTEwO2NvbnN0e2ZvbnRDb2xvcjp0LGZvbnRTaXplOmF9PXRoaXMuZGF0YS5kZWZhdWx0QXBwZWFyYW5jZURhdGE7aWYodGhpcy5fY29udGVudHMuc3RyKXt0aGlzLmRhdGEudGV4dENvbnRlbnQ9dGhpcy5fY29udGVudHMuc3RyLnNwbGl0KC9cclxuP3xcbi8pLm1hcChlPT5lLnRyaW1FbmQoKSk7Y29uc3R7Y29vcmRzOmUsYmJveDp0LG1hdHJpeDpyfT1GYWtlVW5pY29kZUZvbnQuZ2V0Rmlyc3RQb3NpdGlvbkluZm8odGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixhKTt0aGlzLmRhdGEudGV4dFBvc2l0aW9uPXRoaXMuX3RyYW5zZm9ybVBvaW50KGUsdCxyKX1pZih0aGlzLl9pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCl7Y29uc3QgaT1lLmRpY3QuZ2V0KCJDQSIpLG49bmV3IEZha2VVbmljb2RlRm9udChyLCJzYW5zLXNlcmlmIik7dGhpcy5hcHBlYXJhbmNlPW4uY3JlYXRlQXBwZWFyYW5jZSh0aGlzLl9jb250ZW50cy5zdHIsdGhpcy5yZWN0YW5nbGUsdGhpcy5yb3RhdGlvbixhLHQsaSk7dGhpcy5fc3RyZWFtcy5wdXNoKHRoaXMuYXBwZWFyYW5jZSl9ZWxzZSB3YXJuKCJGcmVlVGV4dEFubm90YXRpb246IE9mZnNjcmVlbkNhbnZhcyBpcyBub3Qgc3VwcG9ydGVkLCBhbm5vdGF0aW9uIG1heSBub3QgcmVuZGVyIGNvcnJlY3RseS4iKX19Z2V0IGhhc1RleHRDb250ZW50KCl7cmV0dXJuIHRoaXMuX2hhc0FwcGVhcmFuY2V9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjphLGFwOnJ9KXtjb25zdHtjb2xvcjppLGRhdGU6bixmb250U2l6ZTpzLG9sZEFubm90YXRpb246byxyZWN0OmMscm90YXRpb246bCx1c2VyOmgsdmFsdWU6dX09ZSxkPW98fG5ldyBEaWN0K
101HQpO2Quc2V0SWZOb3RFeGlzdHMoIlR5cGUiLE5hbWUuZ2V0KCJBbm5vdCIpKTtkLnNldElmTm90RXhpc3RzKCJTdWJ0eXBlIixOYW1lLmdldCgiRnJlZVRleHQiKSk7ZC5zZXQobz8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKG4pfWApO28mJmQuZGVsZXRlKCJSQyIpO2Quc2V0SWZBcnJheSgiUmVjdCIsYyk7Y29uc3QgZj1gL0hlbHYgJHtzfSBUZiAke2dldFBkZkNvbG9yKGksITApfWA7ZC5zZXQoIkRBIixmKTtkLnNldElmRGVmaW5lZCgiQ29udGVudHMiLHN0cmluZ1RvQXNjaWlPclVURjE2QkUodSkpO2Quc2V0SWZOb3RFeGlzdHMoIkYiLDQpO2Quc2V0SWZOb3RFeGlzdHMoIkJvcmRlciIsWzAsMCwwXSk7ZC5zZXRJZk51bWJlcigiUm90YXRlIixsKTtkLnNldElmRGVmaW5lZCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShoKSk7aWYoYXx8cil7Y29uc3QgZT1uZXcgRGljdCh0KTtkLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixhfHxyKX1yZXR1cm4gZH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQscil7Y29uc3R7YmFzZUZvbnRSZWY6aSxldmFsdWF0b3I6bix0YXNrOnN9PXIse2NvbG9yOm8sZm9udFNpemU6YyxyZWN0Omwscm90YXRpb246aCx2YWx1ZTp1fT1lO2lmKCFvKXJldHVybiBudWxsO2NvbnN0IGQ9bmV3IERpY3QodCksZj1uZXcgRGljdCh0KTtpZihpKWYuc2V0KCJIZWx2IixpKTtlbHNle2NvbnN0IGU9bmV3IERpY3QodCk7ZS5zZXRJZk5hbWUoIkJhc2VGb250IiwiSGVsdmV0aWNhIik7ZS5zZXRJZk5hbWUoIlR5cGUiLCJGb250Iik7ZS5zZXRJZk5hbWUoIlN1YnR5cGUiLCJUeXBlMSIpO2Uuc2V0SWZOYW1lKCJFbmNvZGluZyIsIldpbkFuc2lFbmNvZGluZyIpO2Yuc2V0KCJIZWx2IixlKX1kLnNldCgiRm9udCIsZik7Y29uc3QgZz1hd2FpdCBXaWRnZXRBbm5vdGF0aW9uLl9nZXRGb250RGF0YShuLHMse2ZvbnROYW1lOiJIZWx2Iixmb250U2l6ZTpjfSxkKSxbcCxtLGIseV09bDtsZXQgdz1iLXAseD15LW07aCUxODAhPTAmJihbdyx4XT1beCx3XSk7Y29uc3QgUz11LnNwbGl0KCJcbiIpLGs9Yy8xZTM7bGV0IEM9LTEvMDtjb25zdCB2PVtdO2ZvcihsZXQgZSBvZiBTKXtjb25zdCB0PWcuZW5jb2RlU3RyaW5nKGUpO2lmKHQubGVuZ3RoPjEpcmV0dXJuIG51bGw7ZT10LmpvaW4oIiIpO3YucHVzaChlKTtsZXQgYT0wO2NvbnN0IHI9Zy5jaGFyc1RvR2x5cGhzKGUpO2Zvcihjb25zdCBlIG9mIHIpYSs9ZS53aWR0aCprO0M9TWF0aC5tYXgoQyxhKX1sZXQgRj0xO0M+dyYmKEY9dy9DKTtsZXQgVD0xO2NvbnN0IE89YSpjLEQ9MSpjLE09TypTLmxlbmd0aDtNPngmJihUPXgvTSk7Y29uc3QgUj1jKk1hdGgubWluKEYsVCk7bGV0IE4sRSxMO3N3aXRjaChoKXtjYXNlIDA6TD1bMSwwLDAsMV07RT1bbFswXSxsWzFdLHcseF07Tj1bbFswXSxsWzNdLURdO2JyZWFrO2Nhc2UgOTA6TD1bMCwxLC0xLDBdO0U9W2xbMV0sLWxbMl0sdyx4XTtOPVtsWzFdLC1sWzBdLURdO2JyZWFrO2Nhc2UgMTgwOkw9Wy0xLDAsMCwtMV07RT1bLWxbMl0sLWxbM10sdyx4XTtOPVstbFsyXSwtbFsxXS1EXTticmVhaztjYXNlIDI3MDpMPVswLC0xLDEsMF07RT1bLWxbM10sbFswXSx3LHhdO049Wy1sWzNdLGxbMl0tRF19Y29uc3QgXz1bInEiLGAke0wuam9pbigiICIpfSAwIDAgY21gLGAke0Uuam9pbigiICIpfSByZSBXIG5gLCJCVCIsYCR7Z2V0UGRmQ29sb3IobywhMCl9YCxgMCBUYyAvSGVsdiAke251bWJlclRvU3RyaW5nKFIpfSBUZmBdO18ucHVzaChgJHtOLmpvaW4oIiAiKX0gVGQgKCR7ZXNjYXBlU3RyaW5nKHZbMF0pfSkgVGpgKTtjb25zdCBVPW51bWJlclRvU3RyaW5nKE8pO2ZvcihsZXQgZT0xLHQ9di5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD12W2VdO18ucHVzaChgMCAtJHtVfSBUZCAoJHtlc2NhcGVTdHJpbmcodCl9KSBUamApfV8ucHVzaCgiRVQiLCJRIik7Y29uc3Qgaj1fLmpvaW4oIlxuIiksWD1uZXcgRGljdCh0KTtYLnNldCgiRm9ybVR5cGUiLDEpO1guc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO1guc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO1guc2V0KCJCQm94IixsKTtYLnNldCgiUmVzb3VyY2VzIixkKTtYLnNldCgiTWF0cml4IixbMSwwLDAsMSwtbFswXSwtbFsxXV0pO2NvbnN0IHE9bmV3IFN0cmluZ1N0cmVhbShqKTtxLmRpY3Q9WDtyZXR1cm4gcX19Y2xhc3MgTGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuTElORTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0IHI9bG9va3VwUmVjdCh0LmdldEFycmF5KCJMIiksWzAsMCwwLDBdKTt0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzPVV0aWwubm9ybWFsaXplUmVjdChyKTt0aGlzLnNldExpbmVFbmRpbmdzKHQuZ2V0QXJyYXkoIkxFIikpO3RoaXMuZGF0YS5saW5lRW5kaW5ncz10aGlzLmxpbmVFbmRpbmdzO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLGk9dC5nZXQoIkNBIiksbj1nZXRQZGZDb2xvckFycmF5KGdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkpLHM9bj9pOm51bGwsbz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGM9MipvLGw9W3RoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbMF0tYyx0aGlzLmRhdGEubGluZUNvb3JkaW5hdGVzWzFdLWMsdGhpcy5kYXRhLmxpbmVDb29yZGluYXRlc1syXStjLHRoaXMuZGF0YS5saW5lQ29vcmRpbmF0ZXNbM10rY107VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsbCl8fCh0aGlzLnJlY3RhbmdsZT1sKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOmAke299IHdgLHN0cm9rZUNvbG9yOmUsZmlsbENvbG9yOm4sc3Ryb2tlQWxwaGE6aSxmaWxsQWxwaGE6cyxwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHtyWzBdfSAke3JbMV19IG1gLGAke3JbMl19ICR7clszXX0gbGAsIlMiKTtyZXR1cm5bdFswXS1vLHRbN10tbyx0WzJdK28sdFszXStvXX19KX19fWNsYXNzIFNxdWFyZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuU1FVQVJFO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7aWYoIXRoaXMuYXBwZWFyYW5jZSl7Y29uc3QgZT1nZXRQZGZDb2xvckFycmF5KHRoaXMuY29sb3IsWzAsMCwwXSkscj10LmdldCgiQ0EiKSxpPWdldFBkZkNvbG9yQXJyYXkoZ2V0UmdiQ29sb3IodC5nZXRBcnJheSgiSUMiKSxudWxsKSksbj1pP3I6bnVsbDtpZigwPT09dGhpcy5ib3JkZXJTdHlsZS53aWR0aCYmIWkpcmV0dXJuO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6aSxzdHJva2VBbHBoYTpyLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzRdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbNV0rdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFs2XS10WzRdLXRoaXMuYm9yZGVyU3R5bGUud2lkdGgscz10WzNdLXRbN10tdGh
101pcy5ib3JkZXJTdHlsZS53aWR0aDtlLnB1c2goYCR7YX0gJHtyfSAke259ICR7c30gcmVgKTtpP2UucHVzaCgiQiIpOmUucHVzaCgiUyIpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzNdXX19KX19fWNsYXNzIENpcmNsZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuQ0lSQ0xFO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLHI9dC5nZXQoIkNBIiksaT1nZXRQZGZDb2xvckFycmF5KGdldFJnYkNvbG9yKHQuZ2V0QXJyYXkoIklDIiksbnVsbCkpLG49aT9yOm51bGw7aWYoMD09PXRoaXMuYm9yZGVyU3R5bGUud2lkdGgmJiFpKXJldHVybjtjb25zdCBzPTQvMypNYXRoLnRhbihNYXRoLlBJLzgpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7dGhpcy5ib3JkZXJTdHlsZS53aWR0aH0gd2Asc3Ryb2tlQ29sb3I6ZSxmaWxsQ29sb3I6aSxzdHJva2VBbHBoYTpyLGZpbGxBbHBoYTpuLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Y29uc3QgYT10WzBdK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixyPXRbMV0tdGhpcy5ib3JkZXJTdHlsZS53aWR0aC8yLG49dFs2XS10aGlzLmJvcmRlclN0eWxlLndpZHRoLzIsbz10WzddK3RoaXMuYm9yZGVyU3R5bGUud2lkdGgvMixjPWErKG4tYSkvMixsPXIrKG8tcikvMixoPShuLWEpLzIqcyx1PShvLXIpLzIqcztlLnB1c2goYCR7Y30gJHtvfSBtYCxgJHtjK2h9ICR7b30gJHtufSAke2wrdX0gJHtufSAke2x9IGNgLGAke259ICR7bC11fSAke2MraH0gJHtyfSAke2N9ICR7cn0gY2AsYCR7Yy1ofSAke3J9ICR7YX0gJHtsLXV9ICR7YX0gJHtsfSBjYCxgJHthfSAke2wrdX0gJHtjLWh9ICR7b30gJHtjfSAke299IGNgLCJoIik7aT9lLnB1c2goIkIiKTplLnB1c2goIlMiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fX1jbGFzcyBQb2x5bGluZUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuUE9MWUxJTkU7dGhpcy5kYXRhLmhhc093bkNhbnZhcz10aGlzLmRhdGEubm9Sb3RhdGU7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEudmVydGljZXM9bnVsbDtpZighKHRoaXMgaW5zdGFuY2VvZiBQb2x5Z29uQW5ub3RhdGlvbikpe3RoaXMuc2V0TGluZUVuZGluZ3ModC5nZXRBcnJheSgiTEUiKSk7dGhpcy5kYXRhLmxpbmVFbmRpbmdzPXRoaXMubGluZUVuZGluZ3N9Y29uc3Qgcj10LmdldEFycmF5KCJWZXJ0aWNlcyIpO2lmKCFpc051bWJlckFycmF5KHIsbnVsbCkpcmV0dXJuO2NvbnN0IGk9dGhpcy5kYXRhLnZlcnRpY2VzPUZsb2F0MzJBcnJheS5mcm9tKHIpO2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLHI9dC5nZXQoIkNBIik7bGV0IG4scz1nZXRSZ2JDb2xvcih0LmdldEFycmF5KCJJQyIpLG51bGwpO3MmJihzPWdldFBkZkNvbG9yQXJyYXkocykpO249cz90aGlzLmNvbG9yP3MuZXZlcnkoKHQsYSk9PnQ9PT1lW2FdKT8iZiI6IkIiOiJmIjoiUyI7Y29uc3Qgbz10aGlzLmJvcmRlclN0eWxlLndpZHRofHwxLGM9MipvLGw9WzEvMCwxLzAsLTEvMCwtMS8wXTtmb3IobGV0IGU9MCx0PWkubGVuZ3RoO2U8dDtlKz0yKVV0aWwucmVjdEJvdW5kaW5nQm94KGlbZV0tYyxpW2UrMV0tYyxpW2VdK2MsaVtlKzFdK2MsbCk7VXRpbC5pbnRlcnNlY3QodGhpcy5yZWN0YW5nbGUsbCl8fCh0aGlzLnJlY3RhbmdsZT1sKTt0aGlzLl9zZXREZWZhdWx0QXBwZWFyYW5jZSh7eHJlZjphLGV4dHJhOmAke299IHdgLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6cixmaWxsQ29sb3I6cyxmaWxsQWxwaGE6cz9yOm51bGwscG9pbnRzQ2FsbGJhY2s6KGUsdCk9Pntmb3IobGV0IHQ9MCxhPWkubGVuZ3RoO3Q8YTt0Kz0yKWUucHVzaChgJHtpW3RdfSAke2lbdCsxXX0gJHswPT09dD8ibSI6ImwifWApO2UucHVzaChuKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fX1jbGFzcyBQb2x5Z29uQW5ub3RhdGlvbiBleHRlbmRzIFBvbHlsaW5lQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9RC5QT0xZR09OfX1jbGFzcyBDYXJldEFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1ELkNBUkVUfX1jbGFzcyBJbmtBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEubm9IVE1MPSExO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuSU5LO3RoaXMuZGF0YS5pbmtMaXN0cz1bXTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExO3RoaXMuZGF0YS5vcGFjaXR5PXQuZ2V0KCJDQSIpfHwxO2NvbnN0IHI9dC5nZXRBcnJheSgiSW5rTGlzdCIpO2lmKEFycmF5LmlzQXJyYXkocikpe2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0OysrZSl7aWYoIUFycmF5LmlzQXJyYXkocltlXSkpY29udGludWU7Y29uc3QgdD1uZXcgRmxvYXQzMkFycmF5KHJbZV0ubGVuZ3RoKTt0aGlzLmRhdGEuaW5rTGlzdHMucHVzaCh0KTtmb3IobGV0IGk9MCxuPXJbZV0ubGVuZ3RoO2k8bjtpKz0yKXtjb25zdCBuPWEuZmV0Y2hJZlJlZihyW2VdW2ldKSxzPWEuZmV0Y2hJZlJlZihyW2VdW2krMV0pO2lmKCJudW1iZXIiPT10eXBlb2YgbiYmIm51bWJlciI9PXR5cGVvZiBzKXt0W2ldPW47dFtpKzFdPXN9fX1pZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxyPXQuZ2V0KCJDQSIpLGk9dGhpcy5ib3JkZXJTdHlsZS53aWR0aHx8MSxuPTIqaSxzPVsxLzAsMS8wLC0xLzAsLTEvMF07Zm9yKGNvbnN0IGUgb2YgdGhpcy5kYXRhLmlua0xpc3RzKWZvcihsZXQgdD0wLGE9ZS5sZW5ndGg7dDxhO3QrPTIpVXRpbC5yZWN0Qm91bmRpbmdCb3goZVt0XS1uLGVbdCsxXS1uLGVbdF0rbixlW3QrMV0rbixzKTtVdGlsLmludGVyc2VjdCh0aGlzLnJlY3RhbmdsZSxzKXx8KHRoaXMucmVjdGFuZ2xlPXMpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6YCR7aX0gd2Asc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57Zm9yKGNvbnN0IHQgb2YgdGhpcy5kYXRhLmlua0xpc3RzKXtmb3IobGV0IGE9MCxyPXQubGVuZ3RoO2E8cjthKz0yKWUucHVzaChgJHt0W2FdfSAke3RbYSsxXX0gJHswPT09YT8ibSI6ImwifWApO2UucHVzaCgiUyIpfXJldHVyblt0WzBdLHRbN10sdFsyXSx0WzN
101dXX19KX19fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpyfSl7Y29uc3R7b2xkQW5ub3RhdGlvbjppLGNvbG9yOm4sZGF0ZTpzLG9wYWNpdHk6byxwYXRoczpjLG91dGxpbmVzOmwscmVjdDpoLHJvdGF0aW9uOnUsdGhpY2tuZXNzOmQsdXNlcjpmfT1lLGc9aXx8bmV3IERpY3QodCk7Zy5zZXRJZk5vdEV4aXN0cygiVHlwZSIsTmFtZS5nZXQoIkFubm90IikpO2cuc2V0SWZOb3RFeGlzdHMoIlN1YnR5cGUiLE5hbWUuZ2V0KCJJbmsiKSk7Zy5zZXQoaT8iTSI6IkNyZWF0aW9uRGF0ZSIsYEQ6JHtnZXRNb2RpZmljYXRpb25EYXRlKHMpfWApO2cuc2V0SWZBcnJheSgiUmVjdCIsaCk7Zy5zZXRJZkFycmF5KCJJbmtMaXN0IixsPy5wb2ludHN8fGM/LnBvaW50cyk7Zy5zZXRJZk5vdEV4aXN0cygiRiIsNCk7Zy5zZXRJZk51bWJlcigiUm90YXRlIix1KTtnLnNldElmRGVmaW5lZCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShmKSk7bCYmZy5zZXRJZk5hbWUoIklUIiwiSW5rSGlnaGxpZ2h0Iik7aWYoZD4wKXtjb25zdCBlPW5ldyBEaWN0KHQpO2cuc2V0KCJCUyIsZSk7ZS5zZXQoIlciLGQpfWcuc2V0SWZBcnJheSgiQyIsZ2V0UGRmQ29sb3JBcnJheShuKSk7Zy5zZXRJZk51bWJlcigiQ0EiLG8pO2lmKHJ8fGEpe2NvbnN0IGU9bmV3IERpY3QodCk7Zy5zZXQoIkFQIixlKTtlLnNldCgiTiIsYXx8cil9cmV0dXJuIGd9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW0oZSx0LGEpe2lmKGUub3V0bGluZXMpcmV0dXJuIHRoaXMuY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbUZvckhpZ2hsaWdodChlLHQsYSk7Y29uc3R7Y29sb3I6cixyZWN0OmkscGF0aHM6bix0aGlja25lc3M6cyxvcGFjaXR5Om99PWU7aWYoIXIpcmV0dXJuIG51bGw7Y29uc3QgYz1bYCR7c30gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihyLCExKX1gXTsxIT09byYmYy5wdXNoKCIvUjAgZ3MiKTtmb3IoY29uc3QgZSBvZiBuLmxpbmVzKXtjLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcoZVs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVs1XSl9IG1gKTtmb3IobGV0IHQ9NixhPWUubGVuZ3RoO3Q8YTt0Kz02KWlmKGlzTmFOKGVbdF0pKWMucHVzaChgJHtudW1iZXJUb1N0cmluZyhlW3QrNF0pfSAke251bWJlclRvU3RyaW5nKGVbdCs1XSl9IGxgKTtlbHNle2NvbnN0W2EscixpLG4scyxvXT1lLnNsaWNlKHQsdCs2KTtjLnB1c2goW2EscixpLG4scyxvXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX02PT09ZS5sZW5ndGgmJmMucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbGApfWMucHVzaCgiUyIpO2NvbnN0IGw9Yy5qb2luKCJcbiIpLGg9bmV3IERpY3QodCk7aC5zZXQoIkZvcm1UeXBlIiwxKTtoLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtoLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtoLnNldCgiQkJveCIsaSk7aC5zZXQoIkxlbmd0aCIsbC5sZW5ndGgpO2lmKDEhPT1vKXtjb25zdCBlPW5ldyBEaWN0KHQpLGE9bmV3IERpY3QodCkscj1uZXcgRGljdCh0KTtyLnNldCgiQ0EiLG8pO3Iuc2V0SWZOYW1lKCJUeXBlIiwiRXh0R1N0YXRlIik7YS5zZXQoIlIwIixyKTtlLnNldCgiRXh0R1N0YXRlIixhKTtoLnNldCgiUmVzb3VyY2VzIixlKX1jb25zdCB1PW5ldyBTdHJpbmdTdHJlYW0obCk7dS5kaWN0PWg7cmV0dXJuIHV9c3RhdGljIGFzeW5jIGNyZWF0ZU5ld0FwcGVhcmFuY2VTdHJlYW1Gb3JIaWdobGlnaHQoZSx0LGEpe2NvbnN0e2NvbG9yOnIscmVjd
101DppLG91dGxpbmVzOntvdXRsaW5lOm59LG9wYWNpdHk6c309ZTtpZighcilyZXR1cm4gbnVsbDtjb25zdCBvPVtgJHtnZXRQZGZDb2xvcihyLCEwKX1gLCIvUjAgZ3MiXTtvLnB1c2goYCR7bnVtYmVyVG9TdHJpbmcobls0XSl9ICR7bnVtYmVyVG9TdHJpbmcobls1XSl9IG1gKTtmb3IobGV0IGU9Nix0PW4ubGVuZ3RoO2U8dDtlKz02KWlmKGlzTmFOKG5bZV0pKW8ucHVzaChgJHtudW1iZXJUb1N0cmluZyhuW2UrNF0pfSAke251bWJlclRvU3RyaW5nKG5bZSs1XSl9IGxgKTtlbHNle2NvbnN0W3QsYSxyLGkscyxjXT1uLnNsaWNlKGUsZSs2KTtvLnB1c2goW3QsYSxyLGkscyxjXS5tYXAobnVtYmVyVG9TdHJpbmcpLmpvaW4oIiAiKSsiIGMiKX1vLnB1c2goImggZiIpO2NvbnN0IGM9by5qb2luKCJcbiIpLGw9bmV3IERpY3QodCk7bC5zZXQoIkZvcm1UeXBlIiwxKTtsLnNldElmTmFtZSgiU3VidHlwZSIsIkZvcm0iKTtsLnNldElmTmFtZSgiVHlwZSIsIlhPYmplY3QiKTtsLnNldCgiQkJveCIsaSk7bC5zZXQoIkxlbmd0aCIsYy5sZW5ndGgpO2NvbnN0IGg9bmV3IERpY3QodCksdT1uZXcgRGljdCh0KTtoLnNldCgiRXh0R1N0YXRlIix1KTtsLnNldCgiUmVzb3VyY2VzIixoKTtjb25zdCBkPW5ldyBEaWN0KHQpO3Uuc2V0KCJSMCIsZCk7ZC5zZXRJZk5hbWUoIkJNIiwiTXVsdGlwbHkiKTtpZigxIT09cyl7ZC5zZXQoImNhIixzKTtkLnNldElmTmFtZSgiVHlwZSIsIkV4dEdTdGF0ZSIpfWNvbnN0IGY9bmV3IFN0cmluZ1N0cmVhbShjKTtmLmRpY3Q9bDtyZXR1cm4gZn19Y2xhc3MgSGlnaGxpZ2h0QW5ub3RhdGlvbiBleHRlbmRzIE1hcmt1cEFubm90YXRpb257Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3R7ZGljdDp0LHhyZWY6YX09ZTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9RC5ISUdITElHSFQ7dGhpcy5kYXRhLmlzRWRpdGFibGU9IXRoaXMuZGF0YS5ub0hUTUw7dGhpcy5kYXRhLm5vSFRNTD0hMTt0aGlzLmRhdGEub3BhY2l0eT10LmdldCgiQ0EiKXx8MTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2NvbnN0IGU9dGhpcy5hcHBlYXJhbmNlPy5kaWN0LmdldCgiUmVzb3VyY2VzIik7aWYoIXRoaXMuYXBwZWFyYW5jZXx8IWU/LmhhcygiRXh0R1N0YXRlIikpe3RoaXMuYXBwZWFyYW5jZSYmd2FybigiSGlnaGxpZ2h0QW5ub3RhdGlvbiAtIGlnbm9yaW5nIGJ1aWx0LWluIGFwcGVhcmFuY2Ugc3RyZWFtLiIpO2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFsxLDEsMF0pLHI9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxmaWxsQ29sb3I6ZSxibGVuZE1vZGU6Ik11bHRpcGx5IixmaWxsQWxwaGE6cixwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHt0WzBdfSAke3RbMV19IG1gLGAke3RbMl19ICR7dFszXX0gbGAsYCR7dFs2XX0gJHt0WzddfSBsYCxgJHt0WzRdfSAke3RbNV19IGxgLCJmIik7cmV0dXJuW3RbMF0sdFs3XSx0WzJdLHRbM11dfX0pfX1lbHNlIHRoaXMuZGF0YS5wb3B1cFJlZj1udWxsfWdldCBvdmVybGF5c1RleHRDb250ZW50KCl7cmV0dXJuITB9c3RhdGljIGNyZWF0ZU5ld0RpY3QoZSx0LHthcFJlZjphLGFwOnJ9KXtjb25zdHtjb2xvcjppLGRhdGU6bixvbGRBbm5vdGF0aW9uOnMsb3BhY2l0eTpvLHJlY3Q6Yyxyb3RhdGlvbjpsLHVzZXI6aCxxdWFkUG9pbnRzOnV9PWUsZD1zfHxuZXcgRGljdCh0KTtkLnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7ZC5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIkhpZ2hsaWdodCIpKTtkLnNldChzPyJNIjoiQ3JlYXRpb25EYXRlIixgRDoke2dldE1vZGlmaWNhdGlvbkRhdGUobil9YCk7ZC5zZXRJZkFycmF5KCJSZWN0IixjKTtkLnNldElmTm90RXhpc3RzKCJGIiw0KTtkLnNldElmTm90RXhpc3RzKCJCb3JkZXIiLFswLDAsMF0pO2Quc2V0SWZOdW1iZXIoIlJvdGF0ZSIsbCk7ZC5zZXRJZkFycmF5KCJRdWFkUG9pbnRzIix1KTtkLnNldElmQXJyYXkoIkMiLGdldFBkZkNvbG9yQXJyYXkoaSkpO2Quc2V0SWZOdW1iZXIoIkNBIixvKTtkLnNldElmRGVmaW5lZCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShoKSk7aWYoYXx8cil7Y29uc3QgZT1uZXcgRGljdCh0KTtkLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixhfHxyKX1yZXR1cm4gZH1zdGF0aWMgYXN5bmMgY3JlYXRlTmV3QXBwZWFyYW5jZVN0cmVhbShlLHQsYSl7Y29uc3R7Y29sb3I6cixyZWN0Omksb3V0bGluZXM6bixvcGFjaXR5OnN9PWU7aWYoIXIpcmV0dXJuIG51bGw7Y29uc3Qgbz1bYCR7Z2V0UGRmQ29sb3IociwhMCl9YCwiL1IwIGdzIl0sYz1bXTtmb3IoY29uc3QgZSBvZiBuKXtjLmxlbmd0aD0wO2MucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzBdKX0gJHtudW1iZXJUb1N0cmluZyhlWzFdKX0gbWApO2ZvcihsZXQgdD0yLGE9ZS5sZW5ndGg7dDxhO3QrPTIpYy5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdF0pfSAke251bWJlclRvU3RyaW5nKGVbdCsxXSl9IGxgKTtjLnB1c2goImgiKTtvLnB1c2goYy5qb2luKCJcbiIpKX1vLnB1c2goImYqIik7Y29uc3QgbD1vLmpvaW4oIlxuIiksaD1uZXcgRGljdCh0KTtoLnNldCgiRm9ybVR5cGUiLDEpO2guc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2guc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2guc2V0KCJCQm94IixpKTtoLnNldCgiTGVuZ3RoIixsLmxlbmd0aCk7Y29uc3QgdT1uZXcgRGljdCh0KSxkPW5ldyBEaWN0KHQpO3Uuc2V0KCJFeHRHU3RhdGUiLGQpO2guc2V0KCJSZXNvdXJjZXMiLHUpO2NvbnN0IGY9bmV3IERpY3QodCk7ZC5zZXQoIlIwIixmKTtmLnNldElmTmFtZSgiQk0iLCJNdWx0aXBseSIpO2lmKDEhPT1zKXtmLnNldCgiY2EiLHMpO2Yuc2V0SWZOYW1lKCJUeXBlIiwiRXh0R1N0YXRlIil9Y29uc3QgZz1uZXcgU3RyaW5nU3RyZWFtKGwpO2cuZGljdD1oO3JldHVybiBnfX1jbGFzcyBVbmRlcmxpbmVBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1ELlVOREVSTElORTtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLHI9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYToiW10gMCBkIDAuNTcxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6cixwb2ludHNDYWxsYmFjazooZSx0KT0+e2UucHVzaChgJHt0WzRdfSAke3RbNV0rMS4zfSBtYCxgJHt0WzZdfSAke3RbN10rMS4zfSBsYCwiUyIpO3JldHVyblt0WzBdLHRbN10sdFsyXSx0WzN
101dXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiEwfX1jbGFzcyBTcXVpZ2dseUFubm90YXRpb24gZXh0ZW5kcyBNYXJrdXBBbm5vdGF0aW9ue2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO2NvbnN0e2RpY3Q6dCx4cmVmOmF9PWU7dGhpcy5kYXRhLmFubm90YXRpb25UeXBlPUQuU1FVSUdHTFk7aWYodGhpcy5kYXRhLnF1YWRQb2ludHM9Z2V0UXVhZFBvaW50cyh0LG51bGwpKXtpZighdGhpcy5hcHBlYXJhbmNlKXtjb25zdCBlPWdldFBkZkNvbG9yQXJyYXkodGhpcy5jb2xvcixbMCwwLDBdKSxyPXQuZ2V0KCJDQSIpO3RoaXMuX3NldERlZmF1bHRBcHBlYXJhbmNlKHt4cmVmOmEsZXh0cmE6IltdIDAgZCAxIHciLHN0cm9rZUNvbG9yOmUsc3Ryb2tlQWxwaGE6cixwb2ludHNDYWxsYmFjazooZSx0KT0+e2NvbnN0IGE9KHRbMV0tdFs1XSkvNjtsZXQgcj1hLGk9dFs0XTtjb25zdCBuPXRbNV0scz10WzZdO2UucHVzaChgJHtpfSAke24rcn0gbWApO2Rve2krPTI7cj0wPT09cj9hOjA7ZS5wdXNoKGAke2l9ICR7bityfSBsYCl9d2hpbGUoaTxzKTtlLnB1c2goIlMiKTtyZXR1cm5bdFs0XSxuLTIqYSxzLG4rMiphXX19KX19ZWxzZSB0aGlzLmRhdGEucG9wdXBSZWY9bnVsbH1nZXQgb3ZlcmxheXNUZXh0Q29udGVudCgpe3JldHVybiEwfX1jbGFzcyBTdHJpa2VPdXRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1ELlNUUklLRU9VVDtpZih0aGlzLmRhdGEucXVhZFBvaW50cz1nZXRRdWFkUG9pbnRzKHQsbnVsbCkpe2lmKCF0aGlzLmFwcGVhcmFuY2Upe2NvbnN0IGU9Z2V0UGRmQ29sb3JBcnJheSh0aGlzLmNvbG9yLFswLDAsMF0pLHI9dC5nZXQoIkNBIik7dGhpcy5fc2V0RGVmYXVsdEFwcGVhcmFuY2Uoe3hyZWY6YSxleHRyYToiW10gMCBkIDEgdyIsc3Ryb2tlQ29sb3I6ZSxzdHJva2VBbHBoYTpyLHBvaW50c0NhbGxiYWNrOihlLHQpPT57ZS5wdXNoKCh0WzBdK3RbNF0pLzIrIiAiKyh0WzFdK3RbNV0pLzIrIiBtIiwodFsyXSt0WzZdKS8yKyIgIisodFszXSt0WzddKS8yKyIgbCIsIlMiKTtyZXR1cm5bdFswXSx0WzddLHRbMl0sdFszXV19fSl9fWVsc2UgdGhpcy5kYXRhLnBvcHVwUmVmPW51bGx9Z2V0IG92ZXJsYXlzVGV4dENvbnRlbnQoKXtyZXR1cm4hMH19Y2xhc3MgU3RhbXBBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbnsjQmU9bnVsbDtjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTt0aGlzLmRhdGEuYW5ub3RhdGlvblR5cGU9RC5TVEFNUDt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuZGF0YS5ub1JvdGF0ZTt0aGlzLmRhdGEuaXNFZGl0YWJsZT0hdGhpcy5kYXRhLm5vSFRNTDt0aGlzLmRhdGEubm9IVE1MPSExfW11c3RCZVZpZXdlZFdoZW5FZGl0aW5nKGUsdD1udWxsKXtpZihlKXtpZighdGhpcy5kYXRhLmlzRWRpdGFibGUpcmV0dXJuITA7dGhpcy4jQmU/Pz10aGlzLmRhdGEuaGFzT3duQ2FudmFzO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9ITA7cmV0dXJuITB9aWYobnVsbCE9PXRoaXMuI0JlKXt0aGlzLmRhdGEuaGFzT3duQ2FudmFzPXRoaXMuI0JlO3RoaXMuI0JlPW51bGx9cmV0dXJuIXQ/Lmhhcyh0aGlzLmRhdGEuaWQpfXN0YXRpYyBhc3luYyBjcmVhdGVJbWFnZShlLHQpe2NvbnN0e3dpZHRoOmEsaGVpZ2h0OnJ9PWUsaT1uZXcgT2Zmc2NyZWVuQ2FudmFzKGEsciksbj1pLmdldENvbnRleHQoIjJkIix7YWxwaGE6ITB9KTtuLmRyYXdJbWFnZShlLDAsMCk7Y29uc3Qgcz1uLmdldEltYWdlRGF0YSgwLDAsYSxyKS5kYXRhLG89bmV3IFVpbnQzMkFycmF5KHMuYnVmZmVyKSxjPW8uc29tZShGZWF0dXJlVGVzdC5pc0xpdHRsZUVuZGlhbj9lPT5lPj4+MjQhPTI1NTplPT4hISgyNTUmfmUpKTtpZihjKXtuLmZpbGxTdHlsZT0id2hpdGUiO24uZmlsbFJlY3QoMCwwLGEscik7bi5kcmF3SW1hZ2UoZSwwLDApfWNvbnN0IGw9aS5jb252ZXJ0VG9CbG9iKHt0eXBlOiJpbWFnZS9qcGVnIixxdWFsaXR5OjF9KS50aGVuKGU9PmUuYXJyYXlCdWZmZXIoKSksaD1OYW1lLmdldCgiWE9iamVjdCIpLHU9TmFtZS5nZXQoIkltYWdlIiksZD1uZXcgRGljdCh0KTtkLnNldCgiVHlwZSIsaCk7ZC5zZXQoIlN1YnR5cGUiLHUpO2Quc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KTtkLnNldElmTmFtZSgiQ29sb3JTcGFjZSIsIkRldmljZVJHQiIpO2Quc2V0SWZOYW1lKCJGaWx0ZXIiLCJEQ1REZWNvZGUiKTtkLnNldCgiQkJveCIsWzAsMCxhLHJdKTtkLnNldCgiV2lkdGgiLGEpO2Quc2V0KCJIZWlnaHQiLHIpO2xldCBmPW51bGw7aWYoYyl7Y29uc3QgZT1uZXcgVWludDhBcnJheShvLmxlbmd0aCk7aWYoRmVhdHVyZVRlc3QuaXNMaXR0bGVFbmRpYW4pZm9yKGxldCB0PTAsYT1vLmxlbmd0aDt0PGE7dCsrKWVbdF09b1t0XT4+PjI0O2Vsc2UgZm9yKGxldCB0PTAsYT1vLmxlbmd0aDt0PGE7dCsrKWVbdF09MjU1Jm9bdF07Y29uc3QgaT1uZXcgRGljdCh0KTtpLnNldCgiVHlwZSIsaCk7aS5zZXQoIlN1YnR5cGUiLHUpO2kuc2V0KCJCaXRzUGVyQ29tcG9uZW50Iiw4KTtpLnNldElmTmFtZSgiQ29sb3JTcGFjZSIsIkRldmljZUdyYXkiKTtpLnNldCgiV2lkdGgiLGEpO2kuc2V0KCJIZWlnaHQiLHIpO2Y9bmV3IFN0cmVhbShlLDAsMCxpKX1yZXR1cm57aW1hZ2VTdHJlYW06bmV3IFN0cmVhbShhd2FpdCBsLDAsMCxkKSxzbWFza1N0cmVhbTpmLHdpZHRoOmEsaGVpZ2h0OnJ9fXN0YXRpYyBjcmVhdGVOZXdEaWN0KGUsdCx7YXBSZWY6YSxhcDpyfSl7Y29uc3R7ZGF0ZTppLG9sZEFubm90YXRpb246bixyZWN0OnMscm90YXRpb246byx1c2VyOmN9PWUsbD1ufHxuZXcgRGljdCh0KTtsLnNldElmTm90RXhpc3RzKCJUeXBlIixOYW1lLmdldCgiQW5ub3QiKSk7bC5zZXRJZk5vdEV4aXN0cygiU3VidHlwZSIsTmFtZS5nZXQoIlN0YW1wIikpO2wuc2V0KG4/Ik0iOiJDcmVhdGlvbkRhdGUiLGBEOiR7Z2V0TW9kaWZpY2F0aW9uRGF0ZShpKX1gKTtsLnNldElmQXJyYXkoIlJlY3QiLHMpO2wuc2V0SWZOb3RFeGlzdHMoIkYiLDQpO2wuc2
101V0SWZOb3RFeGlzdHMoIkJvcmRlciIsWzAsMCwwXSk7bC5zZXRJZk51bWJlcigiUm90YXRlIixvKTtsLnNldElmRGVmaW5lZCgiVCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRShjKSk7aWYoYXx8cil7Y29uc3QgZT1uZXcgRGljdCh0KTtsLnNldCgiQVAiLGUpO2Uuc2V0KCJOIixhfHxyKX1yZXR1cm4gbH1zdGF0aWMgYXN5bmMjTmUoZSx0KXtjb25zdHthcmVDb250b3VyczphLGNvbG9yOnIscmVjdDppLGxpbmVzOm4sdGhpY2tuZXNzOnN9PWU7aWYoIXIpcmV0dXJuIG51bGw7Y29uc3Qgbz1bYCR7c30gdyAxIEogMSBqYCxgJHtnZXRQZGZDb2xvcihyLGEpfWBdO2Zvcihjb25zdCBlIG9mIG4pe28ucHVzaChgJHtudW1iZXJUb1N0cmluZyhlWzRdKX0gJHtudW1iZXJUb1N0cmluZyhlWzVdKX0gbWApO2ZvcihsZXQgdD02LGE9ZS5sZW5ndGg7dDxhO3QrPTYpaWYoaXNOYU4oZVt0XSkpby5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbdCs0XSl9ICR7bnVtYmVyVG9TdHJpbmcoZVt0KzVdKX0gbGApO2Vsc2V7Y29uc3RbYSxyLGksbixzLGNdPWUuc2xpY2UodCx0KzYpO28ucHVzaChbYSxyLGksbixzLGNdLm1hcChudW1iZXJUb1N0cmluZykuam9pbigiICIpKyIgYyIpfTY9PT1lLmxlbmd0aCYmby5wdXNoKGAke251bWJlclRvU3RyaW5nKGVbNF0pfSAke251bWJlclRvU3RyaW5nKGVbNV0pfSBsYCl9by5wdXNoKGE/IkYiOiJTIik7Y29uc3QgYz1vLmpvaW4oIlxuIiksbD1uZXcgRGljdCh0KTtsLnNldCgiRm9ybVR5cGUiLDEpO2wuc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2wuc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2wuc2V0KCJCQm94IixpKTtsLnNldCgiTGVuZ3RoIixjLmxlbmd0aCk7Y29uc3QgaD1uZXcgU3RyaW5nU3RyZWFtKGMpO2guZGljdD1sO3JldHVybiBofXN0YXRpYyBhc3luYyBjcmVhdGVOZXdBcHBlYXJhbmNlU3RyZWFtKGUsdCxhKXtpZihlLm9sZEFubm90YXRpb24pcmV0dXJuIG51bGw7aWYoZS5pc1NpZ25hdHVyZSlyZXR1cm4gdGhpcy4jTmUoZSx0KTtjb25zdHtyb3RhdGlvbjpyfT1lLHtpbWFnZVJlZjppLHdpZHRoOm4saGVpZ2h0OnN9PWEuaW1hZ2Usbz1uZXcgRGljdCh0KSxjPW5ldyBEaWN0KHQpO28uc2V0KCJYT2JqZWN0IixjKTtjLnNldCgiSW0wIixpKTtjb25zdCBsPWBxICR7bn0gMCAwICR7c30gMCAwIGNtIC9JbTAgRG8gUWAsaD1uZXcgRGljdCh0KTtoLnNldCgiRm9ybVR5cGUiLDEpO2guc2V0SWZOYW1lKCJTdWJ0eXBlIiwiRm9ybSIpO2guc2V0SWZOYW1lKCJUeXBlIiwiWE9iamVjdCIpO2guc2V0KCJCQm94IixbMCwwLG4sc10pO2guc2V0KCJSZXNvdXJjZXMiLG8pO2lmKHIpe2NvbnN0IGU9Z2V0Um90YXRpb25NYXRyaXgocixuLHMpO2guc2V0KCJNYXRyaXgiLGUpfWNvbnN0IHU9bmV3IFN0cmluZ1N0cmVhbShsKTt1LmRpY3Q9aDtyZXR1cm4gdX19Y2xhc3MgRmlsZUF0dGFjaG1lbnRBbm5vdGF0aW9uIGV4dGVuZHMgTWFya3VwQW5ub3RhdGlvbntjb25zdHJ1Y3RvcihlKXtzdXBlcihlKTtjb25zdHtkaWN0OnQseHJlZjphfT1lLHI9bmV3IEZpbGVTcGVjKHQuZ2V0KCJGUyIpLGEpO3RoaXMuZGF0YS5hbm5vdGF0aW9uVHlwZT1ELkZJTEVBVFRBQ0hNRU5UO3RoaXMuZGF0YS5oYXNPd25DYW52YXM9dGhpcy5kYXRhLm5vUm90YXRlO3RoaXMuZGF0YS5ub0hUTUw9ITE7dGhpcy5kYXRhLmZpbGU9ci5zZXJpYWxpemFibGU7Y29uc3QgaT10LmdldCgiTmFtZSIpO3RoaXMuZGF0YS5uYW1lPWkgaW5zdGFuY2VvZiBOYW1lP3N0cmluZ1RvUERGU3RyaW5nKGkubmFtZSk6IlB1c2hQaW4iO2NvbnN0IG49dC5nZXQoImNhIik7dGhpcy5kYXRhLmZpbGxBbHBoYT0ibnVtYmVyIj09dHlwZW9mIG4mJm4+PTAmJm48PTE/bjpudWxsfX1jb25zdCBhYz17Z2V0IHIoKXtyZXR1cm4gc2hhZG93KHRoaXMsInIiLG5ldyBVaW50OEFycmF5KFs3LDEyLDE3LDIyLDcsMTIsMTcsMjIsNywxMiwxNywyMiw3LDEyLDE3LDIyLDUsOSwxNCwyMCw1LDksMTQsMjAsNSw5LDE0LDIwLDUsOSwxNCwyMCw0LDExLDE2LDIzLDQsMTEsMTYsMjMsNCwxMSwxNiwyMyw0LDExLDE2LDIzLDYsMTAsMTUsMjEsNiwxMCwxNSwyMSw2LDEwLDE1LDIxLDYsMTAsMTUsMjFdKSl9LGdldCBrKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJrIixuZXcgSW50MzJBcnJheShbLTY4MDg3NjkzNiwtMzg5NTY0NTg2LDYwNjEwNTgxOSwtMTA0NDUyNTMzMCwtMTc2NDE4ODk3LDEyMDAwODA0MjYsLTE0NzMyMzEzNDEsLTQ1NzA1OTgzLDE3NzAwMzU0MTYsLTE5NTg0MTQ0MTcsLTQyMDYzLC0xOTkwNDA0MTYyLDE4MDQ2MDM2ODIsLTQwMzQxMTAxLC0xNTAyMDAyMjkwLDEyMzY1MzUzMjksLTE2NTc5NjUxMCwtMTA2OTUwMTYzMiw2NDM3MTc3MTMsLTM3Mzg5NzMwMiwtNzAxNTU4NjkxLDM4MDE2MDgzLC02NjA0NzgzMzUsLTQwNTUzNzg0OCw1Njg0NDY0MzgsLTEwMTk4MDM2OTAsLTE4NzM2Mzk2MSwxMTYzNTMxNTAxLC0xNDQ0NjgxNDY3LC01MTQwMzc4NCwxNzM1MzI4NDczLC0xOTI2NjA3NzM0LC0zNzg1NTgsLTIwMjI1NzQ0NjMsMTgzOTAzMDU2MiwtMzUzMDk1NTYsLTE1MzA5OTIwNjAsMTI3Mjg5MzM1MywtMTU1NDk3NjMyLC0xMDk0NzMwNjQwLDY4MTI3OTE3NCwtMzU4NTM3MjIyLC03MjI1MjE5NzksNzYwMjkxODksLTY0MDM2NDQ4NywtNDIxODE1ODM1LDUzMDc0MjUyMCwtOTk1MzM4NjUxLC0xOTg2MzA4NDQsMTEyNjg5MTQxNSwtMTQxNjM1NDkwNSwtNTc0MzQwNTUsMTcwMDQ4NTU3MSwtMTg5NDk4NjYwNiwtMTA1MTUyMywtMjA1NDkyMjc5OSwxODczMzEzMzU5LC0zMDYxMTc0NCwtMTU2MDE5ODM4MCwxMzA5MTUxNjQ5LC0xNDU1MjMwNzAsLTExMjAyMTAzNzksNzE4Nzg3MjU5LC0zNDM0ODU1NTFdKSl9fTtmdW5jdGlvbiBjYWxjdWxhdGVNR
101DUoZSx0LGEpe2xldCByPTE3MzI1ODQxOTMsaT0tMjcxNzMzODc5LG49LTE3MzI1ODQxOTQscz0yNzE3MzM4Nzg7Y29uc3Qgbz1hKzcyJi02NCxjPW5ldyBVaW50OEFycmF5KG8pO2xldCBsLGg7Zm9yKGw9MDtsPGE7KytsKWNbbF09ZVt0KytdO2NbbCsrXT0xMjg7Y29uc3QgdT1vLTg7bDx1JiYobD11KTtjW2wrK109YTw8MyYyNTU7Y1tsKytdPWE+PjUmMjU1O2NbbCsrXT1hPj4xMyYyNTU7Y1tsKytdPWE+PjIxJjI1NTtjW2wrK109YT4+PjI5JjI1NTtsKz0zO2NvbnN0IGQ9bmV3IEludDMyQXJyYXkoMTYpLHtrOmYscjpnfT1hYztmb3IobD0wO2w8bzspe2ZvcihoPTA7aDwxNjsrK2gsbCs9NClkW2hdPWNbbF18Y1tsKzFdPDw4fGNbbCsyXTw8MTZ8Y1tsKzNdPDwyNDtsZXQgZSx0LGE9cixvPWksdT1uLHA9cztmb3IoaD0wO2g8NjQ7KytoKXtpZihoPDE2KXtlPW8mdXx+byZwO3Q9aH1lbHNlIGlmKGg8MzIpe2U9cCZvfH5wJnU7dD01KmgrMSYxNX1lbHNlIGlmKGg8NDgpe2U9b151XnA7dD0zKmgrNSYxNX1lbHNle2U9dV4ob3x+cCk7dD03KmgmMTV9Y29uc3Qgcj1wLGk9YStlK2ZbaF0rZFt0XXwwLG49Z1toXTtwPXU7dT1vO289bysoaTw8bnxpPj4+MzItbil8MDthPXJ9cj1yK2F8MDtpPWkrb3wwO249bit1fDA7cz1zK3B8MH1yZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzI1NSZyLHI+PjgmMjU1LHI+PjE2JjI1NSxyPj4+MjQmMjU1LDI1NSZpLGk+PjgmMjU1LGk+PjE2JjI1NSxpPj4+MjQmMjU1LDI1NSZuLG4+PjgmMjU1LG4+PjE2JjI1NSxuPj4+MjQmMjU1LDI1NSZzLHM+PjgmMjU1LHM+PjE2JjI1NSxzPj4+MjQmMjU1XSl9ZnVuY3Rpb24gZGVjb2RlU3RyaW5nKGUpe3RyeXtyZXR1cm4gc3RyaW5nVG9VVEY4U3RyaW5nKGUpfWNhdGNoKHQpe3dhcm4oYFVURi04IGRlY29kaW5nIGZhaWxlZDogIiR7dH0iLmApO3JldHVybiBlfX1jbGFzcyBEYXRhc2V0WE1MUGFyc2VyIGV4dGVuZHMgU2ltcGxlWE1MUGFyc2Vye2NvbnN0cnVjdG9yKGUpe3N1cGVyKGUpO3RoaXMubm9kZT1udWxsfW9uRW5kRWxlbWVudChlKXtjb25zdCB0PXN1cGVyLm9uRW5kRWxlbWVudChlKTtpZih0JiYieGZhOmRhdGFzZXRzIj09PWUpe3RoaXMubm9kZT10O3Rocm93IG5ldyBFcnJvcigiQWJvcnRpbmcgRGF0YXNldFhNTFBhcnNlci4iKX19fWNsYXNzIERhdGFzZXRSZWFkZXJ7Y29uc3RydWN0b3IoZSl7aWYoZS5kYXRhc2V0cyl0aGlzLm5vZGU9bmV3IFNpbXBsZVhNTFBhcnNlcih7aGFzQXR0cmlidXRlczohMH0pLnBhcnNlRnJvbVN0cmluZyhlLmRhdGFzZXRzKS5kb2N1bWVudEVsZW1lbnQ7ZWxzZXtjb25zdCB0PW5ldyBEYXRhc2V0WE1MUGFyc2VyKHtoYXNBdHRyaWJ1dGVzOiEwfSk7dHJ5e3QucGFyc2VGcm9tU3RyaW5nKGVbInhkcDp4ZHAiXSl9Y2F0Y2h7fXRoaXMubm9kZT10Lm5vZGV9fWdldFZhbHVlKGUpe2lmKCF0aGlzLm5vZGV8fCFlKXJldHVybiIiO2NvbnN0IHQ9dGhpcy5ub2RlLnNlYXJjaE5vZGUocGFyc2VYRkFQYXRoKGUpLDApO2lmKCF0KXJldHVybiIiO2NvbnN0IGE9dC5maXJzdENoaWxkO3JldHVybiJ2YWx1ZSI9PT1hPy5ub2RlTmFtZT90LmNoaWxkcmVuLm1hcChlPT5kZWNvZGVTdHJpbmcoZS50ZXh0Q29udGVudCkpOmRlY29kZVN0cmluZyh0LnRleHRDb250ZW50KX19Y2xhc3MgU2luZ2xlSW50ZXJzZWN0b3J7I1BlO21pblg9MS8wO21pblk9MS8wO21heFg9LTEvMDttYXhZPS0xLzA7I0VlPW51bGw7I0xlPVtdOyNfZT1bXTsjVWU9LTE7I2plPSExO2NvbnN0cnVjdG9yKGUpe3RoaXMuI1BlPWU7Y29uc3QgdD1lLmRhdGEucXVhZFBvaW50cztpZih0KXtmb3IobGV0IGU9MCxhPXQubGVuZ3RoO2U8YTtlKz04KXt0aGlzLm1pblg9TWF0aC5taW4odGhpcy5taW5YLHRbZV0pO3RoaXMubWF4WD1NYXRoLm1heCh0aGlzLm1heFgsdFtlKzJdKTt0aGlzLm1pblk9TWF0aC5taW4odGhpcy5taW5ZLHRbZSs1XSk7dGhpcy5tYXhZPU1hdGgubWF4KHRoaXMubWF4WSx0W2UrMV0pfXQubGVuZ3RoPjgmJih0aGlzLiNFZT10KX1lbHNlW3RoaXMubWluWCx0aGlzLm1pblksdGhpcy5tYXhYLHRoaXMubWF4WV09ZS5kYXRhLnJlY3R9I1hlKGUsdCl7aWYodGhpcy5taW5YPj1lfHx0aGlzLm1heFg8PWV8fHRoaXMubWluWT49dHx8dGhpcy5tYXhZPD10KXJldHVybiExO2NvbnN0IGE9dGhpcy4jRWU7aWYoIWEpcmV0dXJuITA7aWYodGhpcy4jVWU+PTApe2NvbnN0IHI9dGhpcy4jVWU7aWYoIShhW3JdPj1lfHxhW3IrMl08PWV8fGFbcis1XT49dHx8YVtyKzFdPD10KSlyZXR1cm4hMDt0aGlzLiNVZT0tMX1mb3IobGV0IHI9MCxpPWEubGVuZ3RoO3I8aTtyKz04KWlmKCEoYVtyXT49ZXx8YVtyKzJdPD1lfHxhW3IrNV0+PXR8fGFbcisxXTw9dCkpe3RoaXMuI1VlPXI7cmV0dXJuITB9cmV0dXJuITF9YWRkR2x5cGgoZSx0LGEpe2lmKCF0aGlzLiNYZShlLHQpKXt0aGlzLmRpc2FibGVFeHRyYUNoYXJzKCk7cmV0dXJuITF9aWYodGhpcy4jX2UubGVuZ3RoPjApe3RoaXMuI0xlLnB1c2godGhpcy4jX2Uuam9pbigiIikpO3RoaXMuI19lLmxlbmd0aD0wfXRoaXMuI0xlLnB1c2goYSk7dGhpcy4jamU9ITA7cmV0dXJuITB9YWRkRXh0cmFDaGFyKGUpe3RoaXMuI2plJiZ0aGlzLiNfZS5wdXNoKGUpfWRpc2FibGVFeHRyYUNoYXJzKCl7aWYodGhpcy4jamUpe3RoaXMuI2plPSExO3RoaXMuI19lLmxlbmd0aD0wfX1zZXRUZXh0KCl7dGhpcy4jUGUuZGF0YS5vdmVybGFpZFRleHQ9dGhpcy4jTGUuam9pbigiIil9fWNvbnN0IHJjPTY0O2NsYXNzIEludGVyc2VjdG9yeyNxZT1bXTsjSGU9W107I1dlOyN6ZTsjJGU7I0dlOyNWZTsjS2U7Y29uc3RydWN0b3IoZSl7bGV0IHQ9MS8wLGE9MS8wLHI9LTEvMCxpPS0xLzA7Y29uc3Qgbj10aGlzLiNxZTtmb3IoY29uc3QgcyBvZiBlKXtpZighcy5kYXRhLnF1YWRQb2ludHMmJiFzLmRhdGEucmVjdCljb250aW51ZTtjb25zdCBlPW5ldyBTaW5nbGVJbnRlcnNlY3RvcihzKTtuLnB1c2goZSk7dD1NYXRoLm1pbih0LGUubWluWCk7YT1NYXRoLm1pbihhLGUubWluWSk7cj1NYXRoLm1heChyLGUubWF4WCk7aT1NYXRoLm1heChpLGUubWF4WSl9dGhpcy4jV2U9dDt0aGlzLiMkZT1hO3RoaXMuI3plPXI7dGhpcy4jR2U9aTt0aGlzLiNWZT02My8oci10KTt0aGlzLiNLZT02My8oaS1hKTtmb3IoY29uc3QgZSBvZiBuKXtjb25zdCB0PXRoaXMuI0plKGUubWluWCxlLm1pblkpLGE9dGhpcy4jSmU
101oZS5tYXhYLGUubWF4WSkscj0oYS10KSVyYyxpPU1hdGguZmxvb3IoKGEtdCkvcmMpO2ZvcihsZXQgYT10O2E8PXQraSpyYzthKz1yYylmb3IobGV0IHQ9MDt0PD1yO3QrKyl7bGV0IHI9dGhpcy4jSGVbYSt0XTtyfHwodGhpcy4jSGVbYSt0XT1yPVtdKTtyLnB1c2goZSl9fX0jSmUoZSx0KXtyZXR1cm4gTWF0aC5mbG9vcigoZS10aGlzLiNXZSkqdGhpcy4jVmUpK01hdGguZmxvb3IoKHQtdGhpcy4jJGUpKnRoaXMuI0tlKSpyY31hZGRHbHlwaChlLHQsYSxyKXtjb25zdCBpPWVbNF0rdC8yLG49ZVs1XSthLzI7aWYoaTx0aGlzLiNXZXx8bjx0aGlzLiMkZXx8aT50aGlzLiN6ZXx8bj50aGlzLiNHZSlyZXR1cm47Y29uc3Qgcz10aGlzLiNIZVt0aGlzLiNKZShpLG4pXTtpZihzKWZvcihjb25zdCBlIG9mIHMpZS5hZGRHbHlwaChpLG4scil9YWRkRXh0cmFDaGFyKGUpe2Zvcihjb25zdCB0IG9mIHRoaXMuI3FlKXQuYWRkRXh0cmFDaGFyKGUpfXNldFRleHQoKXtmb3IoY29uc3QgZSBvZiB0aGlzLiNxZSllLnNldFRleHQoKX19Y2xhc3MgV29yZDY0e2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5oaWdoPTB8ZTt0aGlzLmxvdz0wfHR9YW5kKGUpe3RoaXMuaGlnaCY9ZS5oaWdoO3RoaXMubG93Jj1lLmxvd314b3IoZSl7dGhpcy5oaWdoXj1lLmhpZ2g7dGhpcy5sb3dePWUubG93fXNoaWZ0UmlnaHQoZSl7aWYoZT49MzIpe3RoaXMubG93PXRoaXMuaGlnaD4+PmUtMzJ8MDt0aGlzLmhpZ2g9MH1lbHNle3RoaXMubG93PXRoaXMubG93Pj4+ZXx0aGlzLmhpZ2g8PDMyLWU7dGhpcy5oaWdoPXRoaXMuaGlnaD4+PmV8MH19cm90YXRlUmlnaHQoZSl7bGV0IHQsYTtpZigzMiZlKXthPXRoaXMubG93O3Q9dGhpcy5oaWdofWVsc2V7dD10aGlzLmxvdzthPXRoaXMuaGlnaH1lJj0zMTt0aGlzLmxvdz10Pj4+ZXxhPDwzMi1lO3RoaXMuaGlnaD1hPj4+ZXx0PDwzMi1lfW5vdCgpe3RoaXMuaGlnaD1+dGhpcy5oaWdoO3RoaXMubG93PX50aGlzLmxvd31hZGQoZSl7Y29uc3QgdD0odGhpcy5sb3c+Pj4wKSsoZS5sb3c+Pj4wKTtsZXQgYT0odGhpcy5oaWdoPj4+MCkrKGUuaGlnaD4+PjApO3Q+NDI5NDk2NzI5NSYmKGErPTEpO3RoaXMubG93PTB8dDt0aGlzLmhpZ2g9MHxhfWNvcHlUbyhlLHQpe2VbdF09dGhpcy5oaWdoPj4+MjQmMjU1O2VbdCsxXT10aGlzLmhpZ2g+PjE2JjI1NTtlW3QrMl09dGhpcy5oaWdoPj44JjI1NTtlW3QrM109MjU1JnRoaXMuaGlnaDtlW3QrNF09dGhpcy5sb3c+Pj4yNCYyNTU7ZVt0KzVdPXRoaXMubG93Pj4xNiYyNTU7ZVt0KzZdPXRoaXMubG93Pj44JjI1NTtlW3QrN109MjU1JnRoaXMubG93fWFzc2lnbihlKXt0aGlzLmhpZ2g9ZS5oaWdoO3RoaXMubG93PWUubG93fX1jb25zdCBpYz17Z2V0IGsoKXtyZXR1cm4gc2hhZG93KHRoaXMsImsiLFtuZXcgV29yZDY0KDExMTYzNTI0MDgsMzYwOTc2NzQ1OCksbmV3IFdvcmQ2NCgxODk5NDQ3NDQxLDYwMjg5MTcyNSksbmV3IFdvcmQ2NCgzMDQ5MzIzNDcxLDM5NjQ0ODQzOTkpLG5ldyBXb3JkNjQoMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxuZXcgV29yZDY0KDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxuZXcgV29yZDY0KDE1MDg5NzA5OTMsMzA1MzgzNDI2NSksbmV3IFdvcmQ2NCgyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLG5ldyBXb3JkNjQoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxuZXcgV29yZDY0KDM2MjQzODEwODAsMjczNDg4MzM5NCksbmV3IFdvcmQ2NCgzMTA1OTg0MDEsMTE2NDk5NjU0MiksbmV3IFdvcmQ2NCg2MDcyMjUyNzgsMTMyMzYxMDc2NCksbmV3IFdvcmQ2NCgxNDI2ODgxOTg3LDM1OTAzMDQ5OTQpLG5ldyBXb3JkNjQoMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxuZXcgV29yZDY0KDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxuZXcgV29yZDY0KDI2MTQ4ODgxMDMsNjMzODAzMzE3KSxuZXcgV29yZDY0KDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCksbmV3IFdvcmQ2NCgzODM1MzkwNDAxLDI2NjY2MTM0NTgpLG5ldyBXb3JkNjQoNDAyMjIyNDc3NCw5NDQ3MTExMzkpLG5ldyBXb3JkNjQoMjY0MzQ3MDc4LDIzNDEyNjI3NzMpLG5ldyBXb3JkNjQoNjA0ODA3NjI4LDIwMDc4MDA5MzMpLG5ldyBXb3JkNjQoNzcwMjU1OTgzLDE0OTU5OTA5MDEpLG5ldyBXb3JkNjQoMTI0OTE1MDEyMiwxODU2NDMxMjM1KSxuZXcgV29yZDY0KDE1NTUwODE2OTIsMzE3NTIxODEzMiksbmV3IFdvcmQ2NCgxOTk2MDY0OTg2LDIxOTg5NTA4MzcpLG5ldyBXb3JkNjQoMjU1NDIyMDg4MiwzOTk5NzE5MzM5KSxuZXcgV29yZDY0KDI4MjE4MzQzNDksNzY2Nzg0MDE2KSxuZXcgV29yZDY0KDI5NTI5OTY4MDgsMjU2NjU5NDg3OSksbmV3IFdvcmQ2NCgzMjEwMzEzNjcxLDMyMDMzMzc5NTYpLG5ldyBXb3JkNjQoMzMzNjU3MTg5MSwxMDM0NDU3MDI2KSxuZXcgV29yZDY0KDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSksbmV3IFdvcmQ2NCgxMTM5MjY5OTMsMzc1ODMyNjM4MyksbmV3IFdvcmQ2NCgzMzgyNDE4OTUsMTY4NzE3OTM2KSxuZXcgV29yZDY0KDY2NjMwNzIwNSwxMTg4MTc5OTY0KSxuZXcgV29yZDY0KDc3MzUyOTkxMiwxNTQ2MDQ1NzM0KSxuZXcgV29yZDY0KDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSksbmV3IFdvcmQ2NCgxMzk2MTgyMjkxLDI2NDM4MzM4MjMpLG5ldyBXb3JkNjQoMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxuZXcgV29yZDY0KDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCksbmV3IFdvcmQ2NCgyMTc3MDI2MzUwLDEyMDY3NTkxNDIpLG5ldyBXb3JkNjQoMjQ1Njk1NjAzNywzNDQwNzc2MjcpLG5ldyBXb3JkNjQoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxuZXcgV29yZDY0KDI4MjAzMDI0MTEsMzE1ODQ1NDI3MyksbmV3IFdvcmQ2NCgzMjU5NzMwODAwLDM1MDU5NTI2NTcpLG5ldyBXb3JkNjQoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLG5ldyBXb3JkNjQoMzUxNjA2NTgxNywzNjA2MDA4MzQ0KSxuZXcgV29yZDY0KDM2MDAzNTI4MDQsMTQzMjcyNTc3NiksbmV3IFdvcmQ2NCg0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLG5ldyBXb3JkNjQoMjc1NDIzMzQ0LDg1MTE2OTcyMCksbmV3IFdvcmQ2NCg0MzAyMjc3MzQsMzEwMDgy
101Mzc1MiksbmV3IFdvcmQ2NCg1MDY5NDg2MTYsMTM2MzI1ODE5NSksbmV3IFdvcmQ2NCg2NTkwNjA1NTYsMzc1MDY4NTU5MyksbmV3IFdvcmQ2NCg4ODM5OTc4NzcsMzc4NTA1MDI4MCksbmV3IFdvcmQ2NCg5NTgxMzk1NzEsMzMxODMwNzQyNyksbmV3IFdvcmQ2NCgxMzIyODIyMjE4LDM4MTI3MjM0MDMpLG5ldyBXb3JkNjQoMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxuZXcgV29yZDY0KDE3NDc4NzM3NzksMzYwMjAzNjg5OSksbmV3IFdvcmQ2NCgxOTU1NTYyMjIyLDE1NzU5OTAwMTIpLG5ldyBXb3JkNjQoMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxuZXcgV29yZDY0KDIyMjc3MzA0NTIsMjcxNjkwNDMwNiksbmV3IFdvcmQ2NCgyMzYxODUyNDI0LDQ0Mjc3NjA0NCksbmV3IFdvcmQ2NCgyNDI4NDM2NDc0LDU5MzY5ODM0NCksbmV3IFdvcmQ2NCgyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLG5ldyBXb3JkNjQoMzIwNDAzMTQ3OSwyOTk5MzUxNTczKSxuZXcgV29yZDY0KDMzMjkzMjUyOTgsMzgxNTkyMDQyNyksbmV3IFdvcmQ2NCgzMzkxNTY5NjE0LDM5MjgzODM5MDApLG5ldyBXb3JkNjQoMzUxNTI2NzI3MSw1NjYyODA3MTEpLG5ldyBXb3JkNjQoMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxuZXcgV29yZDY0KDQxMTg2MzAyNzEsNDAwMDIzOTk5MiksbmV3IFdvcmQ2NCgxMTY0MTg0NzQsMTkxNDEzODU1NCksbmV3IFdvcmQ2NCgxNzQyOTI0MjEsMjczMTA1NTI3MCksbmV3IFdvcmQ2NCgyODkzODAzNTYsMzIwMzk5MzAwNiksbmV3IFdvcmQ2NCg0NjAzOTMyNjksMzIwNjIwMzE1KSxuZXcgV29yZDY0KDY4NTQ3MTczMyw1ODc0OTY4MzYpLG5ldyBXb3JkNjQoODUyMTQyOTcxLDEwODY3OTI4NTEpLG5ldyBXb3JkNjQoMTAxNzAzNjI5OCwzNjU1NDMxMDApLG5ldyBXb3JkNjQoMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxuZXcgV29yZDY0KDEyODgwMzM0NzAsMzQwOTg1NTE1OCksbmV3IFdvcmQ2NCgxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYpLG5ldyBXb3JkNjQoMTYwNzE2NzkxNSw5ODcxNjc0NjgpLG5ldyBXb3JkNjQoMTgxNjQwMjMxNiwxMjQ2MTg5NTkxKV0pfX07ZnVuY3Rpb24gY2goZSx0LGEscixpKXtlLmFzc2lnbih0KTtlLmFuZChhKTtpLmFzc2lnbih0KTtpLm5vdCgpO2kuYW5kKHIpO2UueG9yKGkpfWZ1bmN0aW9uIG1haihlLHQsYSxyLGkpe2UuYXNzaWduKHQpO2UuYW5kKGEpO2kuYXNzaWduKHQpO2kuYW5kKHIpO2UueG9yKGkpO2kuYXNzaWduKGEpO2kuYW5kKHIpO2UueG9yKGkpfWZ1bmN0aW9uIHNpZ21hKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDI4KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM0KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDM5KTtlLnhvcihhKX1mdW5jdGlvbiBzaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE0KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDE4KTtlLnhvcihhKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDQxKTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYShlLHQsYSl7ZS5hc3NpZ24odCk7ZS5yb3RhdGVSaWdodCgxKTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDgpO2UueG9yKGEpO2EuYXNzaWduKHQpO2Euc2hpZnRSaWdodCg3KTtlLnhvcihhKX1mdW5jdGlvbiBsaXR0bGVTaWdtYVByaW1lKGUsdCxhKXtlLmFzc2lnbih0KTtlLnJvdGF0ZVJpZ2h0KDE5KTthLmFzc2lnbih0KTthLnJvdGF0ZVJpZ2h0KDYxKTtlLnhvcihhKTthLmFzc2lnbih0KTthLnNoaWZ0UmlnaHQoNik7ZS54b3IoYSl9ZnVuY3Rpb24gY2FsY3VsYXRlU0hBNTEyKGUsdCxhLHI9ITEpe2xldCBpLG4scyxvLGMsbCxoLHU7aWYocil7aT1uZXcgV29yZDY0KDM0MTgwNzAzNjUsMzIzODM3MTAzMik7bj1uZXcgV29yZDY0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKTtzPW5ldyBXb3JkNjQoMjQzODUyOTM3MCw4MTI3MDI5OTkpO289bmV3IFdvcmQ2NCgzNTU0NjIzNjAsNDE0NDkxMjY5Nyk7Yz1uZXcgV29yZDY0KDE3MzE0MDU0MTUsNDI5MDc3NTg1Nyk7bD1uZXcgV29yZDY0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSk7aD1uZXcgV29yZDY0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSk7dT1uZXcgV29yZDY0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCl9ZWxzZXtpPW5ldyBXb3JkNjQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKTtuPW5ldyBXb3JkNjQoMzE0NDEzNDI3NywyMjI3ODczNTk1KTtzPW5ldyBXb3JkNjQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKTtvPW5ldyBXb3JkNjQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KTtjPW5ldyBXb3JkNjQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KTtsPW5ldyBXb3JkNjQoMjYwMDgyMjkyNCw3MjU1MTExOTkpO2g9bmV3IFdvcmQ2NCg1Mjg3MzQ2MzUsNDIxNTM4OTU0Nyk7dT1uZXcgV29yZDY0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KX1jb25zdCBkPTEyOCpNYXRoLmNlaWwoKGErMTcpLzEyOCksZj1uZXcgVWludDhBcnJheShkKTtsZXQgZyxwO2ZvcihnPTA7ZzxhOysrZylmW2ddPWVbdCsrXTtmW2crK109MTI4O2NvbnN0IG09ZC0xNjtnPG0mJihnPW0pO2crPTExO2ZbZysrXT1hPj4+MjkmMjU1O2ZbZysrXT1hPj4yMSYyNTU7ZltnKytdPWE+PjEzJjI1NTtmW2crK109YT4+NSYyNTU7ZltnKytdPWE8PDMmMjU1O2NvbnN0IGI9bmV3IEFycmF5KDgwKTtmb3IoZz0wO2c8ODA7ZysrKWJbZ109bmV3IFdvcmQ2NCgwLDApO2NvbnN0e2s6eX09aWM7bGV0IHc9bmV3IFdvcmQ2NCgwLDApLHg9bmV3IFdvcmQ2NCgwLDApLFM9bmV3IFdvcmQ2NCgwLDApLGs9bmV3IFdvcmQ2NCgwLDApLEM9bmV3IFdvcmQ2NCgwLDApLHY9bmV3IFdvcmQ2NCgwLDApLEY9bmV3IFdvcmQ2NCgwLDApLFQ9bmV3IFdvcmQ2NCgwLDApO2NvbnN0IE89bmV3IFdvcmQ2NCgwLDApLEQ9bmV3IFdvcmQ2NCgwLDApLE09bmV3IFdvcmQ2NCgwLDApLFI9bmV3IFdvcmQ2NCgwLDApO2xldCBOLEU7Zm9yKGc9MDtnPGQ7KXtmb3IocD0wO3A8MTY7KytwKXtiW3BdLmhpZ2g9ZltnXTw8MjR8ZltnKzFdPDwxNnxmW2crMl08PDh8ZltnKzNdO2JbcF0ubG93PWZbZys0XTw8MjR8ZltnKzVdPDwxNnxmW2crNl08PDh8ZltnKzddO2crPTh9Zm9yKHA9MTY7cDw4MDsrK3Ape049YltwXTtsaXR0bGVTaWdtYVByaW1lKE4sYltwLTJdLFIpO04uYWRkKGJbcC03XSk7bGl0dGxlU2lnbWEoTSxiW3AtMTVdLFIpO04uYWRkKE0pO04uYWRkKGJbcC0xNl0pfXcuYXNzaWduKGkpO3guYXNzaWduKG4pO1MuYXNzaWduKHMpO2suYXNzaWduKG8pO0MuYXNzaWduKGMpO3YuYXNzaWduKGwpO0YuYXNzaWduKGgpO1QuYXNzaWduKHUpO2ZvcihwPTA7cDw4MDsrK3Ape08uYXNzaWduKFQpO3NpZ21hUHJpbWUoTSxDLFIpO08uYWRkKE0pO2NoKE0sQyx2LEYsUik7Ty5hZGQoTSk7Ty5hZGQoeVtwXSk7Ty5hZGQoYltwXSk7c2lnbWEoRCx3LFIpO21haihNLHcseCxTLF
101IpO0QuYWRkKE0pO049VDtUPUY7Rj12O3Y9QztrLmFkZChPKTtDPWs7az1TO1M9eDt4PXc7Ti5hc3NpZ24oTyk7Ti5hZGQoRCk7dz1OfWkuYWRkKHcpO24uYWRkKHgpO3MuYWRkKFMpO28uYWRkKGspO2MuYWRkKEMpO2wuYWRkKHYpO2guYWRkKEYpO3UuYWRkKFQpfWlmKHIpe0U9bmV3IFVpbnQ4QXJyYXkoNDgpO2kuY29weVRvKEUsMCk7bi5jb3B5VG8oRSw4KTtzLmNvcHlUbyhFLDE2KTtvLmNvcHlUbyhFLDI0KTtjLmNvcHlUbyhFLDMyKTtsLmNvcHlUbyhFLDQwKX1lbHNle0U9bmV3IFVpbnQ4QXJyYXkoNjQpO2kuY29weVRvKEUsMCk7bi5jb3B5VG8oRSw4KTtzLmNvcHlUbyhFLDE2KTtvLmNvcHlUbyhFLDI0KTtjLmNvcHlUbyhFLDMyKTtsLmNvcHlUbyhFLDQwKTtoLmNvcHlUbyhFLDQ4KTt1LmNvcHlUbyhFLDU2KX1yZXR1cm4gRX1mdW5jdGlvbiBjYWxjdWxhdGVTSEEzODQoZSx0LGEpe3JldHVybiBjYWxjdWxhdGVTSEE1MTIoZSx0LGEsITApfWNvbnN0IG5jPXtnZXQgaygpe3JldHVybiBzaGFkb3codGhpcywiayIsWzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0pfX07ZnVuY3Rpb24gcm90cihlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfY2goZSx0LGEpe3JldHVybiBlJnRefmUmYX1mdW5jdGlvbiBjYWxjdWxhdGVfc2hhMjU2X21haihlLHQsYSl7cmV0dXJuIGUmdF5lJmFedCZhfWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfc2lnbWEoZSl7cmV0dXJuIHJvdHIoZSwyKV5yb3RyKGUsMTMpXnJvdHIoZSwyMil9ZnVuY3Rpb24gY2FsY3VsYXRlX3NoYTI1Nl9zaWdtYVByaW1lKGUpe3JldHVybiByb3RyKGUsNilecm90cihlLDExKV5yb3RyKGUsMjUpfWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfbGl0dGxlU2lnbWEoZSl7cmV0dXJuIHJvdHIoZSw3KV5yb3RyKGUsMTgpXmU+Pj4zfWZ1bmN0aW9uIGNhbGN1bGF0ZV9zaGEyNTZfbGl0dGxlU2lnbWFQcmltZShlKXtyZXR1cm4gcm90cihlLDE3KV5yb3RyKGUsMTkpXmU+Pj4xMH1mdW5jdGlvbiBjYWxjdWxhdGVTSEEyNTYoZSx0LGEpe2xldCByPTE3NzkwMzM3MDMsaT0zMTQ0MTM0Mjc3LG49MTAxMzkwNDI0MixzPTI3NzM0ODA3NjIsbz0xMzU5ODkzMTE5LGM9MjYwMDgyMjkyNCxsPTUyODczNDYzNSxoPTE1NDE0NTkyMjU7Y29uc3QgdT02NCpNYXRoLmNlaWwoKGErOSkvNjQpLGQ9bmV3IFVpbnQ4QXJyYXkodSk7bGV0IGYsZztmb3IoZj0wO2Y8YTsrK2YpZFtmXT1lW3QrK107ZFtmKytdPTEyODtjb25zdCBwPXUtODtmPHAmJihmPXApO2YrPTM7ZFtmKytdPWE+Pj4yOSYyNTU7ZFtmKytdPWE+PjIxJjI1NTtkW2YrK109YT4+MTMmMjU1O2RbZisrXT1hPj41JjI1NTtkW2YrK109YTw8MyYyNTU7Y29uc3QgbT1uZXcgVWludDMyQXJyYXkoNjQpLHtrOmJ9PW5jO2ZvcihmPTA7Zjx1Oyl7Zm9yKGc9MDtnPDE2OysrZyl7bVtnXT1kW2ZdPDwyNHxkW2YrMV08PDE2fGRbZisyXTw8OHxkW2YrM107Zis9NH1mb3IoZz0xNjtnPDY0OysrZyltW2ddPWNhbGN1bGF0ZV9zaGEyNTZfbGl0dGxlU2lnbWFQcmltZShtW2ctMl0pK21bZy03XStjYWxjdWxhdGVfc2hhMjU2X2xpdHRsZVNpZ21hKG1bZy0xNV0pK21bZy0xNl18MDtsZXQgZSx0LGE9cix1PWkscD1uLHk9cyx3PW8seD1jLFM9bCxrPWg7Zm9yKGc9MDtnPDY0OysrZyl7ZT1rK2NhbGN1bGF0ZV9zaGEyNTZfc2lnbWFQcmltZSh3KStjYWxjdWxhdGVfc2hhMjU2X2NoKHcseCxTKStiW2ddK21bZ107dD1jYWxjdWxhdGVfc2hhMjU2X3NpZ21hKGEpK2NhbGN1bGF0ZV9zaGEyNTZfbWFqKGEsdSxwKTtrPVM7Uz14O3g9dzt3PXkrZXwwO3k9cDtwPXU7dT1hO2E9ZSt0fDB9cj1yK2F8MDtpPWkrdXwwO249bitwfDA7cz1zK3l8MDtvPW8rd3wwO2M9Yyt4fDA7bD1sK1N8MDtoPWgra3wwfXJldHVybiBuZXcgVWludDhBcnJheShbcj4+MjQmMjU1LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcixpPj4yNCYyNTUsaT4+MTYmMjU1LGk+PjgmMjU1LDI1NSZpLG4+PjI0JjI1NSxuPj4xNiYyNTUsbj4+OCYyNTUsMjU1Jm4scz4+MjQmMjU1LHM+PjE2JjI1NSxzPj44JjI1NSwyNTUmcyxvPj4yNCYyNTUsbz4+MTYmMjU1LG8+PjgmMjU1LDI1NSZvLGM+PjI0JjI1NSxjPj4xNiYyNTUsYz4+OCYyNTUsMjU1JmMsbD4+MjQmMjU1LGw+PjE2JjI1NSxsPj44JjI1NSwyNTUmbCxoPj4yNCYyNTUsaD4+MTYmMjU1LGg+PjgmMjU1LDI1NSZoXSl9Y2xhc3MgRGVjcnlwdFN0cmVhbSBleHRlbmRzIERlY29kZVN0cmVhbXtjb25zdHJ1Y3RvcihlLHQsYSl7c3VwZXIodCk7dGhpcy5zdHJlYW09ZTt0aGlzLmRpY3Q9ZS5kaWN0O3RoaXMuZGVjcnlwdD1hO3RoaXMubmV4dENodW5rPW51bGw7dGhpcy5pbml0aWFsaXplZD0hMX1yZWFkQmxvY2soKXtsZXQgZTtpZih0aGlzLmluaXRpYWxpemVkKWU9dGhpcy5uZXh0Q2h1bms7ZWxzZXtlPXRoaXMuc3RyZWFtLmdldEJ5dGVzKDUxMik7dGhpcy5pbml0aWFsaXplZD0hMH1pZighZT8ubGVuZ3RoKXt0aGlzLmVvZj0hMDtyZXR1cm59dGhpcy5uZXh0Q2h1bms9dGhpcy5zdHJlYW0uZ2V0Qnl0ZXMoNTEyKTtjb25zdCB0PXRoaXMubmV4dENodW5rPy5sZW5ndGg+MDtlPSgwLHRoaXMuZGVjcnlwdCkoZSwhdCk7Y29uc3QgYT10aGlzLmJ1ZmZlckxlbmd0aCxyPWErZS5sZW5ndGg7dGhpcy5lbnN1cmVCdWZmZXIocikuc2V0KGUsYSk7
101dGhpcy5idWZmZXJMZW5ndGg9cn1nZXRPcmlnaW5hbFN0cmVhbSgpe3JldHVybiB0aGlzfX1jbGFzcyBBUkNGb3VyQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3RoaXMuYT0wO3RoaXMuYj0wO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMjU2KSxhPWUubGVuZ3RoO2ZvcihsZXQgZT0wO2U8MjU2OysrZSl0W2VdPWU7Zm9yKGxldCByPTAsaT0wO3I8MjU2Oysrcil7Y29uc3Qgbj10W3JdO2k9aStuK2VbciVhXSYyNTU7dFtyXT10W2ldO3RbaV09bn10aGlzLnM9dH1lbmNyeXB0QmxvY2soZSl7bGV0IHQ9dGhpcy5hLGE9dGhpcy5iO2NvbnN0IHI9dGhpcy5zLGk9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheShpKTtmb3IobGV0IHM9MDtzPGk7KytzKXt0PXQrMSYyNTU7Y29uc3QgaT1yW3RdO2E9YStpJjI1NTtjb25zdCBvPXJbYV07clt0XT1vO3JbYV09aTtuW3NdPWVbc11ecltpK28mMjU1XX10aGlzLmE9dDt0aGlzLmI9YTtyZXR1cm4gbn
vendor: 6,701 bytes, line 101
1011kZWNyeXB0QmxvY2soZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfWVuY3J5cHQoZSl7cmV0dXJuIHRoaXMuZW5jcnlwdEJsb2NrKGUpfX1jbGFzcyBOdWxsQ2lwaGVye2RlY3J5cHRCbG9jayhlKXtyZXR1cm4gZX1lbmNyeXB0KGUpe3JldHVybiBlfX1jbGFzcyBBRVNCYXNlQ2lwaGVye19zPW5ldyBVaW50OEFycmF5KFs5OSwxMjQsMTE5LDEyMywyNDIsMTA3LDExMSwxOTcsNDgsMSwxMDMsNDMsMjU0LDIxNSwxNzEsMTE4LDIwMiwxMzAsMjAxLDEyNSwyNTAsODksNzEsMjQwLDE3MywyMTIsMTYyLDE3NSwxNTYsMTY0LDExNCwxOTIsMTgzLDI1MywxNDcsMzgsNTQsNjMsMjQ3LDIwNCw1MiwxNjUsMjI5LDI0MSwxMTMsMjE2LDQ5LDIxLDQsMTk5LDM1LDE5NSwyNCwxNTAsNSwxNTQsNywxOCwxMjgsMjI2LDIzNSwzOSwxNzgsMTE3LDksMTMxLDQ0LDI2LDI3LDExMCw5MCwxNjAsODIsNTksMjE0LDE3OSw0MSwyMjcsNDcsMTMyLDgzLDIwOSwwLDIzNywzMiwyNTIsMTc3LDkxLDEwNiwyMDMsMTkwLDU3LDc0LDc2LDg4LDIwNywyMDgsMjM5LDE3MCwyNTEsNjcsNzcsNTEsMTMzLDY5LDI0OSwyLDEyNyw4MCw2MCwxNTksMTY4LDgxLDE2Myw2NCwxNDMsMTQ2LDE1Nyw1NiwyNDUsMTg4LDE4MiwyMTgsMzMsMTYsMjU1LDI0MywyMTAsMjA1LDEyLDE5LDIzNiw5NSwxNTEsNjgsMjMsMTk2LDE2NywxMjYsNjEsMTAwLDkzLDI1LDExNSw5NiwxMjksNzksMjIwLDM0LDQyLDE0NCwxMzYsNzAsMjM4LDE4NCwyMCwyMjIsOTQsMTEsMjE5LDIyNCw1MCw1OCwxMCw3Myw2LDM2LDkyLDE5NCwyMTEsMTcyLDk4LDE0NSwxNDksMjI4LDEyMSwyMzEsMjAwLDU1LDEwOSwxNDEsMjEzLDc4LDE2OSwxMDgsODYsMjQ0LDIzNCwxMDEsMTIyLDE3NCw4LDE4NiwxMjAsMzcsNDYsMjgsMTY2LDE4MCwxOTgsMjMyLDIyMSwxMTYsMzEsNzUsMTg5LDEzOSwxMzgsMTEyLDYyLDE4MSwxMDIsNzIsMywyNDYsMTQsOTcsNTMsODcsMTg1LDEzNCwxOTMsMjksMTU4LDIyNSwyNDgsMTUyLDE3LDEwNSwyMTcsMTQyLDE0OCwxNTUsMzAsMTM1LDIzMywyMDYsODUsNDAsMjIzLDE0MCwxNjEsMTM3LDEzLDE5MSwyMzAsNjYsMTA0LDY1LDE1Myw0NSwxNSwxNzYsODQsMTg3LDIyXSk7X2ludl9zPW5ldyBVaW50OEFycmF5KFs4Miw5LDEwNiwyMTMsNDgsNTQsMTY1LDU2LDE5MSw2NCwxNjMsMTU4LDEyOSwyNDMsMjE1LDI1MSwxMjQsMjI3LDU3LDEzMCwxNTUsNDcsMjU1LDEzNSw1MiwxNDIsNjcsNjgsMTk2LDIyMiwyMzMsMjAzLDg0LDEyMywxNDgsNTAsMTY2LDE5NCwzNSw2MSwyMzgsNzYsMTQ5LDExLDY2LDI1MCwxOTUsNzgsOCw0NiwxNjEsMTAyLDQwLDIxNywzNiwxNzgsMTE4LDkxLDE2Miw3MywxMDksMTM5LDIwOSwzNywxMTQsMjQ4LDI0NiwxMDAsMTM0LDEwNCwxNTIsMjIsMjEyLDE2NCw5MiwyMDQsOTMsMTAxLDE4MiwxNDYsMTA4LDExMiw3Miw4MCwyNTMsMjM3LDE4NSwyMTgsOTQsMjEsNzAsODcsMTY3LDE0MSwxNTcsMTMyLDE0NCwyMTYsMTcxLDAsMTQwLDE4OCwyMTEsMTAsMjQ3LDIyOCw4OCw1LDE4NCwxNzksNjksNiwyMDgsNDQsMzAsMTQzLDIwMiw2MywxNSwyLDE5MywxNzUsMTg5LDMsMSwxOSwxMzgsMTA3LDU4LDE0NSwxNyw2NSw3OSwxMDMsMjIwLDIzNCwxNTEsMjQyLDIwNywyMDYsMjQwLDE4MCwyMzAsMTE1LDE1MCwxNzIsMTE2LDM0LDIzMSwxNzMsNTMsMTMzLDIyNiwyNDksNTUsMjMyLDI4LDExNywyMjMsMTEwLDcxLDI0MSwyNiwxMTMsMjksNDEsMTk3LDEzNywxMTEsMTgzLDk4LDE0LDE3MCwyNCwxOTAsMjcsMjUyLDg2LDYyLDc1LDE5OCwyMTAsMTIxLDMyLDE1NCwyMTksMTkyLDI1NCwxMjAsMjA1LDkwLDI0NCwzMSwyMjEsMTY4LDUxLDEzNiw3LDE5OSw0OSwxNzcsMTgsMTYsODksMzksMTI4LDIzNiw5NSw5Niw4MSwxMjcsMTY5LDI1LDE4MSw3NCwxMyw0NSwyMjksMTIyLDE1OSwxNDcsMjAxLDE1NiwyMzksMTYwLDIyNCw1OSw3NywxNzQsNDIsMjQ1LDE3NiwyMDAsMjM1LDE4Nyw2MCwxMzEsODMsMTUzLDk3LDIzLDQzLDQsMTI2LDE4NiwxMTksMjE0LDM4LDIyNSwxMDUsMjAsOTksODUsMzMsMTIsMTI1XSk7X21peD1uZXcgVWludDMyQXJyYXkoWzAsMjM1NDc0MTg3LDQ3MDk0ODM3NCwzMDM3NjUyNzcsOTQxODk2NzQ4LDkwODkzMzQxNSw2MDc1MzA1NTQsNzA4NzgwODQ5LDE4ODM3OTM0OTYsMjExODIxNDk5NSwxODE3ODY2ODMwLDE2NDk2MzkyMzcsMTIxNTA2MTEwOCwxMTgxMDQ1MTE5LDE0MTc1NjE2OTgsMTUxNzc2NzUyOSwzNzY3NTg2OTkyLDQwMDMwNjExNzksNDIzNjQyOTk5MCw0MDY5MjQ2ODkzLDM2MzU3MzM2NjAsMzYwMjc3MDMyNywzMjk5Mjc4NDc0LDM0MDA1Mjg3NjksMjQzMDEyMjIxNiwyNjY0NTQzNzE1LDIzNjIwOTAyMzgsMjE5Mzg2MjY0NSwyODM1MTIzMzk2LDI4MDExMDc0MDcsMzAzNTUzNTA1OCwzMTM1NzQwODg5LDM2NzgxMjQ5MjMsMzU3Njg3MDUxMiwzMzQxMzk0Mjg1LDMzNzQzNjE3MDIsMzgxMDQ5NjM0MywzOTc3Njc1MzU2LDQyNzkwODAyNTcsNDA0MzYxMDE4NiwyODc2NDk0NjI3LDI3NzYyOTI5MDQsMzA3NjYzOTAyOSwzMTEwNjUwOTQyLDI0NzIwMTE1MzUsMjY0MDI0MzIwNCwyNDAzNzI4NjY1LDIxNjkzMDMwNTgsMTAwMTA4OTk5NSw4OTk4MzU1ODQsNjY2NDY0NzMzLDY5OTQzMjE1MCw1OTcyNzg0NywyMjY5MDY4NjAsNTMwNDAwNzUzLDI5NDkzMDY4MiwxMjczMTY4Nzg3LDExNzI5NjcwNjQsMTQ3NTQxODUwMSwxNTA5NDMwNDE0LDE5NDI0MzU3NzUsMjExMDY2NzQ0NCwxODc2MjQxODMzLDE2NDE4MTYyMjYsMjkxMDIxOTc2NiwyNzQzMDM0MTA5LDI5NzYxNTE1MjAsMzIxMTYyMzE0NywyNTA1MjAyMTM4LDI2MDY0NTM5NjksMjMwMjY5MDI1MiwyMjY5NzI4NDU1LDM3MTE4Mjk0MjIsMzU0MzU5OTI2OSwzMjQwODk0MzkyLDM0NzUzMTMzMzEsMzg0MzY5OTA3NCwzOTQzOTA2NDQxLDQxNzgwNjIyMjgsNDE0NDA0Nzc3NSwxMzA2OTY3MzY2LDExMzk3ODE3MDksMTM3NDk4ODExMiwxNjEwNDU5NzM5LDE5NzU2ODM0MzQsMjA3NjkzNTI2NSwxNzc1Mjc2OTI0LDE3NDIzMTUxMjcsMTAzNDg2Nzk5OCw4NjY2Mzc4NDUsNTY2MDIxODk2LDgwMDQ0MDgzNSw5Mjk4NzY5OCwxOTMxOTUwNjUsNDI5NDU2MTY0LDM5NTQ0MTcxMSwxOTg0ODEyNjg1LDIwMTc3Nzg1NjYsMTc4NDY2MzE5NSwxNjgzNDA3MjQ4LDEzMTU1NjIxNDUsMTA4MDA5NDYzNCwxMzgzODU2MzExLDE1NTEwMzc4ODQsMTAxMDM5ODI5LDEzNTA1MDIwNiw0Mzc3NTcxMjMsMzM3NTUzODY0LDEwNDIzODU2NTcsODA3OTYyNjEwLDU3MzgwNDc4Myw3NDIwMzkwMTIsMjUzMTA2NzQ1MywyNTY0MDMzMzM0LDIzMjg4Mjg5NzEsMjIyNzU3MzAyNCwyOTM1NTY2ODY1LDI3MDAwOTkzNTQsMzAwMTc1NTY1NSwzMTY4OTM3MjI4LDM4Njg1NTI4MDUsMzkwMjU2MzE4Miw0MjAzMTgxMTcxLDQxMDI5Nzc5MTIsMzczNjE2NDkzNywzNTAxNzQxODkwLDMyNjU0Nzg3NTEsMzQzMzcxMjk4MCwxMTA2MDQxNTkxLDEzNDA0NjMxMDAsMTU3Njk3NjYwOSwxNDA4NzQ5MDM0LDIwNDMyMTE0ODMsMjAwOTE5NTQ3MiwxNzA4ODQ4MzMzLDE4MDkwNTQxNTAsODMyODc3MjMxLDEwNjgzNTEzOTYsNzY2OTQ1NDY1LDU5OTc2MjM1NCwxNTk0MTc5ODcsMTI2NDU0NjY0LDM2MTkyOTg3Nyw0NjMxODAxOTAsMjcwOTI2MDg3MSwyOTQzNjgyMzgwLDMxNzgxMDY5NjEsMzAwOTg3OTM4NiwyNTcyNjk3MTk1LDI1Mzg2ODExODQsMjIzNjIyODczMywyMzM2NDM0NTUwLDM1MDk4NzExMzUsMzc0NTM0NTMwMCwzNDQxODUwMzc3LDMyNzQ2NjcyNjYsMzkxMDE2MTk3MSwzODc3MTk4NjQ4LDQxMTA1Njg0ODUsNDIxMTgxODc5OCwyNTk3ODA2NDc2LDI0OTc2MDQ3NDMsMjI2MTA4OTE3OCwyMjk1MTAxMDczLDI3MzM4NTYxNjAsMjkwMjA4Nzg1MSwzMjAyNDM3MDQ2LDI5NjgwMTE0NTMsMzkzNjI5MTI4NCwzODM1MDM2ODk1LDQxMzY0NDA3NzAsNDE2OTQwODIwMSwzNTM1NDg2NDU2LDM3MDI2NjU0NTksMzQ2NzE5MjMwMiwzMjMxNzIyMjEzLDIwNTE1MTg3ODAsMTk1MTMxNzA0NywxNzE2ODkwNDEwLDE3NTA5MDIzMDUsMTExMzgxODM4NCwxMjgyMDUwMDc1LDE1ODQ1MDQ1ODIsMTM1MDA3ODk4OSwxNjg4MTA4NTIsNjc1NTY0NjMsMzcxMDQ5MzMwLDQwNDAxNjc2MSw4NDE3Mzk1OTIsMTAwODkxODU5NSw3NzU1NTA4MTQsNTQwMDgwNzI1LDM5Njk1NjIzNjksMzgwMTMzMjIzNCw0MDM1NDg5MDQ3LDQyNjk5MDc5OTYsMzU2OTI1NTIxMywzNjY5NDYyNTY2LDMzNjY3NTQ2MTksMzMzMjc0MDE0NCwyNjMxMDY1NDMzLDI0NjM4Nzk3NjIsMjE2MDExNzA3MSwyMzk1NTg4Njc2LDI3Njc2NDU1NTcsMjg2ODg5NzQwNiwzMTAyMDExNzQ3LDMwNjkwNDk5NjAsMjAyMDA4NDk3LDMzNzc4MzYyLDI3MDA0MDQ4Nyw1MDQ0NTk0MzYsODc1NDUxMjkzLDk3NTY1ODY0Niw2NzUwMzk2MjcsNjQxMDI1MTUyLDIwODQ3MDQyMzMsMTkxNzUxODU2MiwxNjE1ODYxMjQ3LDE4NTEzMzI4NTIsMTE0NzU1MDY2MSwxMjQ4ODAyNTEwLDE0ODQwMDU4NDMsMTQ1MTA0NDA1Niw5MzMzMDEzNzAsOTY3MzExNzI5LDczMzE1Njk3Miw2MzI5NTM3MDMsMjYwMzg4OTUwLDI1OTY1OTE3LDMyODY3MTgwOCw0OTY5MDYwNTksMTIwNjQ3Nzg1OCwxMjM5NDQzNzUzLDE1NDMyMDg1MDAsMTQ0MTk1MjU3NSwyMTQ0MTYxODA2LDE5MDg2OTQyNzcsMTY3NTU3Nzg4MCwxODQyNzU5NDQzLDM2MTAzNjkyMjYsMzY0NDM3OTU4NSwzNDA4MTE5NTE2LDMzMDc5MTYyNDcsNDAxMTE5MDUwMiwzNzc2NzY3NDY5LDQwNzczODQ0MzIsNDI0NTYxODY4MywyODA5NzcxMTU0LDI4NDI3MzcwNDksMzE0NDM5NjQyMCwzMDQzMTQwNDk1LDI2NzM3MDUxNTAsMjQzODIzNzYyMSwyMjAzMDMyMjMyLDIzNzAyMTM3OTVdKTtfbWl4Q29sPW5ldyBVaW50OEFycmF5KDI1NikubWFwKChlLHQpPT50PDEyOD90PDwxOnQ8PDFeMjcpO2NvbnN0cnVjdG9yKCl7dGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTYpO3RoaXMuYnVmZmVyUG9zaXRpb249MH1fZXhwYW5kS2V5KGUpe3VucmVhY2hhYmxlKCJDYW5ub3QgY2FsbCBgX2V4cGFuZEtleWAgb24gdGhlIGJhc2UgY2xhc3MiKX1fZGVjcnlwdChlLHQpe2xldCB
101hLHIsaTtjb25zdCBuPW5ldyBVaW50OEFycmF5KDE2KTtuLnNldChlKTtmb3IobGV0IGU9MCxhPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKythKW5bZV1ePXRbYV07Zm9yKGxldCBlPXRoaXMuX2N5Y2xlc09mUmVwZXRpdGlvbi0xO2U+PTE7LS1lKXthPW5bMTNdO25bMTNdPW5bOV07bls5XT1uWzVdO25bNV09blsxXTtuWzFdPWE7YT1uWzE0XTtyPW5bMTBdO25bMTRdPW5bNl07blsxMF09blsyXTtuWzZdPWE7blsyXT1yO2E9blsxNV07cj1uWzExXTtpPW5bN107blsxNV09blszXTtuWzExXT1hO25bN109cjtuWzNdPWk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpbltlXT10aGlzLl9pbnZfc1tuW2VdXTtmb3IobGV0IGE9MCxyPTE2KmU7YTwxNjsrK2EsKytyKW5bYV1ePXRbcl07Zm9yKGxldCBlPTA7ZTwxNjtlKz00KXtjb25zdCB0PXRoaXMuX21peFtuW2VdXSxyPXRoaXMuX21peFtuW2UrMV1dLGk9dGhpcy5fbWl4W25bZSsyXV0scz10aGlzLl9taXhbbltlKzNdXTthPXRecj4+Pjhecjw8MjReaT4+PjE2Xmk8PDE2XnM+Pj4yNF5zPDw4O25bZV09YT4+PjI0JjI1NTtuW2UrMV09YT4+MTYmMjU1O25bZSsyXT1hPj44JjI1NTtuW2UrM109MjU1JmF9fWE9blsxM107blsxM109bls5XTtuWzldPW5bNV07bls1XT1uWzFdO25bMV09YTthPW5bMTRdO3I9blsxMF07blsxNF09bls2XTtuWzEwXT1uWzJdO25bNl09YTtuWzJdPXI7YT1uWzE1XTtyPW5bMTFdO2k9bls3XTtuWzE1XT1uWzNdO25bMTFdPWE7bls3XT1yO25bM109aTtmb3IobGV0IGU9MDtlPDE2OysrZSl7bltlXT10aGlzLl9pbnZfc1tuW2VdXTtuW2VdXj10W2VdfXJldHVybiBufV9lbmNyeXB0KGUsdCl7Y29uc3QgYT10aGlzLl9zO2xldCByLGksbjtjb25zdCBzPW5ldyBVaW50OEFycmF5KDE2KTtzLnNldChlKTtmb3IobGV0IGU9MDtlPDE2OysrZSlzW2VdXj10W2VdO2ZvcihsZXQgZT0xO2U8dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uO2UrKyl7Zm9yKGxldCBlPTA7ZTwxNjsrK2Upc1tlXT1hW3NbZV1dO249c1sxXTtzWzFdPXNbNV07c1s1XT1zWzldO3NbOV09c1sxM107c1sxM109bjtuPXNbMl07aT1zWzZdO3NbMl09c1sxMF07c1s2XT1zWzE0XTtzWzEwXT1uO3NbMTRdPWk7bj1zWzNdO2k9c1s3XTtyPXNbMTFdO3NbM109c1sxNV07c1s3XT1uO3NbMTFdPWk7c1sxNV09cjtmb3IobGV0IGU9MDtlPDE2O2UrPTQpe2NvbnN0IHQ9c1tlXSxhPXNbZSsxXSxpPXNbZSsyXSxuPXNbZSszXTtyPXReYV5pXm47c1tlXV49cl50aGlzLl9taXhDb2xbdF5hXTtzW2UrMV1ePXJedGhpcy5fbWl4Q29sW2FeaV07c1tlKzJdXj1yXnRoaXMuX21peENvbFtpXm5dO3NbZSszXV49cl50aGlzLl9taXhDb2xbbl50XX1mb3IobGV0IGE9MCxyPTE2KmU7YTwxNjsrK2EsKytyKXNbYV1ePXRbcl19Zm9yKGxldCBlPTA7ZTwxNjsrK2Upc1tlXT1hW3NbZV1dO249c1sxXTtzWzFdPXNbNV07c1s1XT1zWzldO3NbOV09c1sxM107c1sxM109bjtuPXNbMl07aT1zWzZdO3NbMl09c1sxMF07c1s2XT1zWzE0XTtzWzEwXT1uO3NbMTRdPWk7bj1zWzNdO2k9c1s3XTtyPXNbMTFdO3NbM109c1sxNV07c1s3XT1uO3NbMTFdPWk7c1sxNV09cjtmb3IobGV0IGU9MCxhPXRoaXMuX2tleVNpemU7ZTwxNjsrK2UsKythKXNbZV1ePXRbYV07cmV0dXJuIHN9X2RlY3J5cHRCbG9jazIoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLGk9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBuPVtdO2xldCBzPXRoaXMuaXY7Zm9yKGxldCB0PTA7dDxhOysrdCl7cltpXT1lW3RdOysraTtpZihpPDE2KWNvbnRpbnVlO2NvbnN0IGE9dGhpcy5fZGVjcnlwdChyLHRoaXMuX2tleSk7Zm9yKGxldCBlPTA7ZTwxNjsrK2UpYVtlXV49c1tlXTtzPXI7bi5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO2k9MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPWk7dGhpcy5pdj1zO2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7bGV0IG89MTYqbi5sZW5ndGg7aWYodCl7Y29uc3QgZT1uLmF0KC0xKTtsZXQgdD1lWzE1XTtpZih0PD0xNil7Zm9yKGxldCBhPTE1LHI9MTYtdDthPj1yOy0tYSlpZihlW2FdIT09dCl7dD0wO2JyZWFrfW8tPXQ7bltuLmxlbmd0aC0xXT1lLnN1YmFycmF5KDAsMTYtdCl9fWNvbnN0IGM9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBlPTAsdD0wLGE9bi5sZW5ndGg7ZTxhOysrZSx0Kz0xNiljLnNldChuW2VdLHQpO3JldHVybiBjfWRlY3J5cHRCbG9jayhlLHQsYT1udWxsKXtjb25zdCByPWUubGVuZ3RoLGk9dGhpcy5idWZmZXI7bGV0IG49dGhpcy5idWZmZXJQb3NpdGlvbjtpZihhKXRoaXMuaXY9YTtlbHNle2ZvcihsZXQgdD0wO248MTYmJnQ8cjsrK3QsKytuKWlbbl09ZVt0XTtpZihuPDE2KXt0aGlzLmJ1ZmZlckxlbmd0aD1uO3JldHVybiBuZXcgVWludDhBcnJheSgwKX10aGlzLml2PWk7ZT1lLnN1YmFycmF5KDE2KX10aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxNik7dGhpcy5idWZmZXJMZW5ndGg9MDt0aGlzLmRlY3J5cHRCbG9jaz10aGlzLl9kZWNyeXB0QmxvY2syO3JldHVybiB0aGlzLmRlY3J5cHRCbG9jayhlLHQpfWVuY3J5cHQoZSx0KXtjb25zdCBhPWUubGVuZ3RoO2xldCByPXRoaXMuYnVmZmVyLGk9dGhpcy5idWZmZXJQb3NpdGlvbjtjb25zdCBuPVtdO3R8fD1uZXcgVWludDhBcnJheSgxNik7Zm9yKGxldCBzPTA7czxhOysrcyl7cltpXT1lW3NdOysraTtpZihpPDE2KWNvbnRpbnVlO2ZvcihsZXQgZT0wO2U8MTY7KytlKXJbZV1ePXRbZV07Y29uc3QgYT10aGlzLl9lbmNyeXB0KHIsdGhpcy5fa2V5KTt0PWE7bi5wdXNoKGEpO3I9bmV3IFVpbnQ4QXJyYXkoMTYpO2k9MH10aGlzLmJ1ZmZlcj1yO3RoaXMuYnVmZmVyTGVuZ3RoPWk7dGhpcy5pdj10O2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Y29uc3Qgcz0xNipuLmxlbmd0aCxvPW5ldyBVaW50OEFycmF5KHMpO2ZvcihsZXQgZT0wLHQ9MCxhPW4ubGVuZ3RoO2U8YTsrK2UsdCs9MTYpby5zZXQobltlXSx0KTtyZXR1cm4gb319Y2xhc3MgQUVTMTI4Q2lwaGVyIGV4dGVuZHMgQUVTQmFzZUNpcGhlcntfcmNvbj1uZXcgVWludDhBcnJheShbMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MSwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NCwxMDgsMjE2LDE3MSw3NywxNTQsNDcsOTQsMTg4LDk5LDE5OCwxNTEsNTMsMTA2LDIxMiwxNzksMTI1LDI1MCwyMzksMTk3LDE0NSw1NywxMTQsMjI4LDIxMSwxODksOTcsMTk0LDE1OSwzNyw3NCwxNDgsNTEsMTAyLDIwNCwxMzEsMjksNTgsMTE2LDIzMiwyMDMsMTQxLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0LDEwOCwyMTYsMTcxLDc3LDE1NCw0Nyw5NCwxODgsOTksMTk4LDE1MSw1MywxMDYsMjEyLDE3OSwxMjUsMjUwLDIzOSwxOTcsMTQ1LDU3LDExNCwyMjgsMjExLDE4OSw5NywxOTQsMTU5LDM3LDc0LDE0OCw1MSwxMDIsMjA0LDEzMSwyOSw1OCwxMTYsMjMyLDIwMywxNDEsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTQsMTA4LDIxNiwxNzEsNzcsMTU0LDQ3LDk0LDE4OCw5OSwxOTgsMTUxLDUzLDEwNiwyMTIsMTc5LDEyNSwyNTAsMjM5LDE5NywxNDUsNTcsMTE0LDIyOCwyMTEsMTg5LDk3LDE5NCwxNTksMzcsNzQsMTQ4LDUxLDEwMiwyMDQsMTMxLDI5LDU4LDExNiwyMzIsMjAzLDE0MV0pO2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTEwO3RoaXMuX2tleVNpemU9MTYwO3RoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3MsYT10aGlzLl9yY29uLHI9bmV3IFVpbnQ4QXJyYXkoMTc2KTtyLnNldChl
101KTtmb3IobGV0IGU9MTYsaT0xO2U8MTc2OysraSl7bGV0IG49cltlLTNdLHM9cltlLTJdLG89cltlLTFdLGM9cltlLTRdO249dFtuXTtzPXRbc107bz10W29dO2M9dFtjXTtuXj1hW2ldO2ZvcihsZXQgdD0wO3Q8NDsrK3Qpe3JbZV09bl49cltlLTE2XTtlKys7cltlXT1zXj1yW2UtMTZdO2UrKztyW2VdPW9ePXJbZS0xNl07ZSsrO3JbZV09Y149cltlLTE2XTtlKyt9fXJldHVybiByfX1jbGFzcyBBRVMyNTZDaXBoZXIgZXh0ZW5kcyBBRVNCYXNlQ2lwaGVye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCk7dGhpcy5fY3ljbGVzT2ZSZXBldGl0aW9uPTE0O3RoaXMuX2tleVNpemU9MjI0O3RoaXMuX2tleT10aGlzLl9leHBhbmRLZXkoZSl9X2V4cGFuZEtleShlKXtjb25zdCB0PXRoaXMuX3MsYT1uZXcgVWludDhBcnJheSgyNDApO2Euc2V0KGUpO2xldCByLGksbixzLG89MTtmb3IobGV0IGU9MzIsYz0xO2U8MjQwOysrYyl7aWYoZSUzMj09MTYpe3I9dFtyXTtpPXRbaV07bj10W25dO3M9dFtzXX1lbHNlIGlmKGUlMzI9PTApe3I9YVtlLTNdO2k9YVtlLTJdO249YVtlLTFdO3M9YVtlLTRdO3I9dFtyXTtpPXRbaV07bj10W25dO3M9dFtzXTtyXj1vOyhvPDw9MSk+PTI1NiYmKG89MjU1JigyN15vKSl9Zm9yKGxldCB0PTA7dDw0OysrdCl7YVtlXT1yXj1hW2UtMzJdO2UrKzthW2VdPWlePWFbZS0zMl07ZSsrO2FbZV09bl49YVtlLTMyXTtlKys7YVtlXT1zXj1hW2UtMzJdO2UrK319cmV0dXJuIGF9fWNsYXNzIFBERkJhc2V7X2hhc2goZSx0LGEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYF9oYXNoYCBjYWxsZWQiKX1jaGVja093bmVyUGFzc3dvcmQoZSx0LGEscil7Y29uc3QgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7aS5zZXQoZSwwKTtpLnNldCh0LGUubGVuZ3RoKTtpLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtyZXR1cm4gaXNBcnJheUVxdWFsKHRoaXMuX2hhc2goZSxpLGEpLHIpfWNoZWNrVXNlclBhc3N3b3JkKGUsdCxhKXtjb25zdCByPW5ldyBVaW50OEFycmF5KGUubGVuZ3RoKzgpO3Iuc2V0KGUsMCk7ci5zZXQodCxlLmxlbmd0aCk7cmV0dXJuIGlzQXJyYXlFcXVhbCh0aGlzLl9oYXNoKGUscixbXSksYSl9Z2V0T3duZXJLZXkoZSx0LGEscil7Y29uc3QgaT1uZXcgVWludDhBcnJheShlLmxlbmd0aCs1Nik7aS5zZXQoZSwwKTtpLnNldCh0LGUubGVuZ3RoKTtpLnNldChhLGUubGVuZ3RoK3QubGVuZ3RoKTtjb25zdCBuPXRoaXMuX2hhc2goZSxpLGEpO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKG4pLmRlY3J5cHRCbG9jayhyLCExLG5ldyBVaW50OEFycmF5KDE2KSl9Z2V0VXNlcktleShlLHQsYSl7Y29uc3Qgcj1uZXcgVWludDhBcnJheShlLmxlbmd0aCs4KTtyLnNldChlLDApO3Iuc2V0KHQsZS5sZW5ndGgpO2NvbnN0IGk9dGhpcy5faGFzaChlLHIsW10pO3JldHVybiBuZXcgQUVTMjU2Q2lwaGVyKGkpLmRlY3J5cHRCbG9jayhhLCExLG5ldyBVaW50OEFycmF5KDE2KSl9fWNsYXNzIFBERjE3IGV4dGVuZHMgUERGQmFzZXtfaGFzaChlLHQsYSl7cmV0dXJuIGNhbGN1bGF0ZVNIQTI1Nih0LDAsdC5sZW5ndGgpfX1jbGFzcyBQREYyMCBleHRlbmRzIFBERkJhc2V7X2hhc2goZSx0LGEpe2xldCByPWNhbGN1bGF0ZVNIQTI1Nih0LDAsdC5sZW5ndGgpLnN1YmFycmF5KDAsMzIpLGk9WzBdLG49MDtmb3IoO248NjR8fGkuYXQoLTEpPm4tMzI7KXtjb25zdCB0PWUubGVuZ3RoK3IubGVuZ3RoK2EubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkodCk7bGV0IG89MDtzLnNldChlLG8pO28rPWUubGVuZ3RoO3Muc2V0KHIsbyk7bys9ci5sZW5ndGg7cy5zZXQoYSxvKTtjb25zdCBjPW5ldyBVaW50OEFycmF5KDY0KnQpO2ZvcihsZXQgZT0wLGE9MDtlPDY0O2UrKyxhKz10KWMuc2V0KHMsYSk7aT1uZXcgQUVTMTI4Q2lwaGVyKHIuc3ViYXJyYXkoMCwxNikpLmVuY3J5cHQoYyxyLnN1YmFycmF5KDE2LDMyKSk7Y29uc3QgbD1NYXRoLnN1bVByZWNpc2UoaS5zbGljZSgwLDE2KSklMzswPT09bD9yPWNhbGN1bGF0ZVNIQTI1NihpLDAsaS5sZW5ndGgpOjE9PT1sP3I9Y2FsY3VsYXRlU0hBMzg0KGksMCxpLmxlbmd0aCk6Mj09PWwmJihyPWNhbGN1bGF0ZVNIQTUxMihpLDAsaS5sZW5ndGgpKTtuKyt9cmV0dXJuIHIuc3ViYXJyYXkoMCwzMil9fWNsYXNzIENpcGhlclRyYW5zZm9ybXtjb25zdHJ1Y3RvcihlLHQpe3RoaXMuU3RyaW5nQ2lwaGVyQ29uc3RydWN0b3I9ZTt0aGlzLlN0cmVhbUNpcGhlckNvbnN0cnVjdG9yPXR9Y3JlYXRlU3RyZWFtKGUsdCl7Y29uc3QgYT1uZXcgdGhpcy5TdHJlYW1DaXBoZXJDb25zdHJ1Y3RvcjtyZXR1cm4gbmV3IERlY3J5cHRTdHJlYW0oZSx0LGZ1bmN0aW9uIGNpcGhlclRyYW5zZm9ybURlY3J5cHRTdHJlYW0oZSx0KXtyZXR1cm4gYS5kZWNyeXB0QmxvY2soZSx0KX0pfWRlY3J5cHRTdHJpbmcoZSl7Y29uc3QgdD1uZXcgdGhpcy5TdHJpbmdDaXBoZXJDb25zdHJ1Y3RvcjtsZXQgYT1zdHJpbmdUb0J5dGVzKGUpO2E9dC5kZWNyeXB0QmxvY2soYSwhMCk7cmV0dXJuIGJ5dGVzVG9TdHJpbmcoYSl9ZW5jcnlwdFN0cmluZyhlKXtjb25zdCB0PW5ldyB0aGlzLlN0cmluZ0NpcGhlckNvbnN0cnVjdG9yO2lmKHQgaW5zdGFuY2VvZiBBRVNCYXNlQ2lwaGVyKXtjb25zdCBhPTE2LWUubGVuZ3RoJTE2O2UrPVN0cmluZy5mcm9tQ2hhckNvZGUoYSkucmVwZWF0KGEpO2NvbnN0IHI9bmV3IFVpbnQ4QXJyYXkoMTYpO2NyeXB0by5nZXRSYW5kb21WYWx1ZXMocik7bGV0IGk9c3RyaW5nVG9CeXRlcyhlKTtpPXQuZW5jcnlwdChpLHIpO2NvbnN0IG49bmV3IFVpbnQ4QXJyYXkoMTYraS5sZW5ndGgpO24uc2V0KHIpO24uc2V0KGksMTYpO3JldHVybiBieXRlc1RvU3RyaW5nKG4pfWxldCBhPXN0cmluZ1RvQnl0ZXMoZSk7YT10LmVuY3J5cHQoYSk7cmV0dXJuIGJ5dGVzVG9TdHJpbmcoYSl9fWNsYXNzIENpcGhlclRyYW5zZm9ybUZhY3Rvcnl7c3RhdGljIGdldCBfZGVmYXVsdFBhc3N3b3JkQnl0ZXMoKXtyZXR1cm4gc2hhZG93KHRoaXMsIl9kZWZhdWx0UGFzc3dvcmRCeXRlcyIsbmV3IFVpbnQ4QXJyYXkoWzQwLDE5MSw3OCw5NCw3OCwxMTcsMTM4LDY1LDEwMCwwLDc4LDg2LDI1NSwyNTAsMSw4LDQ2LDQ2LDAsMTgyLDIwOCwx
101MDQsNjIsMTI4LDQ3LDEyLDE2OSwyNTQsMTAwLDgzLDEwNSwxMjJdKSl9I1llKGUsdCxhLHIsaSxuLHMsbyxjLGwsaCx1KXtpZih0KXtjb25zdCBlPU1hdGgubWluKDEyNyx0Lmxlbmd0aCk7dD10LnN1YmFycmF5KDAsZSl9ZWxzZSB0PVtdO2NvbnN0IGQ9Nj09PWU/bmV3IFBERjIwOm5ldyBQREYxNztyZXR1cm4gZC5jaGVja1VzZXJQYXNzd29yZCh0LG8scyk/ZC5nZXRVc2VyS2V5KHQsYyxoKTp0Lmxlbmd0aCYmZC5jaGVja093bmVyUGFzc3dvcmQodCxyLG4sYSk/ZC5nZXRPd25lcktleSh0LGksbixsKTpudWxsfSNaZShlLHQsYSxyLGksbixzLG8pe2NvbnN0IGM9NDArYS5sZW5ndGgrZS5sZW5ndGgsbD1uZXcgVWludDhBcnJheShjKTtsZXQgaCx1LGQ9MDtpZih0KXt1PU1hdGgubWluKDMyLHQubGVuZ3RoKTtmb3IoO2Q8dTsrK2QpbFtkXT10W2RdfWg9MDtmb3IoO2Q8MzI7KWxbZCsrXT1DaXBoZXJUcmFuc2Zvcm1GYWN0b3J5Ll9kZWZhdWx0UGFzc3dvcmRCeXRlc1toKytdO2wuc2V0KGEsZCk7ZCs9YS5sZW5ndGg7bFtkKytdPTI1NSZpO2xbZCsrXT1pPj44JjI1NTtsW2QrK109aT4+MTYmMjU1O2xbZCsrXT1pPj4+MjQmMjU1O2wuc2V0KGUsZCk7ZCs9ZS5sZW5ndGg7aWYobj49NCYmIW8pe2wuZmlsbCgyNTUsZCxkKzQpO2QrPTR9bGV0IGY9Y2FsY3VsYXRlTUQ1KGwsMCxkKTtjb25zdCBnPXM+PjM7aWYobj49Mylmb3IoaD0wO2g8NTA7KytoKWY9Y2FsY3VsYXRlTUQ1KGYsMCxnKTtjb25zdCBwPWYuc3ViYXJyYXkoMCxnKTtsZXQgbSxiO2lmKG4+PTMpe2Q9MDtsLnNldChDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5Ll9kZWZhdWx0UGFzc3dvcmRCeXRlcyxkKTtkKz0zMjtsLnNldChlLGQpO2QrPWUubGVuZ3RoO209bmV3IEFSQ0ZvdXJDaXBoZXIocCk7Yj1tLmVuY3J5cHRCbG9jayhjYWxjdWxhdGVNR
101DUobCwwLGQpKTt1PXAubGVuZ3RoO2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkodSk7Zm9yKGg9MTtoPD0xOTsrK2gpe2ZvcihsZXQgZT0wO2U8dTsrK2UpdFtlXT1wW2VdXmg7bT1uZXcgQVJDRm91ckNpcGhlcih0KTtiPW0uZW5jcnlwdEJsb2NrKGIpfX1lbHNle209bmV3IEFSQ0ZvdXJDaXBoZXIocCk7Yj1tLmVuY3J5cHRCbG9jayhDaXBoZXJUcmFuc2Zvcm1GYWN0b3J5Ll9kZWZhdWx0UGFzc3dvcmRCeXRlcyl9cmV0dXJuIGIuZXZlcnkoKGUsdCk9PnJbdF09PT1lKT9wOm51bGx9I1FlKGUsdCxhLHIpe2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkoMzIpO2xldCBuPTA7Y29uc3Qgcz1NYXRoLm1pbigzMixlLmxlbmd0aCk7Zm9yKDtuPHM7KytuKWlbbl09ZVtuXTtsZXQgbz0wO2Zvcig7bjwzMjspaVtuKytdPUNpcGhlclRyYW5zZm9ybUZhY3RvcnkuX2RlZmF1bHRQYXNzd29yZEJ5dGVzW28rK107bGV0IGM9Y2FsY3VsYXRlTUQ1KGksMCxuKTtjb25zdCBsPXI+PjM7aWYoYT49Mylmb3Iobz0wO288NTA7KytvKWM9Y2FsY3VsYXRlTUQ1KGMsMCxjLmxlbmd0aCk7bGV0IGgsdTtpZihhPj0zKXt1PXQ7Y29uc3QgZT1uZXcgVWludDhBcnJheShsKTtmb3Iobz0xOTtvPj0wO28tLSl7Zm9yKGxldCB0PTA7dDxsOysrdCllW3RdPWNbdF1ebztoPW5ldyBBUkNGb3VyQ2lwaGVyKGUpO3U9aC5lbmNyeXB0QmxvY2sodSl9fWVsc2V7aD1uZXcgQVJDRm91ckNpcGhlcihjLnN1YmFycmF5KDAsbCkpO3U9aC5lbmNyeXB0QmxvY2sodCl9cmV0dXJuIHV9I2V0KGUsdCxhLHI9ITEpe2NvbnN0IGk9YS5sZW5ndGgsbj1uZXcgVWludDhBcnJheShpKzkpO24uc2V0KGEpO2xldCBzPWk7bltzKytdPTI1NSZlO25bcysrXT1lPj44JjI1NTtuW3MrK109ZT4+MTYmMjU1O25bcysrXT0yNTUmdDtuW3MrK109dD4+OCYyNTU7aWYocil7bltzKytdPTExNTtuW3MrK109NjU7bltzKytdPTEwODtuW3MrK109ODR9cmV0dXJuIGNhbGN1bGF0ZU1ENShuLDAscykuc3ViYXJyYXkoMCxNYXRoLm1pbihpKzUsMTYpKX0jdHQoZSx0LGEscixpKXtpZighKHQgaW5zdGFuY2VvZiBOYW1lKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgY3J5cHQgZmlsdGVyIG5hbWUuIik7Y29uc3Qgbj10aGlzLHM9ZS5nZXQodC5uYW1lKSxvPXM/LmdldCgiQ0ZNIik7aWYoIW98fCJOb25lIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE51bGxDaXBoZXJ9O2lmKCJWMiI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBUkNGb3VyQ2lwaGVyKG4uI2V0KGEscixpLCExKSl9O2lmKCJBRVNWMiI9PT1vLm5hbWUpcmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBBRVMxMjhDaXBoZXIobi4jZXQoYSxyLGksITApKX07aWYoIkFFU1YzIj09PW8ubmFtZSlyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFFUzI1NkNpcGhlcihpKX07dGhyb3cgbmV3IEZvcm1hdEVycm9yKCJVbmtub3duIGNyeXB0byBtZXRob2QiKX1jb25zdHJ1Y3RvcihlLHQsYSl7Y29uc3Qgcj1lLmdldCgiRmlsdGVyIik7aWYoIWlzTmFtZShyLCJTdGFuZGFyZCIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigidW5rbm93biBlbmNyeXB0aW9uIG1ldGhvZCIpO3RoaXMuZmlsdGVyTmFtZT1yLm5hbWU7dGhpcy5kaWN0PWU7Y29uc3QgaT1lLmdldCgiViIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGkpfHwxIT09aSYmMiE9PWkmJjQhPT1pJiY1IT09aSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoInVuc3VwcG9ydGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtIik7dGhpcy5hbGdvcml0aG09aTtsZXQgbj1lLmdldCgiTGVuZ3RoIik7aWYoIW4paWYoaTw9MyluPTQwO2Vsc2V7Y29uc3QgdD1lLmdldCgiQ0YiKSxhPWUuZ2V0KCJTdG1GIik7aWYodCBpbnN0YW5jZW9mIERpY3QmJmEgaW5zdGFuY2VvZiBOYW1lKXt0LnN1cHByZXNzRW5jcnlwdGlvbj0hMDtjb25zdCBlPXQuZ2V0KGEubmFtZSk7bj1lPy5nZXQoIkxlbmd0aCIpfHwxMjg7bjw0MCYmKG48PD0zKX19aWYoIU51bWJlci5pc0ludGVnZXIobil8fG48NDB8fG4lOCE9MCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQga2V5IGxlbmd0aCIpO2NvbnN0IHM9c3RyaW5nVG9CeXRlcyhlLmdldCgiTyIpKSxvPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlUiKSksYz1zLnN1YmFycmF5KDAsMzIpLGw9by5zdWJhcnJheSgwLDMyKSxoPWUuZ2V0KCJQIiksdT1lLmdldCgiUiIpLGQ9KDQ9PT1pfHw1PT09aSkmJiExIT09ZS5nZXQoIkVuY3J5cHRNZXRhZGF0YSIpO3RoaXMuZW5jcnlwdE1ldGFkYXRhPWQ7Y29uc3QgZj1zdHJpbmdUb0J5dGVzKHQpO2xldCBnLHA7aWYoYSl7aWYoNj09PXUpdHJ5e2E9dXRmOFN0cmluZ1RvU3RyaW5nKGEpfWNhdGNoe3dhcm4oIkNpcGhlclRyYW5zZm9ybUZhY3Rvcnk6IFVuYWJsZSB0byBjb252ZXJ0IFVURjggZW5jb2RlZCBwYXNzd29yZC4iKX1nPXN0cmluZ1RvQnl0ZXMoYSl9aWYoNSE9PWkpcD10aGlzLiNaZShmLGcsYyxsLGgsdSxuLGQpO2Vsc2V7Y29uc3QgdD1zLnN1YmFycmF5KDMyLDQwKSxhPXMuc3ViYXJyYXkoNDAsNDgpLHI9by5zdWJhcnJheSgwLDQ4KSxpPW8uc3ViYXJyYXkoMzIsNDApLG49by5zdWJhcnJheSg0MCw0OCksaD1zdHJpbmdUb0J5dGVzKGUuZ2V0KCJPRSIpKSxkPXN0cmluZ1RvQnl0ZXMoZS5nZXQoIlVFIikpLGY9c3RyaW5nVG9CeXRlcyhlLmdldCgiUGVybXMiKSk7cD10aGlzLiNZZSh1LGcsYyx0LGEscixsLGksbixoLGQsZil9aWYoIXApe2lmKCFhKXRocm93IG5ldyBQYXNzd29yZEV4Y2VwdGlvbigiTm8gcGFzc3dvcmQgZ2l2ZW4iLFl0KTtjb25zdCBlPXRoaXMuI1FlKGcsYyx1LG4pO3A9dGhpcy4jWmUoZixlLGMsbCxoLHUsbixkKX1pZighcCl0aHJvdyBuZXcgUGFzc3dvcmRFeGNlcHRpb24oIkluY29ycmVjdCBQYXNzd29yZCIsWnQpO2lmKDQ9PT1pJiZwLmxlbmd0aDwxNil7dGhpcy5lbmNyeXB0aW9uS2V5PW5ldyBVaW50OEFycmF5KDE2KTt0aGlzLmVuY3J5cHRpb25LZXkuc2V0KHApfWVsc2UgdGhpcy5lbmNyeXB0aW9uS2V5PXA7aWYoaT49NCl7Y29uc3QgdD1lLmdldCgiQ0YiKTt0IGluc3RhbmNlb2YgRGljdCYmKHQuc3VwcHJlc3NFbmNyeXB0aW9uPSEwKTt0aGlzLmNmPXQ7dGhpcy5zdG1mPWUuZ2V0KCJTdG1GIil8fE5hbWUuZ2V0KCJJZGVudGl0eSIpO3RoaXMuc3RyZj1lLmdldCgiU3RyRiIpfHxOYW1lLmdldCgiSWRlbnRpdHkiKTt0aGlzLmVmZj1lLmdldCgiRUZGIil8fHRoaXMuc3RtZn19Y3JlYXRlQ2lwaGVyVHJhbnNmb3JtKGUsdCl7aWYoND09PXRoaXMuYWxnb3JpdGhtfHw1PT09dGhpcy5hbGdvcml0aG0pcmV0dXJuIG5ldyBDaXBoZXJUcmFuc2Zvcm0odGhpcy4jdHQodGhpcy5jZix0aGlzLnN0cmYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSksdGhpcy4jdHQodGhpcy5jZix0aGlzLnN0bWYsZSx0LHRoaXMuZW5jcnlwdGlvbktleSkpO2NvbnN0IGE9dGhpcy4jZXQoZSx0LHRoaXMuZW5jcnlwdGlvbktleSwhMSksY2lwaGVyQ29uc3RydWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEFSQ0ZvdXJDaXBoZXIoYSl9O3JldHVybiBuZXcgQ2lwaGVyVHJhbnNmb3JtKGNpcGhlckNvbnN0cnVjdG9yLGNpcGhlckNvbnN0cnVjdG9yKX19Y2xhc3MgWFJlZntjb25zdHJ1Y3RvcihlLHQpe3RoaXMuc3RyZWFtPWU7dGhpcy5wZGZNYW5hZ2VyPXQ7dGhpcy5lbnRyaWVzPVtdO3RoaXMuX3hyZWZTdG1zPW5ldyBTZXQ7dGhpcy5fY2FjaGVNYXA9bmV3IE1hcDt0aGlzLl9wZW5kaW5nUmVmcz1uZXcgUmVmU2V0O3RoaXMuX25ld1BlcnNpc3Rlb
101nRSZWZOdW09bnVsbDt0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW09bnVsbDt0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlPW51bGx9Z2V0TmV3UGVyc2lzdGVudFJlZihlKXtudWxsPT09dGhpcy5fbmV3UGVyc2lzdGVudFJlZk51bSYmKHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW09dGhpcy5lbnRyaWVzLmxlbmd0aHx8MSk7Y29uc3QgdD10aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtKys7dGhpcy5fY2FjaGVNYXAuc2V0KHQsZSk7cmV0dXJuIFJlZi5nZXQodCwwKX1nZXROZXdUZW1wb3JhcnlSZWYoKXtpZihudWxsPT09dGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtKXt0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW09dGhpcy5lbnRyaWVzLmxlbmd0aHx8MTtpZih0aGlzLl9uZXdQZXJzaXN0ZW50UmVmTnVtKXt0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlPW5ldyBNYXA7Zm9yKGxldCBlPXRoaXMuX25ld1RlbXBvcmFyeVJlZk51bTtlPHRoaXMuX25ld1BlcnNpc3RlbnRSZWZOdW07ZSsrKXt0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlLnNldChlLHRoaXMuX2NhY2hlTWFwLmdldChlKSk7dGhpcy5fY2FjaGVNYXAuZGVsZXRlKGUpfX19cmV0dXJuIFJlZi5nZXQodGhpcy5fbmV3VGVtcG9yYXJ5UmVmTnVtKyssMCl9cmVzZXROZXdUZW1wb3JhcnlSZWYoKXt0aGlzLl9uZXdUZW1wb3JhcnlSZWZOdW09bnVsbDtpZih0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlKWZvcihjb25zdFtlLHRdb2YgdGhpcy5fcGVyc2lzdGVudFJlZnNDYWNoZSl0aGlzLl9jYWNoZU1hcC5zZXQoZSx0KTt0aGlzLl9wZXJzaXN0ZW50UmVmc0NhY2hlPW51bGx9c2V0U3RhcnRYUmVmKGUpe3RoaXMuc3RhcnRYUmVmUXVldWU9W2VdfXBhcnNlKGU9ITEpe2xldCB0LGEscjtpZihlKXt3YXJuKCJJbmRleGluZyBhbGwgUERGIG9iamVjdHMiKTt0PXRoaXMuaW5kZXhPYmplY3RzKCl9ZWxzZSB0PXRoaXMucmVhZFhSZWYoKTt0LmFzc2lnblhyZWYodGhpcyk7dGhpcy50cmFpbGVyPXQ7dHJ5e2E9dC5nZXQoIkVuY3J5cHQiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiRW5jcnlwdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoYSBpbnN0YW5jZW9mIERpY3Qpe2NvbnN0IGU9dC5nZXQoIklEIikscj1lPy5sZW5ndGg/ZVswXToiIjthLnN1cHByZXNzRW5jcnlwdGlvbj0hMDt0aGlzLmVuY3J5cHQ9bmV3IENpcGhlclRyYW5zZm9ybUZhY3RvcnkoYSxyLHRoaXMucGRmTWFuYWdlci5wYXNzd29yZCl9dHJ5e3I9dC5nZXQoIlJvb3QiKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTt3YXJuKGBYUmVmLnBhcnNlIC0gSW52YWxpZCAiUm9vdCIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYociBpbnN0YW5jZW9mIERpY3QpdHJ5e2lmKHIuZ2V0KCJQYWdlcyIpaW5zdGFuY2VvZiBEaWN0KXt0aGlzLnJvb3Q9cjtyZXR1cm59fWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYFhSZWYucGFyc2UgLSBJbnZhbGlkICJQYWdlcyIgcmVmZXJlbmNlOiAiJHtlfSIuYCl9aWYoIWUpdGhyb3cgbmV3IFhSZWZQYXJzZUV4Y2VwdGlvbjt0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiSW52YWxpZCBSb290IHJlZmVyZW5jZS4iKX1wcm9jZXNzWFJlZlRhYmxlKGUpeyJ0YWJsZVN0YXRlImluIHRoaXN8fCh0aGlzLnRhYmxlU3RhdGU9e2VudHJ5TnVtOjAsc3RyZWFtUG9zOmUubGV4ZXIuc3RyZWFtLnBvcyxwYXJzZXJCdWYxOmUuYnVmMSxwYXJzZXJCdWYyOmUuYnVmMn0pO2lmKCFpc0NtZCh0aGlzLnJlYWRYUmVmVGFibGUoZSksInRyYWlsZXIiKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogY291bGQgbm90IGZpbmQgdHJhaWxlciBkaWN0aW9uYXJ5Iik7bGV0IHQ9ZS5nZXRPYmooKTt0IGluc3RhbmNlb2YgRGljdHx8IXQuZGljdHx8KHQ9dC5kaWN0KTtpZighKHQgaW5zdGFuY2VvZiBEaWN0KSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkludmFsaWQgWFJlZiB0YWJsZTogY291bGQgbm90IHBhcnNlIHRyYWlsZXIgZGljdGlvbmFyeSIpO2RlbGV0ZSB0aGlzLnRhYmxlU3RhdGU7cmV0dXJuIHR9cmVhZFhSZWZUYWJsZShlKXtjb25zdCB0PWUubGV4ZXIuc3RyZWFtLGE9dGhpcy50YWJsZVN0YXRlO3QucG9zPWEuc3RyZWFtUG9zO2UuYnVmMT1hLnBhcnNlckJ1ZjE7ZS5idWYyPWEucGFyc2VyQnVmMjtsZXQgcjtmb3IoOzspe2lmKCEoImZpcnN0RW50cnlOdW0iaW4gYSl8fCEoImVudHJ5Q291bnQiaW4gYSkpe2lmKGlzQ21kKHI9ZS5nZXRPYmooKSwidHJhaWxlciIpKWJyZWFrO2EuZmlyc3RFbnRyeU51bT1yO2EuZW50cnlDb3VudD1lLmdldE9iaigpfWxldCBpPWEuZmlyc3RFbnRyeU51bTtjb25zdCBuPWEuZW50cnlDb3VudDtpZighTnVtYmVyLmlzSW50ZWdlcihpKXx8IU51bWJlci5pc0ludGVnZXIobikpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHdyb25nIHR5cGVzIGluIHN1YnNlY3Rpb24gaGVhZGVyIik7Zm9yKGxldCByPWEuZW50cnlOdW07cjxuO3IrKyl7YS5zdHJlYW1Qb3M9dC5wb3M7YS5lbnRyeU51bT1yO2EucGFyc2VyQnVmMT1lLmJ1ZjE7YS5wYXJzZXJCdWYyPWUuYnVmMjtjb25zdCBzPXt9O3Mub2Zmc2V0PWUuZ2V0T2JqKCk7cy5nZW49ZS5nZXRPYmooKTtjb25zdCBvPWUuZ2V0T2JqKCk7aWYobyBpbnN0YW5jZW9mIENtZClzd2l0Y2goby5jbWQpe2Nhc2UiZiI6cy5mcmVlPSEwO2JyZWFrO2Nhc2UibiI6cy51bmNvbXByZXNzZWQ9ITB9aWYoIU51bWJlci5pc0ludGVnZXIocy5vZmZzZXQpfHwhTnVtYmVyLmlzSW50ZWdlcihzLmdlbil8fCFzLmZyZWUmJiFzLnVuY29tcHJlc3NlZCl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoYEludmFsaWQgZW50cnkgaW4gWFJlZiBzdWJzZWN0aW9uOiAke2l9LCAke259YCk7MD09PXImJnMuZnJlZSYmMT09PWkmJihpPTApO3RoaXMuZW50cmllc1tyK2ldfHwodGhpcy5lbnRyaWVzW3IraV09cyl9YS5lbnRyeU51bT0wO2Euc3RyZWFtUG9zPXQucG9zO2EucGFyc2VyQnVmMT1lLmJ1ZjE7YS5wYXJzZXJCdWYyPWUuYnVmMjtkZWxldGUgYS5maXJzdEVudHJ5TnVtO2RlbGV0ZSBhLmVudHJ5Q291bnR9aWYodGhpcy5lbnRyaWVzWzBdJiYhdGhpcy5lbnRyaWVzWzBdLmZyZWUpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgdGFibGU6IHVuZXhwZWN0ZWQgZmlyc3Qgb2JqZWN0Iik7cmV0dXJuIHJ9cHJvY2Vzc1hSZWZTdHJlYW0oZSl7aWYoISgic3RyZWFtU3RhdGUiaW4gdGhpcykpe2NvbnN0e2RpY3Q6dCxwb3M6YX09ZSxyPXQuZ2V0KCJXIiksaT10LmdldCgiSW5kZXgiKXx8WzAsdC5nZXQoIlNpemUiKV07dGhpcy5zdHJlYW1TdGF0ZT17ZW50cnlSYW5nZXM6aSxieXRlV2lkdGhzO
101nIsZW50cnlOdW06MCxzdHJlYW1Qb3M6YX19dGhpcy5yZWFkWFJlZlN0cmVhbShlKTtkZWxldGUgdGhpcy5zdHJlYW1TdGF0ZTtyZXR1cm4gZS5kaWN0fXJlYWRYUmVmU3RyZWFtKGUpe2NvbnN0IHQ9dGhpcy5zdHJlYW1TdGF0ZTtlLnBvcz10LnN0cmVhbVBvcztjb25zdFthLHIsaV09dC5ieXRlV2lkdGhzLG49dC5lbnRyeVJhbmdlcztmb3IoO24ubGVuZ3RoPjA7KXtjb25zdFtzLG9dPW47aWYoIU51bWJlci5pc0ludGVnZXIocyl8fCFOdW1iZXIuaXNJbnRlZ2VyKG8pKXRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIHJhbmdlIGZpZWxkczogJHtzfSwgJHtvfWApO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpfHwhTnVtYmVyLmlzSW50ZWdlcihyKXx8IU51bWJlci5pc0ludGVnZXIoaSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKGBJbnZhbGlkIFhSZWYgZW50cnkgZmllbGRzIGxlbmd0aDogJHtzfSwgJHtvfWApO2ZvcihsZXQgbj10LmVudHJ5TnVtO248bzsrK24pe3QuZW50cnlOdW09bjt0LnN0cmVhbVBvcz1lLnBvcztsZXQgbz0wLGM9MCxsPTA7Zm9yKGxldCB0PTA7dDxhOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAndHlwZScuIik7bz1vPDw4fHR9MD09PWEmJihvPTEpO2ZvcihsZXQgdD0wO3Q8cjsrK3Qpe2NvbnN0IHQ9ZS5nZXRCeXRlKCk7aWYoLTE9PT10KXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIGJ5dGVXaWR0aHMgJ29mZnNldCcuIik7Yz1jPDw4fHR9Zm9yKGxldCB0PTA7dDxpOysrdCl7Y29uc3QgdD1lLmdldEJ5dGUoKTtpZigtMT09PXQpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgYnl0ZVdpZHRocyAnZ2VuZXJhdGlvbicuIik7bD1sPDw4fHR9Y29uc3QgaD17fTtoLm9mZnNldD1jO2guZ2VuPWw7c3dpdGNoKG8pe2Nhc2UgMDpoLmZyZWU9ITA7YnJlYWs7Y2FzZSAxOmgudW5jb21wcmVzc2VkPSEwO2JyZWFrO2Nhc2UgMjpicmVhaztkZWZhdWx0OnRocm93IG5ldyBGb3JtYXRFcnJvcihgSW52YWxpZCBYUmVmIGVudHJ5IHR5cGU6ICR7b31gKX10aGlzLmVudHJpZXNbcytuXXx8KHRoaXMuZW50cmllc1tzK25dPWgpfXQuZW50cnlOdW09MDt0LnN0cmVhbVBvcz1lLnBvcztuLnNwbGljZSgwLDIpfX1pbmRleE9iamVjdHMoKXtmdW5jdGlvbiByZWFkVG9rZW4oZSx0KXtsZXQgYT0iIixyPWVbdF07Zm9yKDsxMCE9PXImJjEzIT09ciYmNjAhPT1yJiYhKCsrdD49ZS5sZW5ndGgpOyl7YSs9U3RyaW5nLmZyb21DaGFyQ29kZShyKTtyPWVbdF19cmV0dXJuIGF9ZnVuY3Rpb24gc2tpcFVudGlsKGUsdCxhKXtjb25zdCByPWEubGVuZ3RoLGk9ZS5sZW5ndGg7bGV0IG49MDtmb3IoO3Q8aTspe2xldCBpPTA7Zm9yKDtpPHImJmVbdCtpXT09PWFbaV07KSsraTtpZihpPj1yKWJyZWFrO3QrKztuKyt9cmV0dXJuIG59Y29uc3QgZT0vXGIoZW5kb2JqfFxkK1xzK1xkK1xzK29ianx4cmVmfHRyYWlsZXJccyo8PClcYi9nLHQ9L1xiKHN0YXJ0eHJlZnxcZCtccytcZCtccytvYmopXGIvZyxhPS9eKFxkKylccysoXGQrKVxzK29ialxiLyxyPW5ldyBVaW50OEFycmF5KFsxMTYsMTE0LDk3LDEwNSwxMDgsMTAxLDExNF0pLGk9bmV3IFVpbnQ4QXJyYXkoWzExNSwxMTYsOTcsMTE0LDExNiwxMjAsMTE0LDEwMSwxMDJdKSxuPW5ldyBVaW50OEFycmF5KFs0Nyw4OCw4MiwxMDEsMTAyXSk7dGhpcy5lbnRyaWVzLmxlbmd0aD0wO3RoaXMuX2NhY2hlTWFwLmNsZWFyKCk7Y29uc3Qgcz10aGlzLnN0cmVhbTtzLnBvcz0wO2NvbnN0IG89cy5nZXRCeXRlcygpLGM9Ynl0ZXNUb1N0cmluZyhvKSxsPW8ubGVuZ3RoO2xldCBoPXMuc3RhcnQ7Y29uc3QgdT1bXSxkPVtdO2Zvcig7aDxsOyl7bGV0IGY9b1toXTtpZig5PT09Znx8MTA9PT1mfHwxMz09PWZ8fDMyPT09Zil7KytoO2NvbnRpbnVlfWlmKDM3PT09Zil7ZG97KytoO2lmKGg+PWwpYnJlYWs7Zj1vW2hdfXdoaWxlKDEwIT09ZiYmMTMhPT1mKTtjb250aW51ZX1jb25zdCBnPXJlYWRUb2tlbihvLGgpO2xldCBwO2lmKGcuc3RhcnRzV2l0aCgieHJlZiIpJiYoND09PWcubGVuZ3RofHwvXHMvLnRlc3QoZ1s0XSkpKXtoKz1za2lwVW50aWwobyxoLHIpO3UucHVzaChoKTtoKz1za2lwVW50aWwobyxoLGkpfWVsc2UgaWYocD1hLmV4ZWMoZykpe2NvbnN0IHQ9MHxwWzFdLGE9MHxwWzJdLHI9aCtnLmxlbmd0aDtsZXQgaSx1PSExO2lmKHRoaXMuZW50cmllc1t0XSl7aWYodGhpcy5lbnRyaWVzW3RdLmdlbj09PWEpdHJ5e25ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihzLm1ha2VTdWJTdHJlYW0ocikpfSkuZ2V0T2JqKCk7dT0hMH1jYXRjaChlKXtlIGluc3RhbmNlb2YgUGFyc2VyRU9GRXhjZXB0aW9uP3dhcm4oYGluZGV4T2JqZWN0cyAtLSBjaGVja2luZyBvYmplY3QgKCR7Z30pOiAiJHtlfSIuYCk6dT0hMH19ZWxzZSB1PSEwO3UmJih0aGlzLmVudHJpZXNbdF09e29mZnNldDpoLXMuc3RhcnQsZ2VuOmEsdW5jb21wcmVzc2VkOiEwfSk7ZS5sYXN0SW5kZXg9cjtjb25zdCBmPWUuZXhlYyhjKTtpZihmKXtpPWUubGFzdEluZGV4KzEtaDtpZigiZW5kb2JqIiE9PWZbMV0pe3dhcm4oYGluZGV4T2JqZWN0czogRm91bmQgIiR7ZlsxXX0iIGluc2lkZSBvZiBhbm90aGVyICJvYmoiLCBjYXVzZWQgYnkgbWlzc2luZyAiZW5kb2JqIiAtLSB0cnlpbmcgdG8gcmVjb3Zlci5gKTtpLT1mWzFdLmxlbmd0aCsxfX1lbHNlIGk9bC1oO2NvbnN0IG09by5zdWJhcnJheShoLGgraSksYj1za2lwVW50aWwobSwwLG4pO2lmKGI8aSYmbVtiKzVdPDY0KXtkLnB1c2goaC1zLnN0YXJ0KTt0aGlzLl94cmVmU3Rtcy5hZGQoaC1zLnN0YXJ0KX1oKz1pfWVsc2UgaWYoZy5zdGFydHNXaXRoKCJ0cmFpbGVyIikmJig3PT09Zy5sZW5ndGh8fC9ccy8udGVzdChnWzddKSkpe3UucHVzaChoKTtjb25zdCBlPWgrZy5sZW5ndGg7bGV0IGE7dC5sYXN0SW5kZXg9ZTtjb25zdCByPXQuZXhlYyhjKTtpZihyKXthPXQubGFzdEluZGV4KzEtaDtpZigic3RhcnR4cmVmIiE9PXJbMV0pe3dhcm4oYGluZGV4T2JqZWN0czogRm91bmQgIiR7clsxXX0iIGFmdGVyICJ0cmFpbGVyIiwgY2F1c2VkIGJ5IG1pc3NpbmcgInN0YXJ0eHJlZiIgLS0gdHJ5aW5nIHRvIHJlY292ZXIuYCk7YS09clsxXS5sZW5ndGgrMX19ZWxzZSBhPWwtaDtoKz1hfWVsc2UgaCs9Zy5sZW5ndGgrMX1mb3IoY29uc3QgZSBvZiBkKXt0aGlzLnN0YXJ0WFJlZlF1ZXVlLnB1c2goZSk7dGhpcy5yZWFkWFJlZighMCl9Y29uc3QgZj1bXTtsZXQgZyxwLG09ITE7Zm9yKGNvbnN0IGUgb2YgdSl7cy5wb3M9ZTtjb25zdCB0PW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihzKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwLHJlY292ZXJ5TW9kZTohMH0pO2lmKCFpc0NtZCh0LmdldE9iaigpLCJ0cmFpbGVyIikpY29udGludWU7Y29uc3QgYT10LmdldE9iaigpO2lmKGEgaW5zdGFuY2VvZiBEaWN0KXtmLnB1c2goYSk7YS5oYXMoIkVuY3J5cHQiKSYmKG09ITApfX1mb3IoY29uc3QgZSBvZlsuLi5mLCJnZW5GYWxsYmFjayIsLi4uZl0pe2lmKCJnZW5GYWxsYmFjayI9PT1lKXtpZighcClicmVhazt0aGlzLl9nZW5lcmF0aW9uRmFsbGJhY2s9ITA7Y29udGludWV9bGV0IHQ9ITE7dHJ5e2NvbnN0IGE9ZS5nZXQoIlJvb3QiKTtpZighKGEgaW5zdGFuY2VvZiBEaWN0KSljb250aW51ZTtjb25zdCByPWEuZ2V0KCJQYWdlcyIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IGk9ci5nZXQoIkNvdW50Iik7TnVtYmVyLmlzSW50ZWdlcihpKSYmKHQ9ITApfWNhdGNoKGUpe3A9ZTtjb250aW51ZX1pZih0JiYoIW18fGUuaGFzKCJFbmNyeXB0IikpJiZlLmhhcygiSUQiKSlyZXR1cm4gZTtnPWV9aWYoZylyZXR1cm4gZztpZih0aGlzLnRvcERpY3QpcmV0dXJuIHRoaXMudG9wRGljdDtpZighZi5sZW5ndGgpZm9yKGNvbnN0IGUgaW4gdGhpcy5lbnRyaWVzKXtpZighT2JqZWN0Lmhhc093bih0aGlzLmVudHJpZXMsZSkpY29udGludWU7Y29uc3QgdD10aGlzLmVudHJpZXNbZV0sYT1SZWYuZ2V0KHBhcnNlSW50KGUpLHQuZ2VuKTtsZXQgcjt0cnl7cj10aGlzLmZldGNoKGEpfWNhdGNoe2NvbnRpbnVlfXIgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYocj1yLmRpY3QpO2lmKHIgaW5zdGFuY2VvZiBEaWN0JiZyLmhhcygiUm9vdCIpKXJldHVybi
101ByfXRocm93IG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKCJJbnZhbGlkIFBERiBzdHJ1Y3R1cmUuIil9cmVhZFhSZWYoZT0hMSl7Y29uc3QgdD10aGlzLnN0cmVhbSxhPW5ldyBTZXQ7Zm9yKDt0aGlzLnN0YXJ0WFJlZlF1ZXVlLmxlbmd0aDspe3RyeXtjb25zdCBlPXRoaXMuc3RhcnRYUmVmUXVldWVbMF07aWYoYS5oYXMoZSkpe3dhcm4oInJlYWRYUmVmIC0gc2tpcHBpbmcgWFJlZiB0YWJsZSBzaW5jZSBpdCB3YXMgYWxyZWFkeSBwYXJzZWQuIik7dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpO2NvbnRpbnVlfWEuYWRkKGUpO3QucG9zPWUrdC5zdGFydDtjb25zdCByPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcih0KSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7bGV0IGksbj1yLmdldE9iaigpO2lmKGlzQ21kKG4sInhyZWYiKSl7aT10aGlzLnByb2Nlc3NYUmVmVGFibGUocik7dGhpcy50b3BEaWN0fHwodGhpcy50b3BEaWN0PWkpO249aS5nZXQoIlhSZWZTdG0iKTtpZihOdW1iZXIuaXNJbnRlZ2VyKG4pJiYhdGhpcy5feHJlZlN0bXMuaGFzKG4pKXt0aGlzLl94cmVmU3Rtcy5hZGQobik7dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKG4pfX1lbHNle2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pKXRocm93IG5ldyBGb3JtYXRFcnJvcigiSW52YWxpZCBYUmVmIHN0cmVhbSBoZWFkZXIiKTtpZighKE51bWJlci5pc0ludGVnZXIoci5nZXRPYmooKSkmJmlzQ21kKHIuZ2V0T2JqKCksIm9iaiIpJiYobj1yLmdldE9iaigpKWluc3RhbmNlb2YgQmFzZVN0cmVhbSkpdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIFhSZWYgc3RyZWFtIik7aT10aGlzLnByb2Nlc3NYUmVmU3RyZWFtKG4pO3RoaXMudG9wRGljdHx8KHRoaXMudG9wRGljdD1pKTtpZighaSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoIkZhaWxlZCB0byByZWFkIFhSZWYgc3RyZWFtIil9bj1pLmdldCgiUHJldiIpO051bWJlci5pc0ludGVnZXIobik/dGhpcy5zdGFydFhSZWZRdWV1ZS5wdXNoKG4pOm4gaW5zdGFuY2VvZiBSZWYmJnRoaXMuc3RhcnRYUmVmUXVldWUucHVzaChuLm51bSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiKHdoaWxlIHJlYWRpbmcgWFJlZik6ICIrZSl9dGhpcy5zdGFydFhSZWZRdWV1ZS5zaGlmdCgpfWlmKHRoaXMudG9wRGljdClyZXR1cm4gdGhpcy50b3BEaWN0O2lmKCFlKXRocm93IG5ldyBYUmVmUGFyc2VFeGNlcHRpb259Z2V0RW50cnkoZSl7Y29uc3QgdD10aGlzLmVudHJpZXNbZV07cmV0dXJuIHQmJiF0LmZyZWUmJnQub2Zmc2V0P3Q6bnVsbH1mZXRjaElmUmVmKGUsdD0hMSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWY/dGhpcy5mZXRjaChlLHQpOmV9ZmV0Y2goZSx0PSExKXtpZighKGUgaW5zdGFuY2VvZiBSZWYpKXRocm93IG5ldyBFcnJvcigicmVmIG9iamVjdCBpcyBub3QgYSByZWZlcmVuY2UiKTtjb25zdCBhPWUubnVtLHI9dGhpcy5fY2FjaGVNYXAuZ2V0KGEpO2lmKHZvaWQgMCE9PXIpe3IgaW5zdGFuY2VvZiBEaWN0JiYhci5vYmpJZCYmKHIub2JqSWQ9ZS50b1N0cmluZygpKTtyZXR1cm4gcn1sZXQgaT10aGlzLmdldEVudHJ5KGEpO2lmKG51bGw9PT1pKXJldHVybiBpO2lmKHRoaXMuX3BlbmRpbmdSZWZzLmhhcyhlKSl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3dhcm4oYElnbm9yaW5nIGNpcmN1bGFyIHJlZmVyZW5jZTogJHtlfS5gKTtyZXR1cm4gbmF9dGhpcy5fcGVuZGluZ1JlZnMucHV0KGUpO3RyeXtpPWkudW5jb21wcmVzc2VkP3RoaXMuZmV0Y2hVbmNvbXByZXNzZWQoZSxpLHQpOnRoaXMuZmV0Y2hDb21wcmVzc2VkKGUsaSx0KTt0aGlzLl9wZW5kaW5nUmVmcy5yZW1vdmUoZSl9Y2F0Y2godCl7dGhpcy5fcGVuZGluZ1JlZnMucmVtb3ZlKGUpO3Rocm93IHR9aSBpbnN0YW5jZW9mIERpY3Q/aS5vYmpJZD1lLnRvU3RyaW5nKCk6aSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0mJihpLmRpY3Qub2JqSWQ9ZS50b1N0cmluZygpKTtyZXR1cm4gaX1mZXRjaFVuY29tcHJlc3NlZChlLHQsYT0hMSl7Y29uc3Qgcj1lLmdlbjtsZXQgaT1lLm51bTtpZih0LmdlbiE9PXIpe2NvbnN0IG49YEluY29uc2lzdGVudCBnZW5lcmF0aW9uIGluIFhSZWY6ICR7ZX1gO2lmKHRoaXMuX2dlbmVyYXRpb25GYWxsYmFjayYmdC5nZW48cil7d2FybihuKTtyZXR1cm4gdGhpcy5mZXRjaFVuY29tcHJlc3NlZChSZWYuZ2V0KGksdC5nZW4pLHQsYSl9dGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihuKX1jb25zdCBuPXRoaXMuc3RyZWFtLm1ha2VTdWJTdHJlYW0odC5vZmZzZXQrdGhpcy5zdHJlYW0uc3RhcnQpLHM9bmV3IFBhcnNlcih7bGV4ZXI6bmV3IExleGVyKG4pLHhyZWY6dGhpcyxhbGxvd1N0cmVhbXM6ITB9KSxvPXMuZ2V0T2JqKCksYz1zLmdldE9iaigpLGw9cy5nZXRPYmooKTtpZihvIT09aXx8YyE9PXJ8fCEobCBpbnN0YW5jZW9mIENtZCkpdGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKTtpZigib2JqIiE9PWwuY21kKXtpZihsLmNtZC5zdGFydHNXaXRoKCJvYmoiKSl7aT1wYXJzZUludChsLmNtZC5zdWJzdHJpbmcoMyksMTApO2lmKCFOdW1iZXIuaXNOYU4oaSkpcmV0dXJuIGl9dGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkICh1bmNvbXByZXNzZWQpIFhSZWYgZW50cnk6ICR7ZX1gKX0odD10aGlzLmVuY3J5cHQmJiFhP3MuZ2V0T2JqKHRoaXMuZW5jcnlwdC5jcmVhdGVDaXBoZXJUcmFuc2Zvcm0oaSxyKSk6cy5nZXRPYmooKSlpbnN0YW5jZW9mIEJhc2VTdHJlYW18fHRoaXMuX2NhY2hlTWFwLnNldChpLHQpO3JldHVybiB0fWZldGNoQ29tcHJlc3NlZChlLHQsYT0hMSl7Y29uc3Qgcj10Lm9mZnNldCxpPXRoaXMuZmV0Y2goUmVmLmdldChyLDApKTtpZighKGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImJhZCBPYmpTdG0gc3RyZWFtIik7Y29uc3Qgbj1pLmRpY3QuZ2V0KCJGaXJzdCIpLHM9aS5kaWN0LmdldCgiTiIpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKG4pfHwhTnVtYmVyLmlzSW50ZWdlcihzKSl0aHJvdyBuZXcgRm9ybWF0RXJyb3IoImludmFsaWQgZmlyc3QgYW5kIG4gcGFyYW1ldGVycyBmb3IgT2JqU3RtIHN0cmVhbSIpO2xldCBvPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihpKSx4cmVmOnRoaXMsYWxsb3dTdHJlYW1zOiEwfSk7Y29uc3QgYz1uZXcgQXJyYXkocyksbD1uZXcgQXJyYXkocyk7Zm9yKGxldCBlPTA7ZTxzOysrZSl7Y29uc3QgdD1vLmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHQpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3QgbnVtYmVyIGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke3R9YCk7Y29uc3QgYT1vLmdldE9iaigpO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKGEpKXRocm93IG5ldyBGb3JtYXRFcnJvcihgaW52YWxpZCBvYmplY3Qgb2Zmc2V0IGluIHRoZSBPYmpTdG0gc3RyZWFtOiAke2F9YCk7Y1tlXT10O2NvbnN0IGk9dGhpcy5nZXRFbnRyeSh0KTtpPy5vZmZzZXQ9PT1yJiZpLmdlbiE9PWUmJihpLmdlbj1lKTtsW2VdPWF9Y29uc3QgaD0oaS5zdGFydHx8MCkrbix1PW5ldyBBcnJheShzKTtmb3IobGV0IGU9MDtlPHM7KytlKXtjb25zdCB0PWU8cy0xP2xbZSsxXS1sW2VdOnZvaWQgMDtpZih0PDApdGhyb3cgbmV3IEZvcm1hdEVycm9yKCJJbnZhbGlkIG9mZnNldCBpbiB0aGUgT2JqU3RtIHN0cmVhbS4iKTtvPW5ldyBQYXJzZXIoe2xleGVyOm5ldyBMZXhlcihpLm1ha2VTdWJTdHJlYW0oaCtsW2VdLHQsaS5kaWN0KSkseHJlZjp0aGlzLGFsbG93U3RyZWFtczohMH0pO2NvbnN0IGE9by5nZXRPYmooKTt1W2VdPWE7aWYoYSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0pY29udGludWU7Y29uc3Qgbj1jW2VdLGQ9dGhpcy5lbnRyaWVzW25dO2QmJmQub2Zmc2V0PT09ciYmZC5nZW49PT1lJiZ0aGlzLl9jYWNoZU1hcC5zZXQobixhKX1pZih2b2lkIDA9PT0odD11W3QuZ2VuXSkpdGhyb3cgbmV3IFhSZWZFbnRyeUV4Y2VwdGlvbihgQmFkIChjb21wcmVzc2VkKSBYUmVmIGVudHJ5OiAke2V9YCk7cmV0dXJuIHR9YXN5bmMgZmV0Y2hJZlJlZkFzeW5jKGUsdCl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWY/dGhpcy5mZXRjaEFzeW5jKGUsdCk6ZX1hc3luYyBmZXRjaEFzeW5jKGUsdCl7dHJ5e3JldHVybiB0aGlzLmZldGNoKGUsdCl9Y2F0Y2goYSl7aWYoIShhIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pKXRocm93IGE7YXdhaXQgdGhpcy5wZGZNYW5hZ2VyLnJlcXVlc3RSYW5nZShhLmJlZ2luLGEuZW5kKTtyZXR1cm4gdGhpcy5mZXRjaEFzeW5jKGUsdCl9fWdldENhdGFsb2dPYmooKXtyZXR1cm4gdGhpcy5yb290fX1jb25zdCBzYz1bMCwwLDYxMiw3OTJdO2NsYXNzIFBhZ2V7I2F0PSExOyNydD1udWxsO2NvbnN0cnVjdG9yKHtwZGZNYW5hZ2VyOmUseHJlZjp0LHBhZ2VJbmRleDphLHBhZ2VEaWN0OnIscmVmOmksZ2xvYmFsSWRGYWN0b3J5Om4sZm9udENhY2hlOnMsYnVpbHRJbkNNYXBDYWNoZTpvLHN0YW5kYXJkRm9udERhdGFDYWNoZTpjLGdsb2JhbENvbG9yU3BhY2VDYWNoZTpsLGdsb2JhbEltYWdlQ2FjaGU6aCxzeXN0ZW1Gb250Q2FjaGU6dSxub25CbGVuZE1vZGVzU2V0OmQseGZhRmFjdG9yeTpmfSl7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5wYWdlSW5kZXg9YTt0aGlzLnBhZ2VEaWN0PXI7dGhpcy54cmVmPXQ7dGhpcy5yZWY9aTt0aGlzLmZvbnRDYWNoZT1zO3RoaXMuYnVpbHRJbkNNYXBDYWNoZT1vO3RoaXMuc3RhbmRhcmRGb250RGF0YUNhY2hlPWM7dGhpcy5nbG9iYWxDb2xvclNwYWNlQ2FjaGU9bDt0aGlzLmdsb2JhbEltYWdlQ2FjaGU9aDt0aGlzLnN5c3RlbUZvbnRDYWNoZT11O3RoaXMubm9uQmxlbmRNb2Rlc1NldD1kO3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1lLmV2YWx1YXRvck9wdGlvbnM7dGhpcy54ZmFGYWN0b3J5PWY7Y29uc3QgZz17b2JqOjB9O3RoaXMuX2xvY2FsSWRGYWN0b3J5PWNsYXNzIGV4dGVuZHMgbntzdGF0aWMgY3JlYXRlT2JqSWQoKXtyZXR1cm5gcCR7YX1fJHsrK2cub2JqfWB9c3RhdGljIGdldFBhZ2VPYmpJZCgpe3JldHVybmBwJHtpLnRvU3RyaW5nKCl9YH19fSNpdChlKXtyZXR1cm4gbmV3IFBhcnRpYWxFdmFsdWF0b3Ioe3hyZWY6dGhpcy54cmVmLGhhbmRsZXI6ZSxwYWdlSW5kZXg6dGhpcy5wYWdlSW5kZXgsaWRGYWN0b3J5OnRoaXMuX2xvY2FsSWRGYWN0b3J5LGZvbnRDYWNoZTp0aGlzLmZvbnRDYWNoZSxidWlsdEluQ01hcENhY2hlOnRoaXMuYnVpbHRJbkNNYXBDYWNoZSxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6dGhpcy5zdGFuZGFyZEZvbnREYXRhQ2FjaGUsZ2xvYmFsQ29sb3JTcGFjZUNhY2hlOnRoaXMuZ2xvYmFsQ29sb3JTcGFjZUNhY2hlLGdsb2JhbEltYWdlQ2FjaGU6dGhpcy5nbG9iYWxJbWFnZUNhY2hlLHN5c3RlbUZvbnRDYWNoZTp0aGlzLnN5c3RlbUZvbnRDYWNoZSxvcHRpb25zOnRoaXMuZXZhbHVhdG9yT3B0aW9uc30pfSNudChlLHQ9ITEpe2NvbnN0IGE9Z2V0SW5oZXJpdGFibGVQcm9wZXJ0eSh7ZGljdDp0aGlzLnBhZ2VEaWN0LGtleTpl
101LGdldEFycmF5OnQsc3RvcFdoZW5Gb3VuZDohMX0pO3JldHVybiBBcnJheS5pc0FycmF5KGEpPzEhPT1hLmxlbmd0aCYmYVswXWluc3RhbmNlb2YgRGljdD9EaWN0Lm1lcmdlKHt4cmVmOnRoaXMueHJlZixkaWN0QXJyYXk6YX0pOmFbMF06YX1nZXQgY29udGVudCgpe3JldHVybiB0aGlzLnBhZ2VEaWN0LmdldEFycmF5KCJDb250ZW50cyIpfWdldCByZXNvdXJjZXMoKXtjb25zdCBlPXRoaXMuI250KCJSZXNvdXJjZXMiKTtyZXR1cm4gc2hhZG93KHRoaXMsInJlc291cmNlcyIsZSBpbnN0YW5jZW9mIERpY3Q/ZTpEaWN0LmVtcHR5KX1nZXRCb3VuZGluZ0JveChlKXtpZih0aGlzLnhmYURhdGEpcmV0dXJuIHRoaXMueGZhRGF0YS5iYm94O2NvbnN0IHQ9bG9va3VwTm9ybWFsUmVjdCh0aGlzLiNudChlLCEwKSxudWxsKTtpZih0KXtpZih0WzJdLXRbMF0+MCYmdFszXS10WzFdPjApcmV0dXJuIHQ7d2FybihgRW1wdHksIG9yIGludmFsaWQsIC8ke2V9IGVudHJ5LmApfXJldHVybiBudWxsfWdldCBtZWRpYUJveCgpe3JldHVybiBzaGFkb3codGhpcywibWVkaWFCb3giLHRoaXMuZ2V0Qm91bmRpbmdCb3goIk1lZGlhQm94Iil8fHNjKX1nZXQgY3JvcEJveCgpe3JldHVybiBzaGFkb3codGhpcywiY3JvcEJveCIsdGhpcy5nZXRCb3VuZGluZ0JveCgiQ3JvcEJveCIpfHx0aGlzLm1lZGlhQm94KX1nZXQgdXNlclVuaXQoKXtjb25zdCBlPXRoaXMucGFnZURpY3QuZ2V0KCJVc2VyVW5pdCIpO3JldHVybiBzaGFkb3codGhpcywidXNlclVuaXQiLCJudW1iZXIiPT10eXBlb2YgZSYmZT4wP2U6MSl9Z2V0IHZpZXcoKXtjb25zdHtjcm9wQm94OmUsbWVkaWFCb3g6dH09dGhpcztpZihlIT09dCYmIWlzQXJyYXlFcXVhbChlLHQpKXtjb25zdCBhPVV0aWwuaW50ZXJzZWN0KGUsdCk7aWYoYSYmYVsyXS1hWzBdPjAmJmFbM10tYVsxXT4wKXJldHVybiBzaGFkb3codGhpcywidmlldyIsYSk7d2FybigiRW1wdHkgL0Nyb3BCb3ggYW5kIC9NZWRpYUJveCBpbnRlcnNlY3Rpb24uIil9cmV0dXJuIHNoYWRvdyh0aGlzLCJ2aWV3Iix0KX1nZXQgcm90YXRlKCl7bGV0IGU9dGhpcy4jbnQoIlJvdGF0ZSIpfHwwO2UlOTAhPTA/ZT0wOmU+PTM2MD9lJT0zNjA6ZTwwJiYoZT0oZSUzNjArMzYwKSUzNjApO3JldHVybiBzaGFkb3codGhpcywicm90YXRlIixlKX0jc3QoZSx0KXtpZighdGhpcy5ldmFsdWF0b3JPcHRpb25zLmlnbm9yZUVycm9ycyl0aHJvdyBlO3dhcm4oYGdldENvbnRlbnRTdHJlYW0gLSBpZ25vcmluZyBzdWItc3RyZWFtICgke3R9KTogIiR7ZX0iLmApfWFzeW5jIGdldENvbnRlbnRTdHJlYW0oKXtjb25zdCBlPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiY29udGVudCIpO3JldHVybiBlIGluc3RhbmNlb2YgQmFzZVN0cmVhbT9lOkFycmF5LmlzQXJyYXkoZSk/bmV3IFN0cmVhbXNTZXF1ZW5jZVN0cmVhbShlLHRoaXMuI3N0LmJpbmQodGhpcykpOm5ldyBOdWxsU3RyZWFtfWdldCB4ZmFEYXRhKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhIix0aGlzLnhmYUZhY3Rvcnk/e2Jib3g6dGhpcy54ZmFGYWN0b3J5LmdldEJvdW5kaW5nQm94KHRoaXMucGFnZUluZGV4KX06bnVsbCl9YXN5bmMjb3QoZSx0LGEpe2NvbnN0IHI9W107Zm9yKGNvbnN0IGkgb2YgZSlpZihpLmlkKXtjb25zdCBlPVJlZi5mcm9tU3RyaW5nKGkuaWQpO2lmKCFlKXt3YXJuKGBBIG5vbi1saW5rZWQgYW5ub3RhdGlvbiBjYW5ub3QgYmUgbW9kaWZpZWQ6ICR7aS5pZH1gKTtjb250aW51ZX1pZihpLmRlbGV0ZWQpe3QucHV0KGUsZSk7aWYoaS5wb3B1cFJlZil7Y29uc3QgZT1SZWYuZnJvbVN0cmluZyhpLnBvcHVwUmVmKTtlJiZ0LnB1dChlLGUpfWNvbnRpbnVlfWlmKGkucG9wdXA/LmRlbGV0ZWQpe2NvbnN0IGU9UmVmLmZyb21TdHJpbmcoaS5wb3B1cFJlZik7ZSYmdC5wdXQoZSxlKX1hPy5wdXQoZSk7aS5yZWY9ZTtyLnB1c2godGhpcy54cmVmLmZldGNoQXN5bmMoZSkudGhlbihlPT57ZSBpbnN0YW5jZW9mIERpY3QmJihpLm9sZEFubm90YXRpb249ZS5jbG9uZSgpKX0sKCk9Pnt3YXJuKGBDYW5ub3QgZmV0Y2ggXGBvbGRBbm5vdGF0aW9uXGAgZm9yOiAke2V9LmApfSkpO2RlbGV0ZSBpLmlkfWF3YWl0IFByb21pc2UuYWxsKHIpfWFzeW5jIHNhdmVOZXdBbm5vdGF0aW9ucyhlLHQsYSxyLGkpe2lmKHRoaXMueGZhRmFjdG9yeSl0aHJvdyBuZXcgRXJyb3IoIlhGQTogQ2Fubm90IHNhdmUgbmV3IGFubm90YXRpb25zLiIpO2NvbnN0IG49dGhpcy4jaXQoZSkscz1uZXcgUmVmU2V0Q2FjaGUsbz1uZXcgUmVmU2V0O2F3YWl0IHRoaXMuI290KGEscyxvKTtjb25zdCBjPXRoaXMucGFnZURpY3QsbD10aGlzLmFubm90YXRpb25zLmZpbHRlcihlPT4hKGUgaW5zdGFuY2VvZiBSZWYmJnMuaGFzKGUpKSksaD1hd2FpdCBBbm5vdGF0aW9uRmFjdG9yeS5zYXZlTmV3QW5ub3RhdGlvbnMobix0LGEscixpKTtmb3IoY29uc3R7cmVmOmV9b2YgaC5hbm5vdGF0aW9ucyllIGluc3RhbmNlb2YgUmVmJiYhby5oYXMoZSkmJmwucHVzaChlKTtjb25zdCB1PWMuY2xvbmUoKTt1LnNldCgiQW5ub3RzIixsKTtpLnB1dCh0aGlzLnJlZix7ZGF0YTp1fSk7Zm9yKGNvbnN0IGUgb2YgcylpLnB1dChlLHtkYXRhOm51bGx9KX1hc3luYyBzYXZlKGUsdCxhLHIpe2NvbnN0IGk9dGhpcy4jaXQoZSksbj1hd2FpdCB0aGlzLl9wYXJzZWRBbm5vdGF0aW9ucyxzPVtdO2Zvcihjb25zdCBlIG9mIG4pcy5wdXNoKGUuc2F2ZShpLHQsYSxyKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBzYXZlIC0gaWdub3JpbmcgYW5ub3RhdGlvbiBkYXRhIGR1cmluZyAiJHt0Lm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9KSk7cmV0dXJuIFByb21pc2UuYWxsKHMpfWFzeW5jIGxvYWRSZXNvdXJjZXMoZSl7YXdhaXQodGhpcy4jcnQ/Pz10aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsInJlc291cmNlcyIpKTthd2FpdCBPYmplY3RMb2FkZXIubG9hZCh0aGlzLnJlc291cmNlcyxlLHRoaXMueHJlZil9YXN5bmMjY3QoZSx0KXtjb25zdCBhPWU/LmdldCgiUmVzb3VyY2VzIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCYmYS5zaXplKSlyZXR1cm4gdGhpcy5yZXNvdXJjZXM7YXdhaXQgT2JqZWN0TG9hZGVyLmxvYWQoYSx0LHRoaXMueHJlZik7cmV0dXJuIERpY3QubWVyZ2Uoe3hyZWY6dGhpcy54cmVmLGRpY3RBcnJheTpbYSx0aGlzLnJlc291cmNlc10sbWVyZ2VTdWJEaWN0czohMH0pfWFzeW5jIGdldE9wZXJhdG9yTGlzdCh7aGFuZGxlcjplLHNpbms6dCx0YXNrOmEsaW50ZW50OnIsY2FjaGVLZXk6aSxhbm5vdGF0aW9uU3RvcmFnZTpjPW51bGwsbW9kaWZpZWRJZHM6ZD1udWxsfSl7Y29uc3QgZz10aGlzLmdldENvbnRlbnRTdHJlYW0oKSxwPXRoaXMubG9hZFJlc291cmNlcyhnYSksbT10aGlzLiNpdChlKSxiPXRoaXMueGZhRmFjdG9yeT9udWxsOmdldE5ld0Fubm90YXRpb25zTWFwKGMpLHk9Yj8uZ2V0KHRoaXMucGFnZUluZGV4KTtsZXQgdz1Qcm9taXNlLnJlc29sdmUobnVsbCkseD1udWxsO2lmKHkpe2NvbnN0IGU9dGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKTtsZXQgdDtjb25zdCByPW5ldyBTZXQ7Zm9yKGNvbnN0e2JpdG1hcElkOmUsYml0bWFwOnR9b2YgeSkhZXx8dHx8ci5oYXMoZSl8fHIuYWRkKGUpO2NvbnN0e2lzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkOml9PXRoaXMuZXZhbHVhdG9yT3B0aW9ucztpZihyLnNpemU+MCl7Y29uc3QgZT15LnNsaWNlKCk7Zm9yKGNvbnN0W3QsYV1vZiBjKXQuc3RhcnRzV2l0aChmKSYmYS5iaXRtYXAmJnIuaGFzKGEuYml0bWFwSWQpJiZlLnB1c2goYSk7dD1Bbm5vdGF0aW9uRmFjdG9yeS5nZW5lcmF0ZUltYWdlcyhlLHRoaXMueHJlZixpKX1lbHNlIHQ9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoeSx0aGlzLnhyZWYsaSk7eD1uZXcgUmVmU2V0O3c9UHJvbWlzZS5hbGwoW2UsdGhpcy4jb3QoeSx4LG51bGwpXSkudGhlbigoW2VdKT0+ZT9Bbm5vdGF0aW9uRmFjdG9yeS5wcmludE5ld0Fubm90YXRpb25zKGUsbSxhLHksdCk6bnVsbCl9Y29uc3QgUz1Qcm9taXNlLmFsbChbZyxwXSkudGhlbihhc3luYyhbbl0pPT57Y29uc3Qgcz1hd2FpdCB0aGlzLiNjdChuLmRpY3QsZ2EpLG89bmV3IE9wZXJhdG9yTGlzdChyLHQpO2Uuc2VuZCgiU3RhcnRSZW5kZXJQYWdlIix7dHJhbnNwYXJlbmN5Om0uaGFzQmxlbmRNb2RlcyhzLHRoaXMubm9uQmxlbmRNb2Rlc1NldCkscGFnZUluZGV4OnRoaXMucGFnZUluZGV4LGNhY2hlS2V5Oml9KTthd2FpdCBtLmdldE9wZXJhdG9yTGlzdCh7c3RyZWFtOm4sdGFzazphLHJlc291cmNlczpzLG9wZXJhdG9yTGlzdDpvfSk7cmV0dXJuIG99KTtsZXRbayxDLHZdPWF3YWl0IFByb21pc2UuYWxsKFtTLHR
101oaXMuX3BhcnNlZEFubm90YXRpb25zLHddKTtpZih2KXtDPUMuZmlsdGVyKGU9PiEoZS5yZWYmJnguaGFzKGUucmVmKSkpO2ZvcihsZXQgZT0wLHQ9di5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgYT12W2VdO2lmKGEucmVmVG9SZXBsYWNlKXtjb25zdCByPUMuZmluZEluZGV4KGU9PmUucmVmJiZpc1JlZnNFcXVhbChlLnJlZixhLnJlZlRvUmVwbGFjZSkpO2lmKHI+PTApe0Muc3BsaWNlKHIsMSxhKTt2LnNwbGljZShlLS0sMSk7dC0tfX19Qz1DLmNvbmNhdCh2KX1pZigwPT09Qy5sZW5ndGh8fHImaCl7ay5mbHVzaCghMCk7cmV0dXJue2xlbmd0aDprLnRvdGFsTGVuZ3RofX1jb25zdCBGPSEhKHImbCksVD0hIShyJnUpLE89ISEociZuKSxEPSEhKHImcyksTT0hIShyJm8pLFI9W107Zm9yKGNvbnN0IGUgb2YgQykoT3x8RCYmZS5tdXN0QmVWaWV3ZWQoYyxGKSYmZS5tdXN0QmVWaWV3ZWRXaGVuRWRpdGluZyhULGQpfHxNJiZlLm11c3RCZVByaW50ZWQoYykpJiZSLnB1c2goZS5nZXRPcGVyYXRvckxpc3QobSxhLHIsYykuY2F0Y2goZnVuY3Rpb24oZSl7d2FybihgZ2V0T3BlcmF0b3JMaXN0IC0gaWdub3JpbmcgYW5ub3RhdGlvbiBkYXRhIGR1cmluZyAiJHthLm5hbWV9IiB0YXNrOiAiJHtlfSIuYCk7cmV0dXJue29wTGlzdDpudWxsLHNlcGFyYXRlRm9ybTohMSxzZXBhcmF0ZUNhbnZhczohMX19KSk7Y29uc3QgTj1hd2FpdCBQcm9taXNlLmFsbChSKTtsZXQgRT0hMSxMPSExO2Zvcihjb25zdHtvcExpc3Q6ZSxzZXBhcmF0ZUZvcm06dCxzZXBhcmF0ZUNhbnZhczphfW9mIE4pe2suYWRkT3BMaXN0KGUpO0V8fD10O0x8fD1hfWsuZmx1c2goITAse2Zvcm06RSxjYW52YXM6TH0pO3JldHVybntsZW5ndGg6ay50b3RhbExlbmd0aH19YXN5bmMgZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOmUsdGFzazp0LGluY2x1ZGVNYXJrZWRDb250ZW50OmEsZGlzYWJsZU5vcm1hbGl6YXRpb246cixzaW5rOmksaW50ZXJzZWN0b3I6bj1udWxsfSl7Y29uc3Qgcz10aGlzLmdldENvbnRlbnRTdHJlYW0oKSxvPXRoaXMubG9hZFJlc291cmNlcyhwYSksYz10aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygibGFuZyIpLFtsLCxoXT1hd2FpdCBQcm9taXNlLmFsbChbcyxvLGNdKSx1PWF3YWl0IHRoaXMuI2N0KGwuZGljdCxwYSk7cmV0dXJuIHRoaXMuI2l0KGUpLmdldFRleHRDb250ZW50KHtzdHJlYW06bCx0YXNrOnQscmVzb3VyY2VzOnUsaW5jbHVkZU1hcmtlZENvbnRlbnQ6YSxkaXNhYmxlTm9ybWFsaXphdGlvbjpyLHNpbms6aSx2aWV3Qm94OnRoaXMudmlldyxsYW5nOmgsaW50ZXJzZWN0b3I6bn0pfWFzeW5jIGdldFN0cnVjdFRyZWUoKXtjb25zdCBlPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJzdHJ1Y3RUcmVlUm9vdCIpO2lmKCFlKXJldHVybi
101BudWxsO2F3YWl0IHRoaXMuX3BhcnNlZEFubm90YXRpb25zO3RyeXtjb25zdCB0PWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiX3BhcnNlU3RydWN0VHJlZSIsW2VdKTtyZXR1cm4gYXdhaXQgdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZSh0LCJzZXJpYWxpemFibGUiKX1jYXRjaChlKXt3YXJuKGBnZXRTdHJ1Y3RUcmVlOiAiJHtlfSIuYCk7cmV0dXJuIG51bGx9fV9wYXJzZVN0cnVjdFRyZWUoZSl7Y29uc3QgdD1uZXcgU3RydWN0VHJlZVBhZ2UoZSx0aGlzLnBhZ2VEaWN0KTt0LnBhcnNlKHRoaXMucmVmKTtyZXR1cm4gdH1hc3luYyBnZXRBbm5vdGF0aW9uc0RhdGEoZSx0LGEpe2NvbnN0IHI9YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnM7aWYoMD09PXIubGVuZ3RoKXJldHVybiByO2NvbnN0IGk9W10sYz1bXTtsZXQgbDtjb25zdCBoPSEhKGEmbiksdT0hIShhJnMpLGQ9ISEoYSZvKSxmPVtdO2Zvcihjb25zdCBhIG9mIHIpe2NvbnN0IHI9aHx8dSYmYS52aWV3YWJsZTsocnx8ZCYmYS5wcmludGFibGUpJiZpLnB1c2goYS5kYXRhKTtpZihhLmhhc1RleHRDb250ZW50JiZyKXtsPz89dGhpcy4jaXQoZSk7Yy5wdXNoKGEuZXh0cmFjdFRleHRDb250ZW50KGwsdCxbLTEvMCwtMS8wLDEvMCwxLzBdKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBnZXRBbm5vdGF0aW9uc0RhdGEgLSBpZ25vcmluZyB0ZXh0Q29udGVudCBkdXJpbmcgIiR7dC5uYW1lfSIgdGFzazogIiR7ZX0iLmApfSkpfWVsc2UgYS5vdmVybGF5c1RleHRDb250ZW50JiZyJiZmLnB1c2goYSl9aWYoZi5sZW5ndGg+MCl7Y29uc3QgYT1uZXcgSW50ZXJzZWN0b3IoZik7Yy5wdXNoKHRoaXMuZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOmUsdGFzazp0LGluY2x1ZGVNYXJrZWRDb250ZW50OiExLGRpc2FibGVOb3JtYWxpemF0aW9uOiExLHNpbms6bnVsbCx2aWV3Qm94OnRoaXMudmlldyxsYW5nOm51bGwsaW50ZXJzZWN0b3I6YX0pLnRoZW4oKCk9PnthLnNldFRleHQoKX0pKX1hd2FpdCBQcm9taXNlLmFsbChjKTtyZXR1cm4gaX1nZXQgYW5ub3RhdGlvbnMoKXtjb25zdCBlPXRoaXMuI250KCJBbm5vdHMiKTtyZXR1cm4gc2hhZG93KHRoaXMsImFubm90YXRpb25zIixBcnJheS5pc0FycmF5KGUpP2U6W10pfWdldCBfcGFyc2VkQW5ub3RhdGlvbnMoKXtjb25zdCBlPXRoaXMucGRmTWFuYWdlci5lbnN1cmUodGhpcywiYW5ub3RhdGlvbnMiKS50aGVuKGFzeW5jIGU9PntpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGU7Y29uc3RbdCxhXT1hd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiYW5ub3RhdGlvbkdsb2JhbHMiKSx0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmaWVsZE9iamVjdHMiKV0pO2lmKCF0KXJldHVybltdO2NvbnN0IHI9YT8ub3JwaGFuRmllbGRzLGk9W107Zm9yKGNvbnN0IGEgb2YgZSlpLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZixhLHQsdGhpcy5fbG9jYWxJZEZhY3RvcnksITEscixudWxsLHRoaXMucmVmKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGBfcGFyc2VkQW5ub3RhdGlvbnM6ICIke2V9Ii5gKTtyZXR1cm4gbnVsbH0pKTtjb25zdCBuPVtdO2xldCBzLG87Zm9yKGNvbnN0IGUgb2YgYXdhaXQgUHJvbWlzZS5hbGwoaSkpZSYmKGUgaW5zdGFuY2VvZiBXaWRnZXRBbm5vdGF0aW9uPyhvfHw9W10pLnB1c2goZSk6ZSBpbnN0YW5jZW9mIFBvcHVwQW5ub3RhdGlvbj8oc3x8PVtdKS5wdXNoKGUpOm4ucHVzaChlKSk7byYmbi5wdXNoKC4uLm8pO3MmJm4ucHVzaCguLi5zKTtyZXR1cm4gbn0pO3RoaXMuI2F0PSEwO3JldHVybiBzaGFkb3codGhpcywiX3BhcnNlZEFubm90YXRpb25zIixlKX1nZXQganNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJqc0FjdGlvbnMiLGNvbGxlY3RBY3Rpb25zKHRoaXMueHJlZix0aGlzLnBhZ2VEaWN0LHNlKSl9YXN5bmMgY29sbGVjdEFubm90YXRpb25zQnlUeXBlKGUsdCxhLHIsaSl7Y29uc3R7cGFnZUluZGV4Om59PXRoaXM7aWYodGhpcy4jYXQpe2NvbnN0IGU9YXdhaXQgdGhpcy5fcGFyc2VkQW5ub3RhdGlvbnM7Zm9yKGNvbnN0e2RhdGE6dH1vZiBlKWlmKCFhfHxhLmhhcyh0LmFubm90YXRpb25UeXBlKSl7dC5wYWdlSW5kZXg9bjtyLnB1c2goUHJvbWlzZS5yZXNvbHZlKHQpKX1yZXR1cm59Y29uc3Qgcz1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlKHRoaXMsImFubm90YXRpb25zIik7Zm9yKGNvbnN0IG8gb2YgcylyLnB1c2goQW5ub3RhdGlvbkZhY3RvcnkuY3JlYXRlKHRoaXMueHJlZixvLGksdGhpcy5fbG9jYWxJZEZhY3RvcnksITEsbnVsbCxhLHRoaXMucmVmKS50aGVuKGFzeW5jIGE9PntpZighYSlyZXR1cm4gbnVsbDthLmRhdGEucGFnZUluZGV4PW47aWYoYS5oYXNUZXh0Q29udGVudCYmYS52aWV3YWJsZSl7Y29uc3Qgcj10aGlzLiNpdChlKTthd2FpdCBhLmV4dHJhY3RUZXh0Q29udGVudChyLHQsWy0xLzAsLTEvMCwxLzAsMS8wXSl9cmV0dXJuIGEuZGF0YX0pLmNhdGNoKGZ1bmN0aW9uKGUpe3dhcm4oYGNvbGxlY3RBbm5vdGF0aW9uc0J5VHlwZTogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpfX1jb25zdCBvYz1uZXcgVWludDhBcnJheShbMzcsODAsNjgsNzAsNDVdKSxjYz1uZXcgVWludDhBcnJheShbMTE1LDExNiw5NywxMTQsMTE2LDEyMCwxMTQsMTAxLDEwMl0pLGxjPW5ldyBVaW50OEFycmF5KFsxMDEsMTEwLDEwMCwxMTEsOTgsMTA2XSk7ZnVuY3Rpb24gZmluZChlLHQsYT0xMDI0LHI9ITEpe2NvbnN0IGk9dC5sZW5ndGgsbj1lLnBlZWtCeXRlcyhhKSxzPW4ubGVuZ3RoLWk7aWYoczw9MClyZXR1cm4hMTtpZihyKXtjb25zdCBhPWktMTtsZXQgcj1uLmxlbmd0aC0xO2Zvcig7cj49YTspe2xldCBzPTA7Zm9yKDtzPGkmJm5bci1zXT09PXRbYS1zXTspcysrO2lmKHM+PWkpe2UucG9zKz1yLWE7cmV0dXJuITB9ci0tfX1lbHNle2xldCBhPTA7Zm9yKDthPD1zOyl7bGV0IHI9MDtmb3IoO3I8aSYmblthK3JdPT09dFtyXTspcisrO2lmKHI+PWkpe2UucG9zKz1hO3JldHVybiEwfWErK319cmV0dXJuITF9Y2xhc3MgUERGRG9jdW1lbnR7I2x0PW5ldyBNYXA7I2h0PW51bGw7Y29uc3RydWN0b3IoZSx0KXtpZih0Lmxlbmd0aDw9MCl0aHJvdyBuZXcgSW52YWxpZFBERkV4Y2VwdGlvbigiVGhlIFBERiBmaWxlIGlzIGVtcHR5LCBpLmUuIGl0cyBzaXplIGlzIHplcm8gYnl0ZXMuIik7dGhpcy5wZGZNYW5hZ2VyPWU7dGhpcy5zdHJlYW09dDt0aGlzLnhyZWY9bmV3IFhSZWYodCxlKTtjb25zdCBhPXtmb250OjB9O3RoaXMuX2dsb2JhbElkRmFjdG9yeT1jbGFzc3tzdGF0aWMgZ2V0RG9jSWQoKXtyZXR1cm5gZ18ke2UuZG9jSWR9YH1zdGF0aWMgY3JlYXRlRm9udElkKCl7cmV0dXJuImYiKyArK2EuZm9udH1zdGF0aWMgY3JlYXRlT2JqSWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBjcmVhdGVPYmpJZGAgY2FsbGVkLiIpfXN0YXRpYyBnZXRQYWdlT2JqSWQoKXt1bnJlYWNoYWJsZSgiQWJzdHJhY3QgbWV0aG9kIGBnZXRQYWdlT2JqSWRgIGNhbGxlZC4iKX19fXBhcnNlKGUpe3RoaXMueHJlZi5wYXJzZShlKTt0aGlzLmNhdGFsb2c9bmV3IENhdGFsb2codGhpcy5wZGZNYW5hZ2VyLHRoaXMueHJlZil9Z2V0IGxpbmVhcml6YXRpb24oKXtsZXQgZT1udWxsO3RyeXtlPUxpbmVhcml6YXRpb24uY3JlYXRlKHRoaXMuc3RyZWFtKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgTWlzc2luZ0RhdGFFeGNlcHRpb24pdGhyb3cgZTtpbmZvKGUpfXJldHVybi
101BzaGFkb3codGhpcywibGluZWFyaXphdGlvbiIsZSl9Z2V0IHN0YXJ0WFJlZigpe2NvbnN0IGU9dGhpcy5zdHJlYW07bGV0IHQ9MDtpZih0aGlzLmxpbmVhcml6YXRpb24pe2UucmVzZXQoKTtpZihmaW5kKGUsbGMpKXtlLnNraXAoNik7bGV0IGE9ZS5wZWVrQnl0ZSgpO2Zvcig7aXNXaGl0ZVNwYWNlKGEpOyl7ZS5wb3MrKzthPWUucGVla0J5dGUoKX10PWUucG9zLWUuc3RhcnR9fWVsc2V7Y29uc3QgYT0xMDI0LHI9Y2MubGVuZ3RoO2xldCBpPSExLG49ZS5lbmQ7Zm9yKDshaSYmbj4wOyl7bi09YS1yO248MCYmKG49MCk7ZS5wb3M9bjtpPWZpbmQoZSxjYyxhLCEwKX1pZihpKXtlLnNraXAoOSk7bGV0IGE7ZG97YT1lLmdldEJ5dGUoKX13aGlsZShpc1doaXRlU3BhY2UoYSkpO2xldCByPSIiO2Zvcig7YT49MzImJmE8PTU3Oyl7cis9U3RyaW5nLmZyb21DaGFyQ29kZShhKTthPWUuZ2V0Qnl0ZSgpfXQ9cGFyc2VJbnQociwxMCk7aXNOYU4odCkmJih0PTApfX1yZXR1cm4gc2hhZG93KHRoaXMsInN0YXJ0WFJlZiIsdCl9Y2hlY2tIZWFkZXIoKXtjb25zdCBlPXRoaXMuc3RyZWFtO2UucmVzZXQoKTtpZighZmluZChlLG9jKSlyZXR1cm47ZS5tb3ZlU3RhcnQoKTtlLnNraXAob2MubGVuZ3RoKTtsZXQgdCxhPSIiO2Zvcig7KHQ9ZS5nZXRCeXRlKCkpPjMyJiZhLmxlbmd0aDw3OylhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHQpO3VhLnRlc3QoYSk/dGhpcy4jaHQ9YTp3YXJuKGBJbnZhbGlkIFBERiBoZWFkZXIgdmVyc2lvbjogJHthfWApfXBhcnNlU3RhcnRYUmVmKCl7dGhpcy54cmVmLnNldFN0YXJ0WFJlZih0aGlzLnN0YXJ0WFJlZil9Z2V0IG51bVBhZ2VzKCl7bGV0IGU9MDtlPXRoaXMuY2F0YWxvZy5oYXNBY3R1YWxOdW1QYWdlcz90aGlzLmNhdGFsb2cubnVtUGFnZXM6dGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXROdW1QYWdlcygpOnRoaXMubGluZWFyaXphdGlvbj90aGlzLmxpbmVhcml6YXRpb24ubnVtUGFnZXM6dGhpcy5jYXRhbG9nLm51bVBhZ2VzO3JldHVybiBzaGFkb3codGhpcywibnVtUGFnZXMiLGUpfSN1dChlLHQ9MCl7cmV0dXJuISFBcnJheS5pc0FycmF5KGUpJiZlLmV2ZXJ5KGU9PntpZighKChlPXRoaXMueHJlZi5mZXRjaElmUmVmKGUpKWluc3RhbmNlb2YgRGljdCkpcmV0dXJuITE7aWYoZS5oYXMoIktpZHMiKSl7aWYoKyt0PjEwKXt3YXJuKCIjaGFzT25seURvY3VtZW50U2lnbmF0dXJlczogbWF4aW11bSByZWN1cnNpb24gZGVwdGggcmVhY2hlZCIpO3JldHVybiExfXJldHVybiB0aGlzLiN1dChlLmdldCgiS2lkcyIpLHQpfWNvbnN0IGE9aXNOYW1lKGUuZ2V0KCJGVCIpLCJTaWciKSxyPWUuZ2V0KCJSZWN0IiksaT1BcnJheS5pc0FycmF5KHIpJiZyLmV2ZXJ5KGU9PjA9PT1lKTtyZXR1cm4gYSYmaX0pfWdldCBfeGZhU3RyZWFtcygpe2NvbnN0e2Fjcm9Gb3JtOmV9PXRoaXMuY2F0YWxvZztpZighZSlyZXR1cm4gbnVsbDtjb25zdCB0PWUuZ2V0KCJYRkEiKSxhPW5ldyBNYXAoWyJ4ZHA6eGRwIiwidGVtcGxhdGUiLCJkYXRhc2V0cyIsImNvbmZpZyIsImNvbm5lY3Rpb25TZXQiLCJsb2NhbGVTZXQiLCJzdHlsZXNoZWV0IiwiL3hkcDp4ZHAiXS5tYXAoZT0+W2UsbnVsbF0pKTtpZih0IGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmIXQuaXNFbXB0eSl7YS5zZXQoInhkcDp4ZHAiLHQpO3JldHVybiBhfWlmKCFBcnJheS5pc0FycmF5KHQpfHwwPT09dC5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGxldCBlPTAscj10Lmxlbmd0aDtlPHI7ZSs9Mil7bGV0IGk7aT0wPT09ZT8ieGRwOnhkcCI6ZT09PXItMj8iL3hkcDp4ZHAiOnRbZV07aWYoIWEuaGFzKGkpKWNvbnRpbnVlO2NvbnN0IG49dGhpcy54cmVmLmZldGNoSWZSZWYodFtlKzFdKTtuIGluc3RhbmNlb2YgQmFzZVN0cmVhbSYmIW4uaXNFbXB0eSYmYS5zZXQoaSxuKX1yZXR1cm4gYX1nZXQgeGZhRGF0YXNldHMoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCk7Zm9yKGNvbnN0IHQgb2ZbImRhdGFzZXRzIiwieGRwOnhkcCJdKXtjb25zdCBhPWUuZ2V0KHQpO2lmKGEpdHJ5e2NvbnN0IGU9c3RyaW5nVG9VVEY4U3RyaW5nKGEuZ2V0U3RyaW5nKCkpO3JldHVybiBzaGFkb3codGhpcywieGZhRGF0YXNldHMiLG5ldyBEYXRhc2V0UmVhZGVyKHtbdF06ZX0pKX1jYXRjaHt3YXJuKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTticmVha319cmV0dXJuIHNoYWRvdyh0aGlzLCJ4ZmFEYXRhc2V0cyIsbnVsbCl9Z2V0IHhmYURhdGEoKXtjb25zdCBlPXRoaXMuX3hmYVN0cmVhbXM7aWYoIWUpcmV0dXJuIG51bGw7Y29uc3QgdD1PYmplY3QuY3JlYXRlKG51bGwpO2Zvcihjb25zdFthLHJdb2YgZSlpZihyKXRyeXt0W2FdPXN0cmluZ1RvVVRGOFN0cmluZyhyLmdldFN0cmluZygpKX1jYXRjaHt3YXJuKCJYRkEgLSBJbnZhbGlkIHV0Zi04IHN0cmluZy4iKTtyZXR1cm4gbnVsbH1yZXR1cm4gdH1nZXQgeGZhRmFjdG9yeSgpe2xldCBlO3RoaXMucGRmTWFuYWdlci5lbmFibGVYZmEmJnRoaXMuY2F0YWxvZy5uZWVkc1JlbmRlcmluZyYmdGhpcy5mb3JtSW5mby5oYXNYZmEmJiF0aGlzLmZvcm1JbmZvLmhhc0Fjcm9Gb3JtJiYoZT10aGlzLnhmYURhdGEpO3JldHVybiBzaGFkb3codGhpcywieGZhRmFjdG9yeSIsZT9uZXcgWEZBRmFjdG9yeShlKTpudWxsKX1nZXQgaXNQdXJlWGZhKCl7cmV0dXJuISF0aGlzLnhmYUZhY3RvcnkmJnRoaXMueGZhRmFjdG9yeS5pc1ZhbGlkKCl9Z2V0IGh0bWxGb3JYZmEoKXtyZXR1cm4gdGhpcy54ZmFGYWN0b3J5P3RoaXMueGZhRmFjdG9yeS5nZXRQYWdlcygpOm51bGx9YXN5bmMjZHQoKXtjb25zdCBlPWF3YWl0IHRoaXMucGRmTWFuYWdlci5lbnN1cmVDYXRhbG9nKCJ4ZmFJbWFnZXMiKTtlJiZ0aGlzLnhmYUZhY3Rvcnkuc2V0SW1hZ2VzKGUpfWFzeW5jI2Z0KGUsdCl7Y29uc3QgYT1hd2FpdCB0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm0iKTtpZighYSlyZXR1cm47Y29uc3Qgcj1hd2FpdCBhLmdldEFzeW5jKCJEUiIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKXJldHVybjthd2FpdCBPYmplY3RMb2FkZXIubG9hZChyLFsiRm9udCJdLHRoaXMueHJlZik7Y29uc3QgaT1yLmdldCgiRm9udCIpO2lmKCEoaSBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtjb25zdCBuPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLnBkZk1hbmFnZXIuZXZhbHVhdG9yT3B0aW9ucyx7dXNlU3lzdGVtRm9udHM6ITF9KSx7YnVpbHRJbkNNYXBDYWNoZTpzLGZvbnRDYWNoZTpvLHN0YW5kYXJkRm9udERhdGFDYWNoZTpjfT10aGlzLmNhdGFsb2csbD1uZXcgUGFydGlhbEV2YWx1YXRvcih7eHJlZjp0aGlzLnhyZWYsaGFuZGxlcjplLHBhZ2VJbmRleDotMSxpZEZhY3Rvcnk6dGhpcy5fZ2xvYmFsSWRGYWN0b3J5LGZvbnRDYWNoZTpvLGJ1aWx0SW5DTWFwQ2FjaGU6cyxzdGFuZGFyZEZvbnREYXRhQ2FjaGU6YyxvcHRpb25zOm59KSxoPW5ldyBPcGVyYXRvckxpc3QsdT1bXSxkPXtnZXQgZm9udCgpe3JldHVybiB1LmF0KC0xKX0sc2V0IGZvbnQoZSl7dS5wdXNoKGUpfSxjbG9uZSgpe3JldHVybiB0aGlzfX0scGFyc2VGb250PShlLGEsaSk9PmwuaGFuZGxlU2V0Rm9udChyLFtOYW1lLmdldChl
101KSwxXSxudWxsLGgsdCxkLGEsaSkuY2F0Y2goZT0+e3dhcm4oYGxvYWRYZmFGb250czogIiR7ZX0iLmApO3JldHVybiBudWxsfSksZj1bXTtmb3IoY29uc3RbZSx0XW9mIGkpe2NvbnN0IGE9dC5nZXQoIkZvbnREZXNjcmlwdG9yIik7aWYoIShhIGluc3RhbmNlb2YgRGljdCkpY29udGludWU7bGV0IHI9YS5nZXQoIkZvbnRGYW1pbHkiKTtyPXIucmVwbGFjZUFsbCgvWyBdKyhcZCkvZywiJDEiKTtjb25zdCBpPXtmb250RmFtaWx5OnIsZm9udFdlaWdodDphLmdldCgiRm9udFdlaWdodCIpLGl0YWxpY0FuZ2xlOi1hLmdldCgiSXRhbGljQW5nbGUiKX07dmFsaWRhdGVDU1NGb250KGkpJiZmLnB1c2gocGFyc2VGb250KGUsbnVsbCxpKSl9YXdhaXQgUHJvbWlzZS5hbGwoZik7Y29uc3QgZz10aGlzLnhmYUZhY3Rvcnkuc2V0Rm9udHModSk7aWYoIWcpcmV0dXJuO24uaWdub3JlRXJyb3JzPSEwO2YubGVuZ3RoPTA7dS5sZW5ndGg9MDtjb25zdCBwPW5ldyBTZXQ7Zm9yKGNvbnN0IGUgb2YgZylnZXRYZmFGb250TmFtZShgJHtlfS1SZWd1bGFyYCl8fHAuYWRkKGUpO3Auc2l6ZSYmZy5wdXNoKCJQZGZKUy1GYWxsYmFjayIpO2Zvcihjb25zdCBlIG9mIGcpaWYoIXAuaGFzKGUpKWZvcihjb25zdCB0IG9mW3tuYW1lOiJSZWd1bGFyIixmb250V2VpZ2h0OjQwMCxpdGFsaWNBbmdsZTowfSx7bmFtZToiQm9sZCIsZm9udFdlaWdodDo3MDAsaXRhbGljQW5nbGU6MH0se25hbWU6Ikl0YWxpYyIsZm9udFdlaWdodDo0MDAsaXRhbGljQW5nbGU6MTJ9LHtuYW1lOiJCb2xkSXRhbGljIixmb250V2VpZ2h0OjcwMCxpdGFsaWNBbmdsZToxMn1dKXtjb25zdCBhPWAke2V9LSR7dC5uYW1lfWA7Zi5wdXNoKHBhcnNlRm9udChhLGdldFhmYUZvbnREaWN0KGEpLHtmb250RmFtaWx5OmUsZm9udFdlaWdodDp0LmZvbnRXZWlnaHQsaXRhbGljQW5nbGU6dC5pdGFsaWNBbmdsZX0pKX1hd2FpdCBQcm9taXNlLmFsbChmKTt0aGlzLnhmYUZhY3RvcnkuYXBwZW5kRm9udHModSxwKX1sb2FkWGZhUmVzb3VyY2VzKGUsdCl7cmV0dXJuIFByb21pc2UuYWxsKFt0aGlzLiNmdChlLHQpLmNhdGNoKCgpPT57fSksdGhpcy4jZHQoKV0pfXNlcmlhbGl6ZVhmYURhdGEoZSl7cmV0dXJuIHRoaXMueGZhRmFjdG9yeT90aGlzLnhmYUZhY3Rvcnkuc2VyaWFsaXplRGF0YShlKTpudWxsfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuY2F0YWxvZy52ZXJzaW9ufHx0aGlzLiNodH1nZXQgZm9ybUluZm8oKXtjb25zdCBlPXtoYXNGaWVsZHM6ITEsaGFzQWNyb0Zvcm06ITEsaGFzWGZhOiExLGhhc1NpZ25hdHVyZXM6ITF9LHthY3JvRm9ybTp0fT10aGlzLmNhdGFsb2c7aWYoIXQpcmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSk7dHJ5e2NvbnN0IGE9dC5nZXQoIkZpZWxkcyIpLHI9QXJyYXkuaXNBcnJheShhKSYmYS5sZW5ndGg+MDtlLmhhc0ZpZWxkcz1yO2NvbnN0IGk9dC5nZXQoIlhGQSIpO2UuaGFzWGZhPUFycmF5LmlzQXJyYXkoaSkmJmkubGVuZ3RoPjB8fGkgaW5zdGFuY2VvZiBCYXNlU3RyZWFtJiYhaS5pc0VtcHR5O2NvbnN0IG49ISEoMSZ0LmdldCgiU2lnRmxhZ3MiKSkscz1uJiZ0aGlzLiN1dChhKTtlLmhhc0Fjcm9Gb3JtPXImJiFzO2UuaGFzU2lnbmF0dXJlcz1ufWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBNaXNzaW5nRGF0YUV4Y2VwdGlvbil0aHJvdyBlO3dhcm4oYENhbm5vdCBmZXRjaCBmb3JtIGluZm9ybWF0aW9uOiAiJHtlfSIuYCl9cmV0dXJuIHNoYWRvdyh0aGlzLCJmb3JtSW5mbyIsZSl9Z2V0IGRvY3VtZW50SW5mbygpe2NvbnN0e2NhdGFsb2c6ZSxmb3JtSW5mbzp0LHhyZWY6YX09dGhpcyxyPXtQREZGb3JtYXRWZXJzaW9uOnRoaXMudmVyc2lvbixMYW5ndWFnZTplLmxhbmcsRW5jcnlwdEZpbHRlck5hbWU6YS5lbmNyeXB0Py5maWx0ZXJOYW1lPz9udWxsLElzTGluZWFyaXplZDohIXRoaXMubGluZWFyaXphdGlvbixJc0Fjcm9Gb3JtUHJlc2VudDp0Lmhhc0Fjcm9Gb3JtLElzWEZBUHJlc2VudDp0Lmhhc1hmYSxJc0NvbGxlY3Rpb25QcmVzZW50OiEhZS5jb2xsZWN0aW9uLElzU2lnbmF0dXJlc1ByZXNlbnQ6dC5oYXNTaWduYXR1cmVzfTtsZXQgaTt0cnl7aT1hLnRyYWlsZXIuZ2V0KCJJbmZvIil9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKXRocm93IGU7aW5mbygiVGhlIGRvY3VtZW50IGluZm9ybWF0aW9uIGRpY3Rpb25hcnkgaXMgaW52YWxpZC4iKX1pZighKGkgaW5zdGFuY2VvZiBEaWN0KSlyZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIscik7Zm9yKGNvbnN0W2UsdF1vZiBpKXtzd2l0Y2goZSl7Y2FzZSJUaXRsZSI6Y2FzZSJBdXRob3IiOmNhc2UiU3ViamVjdCI6Y2FzZSJLZXl3b3JkcyI6Y2FzZSJDcmVhdG9yIjpjYXNlIlByb2R1Y2VyIjpjYXNlIkNyZWF0aW9uRGF0ZSI6Y2FzZSJNb2REYXRlIjppZigic3RyaW5nIj09dHlwZW9mIHQpe3JbZV09c3RyaW5nVG9QREZTdHJpbmcodCk7Y29udGludWV9YnJlYWs7Y2FzZSJUcmFwcGVkIjppZih0IGluc3RhbmNlb2YgTmFtZSl7cltlXT10O2NvbnRpbnVlfWJyZWFrO2RlZmF1bHQ6bGV0IGE7c3dpdGNoKHR5cGVvZiB0KXtjYXNlInN0cmluZyI6YT1zdHJpbmdUb1BERlN0cmluZyh0KTticmVhaztjYXNlIm51bWJlciI6Y2FzZSJib29sZWFuIjphPXQ7YnJlYWs7ZGVmYXVsdDp0IGluc3RhbmNlb2YgTmFtZSYmKGE9dCl9aWYodm9pZCAwPT09YSl7d2FybihgQmFkIHZhbHVlLCBmb3IgY3VzdG9tIGtleSAiJHtlfSIsIGluIEluZm86ICR7dH0uYCk7Y29udGludWV9ci5DdXN0b20/Pz1PYmplY3QuY3JlYXRlKG51bGwpO3IuQ3VzdG9tW2VdPWE7Y29udGludWV9d2FybihgQmFkIHZhbHVlLCBmb3Iga2V5ICIke2V9IiwgaW4gSW5mbzogJHt0fS5gKX1yZXR1cm4gc2hhZG93KHRoaXMsImRvY3VtZW50SW5mbyIscil9Z2V0IGZpbmdlcnByaW50cygpe2NvbnN0IGU9IlwwIi5yZXBlYXQoMTYpO2Z1bmN0aW9uIHZhbGlkYXRlKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmMTY9PT10Lmxlbmd0aCYmdCE9PWV9Y29uc3QgdD10aGlzLnhyZWYudHJhaWxlci5nZXQoIklEIik7bGV0IGEscjtpZihBcnJheS5pc0FycmF5KHQpJiZ2YWxpZGF0ZSh0WzBdKSl7YT1zdHJpbmdUb0J5dGVzKHRbMF0pO3RbMV0hPT10WzBdJiZ2YWxpZGF0ZSh0WzFdKSYmKHI9c3RyaW5nVG9CeXRlcyh0WzFdKSl9ZWxzZSBhPWNhbGN1bGF0ZU1ENSh0aGlzLnN0cmVhbS5nZXRCeXRlUmFuZ2UoMCwxMDI0KSwwLDEwMjQpO3JldHVybiBzaGFkb3codGhpcywiZmluZ2VycHJpbnRzIixbdG9IZXhVdGlsKGEpLHI/dG9IZXhVdGlsKHIpOm51bGxdKX1hc3luYyNndChlKXtjb25zdHtjYXRhbG9nOnQsbGluZWFyaXphdGlvbjphLHhyZWY6cn09dGhpcyxpPVJlZi5nZXQoYS5vYmplY3ROdW1iZXJGaXJzdCwwKTt0cnl7Y29uc3QgZT1hd2FpdCByLmZldGNoQXN5bmMoaSk7aWYoZSBpbnN0YW5jZW9mIERpY3Qpe2xldCBhPWUuZ2V0UmF3KCJUeXBlIik7YSBpbnN0YW5jZW9mIFJlZiYmKGE9YXdhaXQgci5mZXRjaEFzeW5jKGEpKTtpZihpc0
1015hbWUoYSwiUGFnZSIpfHwhZS5oYXMoIlR5cGUiKSYmIWUuaGFzKCJLaWRzIikmJmUuaGFzKCJDb250ZW50cyIpKXt0LnBhZ2VLaWRzQ291bnRDYWNoZS5oYXMoaSl8fHQucGFnZUtpZHNDb3VudENhY2hlLnB1dChpLDEpO3QucGFnZUluZGV4Q2FjaGUuaGFzKGkpfHx0LnBhZ2VJbmRleENhY2hlLnB1dChpLDApO3JldHVybltlLGldfX10aHJvdyBuZXcgRm9ybWF0RXJyb3IoIlRoZSBMaW5lYXJpemF0aW9uIGRpY3Rpb25hcnkgZG9lc24ndCBwb2ludCB0byBhIHZhbGlkIFBhZ2UgZGljdGlvbmFyeS4iKX1jYXRjaChhKXt3YXJuKGBfZ2V0TGluZWFyaXphdGlvblBhZ2U6ICIke2EubWVzc2FnZX0iLmApO3JldHVybiB0LmdldFBhZ2VEaWN0KGUpfX1nZXRQYWdlKGUpe2NvbnN0IHQ9dGhpcy4jbHQuZ2V0KGUpO2lmKHQpcmV0dXJuIHQ7Y29uc3R7Y2F0YWxvZzphLGxpbmVhcml6YXRpb246cix4ZmFGYWN0b3J5Oml9PXRoaXM7bGV0IG47bj1pP1Byb21pc2UucmVzb2x2ZShbRGljdC5lbXB0eSxudWxsXSk6cj8ucGFnZUZpcnN0PT09ZT90aGlzLiNndChlKTphLmdldFBhZ2VEaWN0KGUpO249bi50aGVuKChbdCxyXSk9Pm5ldyBQYWdlKHtwZGZNYW5hZ2VyOnRoaXMucGRmTWFuYWdlcix4cmVmOnRoaXMueHJlZixwYWdlSW5kZXg6ZSxwYWdlRGljdDp0LHJlZjpyLGdsb2JhbElkRmFjdG9yeTp0aGlzLl9nbG9iYWxJZEZhY3RvcnksZm9udENhY2hlOmEuZm9udENhY2hlLGJ1aWx0SW5DTWFwQ2FjaGU6YS5idWlsdEluQ01hcENhY2hlLHN0YW5kYXJkRm9udERhdGFDYWNoZTphLnN0YW5kYXJkRm9udERhdGFDYWNoZSxnbG9iYWxDb2xvclNwYWNlQ2FjaGU6YS5nbG9iYWxDb2xvclNwYWNlQ2FjaGUsZ2xvYmFsSW1hZ2VDYWNoZTphLmdsb2JhbEltYWdlQ2FjaGUsc3lzdGVtRm9udENhY2hlOmEuc3lzdGVtRm9udENhY2hlLG5vbkJsZW5kTW9kZXNTZXQ6YS5ub25CbGVuZE1vZGVzU2V0LHhmYUZhY3Rvcnk6aX0pKTt0aGlzLiNsdC5zZXQoZSxuKTtyZXR1cm4gbn1hc3luYyBjaGVja0ZpcnN0UGFnZShlPSExKXtpZighZSl0cnl7YXdhaXQgdGhpcy5nZXRQYWdlKDApfWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBYUmVmRW50cnlFeGNlcHRpb24pe3RoaXMuI2x0LmRlbGV0ZSgwKTthd2FpdCB0aGlzLmNsZWFudXAoKTt0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9ufX19YXN5bmMgY2hlY2tMYXN0UGFnZShlPSExKXtjb25zdHtjYXRhbG9nOnQscGRmTWFuYWdlcjphfT10aGlzO3Quc2V0QWN0dWFsTnVtUGFnZXMoKTtsZXQgcjt0cnl7YXdhaXQgUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJ4ZmFGYWN0b3J5IiksYS5lbnN1cmVEb2MoImxpbmVhcml6YXRpb24iKSxhLmVuc3VyZUNhdGFsb2coIm51bVBhZ2VzIildKTtpZih0aGlzLnhmYUZhY3RvcnkpcmV0dXJuO3I9dGhpcy5saW5lYXJpemF0aW9uP3RoaXMubGluZWFyaXphdGlvbi5udW1QYWdlczp0Lm51bVBhZ2VzO2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHIpKXRocm93IG5ldyBGb3JtYXRFcnJvcigiUGFnZSBjb3VudCBpcyBub3QgYW4gaW50ZWdlci4iKTtpZihyPD0xKXJldHVybjthd2FpdCB0aGlzLmdldFBhZ2Uoci0xKX1jYXRjaChpKXt0aGlzLiNsdC5kZWxldGUoci0xKTthd2FpdCB0aGlzLmNsZWFudXAoKTtpZihpIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3dhcm4oYGNoZWNrTGFzdFBhZ2UgLSBpbnZhbGlkIC9QYWdlcyB0cmVlIC9Db3VudDogJHtyfS5gKTtsZXQgbjt0cnl7bj1hd2FpdCB0LmdldEFsbFBhZ2VEaWN0cyhlKX1jYXRjaChhKXtpZihhIGluc3RhbmNlb2YgWFJlZkVudHJ5RXhjZXB0aW9uJiYhZSl0aHJvdyBuZXcgWFJlZlBhcnNlRXhjZXB0aW9uO3Quc2V0QWN0dWFsTnVtUGFnZXMoMSk7cmV0dXJufWZvcihjb25zdFtlLFtyLGldXW9mIG4pe2xldCBuO2lmKHIgaW5zdGFuY2VvZiBFcnJvcil7bj1Qcm9taXNlLnJlamVjdChyKTtuLmNhdGNoKCgpPT57fSl9ZWxzZSBuPVByb21pc2UucmVzb2x2ZShuZXcgUGFnZSh7cGRmTWFuYWdlcjphLHhyZWY6dGhpcy54cmVmLHBhZ2VJbmRleDplLHBhZ2VEaWN0OnIscmVmOmksZ2xvYmFsSWRGYWN0b3J5OnRoaXMuX2dsb2JhbElkRmFjdG9yeSxmb250Q2FjaGU6dC5mb250Q2FjaGUsYnVpbHRJbkNNYXBDYWNoZTp0LmJ1aWx0SW5DTWFwQ2FjaGUsc3RhbmRhcmRGb250RGF0YUNhY2hlOnQuc3RhbmRhcmRGb250RGF0YUNhY2hlLGdsb2JhbENvbG9yU3BhY2VDYWNoZTp0aGlzLmdsb2JhbENvbG9yU3BhY2VDYWNoZSxnbG9iYWxJbWFnZUNhY2hlOnQuZ2xvYmFsSW1hZ2VDYWNoZSxzeXN0ZW1Gb250Q2FjaGU6dC5zeXN0ZW1Gb250Q2FjaGUsbm9uQmxlbmRNb2Rlc1NldDp0Lm5vbkJsZW5kTW9kZXNTZXQseGZhRmFjdG9yeTpudWxsfSkpO3RoaXMuI2x0LnNldChlLG4pfXQuc2V0QWN0dWFsTnVtUGFnZXMobi5zaXplKX19YXN5bmMgZm9udEZhbGxiYWNrKGUsdCl7Y29uc3R7Y2F0YWxvZzphLHBkZk1hbmFnZXI6cn09dGhpcztmb3IoY29uc3QgaSBvZiBhd2FpdCBQcm9taXNlLmFsbChhLmZvbnRDYWNoZSkpaWYoaS5sb2FkZWROYW1lPT09ZSl7aS5mYWxsYmFjayh0LHIuZXZhbHVhdG9yT3B0aW9ucyk7cmV0dXJufX1hc3luYyBjbGVhbnVwKGU9ITEpe3JldHVybiB0aGlzLmNhdGFsb2c/dGhpcy5jYXRhbG9nLmNsZWFudXAoZSk6Y2xlYXJHbG9iYWxDYWNoZXMoKX1hc3luYyNwdChlLHQsYSxyLGksbixzKXtjb25zdHt4cmVmOm99PXRoaXM7aWYoIShhIGluc3RhbmNlb2YgUmVmKXx8bi5oYXMoYSkpcmV0dXJuO24ucHV0KGEpO2NvbnN0IGM9YXdhaXQgby5mZXRjaEFzeW5jKGEpO2lmKCEoYyBpbnN0YW5jZW9mIERpY3QpKXJldHVybjtsZXQgbD1hd2FpdCBjLmdldEFzeW5jKCJTdWJ0eXBlIik7bD1sIGluc3RhbmNlb2YgTmFtZT9sLm5hbWU6bnVsbDtpZigiTGluayI9PT1sKXJldHVybjtpZihjLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGMuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YH1lbHNle2xldCBhPWM7Zm9yKDs7KXthPWEuZ2V0UmF3KCJQYXJlbnQiKXx8dDtpZihhIGluc3RhbmNlb2YgUmVmKXtpZihuLmhhcyhhKSlicmVhazthPWF3YWl0IG8uZmV0Y2hBc3luYyhhKX1pZighKGEgaW5zdGFuY2VvZiBEaWN0KSlicmVhaztpZihhLmhhcygiVCIpKXtjb25zdCB0PXN0cmluZ1RvUERGU3RyaW5nKGF3YWl0IGEuZ2V0QXN5bmMoIlQiKSk7ZT0iIj09PWU/dDpgJHtlfS4ke3R9YDticmVha319fXQmJiFjLmhhcygiUGFyZW50IikmJmlzTmFtZShjLmdldCgiU3VidHlwZSIpLCJXaWRnZXQiKSYmcy5wdXQoYSx0KTtyLmhhcyhlKXx8ci5zZXQoZSxbXSk7ci5nZXQoZSkucHVzaChBbm5vdGF0aW9uRmFjdG9yeS5jcmVhdGUobyxhLGksbnVsbCwhMCxzLG51bGwsbnVsbCkudGhlbihlPT5lPy5nZXRGaWVsZE9i
101amVjdCgpKS5jYXRjaChmdW5jdGlvbihlKXt3YXJuKGAjY29sbGVjdEZpZWxkT2JqZWN0czogIiR7ZX0iLmApO3JldHVybiBudWxsfSkpO2lmKCFjLmhhcygiS2lkcyIpKXJldHVybjtjb25zdCBoPWF3YWl0IGMuZ2V0QXN5bmMoIktpZHMiKTtpZihBcnJheS5pc0FycmF5KGgpKWZvcihjb25zdCB0IG9mIGgpYXdhaXQgdGhpcy4jcHQoZSxhLHQscixpLG4scyl9Z2V0IGZpZWxkT2JqZWN0cygpe3JldHVybiBzaGFkb3codGhpcywiZmllbGRPYmplY3RzIix0aGlzLnBkZk1hbmFnZXIuZW5zdXJlRG9jKCJmb3JtSW5mbyIpLnRoZW4oYXN5bmMgZT0+e2lmKCFlLmhhc0ZpZWxkcylyZXR1cm4gbnVsbDtjb25zdCB0PWF3YWl0IHRoaXMuYW5ub3RhdGlvbkdsb2JhbHM7aWYoIXQpcmV0dXJuIG51bGw7Y29uc3R7YWNyb0Zvcm06YX09dCxyPW5ldyBSZWZTZXQsaT1PYmplY3QuY3JlYXRlKG51bGwpLG49bmV3IE1hcCxzPW5ldyBSZWZTZXRDYWNoZTtmb3IoY29uc3QgZSBvZiBhLmdldCgiRmllbGRzIikpYXdhaXQgdGhpcy4jcHQoIiIsbnVsbCxlLG4sdCxyLHMpO2NvbnN0IG89W107Zm9yKGNvbnN0W2UsdF1vZiBuKW8ucHVzaChQcm9taXNlLmFsbCh0KS50aGVuKHQ9PnsodD10LmZpbHRlcihlPT4hIWUpKS5sZW5ndGg+MCYmKGlbZV09dCl9KSk7YXdhaXQgUHJvbWlzZS5hbGwobyk7cmV0dXJue2FsbEZpZWxkczpvYmplY3RTaXplKGkpPjA/aTpudWxsLG9ycGhhbkZpZWxkczpzfX0pKX1nZXQgaGFzSlNBY3Rpb25zKCl7cmV0dXJuIHNoYWRvdyh0aGlzLCJoYXNKU0FjdGlvbnMiLHRoaXMucGRmTWFuYWdlci5lbnN1cmVEb2MoIl9wYXJzZUhhc0pTQWN0aW9ucyIpKX1hc3luYyBfcGFyc2VIYXNKU0FjdGlvbnMoKXtjb25zdFtlLHRdPWF3YWl0IFByb21pc2UuYWxsKFt0aGlzLnBkZk1hbmFnZXIuZW5zdXJlQ2F0YWxvZygianNBY3Rpb25zIiksdGhpcy5wZGZNYW5hZ2VyLmVuc3VyZURvYygiZmllbGRPYmplY3RzIildKTtyZXR1cm4hIWV8fCEhdD8uYWxsRmllbGRzJiZPYmplY3QudmFsdWVzKHQuYWxsRmllbGRzKS5zb21lKGU9PmUuc29tZShlPT5udWxsIT09ZS5hY3Rpb25zKSl9Z2V0IGNhbGN1bGF0aW9uT3JkZXJJZHMoKXtjb25zdCBlPXRoaXMuY2F0YWxvZy5hY3JvRm9ybT8uZ2V0KCJDTyIpO2lmKCFBcnJheS5pc0FycmF5KGUpfHwwPT09ZS5sZW5ndGgpcmV0dXJuIHNoYWRvdyh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIixudWxsKTtjb25zdCB0PVtdO2Zvcihjb25zdCBhIG9mIGUpYSBpbnN0YW5jZW9mIFJlZiYmdC5wdXNoKGEudG9TdHJpbmcoKSk7cmV0dXJuIHNoYWRvdyh0aGlzLCJjYWxjdWxhdGlvbk9yZGVySWRzIix0Lmxlbmd0aD90Om51bGwpfWdldCBhbm5vdGF0aW9uR2xvYmFscygpe3JldHVybiBzaGFkb3codGhpcywiYW5ub3RhdGlvbkdsb2JhbHMiLEFubm90YXRpb25GYWN0b3J5LmNyZWF0ZUdsb2JhbHModGhpcy5wZGZNYW5hZ2VyKSl9fWNsYXNzIEJhc2VQZGZNYW5hZ2Vye2NvbnN0cnVjdG9yKHtkb2NCYXNlVXJsOmUsZG9jSWQ6dCxlbmFibGVYZmE6YSxldmFsdWF0b3JPcHRpb25zOnIsaGFuZGxlcjppLHBhc3N3b3JkOm59KXt0aGlzLl9kb2NCYXNlVXJsPWZ1bmN0aW9uIHBhcnNlRG9jQmFzZVVybChlKXtpZihlKXtjb25zdCB0PWNyZWF0ZVZhbGlkQWJzb2x1dGVVcmwoZSk7aWYodClyZXR1cm4gdC5ocmVmO3dhcm4oYEludmFsaWQgYWJzb2x1dGUgZG9jQmFzZVVybDogIiR7ZX0iLmApfXJldHVybiBudWxsfShlKTt0aGlzLl9kb2NJZD10O3RoaXMuX3Bhc3N3b3JkPW47dGhpcy5lbmFibGVYZmE9YTtyLmlzT2Zmc2NyZWVuQ2FudmFzU3VwcG9ydGVkJiY9RmVhdHVyZVRlc3QuaXNPZmZzY3JlZW5DYW52YXNTdXBwb3J0ZWQ7ci5pc0ltYWdlRGVjb2RlclN1cHBvcnRlZCYmPUZlYXR1cmVUZXN0LmlzSW1hZ2VEZWNvZGVyU3VwcG9ydGVkO3RoaXMuZXZhbHVhdG9yT3B0aW9ucz1PYmplY3QuZnJlZXplKHIpO0ltYWdlUmVzaXplci5zZXRPcHRpb25zKHIpO0pwZWdTdHJlYW0uc2V0T3B0aW9ucyhyKTtPcGVyYXRvckxpc3Quc2V0T3B0aW9ucyhyKTtjb25zdCBzPXsuLi5yLGhhbmRsZXI6aX07SnB4SW1hZ2Uuc2V0T3B0aW9ucyhzKTtJY2NDb2xvclNwYWNlLnNldE9wdGlvbnMocyk7Q215a0lDQ0Jhc2VkQ1Muc2V0T3B0aW9ucyhzKX1nZXQgZG9jSWQoKXtyZXR1cm4gdGhpcy5fZG9jSWR9Z2V0IHBhc3N3b3JkKCl7cmV0dXJuIHRoaXMuX3Bhc3N3b3JkfWdldCBkb2NCYXNlVXJsKCl7cmV0dXJuIHRoaXMuX2RvY0Jhc2VVcmx9ZW5zdXJlRG9jKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQsZSx0KX1lbnN1cmVYUmVmKGUsdCl7cmV0dXJuIHRoaXMuZW5zdXJlKHRoaXMucGRmRG9jdW1lbnQueHJlZixlLHQpfWVuc3VyZUNhdGFsb2coZSx0KXtyZXR1cm4gdGhpcy5lbnN1cmUodGhpcy5wZGZEb2N1bWVudC5jYXRhbG9nLGUsdCl9Z2V0UGFnZShlKXtyZXR1cm4gdGhpcy5wZGZEb2N1bWVudC5nZXRQYWdlKGUpfWZvbnRGYWxsYmFjayhlLHQpe3JldHVybiB0aGlzLnBkZkRvY3VtZW50LmZvbnRGYWxsYmFjayhlLHQpfWNsZWFudXAoZT0hMSl7cmV0dXJuIHRoaXMucGRmRG9jdW1lbnQuY2xlYW51cChlKX1hc3luYyBlbnN1cmUoZSx0LGEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYGVuc3VyZWAgY2FsbGVkIil9cmVxdWVzdFJhbmdlKGUsdCl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgcmVxdWVzdFJhbmdlYCBjYWxsZWQiKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3VucmVhY2hhYmxlKCJBYnN0cmFjdCBtZXRob2QgYHJlcXVlc3RMb2FkZWRTdHJlYW1gIGNhbGxlZCIpfXNlbmRQcm9ncmVzc2l2ZURhdGEoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgc2VuZFByb2dyZXNzaXZlRGF0YWAgY2FsbGVkIil9dXBkYXRlUGFzc3dvcmQoZSl7dGhpcy5fcGFzc3dvcmQ9ZX10ZXJtaW5hdGUoZSl7dW5yZWFjaGFibGUoIkFic3RyYWN0IG1ldGhvZCBgdGVybWluYXRlYCBjYWxsZWQiKX19Y2xhc3MgTG9jYWxQZGZNYW5hZ2VyIGV4dGVuZHMgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7Y29uc3QgdD1uZXcgU3RyZWFtKGUuc291cmNlKTt0aGlzLnBkZkRvY3VtZW50PW5ldyBQREZEb2N1bWVudCh0aGlzLHQpO3RoaXMuX2xvYWRlZFN0cmVhbVByb21pc2U9UHJvbWlzZS5yZXNvbHZlKHQpfWFzeW5jIGVuc3VyZShlLHQsYSl7Y29uc3Qgcj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkoZSxhKTpyfXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX1yZXF1ZXN0TG9hZGVkU3RyZWFtKGU9ITEpe3JldHVybiB0aGlzLl9sb2FkZWRTdHJlYW1Qcm9taXNlfXRlcm1pbmF0ZShlKXt9fWNsYXNzIE5ldHdvcmtQZGZNYW5hZ2VyIGV4dGVuZHMgQmFzZVBkZk1hbmFnZXJ7Y29uc3RydWN0b3IoZSl7c3VwZXIoZSk7dGhpcy5zdHJlYW1NYW5hZ2VyPW5ldyBDaHVua2VkU3RyZWFtTWFuYWdlcihlLnNvdXJjZSx7bXNnSGFuZGxlcjplLmhhbmRsZXIsbGVuZ3RoOmUubGVuZ3RoLGRpc2FibGVBdXRvRmV0Y2g6ZS5kaXNhYmxlQXV0b0ZldGNoLHJhbmdlQ2h1bmtTaXplOmUucmFuZ2VDaHVua1NpemV9KTt0aGlzLnBkZkRvY3VtZW50PW5ldyBQREZEb2N1bWVudCh0aGlzLHRoaXMuc3RyZWFtTWFuYWdlci5nZXRTdHJlYW0oKSl9YXN5bmMgZW5zdXJlKGUsdCxhKXt0cnl7Y29uc3Qgcj1lW3RdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3IuYXBwbHkoZSxhKTpyfWNhdGNoKHIpe2lmKCEociBpbnN0YW5jZW9mIE1pc3NpbmdEYXRhRXhjZXB0aW9uKSl0aHJvdyByO2F3YWl0IHRoaXMucmVxdWVzdFJhbmdlKHIuYmVnaW4sci5lbmQpO3JldHVybiB0aGlzLmVuc3VyZShlLHQsYSl9fXJlcXVlc3RSYW5nZShlLHQpe3JldHVybiB0aGlzLnN0cmVhbU1hbmFnZXIucmVxdWVzdFJhbmdlKGUsdCl9cmVxdWVzdExvYWRlZFN0cmVhbShlPSExKXtyZXR1cm4gdGhpcy5zdHJlYW1NYW5hZ2VyLnJlcXVlc3RBbGxDaHVua3MoZSl9c2VuZFByb2dyZXNzaXZlRGF0YShlKXt0aGlzLnN0cmVhbU1hbmFnZXIub25SZWNlaXZlRGF0YSh7Y2h1bms6ZX0pfXRlcm1pbmF0ZShlKXt0aGlzLnN0cmVhbU1hbmFnZXIuYWJvcnQoZSl9fWNvbnN0IGhjPTEsdWM9MixkYz0xLGZjPTIsZ2M9MyxwYz00LG1jPTUsYmM9Nix5Yz03LHdjPTg7ZnVuY3Rpb24gb25Gbigpe31mdW5jdGlvbiB3cmFwUmVhc29uKGUpe2lmKGUgaW5zdGFuY2VvZiBBYm9ydEV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIEludmFsaWRQREZFeGNlcHRpb258fGUgaW5zdGFuY2VvZiBQYXNzd29yZEV4Y2VwdGlvbnx8ZSBpbnN0YW5jZW9mIFJlc3BvbnNlRXhjZXB0aW9ufHxlIGluc3RhbmNlb2YgVW5rbm93bkVycm9yRXhjZXB0aW9uKXJldHVybi
101BlO2UgaW5zdGFuY2VvZiBFcnJvcnx8Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZXx8dW5yZWFjaGFibGUoJ3dyYXBSZWFzb246IEV4cGVjdGVkICJyZWFzb24iIHRvIGJlIGEgKHBvc3NpYmx5IGNsb25lZCkgRXJyb3IuJyk7c3dpdGNoKGUubmFtZSl7Y2FzZSJBYm9ydEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBBYm9ydEV4Y2VwdGlvbihlLm1lc3NhZ2UpO2Nhc2UiSW52YWxpZFBERkV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBJbnZhbGlkUERGRXhjZXB0aW9uKGUubWVzc2FnZSk7Y2FzZSJQYXNzd29yZEV4Y2VwdGlvbiI6cmV0dXJuIG5ldyBQYXNzd29yZEV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5jb2RlKTtjYXNlIlJlc3BvbnNlRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFJlc3BvbnNlRXhjZXB0aW9uKGUubWVzc2FnZSxlLnN0YXR1cyxlLm1pc3NpbmcpO2Nhc2UiVW5rbm93bkVycm9yRXhjZXB0aW9uIjpyZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS5kZXRhaWxzKX1yZXR1cm4gbmV3IFVua25vd25FcnJvckV4Y2VwdGlvbihlLm1lc3NhZ2UsZS50b1N0cmluZygpKX1jbGFzcyBNZXNzYWdlSGFuZGxlcnsjbXQ9bmV3IEFib3J0Q29udHJvbGxlcjtjb25zdHJ1Y3RvcihlLHQsYSl7dGhpcy5zb3VyY2VOYW1lPWU7dGhpcy50YXJnZXROYW1lPXQ7dGhpcy5jb21PYmo9YTt0aGlzLmNhbGxiYWNrSWQ9MTt0aGlzLnN0cmVhbUlkPTE7dGhpcy5zdHJlYW1TaW5rcz1PYmplY3QuY3JlYXRlKG51bGwpO3RoaXMuc3RyZWFtQ29udHJvbGxlcnM9T2JqZWN0LmNyZWF0ZShudWxsKTt0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzPU9iamVjdC5jcmVhdGUobnVsbCk7dGhpcy5hY3Rpb25IYW5kbGVyPU9iamVjdC5jcmVhdGUobnVsbCk7YS5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLiNidC5iaW5kKHRoaXMpLHtzaWduYWw6dGhpcy4jbXQuc2lnbmFsfSl9I2J0KHtkYXRhOmV9KXtpZihlLnRhcmdldE5hbWUhPT10aGlzLnNvdXJjZU5hbWUpcmV0dXJuO2lmKGUuc3RyZWFtKXt0aGlzLiN5dChlKTtyZXR1cm59aWYoZS5jYWxsYmFjayl7Y29uc3QgdD1lLmNhbGxiYWNrSWQsYT10aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKCFhKXRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJlc29sdmUgY2FsbGJhY2sgJHt0fWApO2RlbGV0ZSB0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3RdO2lmKGUuY2FsbGJhY2s9PT1oYylhLnJlc29sdmUoZS5kYXRhKTtlbHNle2lmKGUuY2FsbGJhY2shPT11Yyl0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgY2FsbGJhY2sgY2FzZSIpO2EucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKX1yZXR1cm59Y29uc3QgdD10aGlzLmFjdGlvbkhhbmRsZXJbZS5hY3Rpb25dO2lmKCF0KXRocm93IG5ldyBFcnJvcihgVW5rbm93biBhY3Rpb24gZnJvbSB3b3JrZXI6ICR7ZS5hY3Rpb259YCk7aWYoZS5jYWxsYmFja0lkKXtjb25zdCBhPXRoaXMuc291cmNlTmFtZSxyPWUuc291cmNlTmFtZSxpPXRoaXMuY29tT2JqO1Byb21pc2UudHJ5KHQsZS5kYXRhKS50aGVuKGZ1bmN0aW9uKHQpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOnIsY2FsbGJhY2s6aGMsY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQsZGF0YTp0fSl9LGZ1bmN0aW9uKHQpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOnIsY2FsbGJhY2s6dWMsY2FsbGJhY2tJZDplLmNhbGxiYWNrSWQscmVhc29uOndyYXBSZWFzb24odCl9KX0pO3JldHVybn1lLnN0cmVhbUlkP3RoaXMuI3d0KGUpOnQoZS5kYXRhKX1vbihlLHQpe2NvbnN0IGE9dGhpcy5hY3Rpb25IYW5kbGVyO2lmKGFbZV0pdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBpcyBhbHJlYWR5IGFuIGFjdGlvbk5hbWUgY2FsbGVkICIke2V9ImApO2FbZV09dH1zZW5kKGUsdCxhKXt0aGlzLmNvbU9iai5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTp0aGlzLnNvdXJjZU5hbWUsdGFyZ2V0TmFtZTp0aGlzLnRhcmdldE5hbWUsYWN0aW9uOmUsZGF0YTp0fSxhKX1zZW5kV2l0aFByb21pc2UoZSx0LGEpe2NvbnN0IHI9dGhpcy5jYWxsYmFja0lkKyssaT1Qcm9taXNlLndpdGhSZXNvbHZlcnMoKTt0aGlzLmNhbGxiYWNrQ2FwYWJpbGl0aWVzW3JdPWk7dHJ5e3RoaXMuY29tT2JqLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOnRoaXMuc291cmNlTmFtZSx0YXJnZXROYW1lOnRoaXMudGFyZ2V0TmFtZSxhY3Rpb246ZSxjYWxsYmFja0lkOnIsZGF0YTp0fSxhKX1jYXRjaChlKXtpLnJlamVjdChlKX1yZXR1cm4gaS5wcm9taXNlfXNlbmRXaXRoU3RyZWFtKGUsdCxhLHIpe2NvbnN0IGk9dGhpcy5zdHJlYW1JZCsrLG49dGhpcy5zb3VyY2VOYW1lLHM9dGhpcy50YXJnZXROYW1lLG89dGhpcy5jb21PYmo7cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQ6YT0+e2NvbnN0IGM9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXT17Y29udHJvbGxlcjphLHN0YXJ0Q2FsbDpjLHB1bGxDYWxsOm51bGwsY2FuY2VsQ2FsbDpudWxsLGlzQ2xvc2VkOiExfTtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTpzLGFjdGlvbjplLHN0cmVhbUlkOmksZGF0YTp0LGRlc2lyZWRTaXplOmEuZGVzaXJlZFNpemV9LHIpO3JldHVybiBjLnByb21pc2V9LHB1bGw6ZT0+e2NvbnN0IHQ9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5wdWxsQ2FsbD10O28ucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6bix0YXJnZXROYW1lOnMsc3RyZWFtOmJjLHN0cmVhbUlkOmksZGVzaXJlZFNpemU6ZS5kZXNpcmVkU2l6ZX0pO3JldHVybiB0LnByb21pc2V9LGNhbmNlbDplPT57YXNzZXJ0KGUgaW5zdGFuY2VvZiBFcnJvciwiY2FuY2VsIG11c3QgaGF2ZSBhIHZhbGlkIHJlYXNvbiIpO2NvbnN0IHQ9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCk7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5jYW5jZWxDYWxsPXQ7dGhpcy5zdHJlYW1Db250cm9sbGVyc1tpXS5pc0Nsb3NlZD0hMDtvLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOm4sdGFyZ2V0TmFtZTpzLHN0cmVhbTpkYyxzdHJlYW1JZDppLHJlYXNvbjp3cmFwUmVhc29uKGUpfSk7cmV0dXJuIHQucHJvbWlzZX19LGEpfSN3dChlKXtjb25zdCB0PWUuc3RyZWFtSWQsYT10aGlzLnNvdXJjZU5hbWUscj1lLnNvdXJjZU5hbWUsaT10aGlzLmNvbU9iaixuPXRoaXMscz10aGlzLmFjdGlvbkhhbmRsZXJbZS5hY3Rpb25dLG89e2VucXVldWUoZSxuPTEscyl7aWYodGhpcy5pc0NhbmNlbGxlZClyZXR1cm47Y29uc3Qgbz10aGlzLmRlc2lyZWRTaXplO3RoaXMuZGVzaXJlZFNpemUtPW47aWYobz4wJiZ0aGlzLmRlc2lyZWRTaXplPD0wKXt0aGlzLnN
101pbmtDYXBhYmlsaXR5PVByb21pc2Uud2l0aFJlc29sdmVycygpO3RoaXMucmVhZHk9dGhpcy5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlfWkucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOnIsc3RyZWFtOnBjLHN0cmVhbUlkOnQsY2h1bms6ZX0scyl9LGNsb3NlKCl7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixzdHJlYW06Z2Msc3RyZWFtSWQ6dH0pO2RlbGV0ZSBuLnN0cmVhbVNpbmtzW3RdfX0sZXJyb3IoZSl7YXNzZXJ0KGUgaW5zdGFuY2VvZiBFcnJvciwiZXJyb3IgbXVzdCBoYXZlIGEgdmFsaWQgcmVhc29uIik7aWYoIXRoaXMuaXNDYW5jZWxsZWQpe3RoaXMuaXNDYW5jZWxsZWQ9ITA7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixzdHJlYW06bWMsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfX0sc2lua0NhcGFiaWxpdHk6UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCksb25QdWxsOm51bGwsb25DYW5jZWw6bnVsbCxpc0NhbmNlbGxlZDohMSxkZXNpcmVkU2l6ZTplLmRlc2lyZWRTaXplLHJlYWR5Om51bGx9O28uc2lua0NhcGFiaWxpdHkucmVzb2x2ZSgpO28ucmVhZHk9by5zaW5rQ2FwYWJpbGl0eS5wcm9taXNlO3RoaXMuc3RyZWFtU2lua3NbdF09bztQcm9taXNlLnRyeShzLGUuZGF0YSxvKS50aGVuKGZ1bmN0aW9uKCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixzdHJlYW06d2Msc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9LGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOnIsc3RyZWFtOndjLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pfSN5dChlKXtjb25zdCB0PWUuc3RyZWFtSWQsYT10aGlzLnNvdXJjZU5hbWUscj1lLnNvdXJjZU5hbWUsaT10aGlzLmNvbU9iaixuPXRoaXMuc3RyZWFtQ29udHJvbGxlcnNbdF0scz10aGlzLnN0cmVhbVNpbmtzW3RdO3N3aXRjaC
101hlLnN0cmVhbSl7Y2FzZSB3YzplLnN1Y2Nlc3M/bi5zdGFydENhbGwucmVzb2x2ZSgpOm4uc3RhcnRDYWxsLnJlamVjdCh3cmFwUmVhc29uKGUucmVhc29uKSk7YnJlYWs7Y2FzZSB5YzplLnN1Y2Nlc3M/bi5wdWxsQ2FsbC5yZXNvbHZlKCk6bi5wdWxsQ2FsbC5yZWplY3Qod3JhcFJlYXNvbihlLnJlYXNvbikpO2JyZWFrO2Nhc2UgYmM6aWYoIXMpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOnIsc3RyZWFtOnljLHN0cmVhbUlkOnQsc3VjY2VzczohMH0pO2JyZWFrfXMuZGVzaXJlZFNpemU8PTAmJmUuZGVzaXJlZFNpemU+MCYmcy5zaW5rQ2FwYWJpbGl0eS5yZXNvbHZlKCk7cy5kZXNpcmVkU2l6ZT1lLmRlc2lyZWRTaXplO1Byb21pc2UudHJ5KHMub25QdWxsfHxvbkZuKS50aGVuKGZ1bmN0aW9uKCl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixzdHJlYW06eWMsc3RyZWFtSWQ6dCxzdWNjZXNzOiEwfSl9LGZ1bmN0aW9uKGUpe2kucG9zdE1lc3NhZ2Uoe3NvdXJjZU5hbWU6YSx0YXJnZXROYW1lOnIsc3RyZWFtOnljLHN0cmVhbUlkOnQscmVhc29uOndyYXBSZWFzb24oZSl9KX0pO2JyZWFrO2Nhc2UgcGM6YXNzZXJ0KG4sImVucXVldWUgc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtpZihuLmlzQ2xvc2VkKWJyZWFrO24uY29udHJvbGxlci5lbnF1ZXVlKGUuY2h1bmspO2JyZWFrO2Nhc2UgZ2M6YXNzZXJ0KG4sImNsb3NlIHNob3VsZCBoYXZlIHN0cmVhbSBjb250cm9sbGVyIik7aWYobi5pc0Nsb3NlZClicmVhaztuLmlzQ2xvc2VkPSEwO24uY29udHJvbGxlci5jbG9zZSgpO3RoaXMuI3h0KG4sdCk7YnJlYWs7Y2FzZSBtYzphc3NlcnQobiwiZXJyb3Igc2hvdWxkIGhhdmUgc3RyZWFtIGNvbnRyb2xsZXIiKTtuLmNvbnRyb2xsZXIuZXJyb3Iod3JhcFJlYXNvbihlLnJlYXNvbikpO3RoaXMuI3h0KG4sdCk7YnJlYWs7Y2FzZSBmYzplLnN1Y2Nlc3M/bi5jYW5jZWxDYWxsLnJlc29sdmUoKTpuLmNhbmNlbENhbGwucmVqZWN0KHdyYXBSZWFzb24oZS5yZWFzb24pKTt0aGlzLiN4dChuLHQpO2JyZWFrO2Nhc2UgZGM6aWYoIXMpYnJlYWs7Y29uc3Qgbz13cmFwUmVhc29uKGUucmVhc29uKTtQcm9taXNlLnRyeShzLm9uQ2FuY2VsfHxvbkZuLG8pLnRoZW4oZnVuY3Rpb24oKXtpLnBvc3RNZXNzYWdlKHtzb3VyY2VOYW1lOmEsdGFyZ2V0TmFtZTpyLHN0cmVhbTpmYyxzdHJlYW1JZDp0LHN1Y2Nlc3M6ITB9KX0sZnVuY3Rpb24oZSl7aS5wb3N0TWVzc2FnZSh7c291cmNlTmFtZTphLHRhcmdldE5hbWU6cixzdHJlYW06ZmMsc3RyZWFtSWQ6dCxyZWFzb246d3JhcFJlYXNvbihlKX0pfSk7cy5zaW5rQ2FwYWJpbGl0eS5yZWplY3Qobyk7cy5pc0NhbmNlbGxlZD0hMDtkZWxldGUgdGhpcy5zdHJlYW1TaW5rc1t0XTticmVhaztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBzdHJlYW0gY2FzZSIpfX1hc3luYyN4dChlLHQpe2F3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbZS5zdGFydENhbGw/LnByb21pc2UsZS5wdWxsQ2FsbD8ucHJvbWlzZSxlLmNhbmNlbENhbGw/LnByb21pc2VdKTtkZWxldGUgdGhpcy5zdHJlYW1Db250cm9sbGVyc1t0XX1kZXN0cm95KCl7dGhpcy4jbXQ/LmFib3J0KCk7dGhpcy4jbXQ9bnVsbH19YXN5bmMgZnVuY3Rpb24gd3JpdGVPYmplY3QoZSx0LGEse2VuY3J5cHQ6cj1udWxsLGVuY3J5cHRSZWY6aT1udWxsfSl7Y29uc3Qgbj1yJiZpIT09ZT9yLmNyZWF0ZUNpcGhlclRyYW5zZm9ybShlLm51bSxlLmdlbik6bnVsbDthLnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IG9ialxuYCk7YXdhaXQgd3JpdGVWYWx1ZSh0LGEsbik7YS5wdXNoKCJcbmVuZG9ialxuIil9YXN5bmMgZnVuY3Rpb24gd3JpdGVEaWN0KGUsdCxhKXt0LnB1c2goIjw8Iik7Zm9yKGNvbnN0W3IsaV1vZiBlLmdldFJhd0VudHJpZXMoKSl7dC5wdXNoKGAgLyR7ZXNjYXBlUERGTmFtZShyKX0gYCk7YXdhaXQgd3JpdGVWYWx1ZShpLHQsYSl9dC5wdXNoKCI+PiIpfWFzeW5jIGZ1bmN0aW9uIHdyaXRlVmFsdWUoZSx0LGEpe2lmKGUgaW5zdGFuY2VvZiBOYW1lKXQucHVzaChgLyR7ZXNjYXBlUERGTmFtZShlLm5hbWUpfWApO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIFJlZil0LnB1c2goYCR7ZS5udW19ICR7ZS5nZW59IFJgKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoZSl8fEFycmF5QnVmZmVyLmlzVmlldyhlKSlhd2FpdCBhc3luYyBmdW5jdGlvbiB3cml0ZUFycmF5KGUsdCxhKXt0LnB1c2goIlsiKTtmb3IobGV0IHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspe2F3YWl0IHdyaXRlVmFsdWUoZVtyXSx0LGEpO3I8aS0xJiZ0LnB1c2goIiAiKX10LnB1c2goIl0iKX0oZSx0LGEpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKXthJiYoZT1hLmVuY3J5cHRTdHJpbmcoZSkpO3QucHVzaChgKCR7ZXNjYXBlU3RyaW5nKGUpfSlgKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlfHwiYm9vbGVhbiI9PXR5cGVvZiBlP3QucHVzaChlLnRvU3RyaW5nKCkpOmUgaW5zdGFuY2VvZiBEaWN0P2F3YWl0IHdyaXRlRGljdChlLHQsYSk6ZSBpbnN0YW5jZW9mIEJhc2VTdHJlYW0/YXdhaXQgYXN5bmMgZnVuY3Rpb24gd3JpdGVTdHJlYW0oZSx0LGEpeyhlPWUuZ2V0T3JpZ2luYWxTdHJlYW0oKSkucmVzZXQoKTtsZXQgcj1lLmdldEJ5dGVzKCk7Y29uc3R7ZGljdDppfT1lLFtuLHNdPWF3YWl0IFByb21pc2UuYWxsKFtpLmdldEFzeW5jKCJGaWx0ZXIiKSxpLmdldEFzeW5jKCJEZWNvZGVQYXJtcyIpXSksbz1pc05hbWUoQXJyYXkuaXNBcnJheShuKT9hd2FpdCBpLnhyZWYuZmV0Y2hJZlJlZkFzeW5jKG5bMF0pOm4sIkZsYXRlRGVjb2RlIik7aWYoci5sZW5ndGg+PTI1NiYmIW8pdHJ5e2NvbnN0IGU9bmV3IENvbXByZXNzaW9uU3RyZWFtKCJkZWZsYXRlIiksdD1lLndyaXRhYmxlLmdldFdyaXRlcigpO2F3YWl0IHQucmVhZHk7dC53cml0ZShyKS50aGVuKGFzeW5jKCk9Pnthd2FpdCB0LnJlYWR5O2F3YWl0IHQuY2xvc2UoKX0pLmNhdGNoKCgpPT57fSk7Y29uc3QgYT1hd2FpdCBuZXcgUmVzcG9uc2UoZS5yZWFkYWJsZSkuYXJyYXlCdWZmZXIoKTtyPW5ldyBVaW50OEFycmF5KGEpO2xldCBjLGw7aWYobil7aWYoIW8pe2M9QXJyYXkuaXNBcnJheShuKT9bTmFtZS5nZXQoIkZsYXRlRGVjb2RlIiksLi4ubl06W05hbWUuZ2V0KCJGbGF0ZURlY29kZSIpLG5dO3MmJihsPUFycmF5LmlzQXJyYXkocyk/W251bGwsLi4uc106W251bGwsc10pfX1lbHNlIGM9TmFtZS5nZXQoIkZsYXRlRGVjb2RlIik7YyYmaS5zZXQoIkZpbHRlciIsYyk7bCYmaS5zZXQoIkRlY29kZVBhcm1zIixsKX1jYXRjaChlKXtpbmZvKGB3cml0ZVN0cmVhbSAtIGNhbm5vdCBjb21wcmVzcyBkYXRhOiAiJHtlfSIuYCl9bGV0IGM9Ynl0ZXNUb1N0cmluZyhyKTthJiYoYz1hLmVuY3J5cHRTdHJpbmcoYykpO2kuc2V0KCJMZW5ndGgiLGMubGVuZ3RoKTthd2FpdCB3cml0ZURpY3QoaSx0LGEpO3QucHVzaCgiIHN0cmVhbVxuIixjLCJcbmVuZHN0cmVhbSIpfShlLHQsYSk6bnVsbD09PWU/dC5wdXNoKCJudWxsIik6d2FybihgVW5oYW5kbGVkIHZhbHVlIGluIHdyaXRlcjogJHt0eXBlb2YgZX0sIHBsZWFzZSBmaWxlIGEgYnVnLmApfWZ1bmN0aW9uIHdyaXRlSW50KGUsdCxhLHIpe2ZvcihsZXQgaT10K2EtMTtpPmEtMTtpLS0pe3JbaV09MjU1JmU7ZT4+PTh9cmV0dXJuIGErdH1mdW5jdGlvbiB3cml0ZVN0cmluZyhlLHQsYSl7Y29uc3Qgcj1lLmxlbmd0aDtmb3IobGV0IGk9MDtpPHI7aSsrKWFbdCtpXT0yNTUmZS5jaGFyQ29kZUF0KGkpO3JldHVybiB0K3J9ZnVuY3Rpb24gdXBkYXRlW
101EZBKHt4ZmFEYXRhOmUseGZhRGF0YXNldHNSZWY6dCxjaGFuZ2VzOmEseHJlZjpyfSl7aWYobnVsbD09PWUpe2U9ZnVuY3Rpb24gd3JpdGVYRkFEYXRhRm9yQWNyb2Zvcm0oZSx0KXtjb25zdCBhPW5ldyBTaW1wbGVYTUxQYXJzZXIoe2hhc0F0dHJpYnV0ZXM6ITB9KS5wYXJzZUZyb21TdHJpbmcoZSk7Zm9yKGNvbnN0e3hmYTplfW9mIHQpe2lmKCFlKWNvbnRpbnVlO2NvbnN0e3BhdGg6dCx2YWx1ZTpyfT1lO2lmKCF0KWNvbnRpbnVlO2NvbnN0IGk9cGFyc2VYRkFQYXRoKHQpO2xldCBuPWEuZG9jdW1lbnRFbGVtZW50LnNlYXJjaE5vZGUoaSwwKTshbiYmaS5sZW5ndGg+MSYmKG49YS5kb2N1bWVudEVsZW1lbnQuc2VhcmNoTm9kZShbaS5hdCgtMSldLDApKTtuP24uY2hpbGROb2Rlcz1BcnJheS5pc0FycmF5KHIpP3IubWFwKGU9Pm5ldyBTaW1wbGVET01Ob2RlKCJ2YWx1ZSIsZSkpOltuZXcgU2ltcGxlRE9NTm9kZSgiI3RleHQiLHIpXTp3YXJuKGBOb2RlIG5vdCBmb3VuZCBmb3IgcGF0aDogJHt0fWApfWNvbnN0IHI9W107YS5kb2N1bWVudEVsZW1lbnQuZHVtcChyKTtyZXR1cm4gci5qb2luKCIiKX0oci5mZXRjaElmUmVmKHQpLmdldFN0cmluZygpLGEpfWNvbnN0IGk9bmV3IFN0cmluZ1N0cmVhbShlKTtpLmRpY3Q9bmV3IERpY3Qocik7aS5kaWN0LnNldElmTmFtZSgiVHlwZSIsIkVtYmVkZGVkRmlsZSIpO2EucHV0KHQse2RhdGE6aX0pfWZ1bmN0aW9uIGdldEluZGV4ZXMoZSl7Y29uc3QgdD1bXTtmb3IoY29uc3R7cmVmOmF9b2YgZSlhLm51bT09PXQuYXQoLTIpK3QuYXQoLTEpP3RbdC5sZW5ndGgtMV0rPTE6dC5wdXNoKGEubnVtLDEpO3JldHVybiB0fWZ1bmN0aW9uIGNvbXB1dGVJRHMoZSx0LGEpe2lmKEFycmF5LmlzQXJyYXkodC5maWxlSWRzKSYmdC5maWxlSWRzLmxlbmd0aD4wKXtjb25zdCByPWZ1bmN0aW9uIGNvbXB1dGVNRDUoZSx0KXtjb25zdCBhPU1hdGguZmxvb3IoRGF0ZS5ub3coKS8xZTMpLHI9dC5maWxlbmFtZXx8IiIsaT1bYS50b1N0cmluZygpLHIsZS50b1N0cmluZygpLC4uLnQuaW5mb01hcC52YWx1ZXMoKV0sbj1NYXRoLnN1bVByZWNpc2UoaS5tYXAoZT0+ZS5sZW5ndGgpKSxzPW5ldyBVaW50OEFycmF5KG4pO2xldCBvPTA7Zm9yKGNvbnN0IGUgb2YgaSlvPXdyaXRlU3RyaW5nKGUsbyxzKTtyZXR1cm4gYnl0ZXNUb1N0cmluZyhjYWxjdWxhdGVNR
101DUocywwLHMubGVuZ3RoKSl9KGUsdCk7YS5zZXQoIklEIixbdC5maWxlSWRzWzBdfHxyLHJdKX19YXN5bmMgZnVuY3Rpb24gaW5jcmVtZW50YWxVcGRhdGUoe29yaWdpbmFsRGF0YTplLHhyZWZJbmZvOnQsY2hhbmdlczphLHhyZWY6cj1udWxsLGhhc1hmYTppPSExLHhmYURhdGFzZXRzUmVmOm49bnVsbCxoYXNYZmFEYXRhc2V0c0VudHJ5OnM9ITEsbmVlZEFwcGVhcmFuY2VzOm8sYWNyb0Zvcm1SZWY6Yz1udWxsLGFjcm9Gb3JtOmw9bnVsbCx4ZmFEYXRhOmg9bnVsbCx1c2VYcmVmU3RyZWFtOnU9ITF9KXthd2FpdCBhc3luYyBmdW5jdGlvbiB1cGRhdGVBY3JvZm9ybSh7eHJlZjplLGFjcm9Gb3JtOnQsYWNyb0Zvcm1SZWY6YSxoYXNYZmE6cixoYXNYZmFEYXRhc2V0c0VudHJ5OmkseGZhRGF0YXNldHNSZWY6bixuZWVkQXBwZWFyYW5jZXM6cyxjaGFuZ2VzOm99KXshcnx8aXx8bnx8d2FybigiWEZBIC0gQ2Fubm90IHNhdmUgaXQiKTtpZighcyYmKCFyfHwhbnx8aSkpcmV0dXJuO2NvbnN0IGM9dC5jbG9uZSgpO2lmKHImJiFpKXtjb25zdCBlPXQuZ2V0KCJYRkEiKS5zbGljZSgpO2Uuc3BsaWNlKDIsMCwiZGF0YXNldHMiKTtlLnNwbGljZSgzLDAsbik7Yy5zZXQoIlhGQSIsZSl9cyYmYy5zZXQoIk5lZWRBcHBlYXJhbmNlcyIsITApO28ucHV0KGEse2RhdGE6Y30pfSh7eHJlZjpyLGFjcm9Gb3JtOmwsYWNyb0Zvcm1SZWY6YyxoYXNYZmE6aSxoYXNYZmFEYXRhc2V0c0VudHJ5OnMseGZhRGF0YXNldHNSZWY6bixuZWVkQXBwZWFyYW5jZXM6byxjaGFuZ2VzOmF9KTtpJiZ1cGRhdGVYRkEoe3hmYURhdGE6aCx4ZmFEYXRhc2V0c1JlZjpuLGNoYW5nZXM6YSx4cmVmOnJ9KTtjb25zdCBkPWZ1bmN0aW9uIGdldFRyYWlsZXJEaWN0KGUsdCxhKXtjb25zdCByPW5ldyBEaWN0KG51bGwpO3Iuc2V0SWZEZWZpbmVkKCJQcmV2IixlPy5zdGFydFhSZWYpO2NvbnN0IGk9ZS5uZXdSZWY7aWYoYSl7dC5wdXQoaSx7ZGF0YToiIn0pO3Iuc2V0KCJTaXplIixpLm51bSsxKTtyLnNldElmTmFtZSgiVHlwZSIsIlhSZWYiKX1lbHNlIHIuc2V0KCJTaXplIixpLm51bSk7ci5zZXRJZkRlZmluZWQoIlJvb3QiLGU/LnJvb3RSZWYpO3Iuc2V0SWZEZWZpbmVkKCJJbmZvIixlPy5pbmZvUmVmKTtyLnNldElmRGVmaW5lZCgiRW5jcnlwdCIsZT8uZW5jcnlwdFJlZik7cmV0dXJuIHJ9KHQsYSx1KSxmPVtdLGc9YXdhaXQgYXN5bmMgZnVuY3Rpb24gd3JpdGVDaGFuZ2VzKGUsdCxhPVtdKXtjb25zdCByPVtdO2Zvcihjb25zdFtpLHtkYXRhOm4sb2JqU3RyZWFtUmVmOnMsaW5kZXg6b31db2YgZS5pdGVtcygpKWlmKHMpci5wdXNoKHtyZWY6aSxkYXRhOm4sb2JqU3RyZWFtUmVmOnMsaW5kZXg6b30pO2Vsc2UgaWYobnVsbCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil7YXdhaXQgd3JpdGVPYmplY3QoaSxuLGEsdCk7ci5wdXNoKHtyZWY6aSxkYXRhOmEuam9pbigiIil9KTthLmxlbmd0aD0wfWVsc2Ugci5wdXNoKHtyZWY6aSxkYXRhOm59KTtyZXR1cm4gci5zb3J0KChlLHQpPT5lLnJlZi5udW0tdC5yZWYubnVtKX0oYSxyLGYpO2xldCBwPWUubGVuZ3RoO2NvbnN0IG09ZS5hdCgtMSk7aWYoMTAhPT1tJiYxMyE9PW0pe2YucHVzaCgiXG4iKTtwKz0xfWZvcihjb25zdHtkYXRhOmV9b2YgZyludWxsIT09ZSYmZi5wdXNoKGUpO2F3YWl0KHU/YXN5bmMgZnVuY3Rpb24gZ2V0WFJlZlN0cmVhbVRhYmxlKGUsdCxhLHIsaSl7Y29uc3Qgbj1bXTtsZXQgcz0wLG89MDtmb3IoY29uc3R7cmVmOmUsZGF0YTpyLG9ialN0cmVhbVJlZjppLGluZGV4OmN9b2YgYSl7bGV0IGE7cz1NYXRoLm1heChzLHQpO2lmKGkpe2E9YztuLnB1c2goWzIsaS5udW0sYV0pfWVsc2UgaWYobnVsbCE9PXIpe2E9TWF0aC5taW4oZS5nZW4sNjU1MzUpO24ucHVzaChbMSx0LGFdKTt0Kz1yLmxlbmd0aH1lbHNle2E9TWF0aC5taW4oZS5nZW4rMSw2NTUzNSk7bi5wdXNoKFswLDAsYV0pfW89TWF0aC5tYXgobyxhKX1yLnNldCgiSW5kZXgiLGdldEluZGV4ZXMoYSkpO2NvbnN0IGM9WzEsZ2V0U2l6ZUluQnl0ZXMocyksZ2V0U2l6ZUluQnl0ZXMobyldO3Iuc2V0KCJXIixjKTtjb21wdXRlSURzKHQsZSxyKTtjb25zdCBsPU1hdGguc3VtUHJlY2lzZShjKSxoPW5ldyBVaW50OEFycmF5KGwqbi5sZW5ndGgpLHU9bmV3IFN0cmVhbShoKTt1LmRpY3Q9cjtsZXQgZD0wO2Zvcihjb25zdFtlLHQsYV1vZiBuKXtkPXdyaXRlSW50KGUsY1swXSxkLGgpO2Q9d3JpdGVJbnQodCxjWzFdLGQsaCk7ZD13cml0ZUludChhLGNbMl0sZCxoKX1hd2FpdCB3cml0ZU9iamVjdChlLm5ld1JlZix1LGkse30pO2kucHVzaCgic3RhcnR4cmVmXG4iLHQudG9TdHJpbmcoKSwiXG4lJUVPRlxuIil9KHQscCxnLGQsZik6YXN5bmMgZnVuY3Rpb24gZ2V0WFJlZlRhYmxlKGUsdCxhLHIsaSl7aS5wdXNoKCJ4cmVmXG4iKTtjb25zdCBuPWdldEluZGV4ZXMoYSk7bGV0IHM9MDtmb3IoY29uc3R7cmVmOmUsZGF0YTpyfW9mIGEpe2lmKGUubnVtPT09bltzXSl7aS5wdXNoKGAke25bc119ICR7bltzKzFdfVxuYCk7cys9Mn1pZihudWxsIT09cil7aS5wdXNoKGAke3QudG9TdHJpbmcoKS5wYWRTdGFydCgxMCwiMCIpfSAke01hdGgubWluKGUuZ2VuLDY1NTM1KS50b1N0cmluZygpLnBhZFN0YXJ0KDUsIjAiKX0gblxyXG5gKTt0Kz1yLmxlbmd0aH1lbHNlIGkucHVzaChgMDAwMDAwMDAwMCAke01hdGgubWluKGUuZ2VuKzEsNjU1MzUpLnRvU3RyaW5nKCkucGFkU3RhcnQoNSwiMCIpfSBmXHJcbmApfWNvbXB1dGVJRHModCxlLHIpO2kucHVzaCgidHJhaWxlclxuIik7YXdhaXQgd3JpdGVEaWN0KHIsaSxudWxsKTtpLnB1c2goIlxuc3RhcnR4cmVmXG4iLHQudG9TdHJpbmcoKSwiXG4lJUVPRlxuIil9KHQscCxnLGQsZikpO2NvbnN0IGI9ZS5sZW5ndGgrTWF0aC5zdW1QcmVjaXNlKGYubWFwKGU9PmUubGVuZ3RoKSkseT1uZXcgVWludDhBcnJheShiKTt5LnNldChlKTtsZXQgdz1lLmxlbmd0aDtmb3IoY29uc3QgZSBvZiBmKXc9d3JpdGVTdHJpbmcoZSx3LHkpO3JldHVybiB5fWNsYXNzIFBhZ2VEYXRhe2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5wYWdlPWU7dGhpcy5kb2N1bWVudERhdGE9dDt0aGlzLmFubm90YXRpb25zPW51bGw7dGhpcy5wb2ludGluZ05hbWVkRGVzdGluYXRpb25zPW51bGw7dC5wYWdlc01hcC5wdXQoZS5yZWYsdGhpcyl9fWNsYXNzIERvY3VtZW50RGF0YXtjb25zdHJ1Y3RvcihlKXt0aGlzLmRvY3VtZW50PWU7dGhpcy5kZXN0aW5
101hdGlvbnM9bnVsbDt0aGlzLnBhZ2VMYWJlbHM9bnVsbDt0aGlzLnBhZ2VzTWFwPW5ldyBSZWZTZXRDYWNoZTt0aGlzLm9sZFJlZk1hcHBpbmc9bmV3IFJlZlNldENhY2hlO3RoaXMuZGVkdXBOYW1lZERlc3RpbmF0aW9ucz1uZXcgTWFwO3RoaXMudXNlZE5hbWVkRGVzdGluYXRpb25zPW5ldyBTZXQ7dGhpcy5wb3N0cG9uZWRSZWZDb3BpZXM9bmV3IFJlZlNldENhY2hlO3RoaXMudXNlZFN0cnVjdFBhcmVudHM9bmV3IFNldDt0aGlzLm9sZFN0cnVjdFBhcmVudE1hcHBpbmc9bmV3IE1hcDt0aGlzLnN0cnVjdFRyZWVSb290PW51bGw7dGhpcy5wYXJlbnRUcmVlPW51bGw7dGhpcy5pZFRyZWU9bnVsbDt0aGlzLnJvbGVNYXA9bnVsbDt0aGlzLmNsYXNzTWFwPW51bGw7dGhpcy5uYW1lc3BhY2VzPW51bGw7dGhpcy5zdHJ1Y3RUcmVlQUY9bnVsbDt0aGlzLnN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbj1bXX19Y2xhc3MgWFJlZldyYXBwZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5lbnRyaWVzPWV9ZmV0Y2goZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBSZWY/dGhpcy5lbnRyaWVzW2UubnVtXTplfX1jbGFzcyBQREZFZGl0b3J7Y29uc3RydWN0b3Ioe3VzZU9iamVjdFN0cmVhbXM6ZT0hMCx0aXRsZTp0PSIiLGF1dGhvcjphPSIifT17fSl7dGhpcy5oYXNTaW5nbGVGaWxlPSExO3RoaXMuY3VycmVudERvY3VtZW50PW51bGw7dGhpcy5vbGRQYWdlcz1bXTt0aGlzLm5ld1BhZ2VzPVtdO3RoaXMueHJlZj1bbnVsbF07dGhpcy54cmVmV3JhcHBlcj1uZXcgWFJlZldyYXBwZXIodGhpcy54cmVmKTt0aGlzLm5ld1JlZkNvdW50PTE7W3RoaXMucm9vdFJlZix0aGlzLnJvb3REaWN0XT10aGlzLm5ld0RpY3Q7W3RoaXMuaW5mb1JlZix0aGlzLmluZm9EaWN0XT10aGlzLm5ld0RpY3Q7W3RoaXMucGFnZXNSZWYsdGhpcy5wYWdlc0RpY3RdPXRoaXMubmV3RGljdDt0aGlzLm5hbWVzRGljdD1udWxsO3RoaXMudXNlT2JqZWN0U3RyZWFtcz1lO3RoaXMub2JqU3RyZWFtUmVmcz1lP25ldyBTZXQ6bnVsbDt0aGlzLnZlcnNpb249IjEuNyI7dGhpcy50aXRsZT10O3RoaXMuYXV0aG9yPWE7dGhpcy5wYWdlTGFiZWxzPW51bGw7dGhpcy5uYW1lZERlc3RpbmF0aW9ucz1uZXcgTWFwO3RoaXMucGFyZW50VHJlZT1uZXcgTWFwO3RoaXMuc3RydWN0VHJlZUtpZHM9W107dGhpcy5pZFRyZWU9bmV3IE1hcDt0aGlzLmNsYXNzTWFwPW5ldyBEaWN0O3RoaXMucm9sZU1hcD1uZXcgRGljdDt0aGlzLm5hbWVzcGFjZXM9bmV3IE1hcDt0aGlzLnN0cnVjdFRyZWVBRj1bXTt0aGlzLnN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbj1bXX1nZXQgbmV3UmVmKCl7cmV0dXJuIFJlZi5nZXQodGhpcy5uZXdSZWZDb3VudCsrLDApfWdldCBuZXdEaWN0KCl7Y29uc3QgZT10aGlzLm5ld1JlZjtyZXR1cm5bZSx0aGlzLnhyZWZbZS5udW1dPW5ldyBEaWN0XX1hc3luYyNTdChlLHQpe2NvbnN0IGE9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2EubnVtXT1hd2FpdCB0aGlzLiNBdChlLCEwLHQpO3JldHVybiBhfWNsb25lRGljdChlKXtjb25zdCB0PWUuY2xvbmUoKTt0LnhyZWY9dGhpcy54cmVmV3JhcHBlcjtyZXR1cm4gdH1hc3luYyNBdChlLHQsYSl7aWYoZSBpbnN0YW5jZW9mIFJlZil7Y29uc3R7Y3VycmVudERvY3VtZW50OntvbGRSZWZNYXBwaW5nOnR9fT10aGlzO2xldCByPXQuZ2V0KGUpO2lmKHIpcmV0dXJuIHI7Y29uc3QgaT1lO2lmKCJudW1iZXIiPT10eXBlb2YoZT1hd2FpdCBhLmZldGNoQXN5bmMoaSkpKXJldHVybiBlO3I9dGhpcy5uZXdSZWY7dC5wdXQoaSxyKTt0aGlzLnhyZWZbci5udW1dPWF3YWl0IHRoaXMuI0F0KGUsITAsYSk7cmV0dXJuIHJ9Y29uc3Qgcj1bXSx7Y3VycmVudERvY3VtZW50Ontwb3N0cG9uZWRSZWZDb3BpZXM6aX19PXRoaXM7aWYoQXJyYXkuaXNBcnJheShlKSl7dCYmKGU9ZS5zbGljZSgpKTtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IG49aS5nZXQoZVt0XSk7bj9uLnB1c2goYT0+ZVt0XT1hKTpyLnB1c2godGhpcy4jQXQoZVt0XSwhMCxhKS50aGVuKGE9PmVbdF09YSkpfWF3YWl0IFByb21pc2UuYWxsKHIpO3JldHVybiBlfWxldCBuO2lmKGUgaW5zdGFuY2VvZiBCYXNlU3RyZWFtKXsoe2RpY3Q6bn09ZT1lLmdldE9yaWdpbmFsU3RyZWFtKCkuY2xvbmUoKSk7bi54cmVmPXRoaXMueHJlZldyYXBwZXJ9ZWxzZSBpZihlIGluc3RhbmNlb2YgRGljdCl7dCYmKChlPWUuY2xvbmUoKSkueHJlZj10aGlzLnhyZWZXcmFwcGVyKTtuPWV9aWYobil7Zm9yKGNvbnN0W2UsdF1vZiBuLmdldFJhd0VudHJpZXMoKSl7Y29uc3Qgcz1pLmdldCh0KTtzP3MucHVzaCh0PT5uLnNldChlLHQpKTpyLnB1c2godGhpcy4jQXQodCwhMCxhKS50aGVuKHQ9Pm4uc2V0KGUsdCkpKX1hd2FpdCBQcm9taXNlLmFsbChyKX1yZXR1cm4gZX1hc3luYyNrdChlLHQsYSxyLGksbixzLG89bmV3IFJlZlNldCl7Y29uc3R7Y3VycmVudERvY3VtZW50OntwYWdlc01hcDpjLG9sZFJlZk1hcHBpbmc6bH19PXRoaXMsaD10LmdldFJhdygiUGciKTtpZihoIGluc3RhbmNlb2YgUmVmJiYhYy5oYXMoaCkpcmV0dXJuIG51bGw7bGV0IHU7Y29uc3QgZD11PXQuZ2V0UmF3KCJLIik7aWYoZCBpbnN0YW5jZW9mIFJlZil7aWYoby5oYXMoZCkpcmV0dXJuIG51bGw7dT1hd2FpdCBhLmZldGNoQXN5bmMoZCk7QXJyYXkuaXNBcnJheSh1KXx8KHU9W2RdKX11PUFycmF5LmlzQXJyYXkodSk/dTpbdV07Y29uc3QgZj1bXSxnPVtdO2ZvcihsZXQgdCBvZiB1KXtjb25zdCBoPXQgaW5zdGFuY2VvZiBSZWY/dDpudWxsO2lmKGgpe2lmKG8uaGFzKGgpKWNvbnRpbnVlO28ucHV0KGgpO3Q9YXdhaXQgYS5mZXRjaEFzeW5jKGgpfWlmKCJudW1iZXIiPT10eXBlb2YgdCl7Zi5wdXNoKHQpO2NvbnRpbnVlfWlmKCEodCBpbnN0YW5jZW9mIERpY3QpKWNvbnRpbnVlO2NvbnN0IHU9dC5nZXRSYXcoIlBnIik7aWYodSBpbnN0YW5jZW9mIFJlZiYmIWMuaGFzKHUpKWNvbnRpbnVlO2NvbnN0IGQ9dC5nZXQoIlR5cGUiKTtpZighZHx8aXNOYW1lKGQsIlN0cnVjdEVsZW0iKSl7bGV0IGU9ITE7aWYoaCYmci5oYXMoaCkpe2lmKCFpc05hbWUodC5nZXQoIlMiKSwiTGluayIpKWNvbnRpbnVlO2U9ITB9Y29uc3QgYz1hd2FpdCB0aGlzLiNrdChoLHQsYSxyLGksbixzLG8pO2lmKGMpe2cucHVzaChmLmxlbmd0aCk7Zi5wdXNoKGMpO2gmJmwucHV0KGgsYyk7ZSYmdGhpcy54cmVmW2MubnVtXS
1015zZXRJZk5hbWUoIlMiLCJTcGFuIil9Y29udGludWV9aWYoaXNOYW1lKGQsIk9CSlIiKSl7aWYoIWgpY29udGludWU7Y29uc3QgdD1sLmdldChoKTtpZighdCljb250aW51ZTtjb25zdCBhPXRoaXMueHJlZlt0Lm51bV0uZ2V0UmF3KCJPYmoiKTtpZihhIGluc3RhbmNlb2YgUmVmKXtjb25zdCB0PXRoaXMueHJlZlthLm51bV07aWYodCBpbnN0YW5jZW9mIERpY3QmJiF0LmhhcygiU3RydWN0UGFyZW50IikmJmUpe2NvbnN0IGE9dGhpcy5wYXJlbnRUcmVlLnNpemU7dGhpcy5wYXJlbnRUcmVlLnNldChhLFtsLGVdKTt0LnNldCgiU3RydWN0UGFyZW50IixhKX19Zi5wdXNoKHQpO2NvbnRpbnVlfWlmKGlzTmFtZShkLCJNQ1IiKSl7Y29uc3QgZT1hd2FpdCB0aGlzLiNBdChofHx0LCEwLGEpO2YucHVzaChlKTtjb250aW51ZX1pZihoKXtjb25zdCBlPWF3YWl0IHRoaXMuI0F0KGgsITAsYSk7Zi5wdXNoKGUpfX1pZigwIT09dS5sZW5ndGgmJjA9PT1mLmxlbmd0aClyZXR1cm4gbnVsbDtjb25zdCBwPXRoaXMubmV3UmVmLG09dGhpcy54cmVmW3AubnVtXT10aGlzLmNsb25lRGljdCh0KTttLmRlbGV0ZSgiSUQiKTttLmRlbGV0ZSgiQyIpO20uZGVsZXRlKCJLIik7bS5kZWxldGUoIlAiKTttLmRlbGV0ZSgiUyIpO2F3YWl0IHRoaXMuI0F0KG0sITEsYSk7Y29uc3QgYj10LmdldCgiQyIpO2lmKGIgaW5zdGFuY2VvZiBOYW1lKXtjb25zdCBlPW4uZ2V0KGIubmFtZSk7ZT9tLnNldCgiQyIsTmFtZS5nZXQoZSkpOm0uc2V0KCJDIixiKX1lbHNlIGlmKEFycmF5LmlzQXJyYXkoYikpe2NvbnN0IGU9W107Zm9yKGNvbnN0IHQgb2YgYilpZih0IGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgYT1uLmdldCh0Lm5hbWUpO2E/ZS5wdXNoKE5hbWUuZ2V0KGEpKTplLnB1c2godCl9bS5zZXQoIkMiLGUpfWNvbnN0IHk9dC5nZXQoIlMiKTtpZih5IGluc3RhbmNlb2YgTmFtZSl7Y29uc3QgZT1zLmdldCh5Lm5hbWUpO2U/bS5zZXQoIlMiLE5hbWUuZ2V0KGUpKTptLnNldCgiUyIseSl9Y29uc3Qgdz10LmdldCgiSUQiKTtpZigic3RyaW5nIj09dHlwZW9mIHcpe2NvbnN0IGU9c3RyaW5nVG9QREZTdHJpbmcodywhMSksdD1pLmdldChlKTt0P20uc2V0KCJJRCIsc3RyaW5nVG9Bc2NpaU9yVVRGMTZCRSh0KSk6bS5zZXQoIklEIix3KX1sZXQgeD1tLmdldCgiQSIpO2lmKHgpe0FycmF5LmlzQXJyYXkoeCl8fCh4PVt4XSk7Zm9yKGxldCBlIG9mIHgpe2U9dGhpcy54cmVmV3JhcHBlci5mZXRjaChlKTtpZihpc05hbWUoZS5nZXQoIk8iKSwiVGFibGUiKSYmZS5oYXMoIkhlYWRlcnMiKSl7Y29uc3QgdD10aGlzLnhyZWZXcmFwcGVyLmZldGNoKGUuZ2V0UmF3KCJIZWFkZXJzIikpO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKGxldCBlPTAsYT10Lmxlbmd0aDtlPGE7ZSsrKXtjb25zdCBhPWkuZ2V0KHN0cmluZ1RvUERGU3RyaW5nKHRbZV0sITEpKTthJiYodFtlXT1hKX19fX1mb3IoY29uc3QgZSBvZiBnKXtjb25zdCB0PWZbZV07dGhpcy54cmVmW3QubnVtXS5zZXQoIlAiLHApfTE9PT1mLmxlbmd0aD9tLnNldCgiSyIsZlswXSk6Zi5sZW5ndGg+MSYmbS5zZXQoIksiLGYpO3JldHVybiBwfWFzeW5jIGV4dHJhY3RQYWdlcyhlKXtjb25zdCB0PVtdO2xldCBhPTA7dGhpcy5oYXNTaW5nbGVGaWxlPTE9PT1lLmxlbmd0aDtjb25zdCByPVtdO2Zvcihjb25zdHtkb2N1bWVudDppLGluY2x1ZGVQYWdlczpuLGV4Y2x1ZGVQYWdlczpzfW9mIGUpe2lmKCFpKWNvbnRpbnVlO2NvbnN0IGU9bmV3IERvY3VtZW50RGF0YShpKTtyLnB1c2goZSk7dC5wdXNoKHRoaXMuI0N0KGUpKTtsZXQgbyxjLGwsaDtmb3IoY29uc3QgZSBvZiBufHxbXSlBcnJheS5pc0FycmF5KGUpPyhjfHw9W10pLnB1c2goZSk6KG98fD1uZXcgU2V0KS5hZGQoZSk7Zm9yKGNvbnN0IGUgb2Ygc3x8W10pQXJyYXkuaXNBcnJheShlKT8oaHx8PVtdKS5wdXNoKGUpOihsfHw9bmV3IFNldCkuYWRkKGUpO2ZvcihsZXQgcj0wLG49aS5udW1QYWdlcztyPG47cisrKXtpZihsPy5oYXMocikpY29udGludWU7aWYoaCl7bGV0IGU9ITE7Zm9yKGNvbnN0W3QsYV1vZiBoKWlmKHI+PXQmJnI8PWEpe2U9ITA7YnJlYWt9aWYoZSljb250aW51ZX1sZXQgbj0hMTtvJiYobj1vLmhhcyhyKSk7aWYoIW4mJmMpZm9yKGNvbnN0W2UsdF1vZiBjKWlmKHI+PWUmJnI8PXQpe249ITA7YnJlYWt9bnx8b3x8Y3x8KG49ITApO2lmKCFuKWNvbnRpbnVlO2NvbnN0IHM9YSsrO3QucHVzaChpLmdldFBhZ2UocikudGhlbih0PT57dGhpcy5vbGRQYWdlc1tzXT1uZXcgUGFnZURhdGEodCxlKX0pKX19YXdhaXQgUHJvbWlzZS5hbGwodCk7dC5sZW5ndGg9MDt0aGlzLiN2dChyKTt0aGlzLiNGdCgpO2Zvcihjb25zdCBlIG9mIHRoaXMub2xkUGFnZXMpdC5wdXNoKHRoaXMuI0l0KGUpKTthd2FpdCBQcm9taXNlLmFsbCh0KTt0aGlzLiNUdCgpO3RoaXMuI090KHIpO2ZvcihsZXQgZT0wLHQ9dGhpcy5vbGRQYWdlcy5sZW5ndGg7ZTx0O2UrKyl0aGlzLm5ld1BhZ2VzW2VdPWF3YWl0IHRoaXMuI0R0KGUsbnVsbCk7dGhpcy4jTXQocik7YXdhaXQgdGhpcy4jUnQocik7cmV0dXJuIHRoaXMud3JpdGVQREYoKX1hc3luYyNDdChlKXtjb25zdHtkb2N1bWVudDp7cGRmTWFuYWdlcjp0LHhyZWY6YX19PWU7YXdhaXQgUHJvbWlzZS5hbGwoW3QuZW5zdXJlQ2F0YWxvZygiZGVzdGluYXRpb25zIikudGhlbih0PT5lLmRlc3RpbmF0aW9ucz10KSx0LmVuc3VyZUNhdGFsb2coInJhd1BhZ2VMYWJlbHMiKS50aGVuKHQ9PmUucGFnZUxhYmVscz10KSx0LmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IikudGhlbih0PT5lLnN0cnVjdFRyZWVSb290PXQpXSk7Y29uc3Qgcj1lLnN0cnVjdFRyZWVSb290O2lmKHIpe2NvbnN0IHQ9ci5kaWN0LGk9dC5nZXQoIlBhcmVudFRyZWUiKTtpZihpKXtjb25zdCB0PW5ldyBOdW1iZXJUcmVlKGksYSk7ZS5wYXJlbnRUcmVlPXQuZ2V0QWxsKCEwKX1jb25zdCBuPXQuZ2V0KCJJRFRyZWUiKTtpZihuKXtjb25zdCB0PW5ldyBOYW1lVHJlZShuLGEpO2UuaWRUcmVlPXQuZ2V0QWxsKCEwKX1lLnJvbGVNYXA9dC5nZXQoIlJvbGVNYXAiKXx8bnVsbDtlLmNsYXNzTWFwPXQuZ2V0KCJDbGFzc01hcCIpfHxudWxsO2xldCBzPXQuZ2V0KCJOYW1lc3BhY2VzIil8fG51bGw7cyYmIUFycmF5LmlzQXJyYXkocykmJihzPVtzXSk7ZS5uYW1lc3BhY2VzPXM7ZS5zdHJ1Y3RUcmVlQUY9dC5nZXQoIkFGIil8fG51bGw7ZS5zdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb249dC5nZXQoIlByb251bmNpYXRpb25MZXhpY29uIil8fG51bGx9fWFzeW5jI0l0KGUpe2NvbnN0e3BhZ2U6e3hyZWY6dCxhbm5vdGF0aW9uczphfSxkb2N1bWVudERhdGE6e3BhZ2VzTWFwOnIsZGVzdGluYXRpb25zOmksdXNlZE5hbWVkRGVzdGluYXRpb25zOm59fT1lO2lmKCFhKXJldHVybjtjb25zdCBzPVtdO2xldCBvPVtdLGM9MDtmb3IoY29uc3QgZSBvZiBhKXtjb25zdCBhPWMrKztzLnB1c2godC5mZXRjaElmUmVmQXN5bmMoZSkudGhlbihhc3luYyB0PT57aWYoIWlzTmFtZSh0LmdldCgiU3VidHlwZSIpLCJMaW5rIikpe29bYV09ZTtyZXR1cm59Y29uc3Qgcz10LmdldCgiQSIpLGM9cyBpbnN0YW5jZW9mIERpY3Q/cy5nZXQoIkQiKTp0LmdldCgiRGVzdCIpO2lmKGMmJighQXJyYXkuaXNBcnJheShjKXx8Y1swXWluc3RhbmNlb2YgUmVmJiYhci5oYXMoY1swXSkpKXtpZigic3RyaW5nIj09dHlwZW9mIGMpe2NvbnN0IHQ9c3RyaW5nVG9QREZTdHJpbmcoYywhMCk7aWYoaS5oYXModCkpe29bYV09ZTtuLmFkZCh0KX19fWVsc2Ugb1thXT1lfSkpfWF3YWl0IFByb21pc2UuYWxsKHMpO289by5maWx0ZXIoZT0+ISFlKTtlLmFubm90YXRpb25zPW8ubGVuZ3RoPjA/bzpudWxsfSNPdChlKXtmb3IoY29uc3R7cG9zdHBvbmVkUmVmQ29waWVzOnQscGFnZXNNYXA6YX1vZiBlKWZvcihjb25zdCBlIG9mIGEua2V5cygpKXQucHV0KGUsW10pfSNNdChlKXtmb3IoY29uc3R7cG9zdHBvbmVkUmVmQ29waWVzOnQsb2xkUmVmTWFwcGluZzphfW9mIGUpe2Zvcihjb25zdFtlLHJdb2YgdC5pdGVtcygpKXtjb25zdCB0PWEuZ2V0KGUpO2Zvcihjb25zdCBlIG9mIHIpZSh0KX10LmNsZWFyKCl9fSNCdChlLHQsYT1uZXcgUmVmU2V0KXtpZihlIGluc3RhbmNlb2YgUmVmKXtpZighYS5oYXMoZSkpe2EucHV0KGUpO3RoaXMuI0J0KHRoaXMueHJlZltlLm51bV0sdCxhKX1yZXR1cm59aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHIgb2YgZSl0aGlzLiNCdC
101hyLHQsYSk7cmV0dXJufWxldCByO2UgaW5zdGFuY2VvZiBCYXNlU3RyZWFtPyh7ZGljdDpyfT1lKTplIGluc3RhbmNlb2YgRGljdCYmKHI9ZSk7aWYocil7dChyKTtmb3IoY29uc3QgZSBvZiByLmdldFJhd1ZhbHVlcygpKXRoaXMuI0J0KGUsdCxhKX19YXN5bmMjUnQoZSl7bGV0IHQ9MDtjb25zdHtwYXJlbnRUcmVlOmF9PXRoaXM7Zm9yKGxldCBlPTAscj10aGlzLm5ld1BhZ2VzLmxlbmd0aDtlPHI7ZSsrKXtjb25zdHtkb2N1bWVudERhdGE6e3BhcmVudFRyZWU6cixvbGRSZWZNYXBwaW5nOmksb2xkU3RydWN0UGFyZW50TWFwcGluZzpuLHVzZWRTdHJ1Y3RQYXJlbnRzOnMsZG9jdW1lbnQ6e3hyZWY6b319fT10aGlzLm9sZFBhZ2VzW2VdO2lmKCFyKWNvbnRpbnVlO2NvbnN0IGM9dGhpcy5uZXdQYWdlc1tlXSxsPXRoaXMueHJlZltjLm51bV07dGhpcy4jQnQobCxlPT57Y29uc3QgYz1lLmdldCgiU3RydWN0UGFyZW50Iik/P2UuZ2V0KCJTdHJ1Y3RQYXJlbnRzIik7aWYoIm51bWJlciIhPXR5cGVvZiBjKXJldHVybjtzLmFkZChjKTtsZXQgbD1yLmdldChjKTtjb25zdCBoPWwgaW5zdGFuY2VvZiBSZWY/bDpudWxsO2lmKGgpe2NvbnN0IGU9by5mZXRjaChoKTtBcnJheS5pc0FycmF5KGUpJiYobD1lKX1BcnJheS5pc0FycmF5KGwpJiZsLmV2ZXJ5KGU9Pm51bGw9PT1lKSYmKGw9bnVsbCk7aWYoIWwpe2UuaGFzKCJTdHJ1Y3RQYXJlbnQiKT9lLmRlbGV0ZSgiU3RydWN0UGFyZW50Iik6ZS5kZWxldGUoIlN0cnVjdFBhcmVudHMiKTtyZXR1cm59bGV0IHU9bi5nZXQoYyk7aWYodm9pZCAwPT09dSl7dT10Kys7bi5zZXQoYyx1KTthLnNldCh1LFtpLGxdKX1lLmhhcygiU3RydWN0UGFyZW50Iik/ZS5zZXQoIlN0cnVjdFBhcmVudCIsdSk6ZS5zZXQoIlN0cnVjdFBhcmVudHMiLHUpfSl9Y29uc3R7c3RydWN0VHJlZUtpZHM6cixpZFRyZWU6aSxjbGFzc01hcDpuLHJvbGVNYXA6cyxuYW1lc3BhY2VzOm8sc3RydWN0VHJlZUFGOmMsc3RydWN0VHJlZVByb251bmNpYXRpb25MZXhpY29uOmx9PXRoaXM7Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3R7ZG9jdW1lbnQ6e3hyZWY6ZX0sb2xkUmVmTWFwcGluZzphLHBhcmVudFRyZWU6aCx1c2VkU3RydWN0UGFyZW50czp1LHN0cnVjdFRyZWVSb290OmQsaWRUcmVlOmYsY2xhc3NNYXA6Zyxyb2xlTWFwOnAsbmFtZXNwYWNlczptLHN0cnVjdFRyZWVBRjpiLHN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbjp5fT10O2lmKCFkKWNvbnRpbnVlO3RoaXMuY3VycmVudERvY3VtZW50PXQ7Y29uc3Qgdz1uZXcgUmVmU2V0O2Zvcihjb25zdFtlLHRdb2YgaHx8W10pIXUuaGFzKGUpJiZ0IGluc3RhbmNlb2YgUmVmJiZ3LnB1dCh0KTtjb25zdCB4PW5ldyBNYXA7Zm9yKGNvbnN0W2UsdF1vZiBmfHxbXSl7bGV0IGE9ZTtpZihpLmhhcyhlKSlmb3IobGV0IHQ9MTs7dCsrKXtjb25zdCByPWAke2V9XyR7dH1gO2lmKCFpLmhhcyhyKSl7eC5zZXQoZSxyKTthPXI7YnJlYWt9fWkuc2V0KGEsdCl9Y29uc3QgUz1uZXcgTWFwO2lmKGc/LnNpemU+MClmb3IobGV0W3QsYV1vZiBnKXthPWF3YWl0IHRoaXMuI0F0KGEsITAsZSk7aWYobi5oYXModCkpZm9yKGxldCBlPTE7O2UrKyl7Y29uc3QgYT1gJHt0fV8ke2V9YDtpZighbi5oYXMoYSkpe1Muc2V0KHQsYSk7dD1hO2JyZWFrfX1uLnNldCh0LGEpfWNvbnN0IGs9bmV3IE1hcDtpZihwPy5zaXplPjApZm9yKGNvbnN0W2UsdF1vZiBwKXtjb25zdCBhPXMuZ2V0KGUpO2lmKGEpe2lmKGEhPT10KWZvcihsZXQgYT0xOzthKyspe2NvbnN0IHI9YCR7ZX1fJHthfWA7aWYoIXMuaGFzKHIpKXtrLnNldChlLHIpO3Muc2V0KHIsdCk7YnJlYWt9fX1lbHNlIHMuc2V0KGUsdCl9aWYobT8ubGVuZ3RoPjApZm9yKGNvbnN0IHQgb2YgbSl7Y29uc3QgYT1hd2FpdCBlLmZldGNoSWZSZWZBc3luYyh0KTtsZXQgcj1hLmdldCgiTlMiKTtpZighcnx8by5oYXMocikpY29udGludWU7cj1zdHJpbmdUb1BERlN0cmluZyhyLCExKTtjb25zdCBpPWF3YWl0IHRoaXMuI0F0KGEsITAsZSk7by5zZXQocixpKX1pZihiKWZvcihjb25zdCB0IG9mIGIpYy5wdXNoKGF3YWl0IHRoaXMuI0F0KHQsITAsZSkpO2lmKHkpZm9yKGNvbnN0IHQgb2YgeSlsLnB1c2goYXdhaXQgdGhpcy4jQXQodCwhMCxlKSk7bGV0IEM9ZC5kaWN0LmdldCgiSyIpO2lmKEMpe0M9QXJyYXkuaXNBcnJheShDKT9DOltDXTtmb3IobGV0IHQgb2YgQyl7Y29uc3QgYT10IGluc3RhbmNlb2YgUmVmP3Q6bnVsbDtpZihhJiZ3LmhhcyhhKSljb250aW51ZTt0PWF3YWl0IGUuZmV0Y2hJZlJlZkFzeW5jKHQpO2NvbnN0IGk9YXdhaXQgdGhpcy4ja3QoYSx0LGUsdyx4LFMsayk7aSYmci5wdXNoKGkpfWZvcihjb25zdFtlLHRdb2YgZnx8W10pe2NvbnN0IHI9YS5nZXQodCksbj14LmdldChlKXx8ZTtyP2kuc2V0KG4scik6aS5kZWxldGUobil9fX1mb3IoY29uc3RbZSxbdCxyXV1vZiBhKXtpZighcil7YS5kZWxldGUoZSk7Y29udGludWV9aWYoIUFycmF5LmlzQXJyYXkocikpe2NvbnN0IGk9dC5nZXQocik7dm9pZCAwPT09aT9hLmRlbGV0ZShlKTphLnNldChlLGkpO2NvbnRpbnVlfWNvbnN0IGk9ci5tYXAoZT0+ZSBpbnN0YW5jZW9mIFJlZiYmdC5nZXQoZSl8fG51bGwpOzA9PT1pLmxlbmd0aHx8aS5ldmVyeShlPT5udWxsPT09ZSk/YS5kZWxldGUoZSk6YS5zZXQoZSxpKX10aGlzLmN1cnJlbnREb2N1bWVudD1udWxsfSN2dChlKXtmb3IoY29uc3QgdCBvZiBlKXtpZighdC5kZXN0aW5hdGlvbnMpY29udGludWU7Y29uc3R7ZGVzdGluYXRpb25zOmUscGFnZXNNYXA6YX09dCxyPXQuZGVzdGluYXRpb25zPW5ldyBNYXA7Zm9yKGNvbnN0W3QsaV1vZiBPYmplY3QuZW50cmllcyhlKSl7Y29uc3QgZT1pWzBdLG49YS5nZXQoZSk7aWYobil7KG4ucG9pbnRpbmdOYW1lZERlc3RpbmF0aW9uc3x8PW5ldyBTZXQpLmFkZCh0KTtyLnNldCh0LGkpfX19fSNUdCgpe2NvbnN0e25hbWVkRGVzdGluYXRpb25zOmV9PXRoaXM7Zm9yKGxldCB0PTAsYT10aGlzLm9sZFBhZ2VzLmxlbmd0aDt0PGE7dCsrKXtjb25zdCBhPXRoaXMub2xkUGFnZXNbdF0se2RvY3VtZW50RGF0YTp7ZGVzdGluYXRpb25zOnIsZGVkdXBOYW1lZERlc3RpbmF0aW9uczppLHVzZWROYW1lZERlc3RpbmF0aW9uczpufX09YTtsZXR7cG9pbnRpbmdOYW1lZERlc3RpbmF0aW9uczpzfT1hO2lmKHMpe2EucG9pbnRpbmdOYW1lZERlc3RpbmF0aW9ucz1zPXMuaW50ZXJzZWN0aW9uKG4pO2Zvcihjb25zdCBhIG9mIHMpe2lmKCFuLmhhcyhhKSljb250aW51ZTtjb25zdCBzPXIuZ2V0KGEpLnNsaWNlKCk7aWYoIWUuaGFzKGEpKXtlLnNldChhLHMpO2Nvbn
101RpbnVlfWNvbnN0IG89YCR7YX1fcCR7dCsxfWA7aS5zZXQoYSxvKTtlLnNldChvLHMpfX19fSNOdChlLHQpe2lmKDA9PT10LnNpemUpcmV0dXJuO2NvbnN0IGZpeERlc3RpbmF0aW9uPShlLGEscik9Pnsic3RyaW5nIj09dHlwZW9mIHImJmUuc2V0KGEsdC5nZXQoc3RyaW5nVG9QREZTdHJpbmcociwhMCkpfHxyKX07Zm9yKGNvbnN0IHQgb2YgZSl7Y29uc3QgZT10aGlzLnhyZWZbdC5udW1dO2lmKCFpc05hbWUoZS5nZXQoIlN1YnR5cGUiKSwiTGluayIpKWNvbnRpbnVlO2NvbnN0IGE9ZS5nZXQoIkEiKTtpZihhIGluc3RhbmNlb2YgRGljdCYmYS5oYXMoIkQiKSl7Y29uc3QgZT1hLmdldCgiRCIpO2ZpeERlc3RpbmF0aW9uKGEsIkQiLGUpO2NvbnRpbnVlfWNvbnN0IHI9ZS5nZXQoIkRlc3QiKTtmaXhEZXN0aW5hdGlvbihlLCJEZXN0IixyKX19YXN5bmMjRnQoKXtpZighdGhpcy5oYXNTaW5nbGVGaWxlKXJldHVybjtjb25zdHtkb2N1bWVudERhdGE6e2RvY3VtZW50OmUscGFnZUxhYmVsczp0fX09dGhpcy5vbGRQYWdlc1swXTtpZighdClyZXR1cm47Y29uc3QgYT1lLm51bVBhZ2VzLHI9W10saT1uZXcgU2V0KHRoaXMub2xkUGFnZXMubWFwKCh7cGFnZTp7cGFnZUluZGV4OmV9fSk9PmUpKTtsZXQgbj1udWxsLHM9LTE7Zm9yKGxldCBlPTA7ZTxhO2UrKyl7Y29uc3QgYT10LmdldChlKTtpZihhKXtuPWE7cz1uLmhhcygiU3QiKT9lOi0xfWlmKGkuaGFzKGUpKXtpZigtMSE9PXMpe2NvbnN0IHQ9bi5nZXQoIlN0Iik7bj10aGlzLmNsb25lRGljdChuKTtuLnNldCgiU3QiLHQrKGUtcykpO3M9LTF9ci5wdXNoKG4pfX1uPXJbMF07bGV0IG89MDtjb25zdCBjPXRoaXMucGFnZUxhYmVscz1bWzAsbl1dO2ZvcihsZXQgZT0wLHQ9ci5sZW5ndGg7ZTx0O2UrKyl7Y29uc3QgdD1yW2VdO2lmKHQhPT1uKXtvPWU7bj10O2MucHVzaChbbyxuXSl9fX1hc3luYyNEdChlKXtjb25zdHtwYWdlOnQsZG9jdW1lbnREYXRhOmEsYW5ub3RhdGlvbnM6cixwb2ludGluZ05hbWVkRGVzdGluYXRpb25zOml9PXRoaXMub2xkUGFnZXNbZV07dGhpcy5jdXJyZW50RG9jdW1lbnQ9YTtjb25zdHtkZWR1cE5hbWVkRGVzdGluYXRpb25zOm4sb2xkUmVmTWFwcGluZzpzfT1hLHt4cmVmOm8scm90YXRlOmMsbWVkaWFCb3g6bCxyZXNvdXJjZXM6aCxyZWY6dX09dCxkPXRoaXMubmV3UmVmLGY9dGhpcy54cmVmW2QubnVtXT10aGlzLmNsb25lRGljdCh0LnBhZ2VEaWN0KTtzLnB1dCh1LGQpO2lmKGkpZm9yKGNvbnN0IGUgb2YgaSl7Y29uc3QgdD1uLmdldChlKXx8ZTt0aGlzLm5hbWVkRGVzdGluYXRpb25zLmdldCh0KVswXT1kfWZvcihjb25zdCBlIG9mWyJSb3RhdGUiLCJNZWRpYUJveCIsIkNyb3BCb3giLCJCbGVlZEJveCIsIlRyaW1Cb3giLCJBcnRCb3giLCJSZXNvdXJjZXMiLCJBbm5vdHMiLCJQYXJlbnQiLCJVc2VyVW5pdCJdKWYuZGVsZXRlKGUpO2NvbnN0IGc9dGhpcy5uZXdSZWZDb3VudDthd2FpdCB0aGlzLiNBdChmLCExLG8pO2Yuc2V0KCJSb3RhdGUiLGMpO2Yuc2V0KCJNZWRpYUJveCIsbCk7Zm9yKGNvbnN0IGUgb2ZbIkNyb3BCb3giLCJCbGVlZEJveCIsIlRyaW1Cb3giLCJBcnRCb3giXSl7Y29uc3QgYT10LmdldEJvdW5kaW5nQm94KGUpO2E/LnNvbWUoKGUsdCk9PmUhPT1sW3RdKSYmZi5zZXQoZSxhKX1jb25zdCBwPXQudXNlclVuaXQ7MSE9PXAmJmYuc2V0KCJVc2VyVW5pdCIscCk7Zi5zZXRJZkRpY3QoIlJlc291cmNlcyIsYXdhaXQgdGhpcy4jQXQoaCwhMCxvKSk7aWYocil7Y29uc3QgZT1hd2FpdCB0aGlzLiNBdChyLCEwLG8pO3RoaXMuI050KGUsbik7Zi5zZXRJZkFycmF5KCJBbm5vdHMiLGUpfWlmKHRoaXMudXNlT2JqZWN0U3RyZWFtcyl7Y29uc3QgZT10aGlzLm5ld1JlZkNvdW50LHQ9W107Zm9yKGxldCBhPWc7YTxlO2ErKyl7dGhpcy54cmVmW2FdaW5zdGFuY2VvZiBCYXNlU3RyZWFtfHx0LnB1c2goUmVmLmdldChhLDApKX1mb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPTY1NTM1KXtjb25zdCBhPXRoaXMubmV3UmVmO3RoaXMub2JqU3RyZWFtUmVmcy5hZGQoYS5udW0pO3RoaXMueHJlZlthLm51bV09dC5zbGljZShlLGUrNjU1MzUpfX10aGlzLmN1cnJlbnREb2N1bWVudD1udWxsO3JldHVybiBkfSNQdCgpe2NvbnN0e25ld1BhZ2VzOmUscm9vdERpY3Q6dCxwYWdlc1JlZjphLHBhZ2VzRGljdDpyfT10aGlzO3Quc2V0KCJQYWdlcyIsYSk7ci5zZXRJZk5hbWUoIlR5cGUiLCJQYWdlcyIpO3Iuc2V0KCJDb3VudCIsZS5sZW5ndGgpO2NvbnN0IGk9W3tkaWN0OnIsa2lkczplLHBhcmVudFJlZjphfV07Zm9yKDtpLmxlbmd0aD4wOyl7Y29uc3R7ZGljdDplLGtpZHM6dCxwYXJlbnRSZWY6YX09aS5wb3AoKTtpZih0Lmxlbmd0aDw9MTYpe2Uuc2V0KCJLaWRzIix0KTtmb3IoY29uc3QgZSBvZiB0KXRoaXMueHJlZltlLm51bV0uc2V0KCJQYXJlbnQiLGEpO2NvbnRpbnVlfWNvbnN0IHI9TWF0aC5tYXgoMTYsTWF0aC5jZWlsKHQubGVuZ3RoLzE2KSksbj1bXTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPXIpbi5wdXNoKHQuc2xpY2UoZSxlK3IpKTtjb25zdCBzPVtdO2Uuc2V0KCJLaWRzIixzKTtmb3IoY29uc3QgZSBvZiBuKXtjb25zdFt0LHJdPXRoaXMubmV3RGljdDtzLnB1c2godCk7ci5zZXRJZk5hbWUoIlR5cGUiLCJQYWdlcyIpO3Iuc2V0KCJQYXJlbnQiLGEpO3Iuc2V0KCJDb3VudCIsZS5sZW5ndGgpO2kucHVzaCh7ZGljdDpyLGtpZHM6ZSxwYXJlbnRSZWY6dH0pfX19I0V0KGUsdCl7Y29uc3QgYT1lLnNvcnQodD8oW2VdLFt0XSk9PmUubG9jYWxlQ29tcGFyZSh0KTooW2VdLFt0XSk9PmUtdCksW3IsaV09dGhpcy5uZXdEaWN0LG49W3tkaWN0OmksZW50cmllczphfV0scz10PyJOYW1lcyI6Ik51bXMiO2Zvcig7bi5sZW5ndGg+MDspe2NvbnN0e2RpY3Q6ZSxlbnRyaWVzOnR9PW4ucG9wKCk7aWYodC5sZW5ndGg8PTY0KXtlLnNldCgiTGltaXRzIixbdFswXVswXSx0LmF0KC0xKVswXV0pO2Uuc2V0KHMsdC5mbGF0KCkpO2NvbnRpbnVlfWNvbnN0IGE9W10scj1NYXRoLm1heCg2NCxNYXRoLmNlaWwodC5sZW5ndGgvNjQpKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrPXIpYS5wdXNoKHQuc2xpY2UoZSxlK3IpKTtjb25zdCBpPVtdO2Uuc2V0KCJLaWRzIixpKTtmb3IoY29uc3QgZSBvZiBhKXtjb25zdFt0LGFdPXRoaXMubmV3RGljdDtpLnB1c2godCk7YS5zZXQoIkxpbWl0cyIsW2VbMF1bMF0sZS5hdCgtMSlbMF1dKTtuLnB1c2goe2RpY3Q6YSxlbnRyaWVzOmV9KX19cmV0dXJuIHJ9I0x0KCl7Y29uc3R7cGFnZUxhYmVsczplfT10aGlzO2lmKCFlfHwwPT09ZS5sZW5ndGgpcmV0dXJuO2NvbnN0e3Jvb3REaWN0OnR9PXRoaXMsYT10aGlzLiNFdCh0aGlzLnBhZ2VMYWJlbHMsITEpO3Quc2V0KCJQYWdlTGFiZWxzIixhKX0jX3QoKXtjb25zdHtuYW1lZERlc3RpbmF0aW9uczplfT10aGlzO2lmKDAhPT1lLnNpemUpe2lmKCF0aGlzLm5hbWVzRGljdCl7W3RoaXMubmFtZXNSZWYsdGhpcy5uYW1lc0RpY3RdPXRoaXMubmV3RGljdDt0aGlzLnJvb3REaWN0LnNldCgiTmFtZXMiLHRoaXMubmFtZXNSZWYpfXRoaXMubmFtZXNEaWN0LnNldCgiRGVzdHMiLHRoaXMuI0V0KEFycmF5LmZyb20oZS5lbnRyaWVzKCkpLCEwKSl9fSNVdCgpe2NvbnN0e3N0cnVjdFRyZWVLaWRzOmV9PXRoaXM7aWYoIWV8fDA9PT1lLmxlbmd0aClyZXR1cm47Y29uc3R7cm9vdERpY3Q6dH09dGhpcyxhPXRoaXMubmV3UmVmLHI9dGhpcy54cmVmW2EubnVtXT1uZXcgRGljdDtyLnNldElmTmFtZSgiVHlwZSIsIlN0cnVjdFRyZWVSb290Iik7ci5zZXRJZkFycmF
1015KCJLIixlKTtmb3IoY29uc3QgdCBvZiBlKXtjb25zdCBlPXRoaXMueHJlZlt0Lm51bV0scj1lLmdldCgiVHlwZSIpO3ImJiFpc05hbWUociwiU3RydWN0RWxlbSIpfHxlLnNldCgiUCIsYSl9aWYodGhpcy5wYXJlbnRUcmVlLnNpemU+MCl7Y29uc3QgZT10aGlzLiNFdChBcnJheS5mcm9tKHRoaXMucGFyZW50VHJlZS5lbnRyaWVzKCkpLCExKTt0aGlzLnhyZWZbZS5udW1dLnNldElmTmFtZSgiVHlwZSIsIlBhcmVudFRyZWUiKTtyLnNldCgiUGFyZW50VHJlZSIsZSk7ci5zZXQoIlBhcmVudFRyZWVOZXh0S2V5Iix0aGlzLnBhcmVudFRyZWUuc2l6ZSl9aWYodGhpcy5pZFRyZWUuc2l6ZT4wKXtjb25zdCBlPXRoaXMuI0V0KEFycmF5LmZyb20odGhpcy5pZFRyZWUuZW50cmllcygpKSwhMCk7dGhpcy54cmVmW2UubnVtXS5zZXRJZk5hbWUoIlR5cGUiLCJJRFRyZWUiKTtyLnNldCgiSURUcmVlIixlKX1pZih0aGlzLmNsYXNzTWFwLnNpemU+MCl7Y29uc3QgZT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbZS5udW1dPXRoaXMuY2xhc3NNYXA7ci5zZXQoIkNsYXNzTWFwIixlKX1pZih0aGlzLnJvbGVNYXAuc2l6ZT4wKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09dGhpcy5yb2xlTWFwO3Iuc2V0KCJSb2xlTWFwIixlKX1pZih0aGlzLm5hbWVzcGFjZXMuc2l6ZT4wKXtjb25zdCBlPXRoaXMubmV3UmVmO3RoaXMueHJlZltlLm51bV09QXJyYXkuZnJvbSh0aGlzLm5hbWVzcGFjZXMudmFsdWVzKCkpO3Iuc2V0KCJOYW1lc3BhY2VzIixlKX1pZih0aGlzLnN0cnVjdFRyZWVBRi5sZW5ndGg+MCl7Y29uc3QgZT10aGlzLm5ld1JlZjt0aGlzLnhyZWZbZS5udW1dPXRoaXMuc3RydWN0VHJlZUFGO3Iuc2V0KCJBRiIsZSl9aWYodGhpcy5zdHJ1Y3RUcmVlUHJvbnVuY2lhdGlvbkxleGljb24ubGVuZ3RoPjApe2NvbnN0IGU9dGhpcy5uZXdSZWY7dGhpcy54cmVmW2UubnVtXT10aGlzLnN0cnVjdFRyZWVQcm9udW5jaWF0aW9uTGV4aWNvbjtyLnNldCgiUHJvbnVuY2lhdGlvbkxleGljb24iLGUpfXQuc2V0KCJTdHJ1Y3RUcmVlUm9vdCIsYSl9YXN5bmMjanQoKXtjb25zdHtyb290RGljdDplfT10aGlzO2Uuc2V0SWZOYW1lKCJUeXBlIiwiQ2F0YWxvZyIpO2Uuc2V0SWZOYW1lKCJWZXJzaW9uIix0aGlzLnZlcnNpb24pO3RoaXMuI1B0KCk7dGhpcy4jTHQoKTt0aGlzLiNfdCgpO3RoaXMuI1V0KCl9I1h0KCl7Y29uc3QgZT1uZXcgTWFwO2lmKHRoaXMuaGFzU2luZ2xlRmlsZSl7Y29uc3R7eHJlZjp7dHJhaWxlcjp0fX09dGhpcy5vbGRQYWdlc1swXS5kb2N1bWVudERhdGEuZG9jdW1lbnQsYT10LmdldCgiSW5mbyIpO2Zvcihjb25zdFt0LHJdb2YgYXx8W10pInN0cmluZyI9PXR5cGVvZiByJiZlLnNldCh0LHN0cmluZ1RvUERGU3RyaW5nKHIpKX1lLmRlbGV0ZSgiTW9kRGF0ZSIpO2Uuc2V0KCJDcmVhdGlvbkRhdGUiLGdldE1vZGlmaWNhdGlvbkRhdGUoKSk7ZS5zZXQoIkNyZWF0b3IiLCJQREYuanMiKTtlLnNldCgiUHJvZHVjZXIiLCJGaXJlZm94Iik7dGhpcy5hdXRob3ImJmUuc2V0KCJBdXRob3IiLHRoaXMuYXV0aG9yKTt0aGlzLnRpdGxlJiZlLnNldCgiVGl0bGUiLHRoaXMudGl0bGUpO2Zvcihjb25zdFt0LGFdb2YgZSl0aGlzLmluZm9EaWN0LnNldCh0LHN0cmluZ1RvQXNjaWlPclVURjE2QkUoYSkpO3JldHVybiBlfWFzeW5jI3F0KCl7aWYoIXRoaXMuaGFzU2luZ2xlRmlsZSlyZXR1cm5bbnVsbCxudWxsLG51bGxdO2NvbnN0e2RvY3VtZW50RGF0YTplfT10aGlzLm9sZFBhZ2VzWzBdLHtkb2N1bWVudDp7eHJlZjp7dHJhaWxlcjp0LGVuY3J5cHQ6YX19fT1lO2lmKCF0LmhhcygiRW5jcnlwdCIpKXJldHVybltudWxsLG51bGwsbnVsbF07Y29uc3Qgcj10LmdldCgiRW5jcnlwdCIpO2lmKCEociBpbnN0YW5jZW9mIERpY3QpKXJldHVybltudWxsLG51bGwsbnVsbF07dGhpcy5jdXJyZW50RG9jdW1lbnQ9ZTtjb25zdCBpPVthd2FpdCB0aGlzLiNTdChyLHQueHJlZiksYSx0LmdldCgiSUQiKV07dGhpcy5jdXJyZW50RG9jdW1lbnQ9bnVsbDtyZXR1cm4gaX1hc3luYyNIdCgpe2NvbnN0IGU9bmV3IFJlZlNldENhY2hlO2UucHV0KFJlZi5nZXQoMCw2NTUzNSkse2RhdGE6bnVsbH0pO2ZvcihsZXQgdD0xLGE9dGhpcy54cmVmLmxlbmd0aDt0PGE7dCsrKXRoaXMub2JqU3RyZWFtUmVmcz8uaGFzKHQpP2F3YWl0IHRoaXMuI1d0KFJlZi5nZXQodCwwKSx0aGlzLnhyZWZbdF0sZSk6ZS5wdXQoUmVmLmdldCh0LDApLHtkYXRhOnRoaXMueHJlZlt0XX0pO3JldHVybltlLHRoaXMubmV3UmVmXX1hc3luYyNXdChlLHQsYSl7Y29uc3Qgcj1bIiJdLGk9W107bGV0IG49MDtjb25zdCBzPVtdO2ZvcihsZXQgbz0wLGM9dC5sZW5ndGg7bzxjO28rKyl7Y29uc3QgYz10W29dO2EucHV0KGMse2RhdGE6bnVsbCxvYmpTdHJlYW1SZWY6ZSxpbmRleDpvfSk7aS5wdXNoKGAke2MubnVtfSAke259YCk7Y29uc3QgbD10aGlzLnhyZWZbYy5udW1dO2F3YWl0IHdyaXRlVmFsdWUobCxzLG51bGwpO2NvbnN0IGg9cy5qb2luKCIiKTtzLmxlbmd0aD0wO3IucHVzaChoKTtuKz1oLmxlbmd0aCsxfXJbMF09aS5qb2luKCJcbiIpO2NvbnN0IG89bmV3IFN0cmluZ1N0cmVhbShyLmpvaW4oIlxuIikpLGM9by5kaWN0PW5ldyBEaWN0O2Muc2V0SWZOYW1lKCJUeXBlIiwiT2JqU3RtIik7Yy5zZXQoIk4iLHQubGVuZ3RoKTtjLnNldCgiRmlyc3QiLHJbMF0ubGVuZ3RoKzEpO2EucHV0KGUse2RhdGE6b30pfWFzeW5jIHdyaXRlUERGKCl7YXdhaXQgdGhpcy4janQoKTtjb25zdCBlPXRoaXMuI1h0KCksW3QsYSxyXT1hd2FpdCB0aGlzLiNxdCgpLFtpLG5dPWF3YWl0IHRoaXMuI0h0KCkscz1bLi4uYCVQREYtJHt0aGlzLnZlcnNpb259XG4lYC5zcGxpdCgiIikubWFwKGU9PmUuY2hhckNvZGVBdCgwKSksMjUwLDIyMiwyNTAsMjA2XTtyZXR1cm4gaW5jcmVtZW50YWxVcGRhdGUoe29yaWdpbmFsRGF0YTpuZXcgVWludDhBcnJheShzKSxjaGFuZ2VzOmkseHJlZkluZm86e3N0YXJ0WFJlZjpudWxsLHJvb3RSZWY6dGhpcy5yb290UmVmLGluZm9SZWY6dGhpcy5pbmZvUmVmLGVuY3J5cHRSZWY6dCxuZXdSZWY6bixmaWxlSWRzOnJ8fFtudWxsLG51bGxdLGluZm9NYXA6ZX0sdXNlWHJlZlN0cmVhbTp0aGlzLnVzZU9iamVjdFN0cmVhbXMseHJlZjp7ZW5jcnlwdDphLGVuY3J5cHRSZWY6dH19
101KX19Y2xhc3MgUERGV29ya2VyU3RyZWFte2NvbnN0cnVjdG9yKGUpe3RoaXMuX21zZ0hhbmRsZXI9ZTt0aGlzLl9jb250ZW50TGVuZ3RoPW51bGw7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI9bnVsbDt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzPVtdfWdldEZ1bGxSZWFkZXIoKXthc3NlcnQoIXRoaXMuX2Z1bGxSZXF1ZXN0UmVhZGVyLCJQREZXb3JrZXJTdHJlYW0uZ2V0RnVsbFJlYWRlciBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4iKTt0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcj1uZXcgUERGV29ya2VyU3RyZWFtUmVhZGVyKHRoaXMuX21zZ0hhbmRsZXIpO3JldHVybiB0aGlzLl9mdWxsUmVxdWVzdFJlYWRlcn1nZXRSYW5nZVJlYWRlcihlLHQpe2NvbnN0IGE9bmV3IFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVyKGUsdCx0aGlzLl9tc2dIYW5kbGVyKTt0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnB1c2goYSk7cmV0dXJuIGF9Y2FuY2VsQWxsUmVxdWVzdHMoZSl7dGhpcy5fZnVsbFJlcXVlc3RSZWFkZXI/LmNhbmNlbChlKTtmb3IoY29uc3QgdCBvZiB0aGlzLl9yYW5nZVJlcXVlc3RSZWFkZXJzLnNsaWNlKDApKXQuY2FuY2VsKGUpfX1jbGFzcyBQREZXb3JrZXJTdHJlYW1SZWFkZXJ7Y29uc3RydWN0b3IoZSl7dGhpcy5fbXNnSGFuZGxlcj1lO3RoaXMub25Qcm9ncmVzcz1udWxsO3RoaXMuX2NvbnRlbnRMZW5ndGg9bnVsbDt0aGlzLl9pc1JhbmdlU3VwcG9ydGVkPSExO3RoaXMuX2lzU3RyZWFtaW5nU3VwcG9ydGVkPSExO2NvbnN0IHQ9dGhpcy5fbXNnSGFuZGxlci5zZW5kV2l0aFN0cmVhbSgiR2V0UmVhZGVyIik7dGhpcy5fcmVhZGVyPXQuZ2V0UmVhZGVyKCk7dGhpcy5faGVhZGVyc1JlYWR5PXRoaXMuX21zZ0hhbmRsZXIuc2VuZFdpdGhQcm9taXNlKCJSZWFkZXJIZWFkZXJzUmVhZHkiKS50aGVuKGU9Pnt0aGlzLl9pc1N0cmVhbWluZ1N1cHBvcnRlZD1lLmlzU3RyZWFtaW5nU3VwcG9ydGVkO3RoaXMuX2lzUmFuZ2VTdXBwb3J0ZWQ9ZS5pc1JhbmdlU3VwcG9ydGVkO3RoaXMuX2NvbnRlbnRMZW5ndGg9ZS5jb250ZW50TGVuZ3RofSl9Z2V0IGhlYWRlcnNSZWFkeSgpe3JldHVybiB0aGlzLl9oZWFkZXJzUmVhZHl9Z2V0IGNvbnRlbnRMZW5ndGgoKXtyZXR1cm4gdGhpcy5fY29udGVudExlbmd0aH1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNTdHJlYW1pbmdTdXBwb3J0ZWR9Z2V0IGlzUmFuZ2VTdXBwb3J0ZWQoKXtyZXR1cm4gdGhpcy5faXNSYW5nZVN1cHBvcnRlZH1hc3luYyByZWFkKCl7Y29uc3R7dmFsdWU6ZSxkb25lOnR9PWF3YWl0IHRoaXMuX3JlYWRlci5yZWFkKCk7cmV0dXJuIHQ/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfTp7dmFsdWU6ZS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKGUpe3RoaXMuX3JlYWRlci5jYW5jZWwoZSl9fWNsYXNzIFBERldvcmtlclN0cmVhbVJhbmdlUmVhZGVye2NvbnN0cnVjdG9yKGUsdCxhKXt0aGlzLl9tc2dIYW5kbGVyPWE7dGhpcy5vblByb2dyZXNzPW51bGw7Y29uc3Qgcj10aGlzLl9tc2dIYW5kbGVyLnNlbmRXaXRoU3RyZWFtKCJHZXRSYW5nZVJlYWRlciIse2JlZ2luOmUsZW5kOnR9KTt0aGlzLl9yZWFkZXI9ci5nZXRSZWFkZXIoKX1nZXQgaXNTdHJlYW1pbmdTdXBwb3J0ZWQoKXtyZXR1cm4hMX1hc3luYyByZWFkKCl7Y29uc3R7dmFsdWU6ZSxkb25lOnR9PWF3YWl0IHRoaXMuX3JlYWRlci5yZWFkKCk7cmV0dXJuIHQ/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfTp7dmFsdWU6ZS5idWZmZXIsZG9uZTohMX19Y2FuY2VsKGUpe3RoaXMuX3JlYWRlci5jYW5jZWwoZSl9fWNsYXNzIFdvcmtlclRhc2t7Y29uc3RydWN0b3IoZSl7dGhpcy5uYW1lPWU7dGhpcy50ZXJtaW5hdGVkPSExO3RoaXMuX2NhcGFiaWxpdHk9UHJvbWlzZS53aXRoUmVzb2x2ZXJzKCl9Z2V0IGZpbmlzaGVkKCl7cmV0dXJuIHRoaXMuX2NhcGFiaWxpdHkucHJvbWlzZX1maW5pc2goKXt0aGlzLl9jYXBhYmlsaXR5LnJlc29sdmUoKX10ZXJtaW5hdGUoKXt0aGlzLnRlcm1pbmF0ZWQ9ITB9ZW5zdXJlTm90VGVybWluYXRlZCgpe2lmKHRoaXMudGVybWluYXRlZCl0aHJvdyBuZXcgRXJyb3IoIldvcmtlciB0YXNrIHdhcyB0ZXJtaW5hdGVkIil9fWNsYXNzIFdvcmtlck1lc3NhZ2VIYW5kbGVye3N0YXRpY3sidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdyYmIWUmJiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZiYmImZ1bmN0aW9uIj09dHlwZW9mIHNlbGYucG9zdE1lc3NhZ2UmJiJvbm1lc3NhZ2UiaW4gc2VsZiYmdGhpcy5pbml0aWFsaXplRnJvbVBvcnQoc2VsZil9c3RhdGljIHNldHVwKGUsdCl7bGV0IGE9ITE7ZS5vbigidGVzdCIsdD0+e2lmKCFhKXthPSEwO2Uuc2VuZCgidGVzdCIsdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpfX0pO2Uub24oImNvbmZpZ3VyZSIsZT0+eyFmdW5jdGlvbiBzZXRWZXJib3NpdHlMZXZlbChlKXtOdW1iZXIuaXNJbnRlZ2VyKGUpJiYoUXQ9ZSl9KGUudmVyYm9zaXR5KX0pO2Uub24oIkdldERvY1JlcXVlc3QiLGU9PnRoaXMuY3JlYXRlRG9jdW1lbnRIYW5kbGVyKGUsdCkpfXN0YXRpYyBjcmVhdGVEb2N1bWVudEhhbmRsZXIoZSx0KXtsZXQgYSxyPSExLGk9bnVsbDtjb25zdCBuPW5ldyBTZXQscz1nZXRWZXJib3NpdHlMZXZlbCgpLHtkb2NJZDpvLGFwaVZlcnNpb246Y309ZSxsPSI1LjQuNTMwIjtpZihjIT09bCl0aHJvdyBuZXcgRXJyb3IoYFRoZSBBUEkgdmVyc2lvbiAiJHtjfSIgZG9lcyBub3QgbWF0Y2ggdGhlIFdvcmtlciB2ZXJzaW9uICIke2x9Ii5gKTtjb25zdCBidWlsZE1zZz0oZSx0KT0+YFRoZSBcYCR7ZX0ucHJvdG90eXBlXGAgY29udGFpbnMgdW5leHBlY3RlZCBlbnVtZXJhYmxlIHByb3BlcnR5ICIke3R9IiwgdGh1cyBicmVha2luZyBlLmcuIFxgZm9yLi4uaW5cYCBpdGVyYXRpb24gb2YgJHtlfXMuYDtmb3IoY29uc3QgZSBpbnt9KXRocm93IG5ldyBFcnJvcihidWlsZE1zZygiT2JqZWN0IixlKSk7Zm9yKGNvbnN0IGUgaW5bXSl0aHJvdyBuZXcgRXJyb3IoYnVpbGRNc2coIkFycmF5IixlKSk7Y29uc3QgaD1vKyJfd29ya2VyIjtsZXQgdT1uZXcgTWVzc2FnZUhhbmRsZXIoaCxvLHQpO2Z1bmN0aW9uIGVuc3VyZU5vdFRlcm1pbmF0ZWQoKXtpZihyKXRocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIil9ZnVuY3Rpb24gc3RhcnRXb3JrZXJUYXNrKGUpe24uYWRkKGUpfWZ1bmN0aW9uIGZpbmlzaFdvcmtlclRhc2soZSl7ZS5maW5pc2goKTtuLmRlbGV0ZShlKX1hc3luYyBmdW5jdGlvbiBsb2FkRG9jdW1lbnQoZSl7YXdhaXQgYS5lbnN1cmVEb2MoImNoZWNrSGVhZGVyIik7YXdhaXQgYS5lbnN1cmVEb2MoInBhcnNlU3RhcnRYUmVmIik7YXdhaXQgYS5lbnN1cmVEb2MoInBhcnNlIixbZV0pO2F3YWl0IGEuZW5zdXJlRG9jKCJjaGVja0ZpcnN0UGFnZSIsW2VdKTthd2FpdCBhLmVuc3VyZURvYygiY2hlY2tMYXN0UGFnZSIsW2VdKTtjb25zdCB0PWF3YWl0IGEuZW5zdXJlRG9jKCJpc1B1cmVYZmEiKTtpZih0KXtjb25zdCBlPW5ldyBXb3JrZXJUYXNrKCJsb2FkWGZhUmVzb3VyY2VzIik7c3RhcnRXb3JrZXJUYXNrKGUpO2F3YWl0IGEuZW5zdXJlRG9jKCJsb2FkWGZhUmVzb3VyY2VzIixbdSxlXSk7ZmluaXNoV29ya2VyVGFzayhlKX1jb25zdFtyLGldPWF3YWl0IFByb21pc2UuYWxsKFthLmVuc3VyZURvYygibnVtUGFnZXMiKSxhLmVuc3VyZURvYygiZmluZ2VycHJpbnRzIildKTtyZXR1cm57bnVtUGFnZXM6cixmaW5nZXJwcmludHM6aSxodG1sRm9yWGZhOnQ/YXdhaXQgYS5lbnN1cmVEb2MoImh0bWxGb3JYZmEiKTpudWxsfX1mdW5jdGlvbiBzZXR1cERvYyhlKXtmdW5jdGlvbiBvblN1Y2Nlc3MoZSl7ZW5zdXJlTm90VGVybWluYXRlZCgpO3Uuc2VuZCgiR2V0RG9jIix7cGRmSW5mbzplfSl9ZnVuY3Rpb24gb25GYWlsdXJlKGUpe2Vuc3VyZU5vdFRlcm1pbmF0ZWQoKTtpZihlIGluc3RhbmNlb2YgUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IHQ9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke2UuY29kZX1gKTtzdGFydFdvcmtlclRhc2sodCk7dS5zZW5kV2l0aFByb21pc2UoIlBhc3N3b3JkUmVxdWVzdCIsZSkudGhlbihmdW5jdGlvbih7cGFzc3dvcmQ6ZX0pe2ZpbmlzaFdvcmtlclRhc2sodCk7YS51cGRhdGVQYXNzd29yZChlKTtwZGZNYW5hZ2VyUmVhZHkoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayh0KTt1LnNlbmQoIkRvY0V4Y2VwdGlvbiIsZSl9KX1lbHNlIHUuc2VuZCgiRG9jRXhjZXB0aW9uIix3cmFwUmVhc29uKGUpKX1mdW5jdGlvbiBwZGZNYW5hZ2VyUmVhZHkoKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7bG9hZERvY3VtZW50KCExKS50aGVuKG9uU3VjY2VzcyxmdW5jdGlvbihlKXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7ZSBpbnN0YW5jZW9mIFhSZWZQYXJzZUV4Y2VwdGlvbj9hLnJlcXVlc3RMb2FkZWRTdHJlYW0oKS50aGVuKGZ1bmN0aW9uKCl7ZW5zdXJlTm90VGVybWluYXRlZCgpO2xvYWREb2N1bWVudCghMCkudGhlbihvblN1Y2Nlc3Msb25GYWlsdXJlKX0pOm9uRmFpbHVy
101ZShlKX0pfWVuc3VyZU5vdFRlcm1pbmF0ZWQoKTsoYXN5bmMgZnVuY3Rpb24gZ2V0UGRmTWFuYWdlcih7ZGF0YTplLHBhc3N3b3JkOnQsZGlzYWJsZUF1dG9GZXRjaDphLHJhbmdlQ2h1bmtTaXplOnIsbGVuZ3RoOm4sZG9jQmFzZVVybDpzLGVuYWJsZVhmYTpjLGV2YWx1YXRvck9wdGlvbnM6bH0pe2NvbnN0IGg9e3NvdXJjZTpudWxsLGRpc2FibGVBdXRvRmV0Y2g6YSxkb2NCYXNlVXJsOnMsZG9jSWQ6byxlbmFibGVYZmE6YyxldmFsdWF0b3JPcHRpb25zOmwsaGFuZGxlcjp1LGxlbmd0aDpuLHBhc3N3b3JkOnQscmFuZ2VDaHVua1NpemU6cn07aWYoZSl7aC5zb3VyY2U9ZTtyZXR1cm4gbmV3IExvY2FsUGRmTWFuYWdlcihoKX1jb25zdCBkPW5ldyBQREZXb3JrZXJTdHJlYW0odSksZj1kLmdldEZ1bGxSZWFkZXIoKSxnPVByb21pc2Uud2l0aFJlc29sdmVycygpO2xldCBwLG09W10sYj0wO2YuaGVhZGVyc1JlYWR5LnRoZW4oZnVuY3Rpb24oKXtpZihmLmlzUmFuZ2VTdXBwb3J0ZWQpe2guc291cmNlPWQ7aC5sZW5ndGg9Zi5jb250ZW50TGVuZ3RoO2guZGlzYWJsZUF1dG9GZXRjaHx8PWYuaXNTdHJlYW1pbmdTdXBwb3J0ZWQ7cD1uZXcgTmV0d29ya1BkZk1hbmFnZXIoaCk7Zm9yKGNvbnN0IGUgb2YgbSlwLnNlbmRQcm9ncmVzc2l2ZURhdGEoZSk7bT1bXTtnLnJlc29sdmUocCk7aT1udWxsfX0pLmNhdGNoKGZ1bmN0aW9uKGUpe2cucmVqZWN0KGUpO2k9bnVsbH0pO25ldyBQcm9taXNlKGZ1bmN0aW9uKGUsdCl7Y29uc3QgcmVhZENodW5rPWZ1bmN0aW9uKHt2YWx1ZTplLGRvbmU6YX0pe3RyeXtlbnN1cmVOb3RUZXJtaW5hdGVkKCk7aWYoYSl7aWYoIXApe2NvbnN0IGU9YXJyYXlCdWZmZXJzVG9CeXRlcyhtKTttPVtdO24mJmUubGVuZ3RoIT09biYmd2FybigicmVwb3J0ZWQgSFRUUCBsZW5ndGggaXMgZGlmZmVyZW50IGZyb20gYWN0dWFsIik7aC5zb3VyY2U9ZTtwPW5ldyBMb2NhbFBkZk1hbmFnZXIoaCk7Zy5yZXNvbHZlKHApfWk9bnVsbDtyZXR1cm59Yis9ZS5ieXRlTGVuZ3RoO2YuaXNTdHJlYW1pbmdTdXBwb3J0ZWR8fHUuc2VuZCgiRG9jUHJvZ3Jlc3MiLHtsb2FkZWQ6Yix0b3RhbDpNYXRoLm1heChiLGYuY29udGVudExlbmd0aHx8MCl9KTtwP3Auc2VuZFByb2dyZXNzaXZlRGF0YShlKTptLnB1c2goZSk7Zi5yZWFkKCkudGhlbihyZWFkQ2h1bmssdCl9Y2F0Y2goZSl7dChlKX19O2YucmVhZCgpLnRoZW4ocmVhZENodW5rLHQpfSkuY2F0Y2goZnVuY3Rpb24oZSl7Zy5yZWplY3QoZSk7aT1udWxsfSk7aT1lPT57ZC5jYW5jZWxBbGxSZXF1ZXN0cyhlKX07cmV0dXJuIGcucHJvbWlzZX0pKGUpLnRoZW4oZnVuY3Rpb24oZSl7aWYocil7ZS50ZXJtaW5hdGUobmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO3Rocm93IG5ldyBFcnJvcigiV29ya2VyIHdhcyB0ZXJtaW5hdGVkIil9YT1lO2EucmVxdWVzdExvYWRlZFN0cmVhbSghMCkudGhlbihlPT57dS5zZW5kKCJEYXRhTG9hZGVkIix7bGVuZ3RoOmUuYnl0ZXMuYnl0ZUxlbmd0aH0pfSl9KS50aGVuKHBkZk1hbmFnZXJSZWFkeSxvbkZhaWx1cmUpfXUub24oIkdldFBhZ2UiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmdldFBhZ2UoZS5wYWdlSW5kZXgpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKFthLmVuc3VyZShlLCJyb3RhdGUiKSxhLmVuc3VyZShlLCJyZWYiKSxhLmVuc3VyZShlLCJ1c2VyVW5pdCIpLGEuZW5zdXJlKGUsInZpZXciKV0pLnRoZW4oZnVuY3Rpb24oW2UsdCxhLHJdKXtyZXR1cm57cm90YXRlOmUscmVmOnQscmVmU3RyOnQ/LnRvU3RyaW5nKCk/P251bGwsdXNlclVuaXQ6YSx2aWV3OnJ9fSl9KX0pO3Uub24oIkdldFBhZ2VJbmRleCIsZnVuY3Rpb24oZSl7Y29uc3QgdD1SZWYuZ2V0KGUubnVtLGUuZ2VuKTtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJnZXRQYWdlSW5kZXgiLFt0XSl9KTt1Lm9uKCJHZXREZXN0aW5hdGlvbnMiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImRlc3RpbmF0aW9ucyIpfSk7dS5vbigiR2V0RGVzdGluYXRpb24iLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coImdldERlc3RpbmF0aW9uIixbZS5pZF0pfSk7dS5vbigiR2V0UGFnZUxhYmVscyIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygicGFnZUxhYmVscyIpfSk7dS5vbigiR2V0UGFnZUxheW91dCIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygicGFnZUxheW91dCIpfSk7dS5vbigiR2V0UGFnZU1vZGUiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coInBhZ2VNb2RlIil9KTt1Lm9uKCJHZXRWaWV3ZXJQcmVmZXJlbmNlcyIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygidmlld2VyUHJlZmVyZW5jZXMiKX0pO3Uub24oIkdldE9wZW5BY3Rpb24iLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZUNhdGFsb2coIm9wZW5BY3Rpb24iKX0pO3Uub24oIkdldEF0dGFjaG1lbnRzIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJhdHRhY2htZW50cyIpfSk7dS5vbigiR2V0RG9jSlNBY3Rpb25zIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJqc0FjdGlvbnMiKX0pO3Uub24oIkdldFBhZ2VKU0FjdGlvbnMiLGZ1bmN0aW9uKHtwYWdlSW5kZXg6ZX0pe3JldHVybiBhLmdldFBhZ2UoZSkudGhlbihlPT5hLmVuc3VyZShlLCJqc0FjdGlvbnMiKSl9KTt1Lm9uKCJHZXRBbm5vdGF0aW9uc0J5VHlwZSIsYXN5bmMgZnVuY3Rpb24oe3R5cGVzOmUscGFnZUluZGV4ZXNUb1NraXA6dH0pe2NvbnN0W3IsaV09YXdhaXQgUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJudW1QYWdlcyIpLGEuZW5zdXJlRG9jKCJhbm5vdGF0aW9uR2xvYmFscyIpXSk7aWYoIWkpcmV0dXJuIG51bGw7Y29uc3Qgbj1bXSxzPVtdO2xldCBvPW51bGw7dHJ5e2ZvcihsZXQgYz0wLGw9cjtjPGw7YysrKWlmKCF0Py5oYXMoYykpe2lmKCFvKXtvPW5ldyBXb3JrZXJUYXNrKCJHZXRBbm5vdGF0aW9uc0J5VHlwZSIpO3N0YXJ0V29ya2VyVGFzayhvKX1uLnB1c2goYS5nZXRQYWdlKGMpLnRoZW4oYXN5bmMgdD0+dCYmdC5jb2xsZWN0QW5ub3RhdGlvbnNCeVR5cGUodSxvLGUscyxpKXx8W10pKX1hd2FpdCBQcm9taXNlLmFsbChuKTtyZXR1cm4oYXdhaXQgUHJvbWlzZS5hbGwocykpLmZpbHRlcihlPT4hIWUpfWZpbmFsbHl7byYmZmluaXNoV29ya2VyVGFzayhvKX19KTt1Lm9uKCJHZXRPdXRsaW5lIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJkb2N1bWVudE91dGxpbmUiKX0pO3Uub24oIkdldE9wdGlvbmFsQ29udGVudENvbmZpZyIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygib3B0aW9uYWxDb250ZW50Q29uZmlnIil9KTt1Lm9uKCJHZXRQZXJtaXNzaW9ucyIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlQ2F0YWxvZygicGVybWlzc2lvbnMiKX0pO3Uub24oIkdldE1ldGFkYXRhIixmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5hbGwoW2EuZW5zdXJlRG9jKCJkb2N1bWVudEluZm8iKSxhLmVuc3VyZUNhdGFsb2coIm1ldGFkYXRhIiksYS5lbnN1cmVDYXRhbG9nKCJoYXNTdHJ1Y3RUcmVlIildKX0pO3Uub24oIkdldE1hcmtJbmZvIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVDYXRhbG9nKCJtYXJrSW5mbyIpfSk7dS5vbigiR2V0RGF0YSIsZnVuY3Rpb24oZSl7cmV0dXJuIGEucmVxdWVzdExvYWRlZFN0cmVhbSgpLnRoZW4oZT0+ZS5ieXRlcyl9KTt1Lm9uKCJHZXRBbm5vdGF0aW9ucyIsZnVuY3Rpb24oe3BhZ2VJbmRleDplLGludGVudDp0fSl7cmV0dXJuIGEuZ2V0UGFnZShlKS50aGVuKGZ1bmN0aW9uKGEpe2NvbnN0IHI9bmV3IFdvcmtlclRhc2soYEdldEFubm90YXRpb25zOiBwYWdlICR7ZX1gKTtzdGFydFdvcmtlclRhc2socik7cmV0dXJuIGEuZ2V0QW5ub3RhdGlvbnNEYXRhKHUscix0KS50aGVuKGU9PntmaW5pc2hXb3JrZXJUYXNrKHIpO3JldHVybiBlfSxlPT57ZmluaXNoV29ya2VyVGFzayhyKTt0aHJvdyBlfSl9KX0pO3Uub24oIkdldEZpZWxkT2JqZWN0cyIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuZW5zdXJlRG9jKCJmaWVsZE9i
101amVjdHMiKS50aGVuKGU9PmU/LmFsbEZpZWxkc3x8bnVsbCl9KTt1Lm9uKCJIYXNKU0FjdGlvbnMiLGZ1bmN0aW9uKGUpe3JldHVybiBhLmVuc3VyZURvYygiaGFzSlNBY3Rpb25zIil9KTt1Lm9uKCJHZXRDYWxjdWxhdGlvbk9yZGVySWRzIixmdW5jdGlvbihlKXtyZXR1cm4gYS5lbnN1cmVEb2MoImNhbGN1bGF0aW9uT3JkZXJJZHMiKX0pO3Uub24oIkV4dHJhY3RQYWdlcyIsYXN5bmMgZnVuY3Rpb24oe3BhZ2VJbmZvczplfSl7aWYoIWUpe3dhcm4oImV4dHJhY3RQYWdlczogbm90aGluZyB0byBleHRyYWN0LiIpO3JldHVybiBudWxsfUFycmF5LmlzQXJyYXkoZSl8fChlPVtlXSk7bGV0IHQ9MDtmb3IoY29uc3QgciBvZiBlKWlmKG51bGw9PT1yLmRvY3VtZW50KXIuZG9jdW1lbnQ9YS5wZGZEb2N1bWVudDtlbHNlIGlmKEFycmF5QnVmZmVyLmlzVmlldyhyLmRvY3VtZW50KSl7Y29uc3QgZT1uZXcgTG9jYWxQZGZNYW5hZ2VyKHtzb3VyY2U6ci5kb2N1bWVudCxkb2NJZDpgJHtvfV9leHRyYWN0UGFnZXNfJHt0Kyt9YCxoYW5kbGVyOnUscGFzc3dvcmQ6ci5wYXNzd29yZD8/bnVsbCxldmFsdWF0b3JPcHRpb25zOk9iamVjdC5hc3NpZ24oe30sYS5ldmFsdWF0b3JPcHRpb25zKX0pO2xldCBpPSExLG49ITA7Zm9yKDs7KXRyeXthd2FpdCBlLnJlcXVlc3RMb2FkZWRTdHJlYW0oKTthd2FpdCBlLmVuc3VyZURvYygiY2hlY2tIZWFkZXIiKTthd2FpdCBlLmVuc3VyZURvYygicGFyc2VTdGFydFhSZWYiKTthd2FpdCBlLmVuc3VyZURvYygicGFyc2UiLFtpXSk7YnJlYWt9Y2F0Y2godCl7aWYodCBpbnN0YW5jZW9mIFhSZWZQYXJzZUV4Y2VwdGlvbil7aWYoITE9PT1pKXtpPSEwO2NvbnRpbnVlfW49ITE7d2FybigiZXh0cmFjdFBhZ2VzOiBYUmVmUGFyc2VFeGNlcHRpb24uIil9ZWxzZSBpZih0IGluc3RhbmNlb2YgUGFzc3dvcmRFeGNlcHRpb24pe2NvbnN0IGE9bmV3IFdvcmtlclRhc2soYFBhc3N3b3JkRXhjZXB0aW9uOiByZXNwb25zZSAke3QuY29kZX1gKTtzdGFydFdvcmtlclRhc2soYSk7dHJ5e2NvbnN0e3Bhc3N3b3JkOmF9PWF3YWl0IHUuc2VuZFdpdGhQcm9taXNlKCJQYXNzd29yZFJlcXVlc3QiLHQpO2UudXBkYXRlUGFzc3dvcmQoYSl9Y2F0Y2h7bj0hMTt3YXJuKCJleHRyYWN0UGFnZXM6IGludmFsaWQgcGFzc3dvcmQuIil9ZmluYWxseXtmaW5pc2hXb3JrZXJUYXNrKGEpfX1lbHNle249ITE7d2FybigiZXh0cmFjdFBhZ2VzOiBpbnZhbGlkIGRvY3VtZW50LiIpfWlmKCFuKWJyZWFrfW58fChyLmRvY3VtZW50PW51bGwpO2lmKGF3YWl0IGUuZW5zdXJlRG9jKCJpc1B1cmVYZmEiKSl7ci5kb2N1bWVudD1udWxsO3dhcm4oImV4dHJhY3RQYWdlcyBkb2VzIG5vdCBzdXBwb3J0IHB1cmUgWEZBIGRvY3VtZW50cy4iKX1lbHNlIHIuZG9jdW1lbnQ9ZS5wZGZEb2N1bWVudH1lbHNlIHdhcm4oImV4dHJhY3RQYWdlczogaW52YWxpZCBkb2N1bWVudC4iKTt0cnl7Y29uc3QgdD1uZXcgUERGRWRpdG9yO3JldHVybiBhd2FpdCB0LmV4dHJhY3RQYWdlcyhlKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpO3JldHVybiBudWxsfX0pO3Uub24oIlNhdmVEb2N1bWVudCIsYXN5bmMgZnVuY3Rpb24oe2lzUHVyZVhmYTplLG51bVBhZ2VzOnQsYW5ub3RhdGlvblN0b3JhZ2U6cixmaWxlbmFtZTppfSl7Y29uc3Qgbj1bYS5yZXF1ZXN0TG9hZGVkU3RyZWFtKCksYS5lbnN1cmVDYXRhbG9nKCJhY3JvRm9ybSIpLGEuZW5zdXJlQ2F0YWxvZygiYWNyb0Zvcm1SZWYiKSxhLmVuc3VyZURvYygic3RhcnRYUmVmIiksYS5lbnN1cmVEb2MoInhyZWYiKSxhLmVuc3VyZUNhdGFsb2coInN0cnVjdFRyZWVSb290IildLHM9bmV3IFJlZlNldENhY2hlLG89W10sYz1lP251bGw6Z2V0TmV3QW5ub3RhdGlvbnNNYXAociksW2wsaCxkLGYsZyxwXT1hd2FpdCBQcm9taXNlLmFsbChuKSxtPWcudHJhaWxlci5nZXRSYXcoIlJvb3QiKXx8bnVsbDtsZXQgYjtpZihjKXtwP2F3YWl0IHAuY2FuVXBkYXRlU3RydWN0VHJlZSh7cGRmTWFuYWdlcjphLG5ld0Fubm90YXRpb25zQnlQYWdlOmN9KSYmKGI9cCk6YXdhaXQgU3RydWN0VHJlZVJvb3QuY2FuQ3JlYXRlU3RydWN0dXJlVHJlZSh7Y2F0YWxvZ1JlZjptLHBkZk1hbmFnZXI6YSxuZXdBbm5vdGF0aW9uc0J5UGFnZTpjfSkmJihiPW51bGwpO2NvbnN0IGU9QW5ub3RhdGlvbkZhY3RvcnkuZ2VuZXJhdGVJbWFnZXMoci52YWx1ZXMoKSxnLGEuZXZhbHVhdG9yT3B0aW9ucy5pc09mZnNjcmVlbkNhbnZhc1N1cHBvcnRlZCksdD12b2lkIDA9PT1iP286W107Zm9yKGNvbnN0W3IsaV1vZiBjKXQucHVzaChhLmdldFBhZ2UocikudGhlbih0PT57Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgU2F2ZSAoZWRpdG9yKTogcGFnZSAke3J9YCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiB0LnNhdmVOZXdBbm5vdGF0aW9ucyh1LGEsaSxlLHMpLmZpbmFsbHkoZnVuY3Rpb24oKXtmaW5pc2hXb3JrZXJUYXNrKGEpfSl9KSk7bnVsbD09PWI/by5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IFN0cnVjdFRyZWVSb290LmNyZWF0ZVN0cnVjdHVyZVRyZWUoe25ld0Fubm90YXRpb25zQnlQYWdlOmMseHJlZjpnLGNhdGFsb2dSZWY6bSxwZGZNYW5hZ2VyOmEsY2hhbmdlczpzfSl9KSk6YiYmby5wdXNoKFByb21pc2UuYWxsKHQpLnRoZW4oYXN5bmMoKT0+e2F3YWl0IGIudXBkYXRlU3RydWN0dXJlVHJlZSh7bmV3QW5ub3RhdGlvbnNCeVBhZ2U6YyxwZGZNYW5hZ2VyOmEsY2hhbmdlczpzfSl9KSl9aWYoZSlvLnB1c2goYS5lbnN1cmVEb2MoInNlcmlhbGl6ZVhmYURhdGEiLFtyXSkpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0O2UrKylvLnB1c2goYS5nZXRQYWdlKGUpLnRoZW4oZnVuY3Rpb24odCl7Y29uc3QgYT1uZXcgV29ya2VyVGFzayhgU2F2ZTogcGFnZSAke2V9YCk7c3RhcnRXb3JrZXJUYXNrKGEpO3JldHVybiB0LnNhdmUodSxhLHIscykuZmluYWxseShmdW5jdGlvbigpe2ZpbmlzaFdvcmtlclRhc2soYSl9KX0pKTtjb25zdCB5PWF3YWl0IFByb21pc2UuYWxsKG8pO2xldCB3PW51bGw7aWYoZSl7dz15WzBdO2lmKCF3KXJldHVybi
101BsLmJ5dGVzfWVsc2UgaWYoMD09PXMuc2l6ZSlyZXR1cm4gbC5ieXRlcztjb25zdCB4PWQmJmggaW5zdGFuY2VvZiBEaWN0JiZzLnZhbHVlcygpLnNvbWUoZT0+ZS5uZWVkQXBwZWFyYW5jZXMpLFM9aCBpbnN0YW5jZW9mIERpY3QmJmguZ2V0KCJYRkEiKXx8bnVsbDtsZXQgaz1udWxsLEM9ITE7aWYoQXJyYXkuaXNBcnJheShTKSl7Zm9yKGxldCBlPTAsdD1TLmxlbmd0aDtlPHQ7ZSs9MilpZigiZGF0YXNldHMiPT09U1tlXSl7az1TW2UrMV07Qz0hMH1udWxsPT09ayYmKGs9Zy5nZXROZXdUZW1wb3JhcnlSZWYoKSl9ZWxzZSBTJiZ3YXJuKCJVbnN1cHBvcnRlZCBYRkEgdHlwZS4iKTtsZXQgdj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKGcudHJhaWxlcil7Y29uc3QgZT1uZXcgTWFwLHQ9Zy50cmFpbGVyLmdldCgiSW5mbyIpfHxudWxsO2lmKHQgaW5zdGFuY2VvZiBEaWN0KWZvcihjb25zdFthLHJdb2YgdCkic3RyaW5nIj09dHlwZW9mIHImJmUuc2V0KGEsc3RyaW5nVG9QREZTdHJpbmcocikpO3Y9e3Jvb3RSZWY6bSxlbmNyeXB0UmVmOmcudHJhaWxlci5nZXRSYXcoIkVuY3J5cHQiKXx8bnVsbCxuZXdSZWY6Zy5nZXROZXdUZW1wb3JhcnlSZWYoKSxpbmZvUmVmOmcudHJhaWxlci5nZXRSYXcoIkluZm8iKXx8bnVsbCxpbmZvTWFwOmUsZmlsZUlkczpnLnRyYWlsZXIuZ2V0KCJJRCIpfHxudWxsLHN0YXJ0WFJlZjpmLGZpbGVuYW1lOml9fXJldHVybiBpbmNyZW1lbnRhbFVwZGF0ZSh7b3JpZ2luYWxEYXRhOmwuYnl0ZXMseHJlZkluZm86dixjaGFuZ2VzOnMseHJlZjpnLGhhc1hmYTohIVMseGZhRGF0YXNldHNSZWY6ayxoYXNYZmFEYXRhc2V0c0VudHJ5OkMsbmVlZEFwcGVhcmFuY2VzOngsYWNyb0Zvcm1SZWY6ZCxhY3JvRm9ybTpoLHhmYURhdGE6dyx1c2VYcmVmU3RyZWFtOmlzRGljdChnLnRvcERpY3QsIlhSZWYiKX0pLmZpbmFsbHkoKCk9PntnLnJlc2V0TmV3VGVtcG9yYXJ5UmVmKCl9KX0pO3Uub24oIkdldE9wZXJhdG9yTGlzdCIsZnVuY3Rpb24oZSx0KXtjb25zdCByPWUucGFnZUluZGV4O2EuZ2V0UGFnZShyKS50aGVuKGZ1bmN0aW9uKGEpe2NvbnN0IGk9bmV3IFdvcmtlclRhc2soYEdldE9wZXJhdG9yTGlzdDogcGFnZSAke3J9YCk7c3RhcnRXb3JrZXJUYXNrKGkpO2NvbnN0IG49cz49Y2U/RGF0ZS5ub3coKTowO2EuZ2V0T3BlcmF0b3JMaXN0KHtoYW5kbGVyOnUsc2luazp0LHRhc2s6aSxpbnRlbnQ6ZS5pbnRlbnQsY2FjaGVLZXk6ZS5jYWNoZUtleSxhbm5vdGF0aW9uU3RvcmFnZTplLmFubm90YXRpb25TdG9yYWdlLG1vZGlmaWVkSWRzOmUubW9kaWZpZWRJZHN9KS50aGVuKGZ1bmN0aW9uKGUpe2ZpbmlzaFdvcmtlclRhc2soaSk7biYmaW5mbyhgcGFnZT0ke3IrMX0gLSBnZXRPcGVyYXRvckxpc3Q6IHRpbWU9JHtEYXRlLm5vdygpLW59bXMsIGxlbj0ke2UubGVuZ3RofWApO3QuY2xvc2UoKX0sZnVuY3Rpb24oZSl7ZmluaXNoV29ya2VyVGFzayhpKTtpLnRlcm1pbmF0ZWR8fHQuZXJyb3IoZSl9KX0pfSk7dS5vbigiR2V0VGV4dENvbnRlbnQiLGZ1bmN0aW9uKGUsdCl7Y29uc3R7cGFnZUluZGV4OnIsaW5jbHVkZU1hcmtlZENvbnRlbnQ6aSxkaXNhYmxlTm9ybWFsaXphdGlvbjpufT1lO2EuZ2V0UGFnZShyKS50aGVuKGZ1bmN0aW9uKGUpe2NvbnN0IGE9bmV3IFdvcmtlclRhc2soIkdldFRleHRDb250ZW50OiBwYWdlICIrcik7c3RhcnRXb3JrZXJUYXNrKGEpO2NvbnN0IG89cz49Y2U/RGF0ZS5ub3coKTowO2UuZXh0cmFjdFRleHRDb250ZW50KHtoYW5kbGVyOnUsdGFzazphLHNpbms6dCxpbmNsdWRlTWFya2VkQ29udGVudDppLGRpc2FibGVOb3JtYWxpemF0aW9uOm59KS50aGVuKGZ1bmN0aW9uKCl7ZmluaXNoV29ya2VyVGFzayhhKTtvJiZpbmZvKGBwYWdlPSR7cisxfSAtIGdldFRleHRDb250ZW50OiB0aW1lPWArKERhdGUubm93KCktbykrIm1zIik7dC5jbG9zZSgpfSxmdW5jdGlvbihlKXtmaW5pc2hXb3JrZXJUYXNrKGEpO2EudGVybWluYXRlZHx8dC5lcnJvcihlKX0pfSl9KTt1Lm9uKCJHZXRTdHJ1Y3RUcmVlIixmdW5jdGlvbihlKXtyZXR1cm4gYS5nZXRQYWdlKGUucGFnZUluZGV4KS50aGVuKGU9PmEuZW5zdXJlKGUsImdldFN0cnVjdFRyZWUiKSl9KTt1Lm9uKCJGb250RmFsbGJhY2siLGZ1bmN0aW9uKGUpe3JldHVybiBhLmZvbnRGYWxsYmFjayhlLmlkLHUpfSk7dS5vbigiQ2xlYW51cCIsZnVuY3Rpb24oZSl7cmV0dXJuIGEuY2xlYW51cCghMCl9KTt1Lm9uKCJUZXJtaW5hdGUiLGZ1bmN0aW9uKGUpe3I9ITA7Y29uc3QgdD1bXTtpZihhKXthLnRlcm1pbmF0ZShuZXcgQWJvcnRFeGNlcHRpb24oIldvcmtlciB3YXMgdGVybWluYXRlZC4iKSk7Y29uc3QgZT1hLmNsZWFudXAoKTt0LnB1c2goZSk7YT1udWxsfWVsc2UgY2xlYXJHbG9iYWxDYWNoZXMoKTtpPy4obmV3IEFib3J0RXhjZXB0aW9uKCJXb3JrZXIgd2FzIHRlcm1pbmF0ZWQuIikpO2Zvcihjb25zdCBlIG9mIG4pe3QucHVzaChlLmZpbmlzaGVkKTtlLnRlcm1pbmF0ZSgpfXJldHVybiBQcm9taXNlLmFsbCh0KS50aGVuKGZ1bmN0aW9uKCl7dS5kZXN0cm95KCk7dT1udWxsfSl9KTt1Lm9uKCJSZWFkeSIsZnVuY3Rpb24odCl7c2V0dXBEb2MoZSk7ZT1udWxsfSk7cmV0dXJuIGh9c3RhdGljIGluaXRpYWxpemVGcm9tUG9ydChlKXtjb25zdCB0PW5ldyBNZXNzYWdlSGFuZGxlcigid29ya2VyIiwibWFpbiIsZSk7dGhpcy5zZXR1cCh0LGUpO3Quc2VuZCgicmVhZHkiLG51bGwpfX1nbG9iYWxUaGlzLnBkZmpzV29ya2VyPXtXb3JrZXJNZXNzYWdlSGFuZGxlcn07ZXhwb3J0e1dvcmtlck1lc3NhZ2VIYW5kbGVyfTs=",""+import.meta.url).href;Zi.workerSrc=i||e,t(!0)}},[i]),{workerUrlAdded:l}},Gz=i=>{let{children:l,customVariables:t,customDarkVariables:e,workerUrl:s,wasmUrl:c,licenseKey:d,...n}=i,{workerUrlAdded:Z}=Wz(s);return G.jsx(xL,{licenseKey:d,children:G.jsx(c5,{workerUrlAdded:Z,wasmUrl:c,...n,children:G.jsx(bY,{customDarkVariables:e,customVariables:t,children:l})})})},dr={"rp-button":"_rp-button_1jswj_1","rp-button-active":"_rp-button-active_1jswj_18"},$t=zd((i,l)=>{let{children:t,active:e,className:s,role:c,...d}=i;return G.jsx("button",{tabIndex:0,ref:l,role:c,"aria-pressed":e===void 0?void 0:e,...d,className:xl(dr["rp-button"],s,e?dr["rp-button-active"]:""),children:t})});function ll(i,l,{checkForDefaultPrevented:t=!0}={}){return function(e){if(i==null||i(e),t===!1||!e.defaultPrevented)return l==null?void 0:l(e)}}function ar(i,l){if(typeof i=="function")return i(l);i!=null&&(i.current=l)}function Xu(...i){return l=>{let t=!1,e=i.map(s=>{let c=ar(s,l);return!t&&typeof c=="function"&&(t=!0),c});if(t)return()=>{for(let s=0;s<e.length;s++){let c=e[s];typeof c=="function"?c():ar(i[s],null)}}}}function mt(...i){return u.useCallback(Xu(...i),i)}function Nz(i,l){let t=u.createContext(l),e=c=>{let{children:d,...n}=c,Z=u.useMemo(()=>n,Object.values(n));return G.jsx(t.Provider,{value:Z,children:d})};e.displayName=i+"Provider";function s(c){let d=u.useContext(t);if(d)return d;if(l!==void 0)return l;throw Error(`\`${c}\` must be used within \`${i}\``)}return[e,s]}function wd(i,l=[]){let t=[];function e(c,d){let n=u.createContext(d),Z=t.length;t=[...t,d];let b=m=>{var X;let{scope:h,children:W,...r}=m,N=((X=h==null?void 0:h[i])==null?void 0:X[Z])||n,M=u.useMemo(()=>r,Object.values(r));return G.jsx(N.Provider,{value:M,children:W})};b.displayName=c+"Provider";function o(m,h){var N;let W=((N=h==null?void 0:h[i])==null?void 0:N[Z])||n,r=u.useContext(W);if(r)return r;if(d!==void 0)return d;throw Error(`\`${m}\` must be used within \`${c}\``)}return[b,o]}let s=()=>{let c=t.map(d=>u.createContext(d));return function(d){let n=(d==null?void 0:d[i])||c;return u.useMemo(()=>({[`__scope${i}`]:{...d,[i]:n}}),[d,n])}};return s.scopeName=i,[e,rz(s,...l)]}
101function rz(...i){let l=i[0];if(i.length===1)return l;let t=()=>{let e=i.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(s){let c=e.reduce((d,{useScope:n,scopeName:Z})=>{let b=n(s)[`__scope${Z}`];return{...d,...b}},{});return u.useMemo(()=>({[`__scope${l.scopeName}`]:c}),[c])}};return t.scopeName=l.scopeName,t}function co(i){let l=Xz(i),t=u.forwardRef((e,s)=>{let{children:c,...d}=e,n=u.Children.toArray(c),Z=n.find(pz);if(Z){let b=Z.props.children,o=n.map(m=>m===Z?u.Children.count(b)>1?u.Children.only(null):u.isValidElement(b)?b.props.children:null:m);return G.jsx(l,{...d,ref:s,children:u.isValidElement(b)?u.cloneElement(b,void 0,o):null})}return G.jsx(l,{...d,ref:s,children:c})});return t.displayName=`${i}.Slot`,t}function Xz(i){let l=u.forwardRef((t,e)=>{let{children:s,...c}=t;if(u.isValidElement(s)){let d=yz(s),n=Yz(c,s.props);return s.type!==u.Fragment&&(n.ref=e?Xu(e,d):d),u.cloneElement(s,n)}return u.Children.count(s)>1?u.Children.only(null):null});return l.displayName=`${i}.SlotClone`,l}var oY=Symbol("radix.slottable");function Mz(i){let l=({children:t})=>G.jsx(G.Fragment,{children:t});return l.displayName=`${i}.Slottable`,l.__radixId=oY,l}function pz(i){return u.isValidElement(i)&&typeof i.type=="function"&&"__radixId"in i.type&&i.type.__radixId===oY}function Yz(i,l){let t={...l};for(let e in l){let s=i[e],c=l[e];/^on[A-Z]/.test(e)?s&&c?t[e]=(...d)=>{let n=c(...d);return s(...d),n}:s&&(t[e]=s):e==="style"?t[e]={...s,...c}:e==="className"&&(t[e]=[s,c].filter(Boolean).join(" "))}return{...i,...t}}function yz(i){var e,s;let l=(e=Object.getOwnPropertyDescriptor(i.props,"ref"))==null?void 0:e.get,t=l&&"isReactWarning"in l&&l.isReactWarning;return t?i.ref:(l=(s=Object.getOwnPropertyDescriptor(i,"ref"))==null?void 0:s.get,t=l&&"isReactWarning"in l&&l.isReactWarning,t?i.props.ref:i.props.ref||i.ref)}var Pl=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((i,l)=>{let t=co(`Primitive.${l}`),e=u.forwardRef((s,c)=>{let{asChild:d,...n}=s,Z=d?t:l;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),G.jsx(Z,{...n,ref:c})});return e.displayName=`Primitive.${l}`,{...i,[l]:e}},{});function mY(i,l){i&&Kr.flushSync(()=>i.dispatchEvent(l))}var yd=globalThis!=null&&globalThis.document?u.useLayoutEffect:()=>{};function Tz(i,l){return u.useReducer((t,e)=>l[t][e]??t,i)}var Ni=i=>{let{present:l,children:t}=i,e=Vz(l),s=typeof t=="function"?t({present:e.isPresent}):u.Children.only(t),c=mt(e.ref,Lz(s));return typeof t=="function"||e.isPresent?u.cloneElement(s,{ref:c}):null};Ni.displayName="Presence";function Vz(i){let[l,t]=u.useState(),e=u.useRef(null),s=u.useRef(i),c=u.useRef("none"),[d,n]=Tz(i?"mounted":"unmounted",{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return u.useEffect(()=>{let Z=gh(e.current);c.current=d==="mounted"?Z:"none"},[d]),yd(()=>{let Z=e.current,b=s.current;if(b!==i){let o=c.current,m=gh(Z);i?n("MOUNT"):m==="none"||(Z==null?void 0:Z.display)==="none"?n("UNMOUNT"):n(b&&o!==m?"ANIMATION_OUT":"UNMOUNT"),s.current=i}},[i,n]),yd(()=>{if(l){let Z,b=l.ownerDocument.defaultView??window,o=h=>{let W=gh(e.current).includes(CSS.escape(h.animationName));if(h.target===l&&W&&(n("ANIMATION_END"),!s.current)){let r=l.style.animationFillMode;l.style.animationFillMode="forwards",Z=b.setTimeout(()=>{l.style.animationFillMode==="forwards"&&(l.style.animationFillMode=r)})}},m=h=>{h.target===l&&(c.current=gh(e.current))};return l.addEventListener("animationstart",m),l.addEventListener("animationcancel",o),l.addEventListener("animationend",o),()=>{b.clearTimeout(Z),l.removeEventListener("animationstart",m),l.removeEventListener("animationcancel",o),l.removeEventListener("animationend",o)}}else n("ANIMATION_END")},[l,n]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:u.useCallback(Z=>{e.current=Z?getComputedStyle(Z):null,t(Z)},[])}}function gh(i){return(i==null?void 0:i.animationName)||"none"}function Lz(i){var e,s;let l=(e=Object.getOwnPropertyDescriptor(i.props,"ref"))==null?void 0:e.get,t=l&&"isReactWarning"in l&&l.isReactWarning;return t?i.ref:(l=(s=Object.getOwnPropertyDescriptor(i,"ref"))==null?void 0:s.get,t=l&&"isReactWarning"in l&&l.isReactWarning,t?i.props.ref:i.props.ref||i.ref)}var Iz=u.useInsertionEffect||yd;function Wh({prop:i,defaultProp:l,onChange:t=()=>{},caller:e}){let[s,c,d]=zz({defaultProp:l,onChange:t}),n=i!==void 0,Z=n?i:s;{let b=u.useRef(i!==void 0);u.useEffect(()=>{let o=b.current;o!==n&&console.warn(`${e} is changing from ${o?"controlled":"uncontrolled"} to ${n?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),b.current=n},[n,e])}return[Z,u.useCallback(b=>{var o;if(n){let m=wz(b)?b(i):b;
101m!==i&&((o=d.current)==null||o.call(d,m))}else c(b)},[n,i,c,d])]}function zz({defaultProp:i,onChange:l}){let[t,e]=u.useState(i),s=u.useRef(t),c=u.useRef(l);return Iz(()=>{c.current=l},[l]),u.useEffect(()=>{var d;s.current!==t&&((d=c.current)==null||d.call(c,t),s.current=t)},[t,s]),[t,e,c]}function wz(i){return typeof i=="function"}function Nc(i){let l=u.useRef(i);return u.useEffect(()=>{l.current=i}),u.useMemo(()=>(...t)=>{var e;return(e=l.current)==null?void 0:e.call(l,...t)},[])}function Rz(i,l=globalThis==null?void 0:globalThis.document){let t=Nc(i);u.useEffect(()=>{let e=s=>{s.key==="Escape"&&t(s)};return l.addEventListener("keydown",e,{capture:!0}),()=>l.removeEventListener("keydown",e,{capture:!0})},[t,l])}var Sz="DismissableLayer",_W="dismissableLayer.update",xz="dismissableLayer.pointerDownOutside",gz="dismissableLayer.focusOutside",nr,hY=u.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Mu=u.forwardRef((i,l)=>{let{disableOutsidePointerEvents:t=!1,onEscapeKeyDown:e,onPointerDownOutside:s,onFocusOutside:c,onInteractOutside:d,onDismiss:n,...Z}=i,b=u.useContext(hY),[o,m]=u.useState(null),h=(o==null?void 0:o.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,W]=u.useState({}),r=mt(l,w=>m(w)),N=Array.from(b.layers),[M]=[...b.layersWithOutsidePointerEventsDisabled].slice(-1),X=N.indexOf(M),y=o?N.indexOf(o):-1,Y=b.layersWithOutsidePointerEventsDisabled.size>0,T=y>=X,V=Cz(w=>{let R=w.target,S=[...b.branches].some(x=>x.contains(R));!T||S||(s==null||s(w),d==null||d(w),w.defaultPrevented||(n==null||n()))},h),I=Jz(w=>{let R=w.target;[...b.branches].some(S=>S.contains(R))||(c==null||c(w),d==null||d(w),w.defaultPrevented||(n==null||n()))},h);return Rz(w=>{y===b.layers.size-1&&(e==null||e(w),!w.defaultPrevented&&n&&(w.preventDefault(),n()))},h),u.useEffect(()=>{if(o)return t&&(b.layersWithOutsidePointerEventsDisabled.size===0&&(nr=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),b.layersWithOutsidePointerEventsDisabled.add(o)),b.layers.add(o),Zr(),()=>{t&&b.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=nr)}},[o,h,t,b]),u.useEffect(()=>()=>{o&&(b.layers.delete(o),b.layersWithOutsidePointerEventsDisabled.delete(o),Zr())},[o,b]),u.useEffect(()=>{let w=()=>W({});
101return document.addEventListener(_W,w),()=>document.removeEventListener(_W,w)},[]),G.jsx(Pl.div,{...Z,ref:r,style:{pointerEvents:Y?T?"auto":"none":void 0,...i.style},onFocusCapture:ll(i.onFocusCapture,I.onFocusCapture),onBlurCapture:ll(i.onBlurCapture,I.onBlurCapture),onPointerDownCapture:ll(i.onPointerDownCapture,V.onPointerDownCapture)})});Mu.displayName=Sz;var jz="DismissableLayerBranch",Dz=u.forwardRef((i,l)=>{let t=u.useContext(hY),e=u.useRef(null),s=mt(l,e);return u.useEffect(()=>{let c=e.current;if(c)return t.branches.add(c),()=>{t.branches.delete(c)}},[t.branches]),G.jsx(Pl.div,{...i,ref:s})});Dz.displayName=jz;function Cz(i,l=globalThis==null?void 0:globalThis.document){let t=Nc(i),e=u.useRef(!1),s=u.useRef(()=>{});return u.useEffect(()=>{let c=n=>{if(n.target&&!e.current){let Z=function(){uY(xz,t,b,{discrete:!0})},b={originalEvent:n};n.pointerType==="touch"?(l.removeEventListener("click",s.current),s.current=Z,l.addEventListener("click",s.current,{once:!0})):Z()}else l.removeEventListener("click",s.current);e.current=!1},d=window.setTimeout(()=>{l.addEventListener("pointerdown",c)},0);return()=>{window.clearTimeout(d),l.removeEventListener("pointerdown",c),l.removeEventListener("click",s.current)}},[l,t]),{onPointerDownCapture:()=>e.current=!0}}function Jz(i,l=globalThis==null?void 0:globalThis.document){let t=Nc(i),e=u.useRef(!1);return u.useEffect(()=>{let s=c=>{c.target&&!e.current&&uY(gz,t,{originalEvent:c},{discrete:!1})};return l.addEventListener("focusin",s),()=>l.removeEventListener("focusin",s)},[l,t]),{onFocusCapture:()=>e.current=!0,onBlurCapture:()=>e.current=!1}}function Zr(){let i=new CustomEvent(_W);document.dispatchEvent(i)}function uY(i,l,t,{discrete:e}){let s=t.originalEvent.target,c=new CustomEvent(i,{bubbles:!1,cancelable:!0,detail:t});l&&s.addEventListener(i,l,{once:!0}),e?mY(s,c):s.dispatchEvent(c)}var Fz=u.useId||(()=>{}),Oz=0;function sn(i){let[l,t]=u.useState(Fz());return yd(()=>{t(e=>e??String(Oz++))},[i]),l?`radix-${l}`:""}var kz="Portal",LG=u.forwardRef((i,l)=>{var n;let{container:t,...e}=i,[s,c]=u.useState(!1);yd(()=>c(!0),[]);let d=t||s&&((n=globalThis==null?void 0:globalThis.document)==null?void 0:n.body);return d?fT.createPortal(G.jsx(Pl.div,{...e,ref:l}),d):null});LG.displayName=kz;function WY(i){let[l,t]=u.useState(void 0);return yd(()=>{if(i){t({width:i.offsetWidth,height:i.offsetHeight});let e=new ResizeObserver(s=>{if(!Array.isArray(s)||!s.length)return;let c=s[0],d,n;if("borderBoxSize"in c){let Z=c.borderBoxSize,b=Array.isArray(Z)?Z[0]:Z;d=b.inlineSize,n=b.blockSize}else d=i.offsetWidth,n=i.offsetHeight;t({width:d,height:n})});return e.observe(i,{box:"border-box"}),()=>e.unobserve(i)}else t(void 0)},[i]),l}var Uz=["top","right","bottom","left"],Td=Math.min,Ee=Math.max,O0=Math.round,jh=Math.floor,mi=i=>({x:i,y:i}),Ez={left:"right",right:"left",bottom:"top",top:"bottom"},Kz={start:"end",end:"start"};function qW(i,l,t){return Ee(i,Td(l,t))}function rc(i,l){return typeof i=="function"?i(l):i}function Xc(i){return i.split("-")[0]}function rb(i){return i.split("-")[1]}function IG(i){return i==="x"?"y":"x"}function zG(i){return i==="y"?"height":"width"}var vz=new Set(["top","bottom"]);function oi(i){return vz.has(Xc(i))?"y":"x"}function wG(i){return IG(oi(i))}function Qz(i,l,t){t===void 0&&(t=!1);let e=rb(i),s=wG(i),c=zG(s),d=s==="x"?e===(t?"end":"start")?"right":"left":e==="start"?"bottom":"top";return l.reference[c]>l.floating[c]&&(d=k0(d)),[d,k0(d)]}function Pz(i){let l=k0(i);return[$W(i),l,$W(l)]}function $W(i){return i.replace(/start|end/g,l=>Kz[l])}var br=["left","right"],or=["right","left"],Hz=["top","bottom"],fz=["bottom","top"];function Bz(i,l,t){switch(i){case"top":case"bottom":return t?l?or:br:l?br:or;case"left":case"right":return l?Hz:fz;default:return[]}}function Az(i,l,t,e){let s=rb(i),c=Bz(Xc(i),t==="start",e);return s&&(c=c.map(d=>d+"-"+s),l&&(c=c.concat(c.map($W)))),c}function k0(i){return i.replace(/left|right|bottom|top/g,l=>Ez[l])}function _z(i){return{top:0,right:0,bottom:0,left:0,...i}}function GY(i){return typeof i=="number"?{top:i,right:i,bottom:i,left:i}:_z(i)}function U0(i){let{x:l,y:t,width:e,height:s}=i;return{width:e,height:s,top:t,left:l,right:l+e,bottom:t+s,x:l,y:t}}function mr(i,l,t){let{reference:e,floating:s}=i,c=oi(l),d=wG(l),n=zG(d),Z=Xc(l),b=c==="y",o=e.x+e.width/2-s.width/2,m=e.y+e.height/2-s.height/2,h=e[n]/2-s[n]/2,W;switch(Z){case"top":W={x:o,y:e.y-s.height};break;case"bottom":W={x:o,y:e.y+e.height};break;case"right":W={x:e.x+e.width,y:m};break;case"left":W={x:e.x-s.width,y:m};break;default:W={x:e.x,y:e.y}}switch(rb(l)){case"start":W[d]-=h*(t&&b?-1:1);break;case"end":W[d]+=h*(t&&b?-1:1);break}return W}var qz=async(i,l,t)=>{let{placement:e="bottom",strategy:s="absolute",middleware:c=[],platform:d}
vendor: 18,460 bytes, line 101
101=t,n=c.filter(Boolean),Z=await(d.isRTL==null?void 0:d.isRTL(l)),b=await d.getElementRects({reference:i,floating:l,strategy:s}),{x:o,y:m}=mr(b,e,Z),h=e,W={},r=0;for(let N=0;N<n.length;N++){let{name:M,fn:X}=n[N],{x:y,y:Y,data:T,reset:V}=await X({x:o,y:m,initialPlacement:e,placement:h,strategy:s,middlewareData:W,rects:b,platform:d,elements:{reference:i,floating:l}});o=y??o,m=Y??m,W={...W,[M]:{...W[M],...T}},V&&r<=50&&(r++,typeof V=="object"&&(V.placement&&(h=V.placement),V.rects&&(b=V.rects===!0?await d.getElementRects({reference:i,floating:l,strategy:s}):V.rects),{x:o,y:m}=mr(b,h,Z)),N=-1)}return{x:o,y:m,placement:h,strategy:s,middlewareData:W}};async function ao(i,l){l===void 0&&(l={});let{x:t,y:e,platform:s,rects:c,elements:d,strategy:n}=i,{boundary:Z="clippingAncestors",rootBoundary:b="viewport",elementContext:o="floating",altBoundary:m=!1,padding:h=0}=rc(l,i),W=GY(h),r=d[m?o==="floating"?"reference":"floating":o],N=U0(await s.getClippingRect({element:await(s.isElement==null?void 0:s.isElement(r))??!0?r:r.contextElement||await(s.getDocumentElement==null?void 0:s.getDocumentElement(d.floating)),boundary:Z,rootBoundary:b,strategy:n})),M=o==="floating"?{x:t,y:e,width:c.floating.width,height:c.floating.height}:c.reference,X=await(s.getOffsetParent==null?void 0:s.getOffsetParent(d.floating)),y=await(s.isElement==null?void 0:s.isElement(X))&&await(s.getScale==null?void 0:s.getScale(X))||{x:1,y:1},Y=U0(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:d,rect:M,offsetParent:X,strategy:n}):M);return{top:(N.top-Y.top+W.top)/y.y,bottom:(Y.bottom-N.bottom+W.bottom)/y.y,left:(N.left-Y.left+W.left)/y.x,right:(Y.right-N.right+W.right)/y.x}}var $z=i=>({name:"arrow",options:i,async fn(l){let{x:t,y:e,placement:s,rects:c,platform:d,elements:n,middlewareData:Z}=l,{element:b,padding:o=0}=rc(i,l)||{};if(b==null)return{};let m=GY(o),h={x:t,y:e},W=wG(s),r=zG(W),N=await d.getDimensions(b),M=W==="y",X=M?"top":"left",y=M?"bottom":"right",Y=M?"clientHeight":"clientWidth",T=c.reference[r]+c.reference[W]-h[W]-c.floating[r],V=h[W]-c.reference[W],I=await(d.getOffsetParent==null?void 0:d.getOffsetParent(b)),w=I?I[Y]:0;(!w||!await(d.isElement==null?void 0:d.isElement(I)))&&(w=n.floating[Y]||c.floating[r]);let R=T/2-V/2,S=w/2-N[r]/2-1,x=Td(m[X],S),g=Td(m[y],S),C=x,D=w-N[r]-g,J=w/2-N[r]/2+R,k=qW(C,J,D),O=!Z.arrow&&rb(s)!=null&&J!==k&&c.reference[r]/2-(J<C?x:g)-N[r]/2<0,j=O?J<C?J-C:J-D:0;return{[W]:h[W]+j,data:{[W]:k,centerOffset:J-k-j,...O&&{alignmentOffset:j}},reset:O}}}),l9=function(i){return i===void 0&&(i={}),{name:"flip",options:i,async fn(l){var x,g,C,D;var t;let{placement:e,middlewareData:s,rects:c,initialPlacement:d,platform:n,elements:Z}=l,{mainAxis:b=!0,crossAxis:o=!0,fallbackPlacements:m,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:W="none",flipAlignment:r=!0,...N}=rc(i,l);if((t=s.arrow)!=null&&t.alignmentOffset)return{};let M=Xc(e),X=oi(d),y=Xc(d)===d,Y=await(n.isRTL==null?void 0:n.isRTL(Z.floating)),T=m||(y||!r?[k0(d)]:Pz(d)),V=W!=="none";!m&&V&&T.push(...Az(d,r,W,Y));let I=[d,...T],w=await ao(l,N),R=[],S=((x=s.flip)==null?void 0:x.overflows)||[];if(b&&R.push(w[M]),o){let J=Qz(e,c,Y);R.push(w[J[0]],w[J[1]])}if(S=[...S,{placement:e,overflows:R}],!R.every(J=>J<=0)){let J=(((g=s.flip)==null?void 0:g.index)||0)+1,k=I[J];if(k&&(!(o==="alignment"&&X!==oi(k))||S.every(j=>oi(j.placement)===X?j.overflows[0]>0:!0)))return{data:{index:J,overflows:S},reset:{placement:k}};let O=(C=S.filter(j=>j.overflows[0]<=0).sort((j,F)=>j.overflows[1]-F.overflows[1])[0])==null?void 0:C.placement;if(!O)switch(h){case"bestFit":{let j=(D=S.filter(F=>{if(V){let U=oi(F.placement);return U===X||U==="y"}return!0}).map(F=>[F.placement,F.overflows.filter(U=>U>0).reduce((U,v)=>U+v,0)]).sort((F,U)=>F[1]-U[1])[0])==null?void 0:D[0];j&&(O=j);break}case"initialPlacement":O=d;break}if(e!==O)return{reset:{placement:O}}}return{}}}};function hr(i,l){return{top:i.top-l.height,right:i.right-l.width,bottom:i.bottom-l.height,left:i.left-l.width}}function ur(i){return Uz.some(l=>i[l]>=0)}var t9=function(i){return i===void 0&&(i={}),{name:"hide",options:i,async fn(l){let{rects:t}=l,{strategy:e="referenceHidden",...s}=rc(i,l);switch(e){case"referenceHidden":{let c=hr(await ao(l,{...s,elementContext:"reference"}),t.reference);return{data:{referenceHiddenOffsets:c,referenceHidden:ur(c)}}}case"escaped":{let c=hr(await ao(l,{...s,altBoundary:!0}),t.floating);return{data:{escapedOffsets:c,escaped:ur(c)}}}default:return{}}}}},NY=new Set(["left","top"]);async function e9(i,l){let{placement:t,platform:e,elements:s}=i,c=await(e.isRTL==null?void 0:e.isRTL(s.floating)),d=Xc(t),n=rb(t),Z=oi(t)==="y",b=NY.has(d)?-1:1,o=c&&Z?-1:1,m=rc(l,i),{mainAxis:h,crossAxis:W,alignmentAxis:r}=typeof m=="number"?{mainAxis:m,crossAxis:0,alignmentAxis:null}:{mainAxis:m.mainAxis||0,crossAxis:m.crossAxis||0,alignmentAxis:m.alignmentAxis};return n&&typeof r=="number"&&(W=n==="end"?r*-1:r),Z?{x:W*o,y:h*b}:{x:h*b,y:W*o}}var s9=function(i){return i===void 0&&(i=0),{name:"offset",options:i,async fn(l){var Z;var t;let{x:e,y:s,placement:c,middlewareData:d}=l,n=await e9(l,i);return c===((Z=d.offset)==null?void 0:Z.placement)&&(t=d.arrow)!=null&&t.alignmentOffset?{}:{x:e+n.x,y:s+n.y,data:{...n,placement:c}}}}},i9=function(i){return i===void 0&&(i={}),{name:"shift",options:i,async fn(l){let{x:t,y:e,placement:s}=l,{mainAxis:c=!0,crossAxis:d=!1,limiter:n={fn:M=>{let{x:X,y}=M;return{x:X,y}}},...Z}=rc(i,l),b={x:t,y:e},o=await ao(l,Z),m=oi(Xc(s)),h=IG(m),W=b[h],r=b[m];if(c){let M=h==="y"?"top":"left",X=h==="y"?"bottom":"right",y=W+o[M],Y=W-o[X];W=qW(y,W,Y)}if(d){let M=m==="y"?"top":"left",X=m==="y"?"bottom":"right",y=r+o[M],Y=r-o[X];r=qW(y,r,Y)}let N=n.fn({...l,[h]:W,[m]:r});return{...N,data:{x:N.x-t,y:N.y-e,enabled:{[h]:c,[m]:d}}}}}},c9=function(i){return i===void 0&&(i={}),{options:i,fn(l){var X,y;let{x:t,y:e,placement:s,rects:c,middlewareData:d}=l,{offset:n=0,mainAxis:Z=!0,crossAxis:b=!0}=rc(i,l),o={x:t,y:e},m=oi(s),h=IG(m),W=o[h],r=o[m],N=rc(n,l),M=typeof N=="number"?{mainAxis:N,crossAxis:0}:{mainAxis:0,crossAxis:0,...N};if(Z){let Y=h==="y"?"height":"width",T=c.reference[h]-c.floating[Y]+M.mainAxis,V=c.reference[h]+c.reference[Y]-M.mainAxis;W<T?W=T:W>V&&(W=V)}if(b){let Y=h==="y"?"width":"height",T=NY.has(Xc(s)),V=c.reference[m]-c.floating[Y]+(T&&((X=d.offset)==null?void 0:X[m])||0)+(T?0:M.crossAxis),I=c.reference[m]+c.reference[Y]+(T?0:((y=d.offset)==null?void 0:y[m])||0)-(T?M.crossAxis:0);r<V?r=V:r>I&&(r=I)}return{[h]:W,[m]:r}}}},d9=function(i){return i===void 0&&(i={}),{name:"size",options:i,async fn(l){var t,e;let{placement:s,rects:c,platform:d,elements:n}=l,{apply:Z=()=>{},...b}=rc(i,l),o=await ao(l,b),m=Xc(s),h=rb(s),W=oi(s)==="y",{width:r,height:N}=c.floating,M,X;m==="top"||m==="bottom"?(M=m,X=h===(await(d.isRTL==null?void 0:d.isRTL(n.floating))?"start":"end")?"left":"right"):(X=m,M=h==="end"?"top":"bottom");let y=N-o.top-o.bottom,Y=r-o.left-o.right,T=Td(N-o[M],y),V=Td(r-o[X],Y),I=!l.middlewareData.shift,w=T,R=V;if((t=l.middlewareData.shift)!=null&&t.enabled.x&&(R=Y),(e=l.middlewareData.shift)!=null&&e.enabled.y&&(w=y),I&&!h){let x=Ee(o.left,0),g=Ee(o.right,0),C=Ee(o.top,0),D=Ee(o.bottom,0);W?R=r-2*(x!==0||g!==0?x+g:Ee(o.left,o.right)):w=N-2*(C!==0||D!==0?C+D:Ee(o.top,o.bottom))}await Z({...l,availableWidth:R,availableHeight:w});let S=await d.getDimensions(n.floating);return r!==S.width||N!==S.height?{reset:{rects:!0}}:{}}}};function pu(){return typeof window<"u"}function Xb(i){return rY(i)?(i.nodeName||"").toLowerCase():"#document"}function ve(i){var l;return(i==null||(l=i.ownerDocument)==null?void 0:l.defaultView)||window}function ri(i){var l;return(l=(rY(i)?i.ownerDocument:i.document)||window.document)==null?void 0:l.documentElement}function rY(i){return pu()?i instanceof Node||i instanceof ve(i).Node:!1}function Ss(i){return pu()?i instanceof Element||i instanceof ve(i).Element:!1}function hi(i){return pu()?i instanceof HTMLElement||i instanceof ve(i).HTMLElement:!1}function Wr(i){return!pu()||typeof ShadowRoot>"u"?!1:i instanceof ShadowRoot||i instanceof ve(i).ShadowRoot}var a9=new Set(["inline","contents"]);function Gh(i){let{overflow:l,overflowX:t,overflowY:e,display:s}=xs(i);return/auto|scroll|overlay|hidden|clip/.test(l+e+t)&&!a9.has(s)}var n9=new Set(["table","td","th"]);function Z9(i){return n9.has(Xb(i))}var b9=[":popover-open",":modal"];function Yu(i){return b9.some(l=>{try{return i.matches(l)}catch{return!1}})}var o9=["transform","translate","scale","rotate","perspective"],m9=["transform","translate","scale","rotate","perspective","filter"],h9=["paint","layout","strict","content"];function RG(i){let l=SG(),t=Ss(i)?xs(i):i;return o9.some(e=>t[e]?t[e]!=="none":!1)||(t.containerType?t.containerType!=="normal":!1)||!l&&(t.backdropFilter?t.backdropFilter!=="none":!1)||!l&&(t.filter?t.filter!=="none":!1)||m9.some(e=>(t.willChange||"").includes(e))||h9.some(e=>(t.contain||"").includes(e))}function u9(i){let l=Vd(i);for(;hi(l)&&!Wb(l);){if(RG(l))return l;if(Yu(l))return null;l=Vd(l)}return null}function SG(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}var W9=new Set(["html","body","#document"]);function Wb(i){return W9.has(Xb(i))}function xs(i){return ve(i).getComputedStyle(i)}function yu(i){return Ss(i)?{scrollLeft:i.scrollLeft,scrollTop:i.scrollTop}:{scrollLeft:i.scrollX,scrollTop:i.scrollY}}function Vd(i){if(Xb(i)==="html")return i;let l=i.assignedSlot||i.parentNode||Wr(i)&&i.host||ri(i);return Wr(l)?l.host:l}function XY(i){let l=Vd(i);return Wb(l)?i.ownerDocument?i.ownerDocument.body:i.body:hi(l)&&Gh(l)?l:XY(l)}function no(i,l,t){var d;l===void 0&&(l=[]),t===void 0&&(t=!0);let e=XY(i),s=e===((d=i.ownerDocument)==null?void 0:d.body),c=ve(e);if(s){let n=lG(c);return l.concat(c,c.visualViewport||[],Gh(e)?e:[],n&&t?no(n):[])}return l.concat(e,no(e,[],t))}function lG(i){return i.parent&&Object.getPrototypeOf(i.parent)?i.frameElement:null}function MY(i){let l=xs(i),t=parseFloat(l.width)||0,e=parseFloat(l.height)||0,s=hi(i),c=s?i.offsetWidth:t,d=s?i.offsetHeight:e,n=O0(t)!==c||O0(e)!==d;return n&&(t=c,e=d),{width:t,height:e,$:n}}function xG(i){return Ss(i)?i:i.contextElement}function Un(i){let l=xG(i);if(!hi(l))return mi(1);let t=l.getBoundingClientRect(),{width:e,height:s,$:c}=MY(l),d=(c?O0(t.width):t.width)/e,n=(c?O0(t.height):t.height)/s;return(!d||!Number.isFinite(d))&&(d=1),(!n||!Number.isFinite(n))&&(n=1),{x:d,y:n}}var G9=mi(0);function pY(i){let l=ve(i);return!SG()||!l.visualViewport?G9:{x:l.visualViewport.offsetLeft,y:l.visualViewport.offsetTop}}function N9(i,l,t){return l===void 0&&(l=!1),!t||l&&t!==ve(i)?!1:l}function nn(i,l,t,e){l===void 0&&(l=!1),t===void 0&&(t=!1);let s=i.getBoundingClientRect(),c=xG(i),d=mi(1);l&&(e?Ss(e)&&(d=Un(e)):d=Un(i));let n=N9(c,t,e)?pY(c):mi(0),Z=(s.left+n.x)/d.x,b=(s.top+n.y)/d.y,o=s.width/d.x,m=s.height/d.y;if(c){let h=ve(c),W=e&&Ss(e)?ve(e):e,r=h,N=lG(r);for(;N&&e&&W!==r;){let M=Un(N),X=N.getBoundingClientRect(),y=xs(N),Y=X.left+(N.clientLeft+parseFloat(y.paddingLeft))*M.x,T=X.top+(N.clientTop+parseFloat(y.paddingTop))*M.y;Z*=M.x,b*=M.y,o*=M.x,m*=M.y,Z+=Y,b+=T,r=ve(N),N=lG(r)}}return U0({width:o,height:m,x:Z,y:b})}function Tu(i,l){let t=yu(i).scrollLeft;return l?l.left+t:nn(ri(i)).left+t}function YY(i,l){let t=i.getBoundingClientRect();return{x:t.left+l.scrollLeft-Tu(i,t),y:t.top+l.scrollTop}}function r9(i){let{elements:l,rect:t,offsetParent:e,strategy:s}=i,c=s==="fixed",d=ri(e),n=l?Yu(l.floating):!1;if(e===d||n&&c)return t;let Z={scrollLeft:0,scrollTop:0},b=mi(1),o=mi(0),m=hi(e);if((m||!m&&!c)&&((Xb(e)!=="body"||Gh(d))&&(Z=yu(e)),hi(e))){let W=nn(e);b=Un(e),o.x=W.x+e.clientLeft,o.y=W.y+e.clientTop}let h=d&&!m&&!c?YY(d,Z):mi(0);return{width:t.width*b.x,height:t.height*b.y,x:t.x*b.x-Z.scrollLeft*b.x+o.x+h.x,y:t.y*b.y-Z.scrollTop*b.y+o.y+h.y}}function X9(i){return Array.from(i.getClientRects())}function M9(i){let l=ri(i),t=yu(i),e=i.ownerDocument.body,s=Ee(l.scrollWidth,l.clientWidth,e.scrollWidth,e.clientWidth),c=Ee(l.scrollHeight,l.clientHeight,e.scrollHeight,e.clientHeight),d=-t.scrollLeft+Tu(i),n=-t.scrollTop;return xs(e).direction==="rtl"&&(d+=Ee(l.clientWidth,e.clientWidth)-s),{width:s,height:c,x:d,y:n}}var Gr=25;function p9(i,l){let t=ve(i),e=ri(i),s=t.visualViewport,c=e.clientWidth,d=e.clientHeight,n=0,Z=0;if(s){c=s.width,d=s.height;let o=SG();(!o||o&&l==="fixed")&&(n=s.offsetLeft,Z=s.offsetTop)}let b=Tu(e);if(b<=0){let o=e.ownerDocument,m=o.body,h=getComputedStyle(m),W=o.compatMode==="CSS1Compat"&&parseFloat(h.marginLeft)+parseFloat(h.marginRight)||0,r=Math.abs(e.clientWidth-m.clientWidth-W);r<=Gr&&(c-=r)}else b<=Gr&&(c+=b);return{width:c,height:d,x:n,y:Z}}var Y9=new Set(["absolute","fixed"]);function y9(i,l){let t=nn(i,!0,l==="fixed"),e=t.top+i.clientTop,s=t.left+i.clientLeft,c=hi(i)?Un(i):mi(1);return{width:i.clientWidth*c.x,height:i.clientHeight*c.y,x:s*c.x,y:e*c.y}}function Nr(i,l,t){let e;if(l==="viewport")e=p9(i,t);else if(l==="document")e=M9(ri(i));else if(Ss(l))e=y9(l,t);else{let s=pY(i);e={x:l.x-s.x,y:l.y-s.y,width:l.width,height:l.height}}return U0(e)}function yY(i,l){let t=Vd(i);return t===l||!Ss(t)||Wb(t)?!1:xs(t).position==="fixed"||yY(t,l)}function T9(i,l){let t=l.get(i);if(t)return t;let e=no(i,[],!1).filter(n=>Ss(n)&&Xb(n)!=="body"),s=null,c=xs(i).position==="fixed",d=c?Vd(i):i;for(;Ss(d)&&!Wb(d);){let n=xs(d),Z=RG(d);!Z&&n.position==="fixed"&&(s=null),(c?!Z&&!s:!Z&&n.position==="static"&&s&&Y9.has(s.position)||Gh(d)&&!Z&&yY(i,d))?e=e.filter(b=>b!==d):s=n,d=Vd(d)}return l.set(i,e),e}function V9(i){let{element:l,boundary:t,rootBoundary:e,strategy:s}=i,c=[...t==="clippingAncestors"?Yu(l)?[]:T9(l,this._c):[].concat(t),e],d=c[0],n=c.reduce((Z,b)=>{let o=Nr(l,b,s);return Z.top=Ee(o.top,Z.top),Z.right=Td(o.right,Z.right),Z.bottom=Td(o.bottom,Z.bottom),Z.left=Ee(o.left,Z.left),Z},Nr(l,d,s));return{width:n.right-n.left,height:n.bottom-n.top,x:n.left,y:n.top}}function L9(i){let{width:l,height:t}=MY(i);return{width:l,height:t}}function I9(i,l,t){let e=hi(l),s=ri(l),c=t==="fixed",d=nn(i,!0,c,l),n={scrollLeft:0,scrollTop:0},Z=mi(0);function b(){Z.x=Tu(s)}if(e||!e&&!c)if((Xb(l)!=="body"||Gh(s))&&(n=yu(l)),e){let m=nn(l,!0,c,l);Z.x=m.x+l.clientLeft,Z.y=m.y+l.clientTop}else s&&b();c&&!e&&s&&b();let o=s&&!e&&!c?YY(s,n):mi(0);return{x:d.left+n.scrollLeft-Z.x-o.x,y:d.top+n.scrollTop-Z.y-o.y,width:d.width,height:d.height}}function s2(i){return xs(i).position==="static"}function rr(i,l){if(!hi(i)||xs(i).position==="fixed")return null;if(l)return l(i);let t=i.offsetParent;return ri(i)===t&&(t=t.ownerDocument.body),t}function TY(i,l){let t=ve(i);if(Yu(i))return t;if(!hi(i)){let s=Vd(i);for(;s&&!Wb(s);){if(Ss(s)&&!s2(s))return s;s=Vd(s)}return t}let e=rr(i,l);for(;e&&Z9(e)&&s2(e);)e=rr(e,l);return e&&Wb(e)&&s2(e)&&!RG(e)?t:e||u9(i)||t}var z9=async function(i){let l=this.getOffsetParent||TY,t=this.getDimensions,e=await t(i.floating);return{reference:I9(i.reference,await l(i.floating),i.strategy),floating:{x:0,y:0,width:e.width,height:e.height}}};function w9(i){return xs(i).direction==="rtl"}var R9={convertOffsetParentRelativeRectToViewportRelativeRect:r9,getDocumentElement:ri,getClippingRect:V9,getOffsetParent:TY,getElementRects:z9,getClientRects:X9,getDimensions:L9,getScale:Un,isElement:Ss,isRTL:w9};function VY(i,l){return i.x===l.x&&i.y===l.y&&i.width===l.width&&i.height===l.height}function S9(i,l){let t=null,e,s=ri(i);function c(){var n;clearTimeout(e),(n=t)==null||n.disconnect(),t=null}function d(n,Z){n===void 0&&(n=!1),Z===void 0&&(Z=1),c();let b=i.getBoundingClientRect(),{left:o,top:m,width:h,height:W}=b;if(n||l(),!h||!W)return;let r=jh(m),N=jh(s.clientWidth-(o+h)),M=jh(s.clientHeight-(m+W)),X=jh(o),y={rootMargin:-r+"px "+-N+"px "+-M+"px "+-X+"px",threshold:Ee(0,Td(1,Z))||1},Y=!0;function T(V){let I=V[0].intersectionRatio;if(I!==Z){if(!Y)return d();I?d(!1,I):e=setTimeout(()=>{d(!1,1e-7)},1e3)}I===1&&!VY(b,i.getBoundingClientRect())&&d(),Y=!1}try{t=new IntersectionObserver(T,{...y,root:s.ownerDocument})}catch{t=new IntersectionObserver(T,y)}t.observe(i)}return d(!0),c}function x9(i,l,t,e){e===void 0&&(e={});let{ancestorScroll:s=!0,ancestorResize:c=!0,elementResize:d=typeof ResizeObserver=="function",layoutShift:n=typeof IntersectionObserver=="function",animationFrame:Z=!1}=e,b=xG(i),o=s||c?[...b?no(b):[],...no(l)]:[];o.forEach(X=>{s&&X.addEventListener("scroll",t,{passive:!0}),c&&X.addEventListener("resize",t)});let m=b&&n?S9(b,t):null,h=-1,W=null;d&&(W=new ResizeObserver(X=>{let[y]=X;y&&y.target===b&&W&&(W.unobserve(l),cancelAnimationFrame(h),h=requestAnimationFrame(()=>{var Y;(Y=W)==null||Y.observe(l)})),t()}),b&&!Z&&W.observe(b),W.observe(l));let r,N=Z?nn(i):null;Z&&M();function M(){let X=nn(i);N&&!VY(N,X)&&t(),N=X,r=requestAnimationFrame(M)}return t(),()=>{var X;o.forEach(y=>{s&&y.removeEventListener("scroll",t),c&&y.removeEventListener("resize",t)}),m==null||m(),(X=W)==null||X.disconnect(),W=null,Z&&cancelAnimationFrame(r)}}var g9=s9,j9=i9,D9=l9,C9=d9,J9=t9,Xr=$z,F9=c9,O9=(i,l,t)=>{let e=new Map,s={platform:R9,...t},c={...s.platform,_c:e};return qz(i,l,{...s,platform:c})},Y0=typeof document<"u"?u.useLayoutEffect:function(){};function E0(i,l){if(i===l)return!0;if(typeof i!=typeof l)return!1;if(typeof i=="function"&&i.toString()===l.toString())return!0;let t,e,s;if(i&&l&&typeof i=="object"){if(Array.isArray(i)){if(t=i.length,t!==l.length)return!1;for(e=t;e--!==0;)if(!E0(i[e],l[e]))return!1;return!0}if(s=Object.keys(i),t=s.length,t!==Object.keys(l).length)return!1;for(e=t;e--!==0;)if(!{}.hasOwnProperty.call(l,s[e]))return!1;for(e=t;e--!==0;){let c=s[e];if(!(c==="_owner"&&i.$$typeof)&&!E0(i[c],l[c]))return!1}return!0}return i!==i&&l!==l}function LY(i){return typeof window>"u"?1:(i.ownerDocument.defaultView||window).devicePixelRatio||1}function Mr(i,l){let t=LY(i);return Math.round(l*t)/t}function i2(i){let l=u.useRef(i);return Y0(()=>{l.current=i}),l}function k9(i){i===void 0&&(i={});let{placement:l="bottom",strategy:t="absolute",middleware:e=[],platform:s,elements:{reference:c,floating:d}={},transform:n=!0,whileElementsMounted:Z,open:b}=i,[o,m]=u.useState({x:0,y:0,strategy:t,placement:l,middlewareData:{},isPositioned:!1}),[h,W]=u.useState(e);E0(h,e)||W(e);let[r,N]=u.useState(null),[M,X]=u.useState(null),y=u.useCallback(F=>{F!==I.current&&(I.current=F,N(F))},[]),Y=u.useCallback(F=>{F!==w.current&&(w.current=F,X(F))},[]),T=c||r,V=d||M,I=u.useRef(null),w=u.useRef(null),R=u.useRef(o),S=Z!=null,x=i2(Z),g=i2(s),C=i2(b),D=u.useCallback(()=>
101{if(!I.current||!w.current)return;let F={placement:l,strategy:t,middleware:h};g.current&&(F.platform=g.current),O9(I.current,w.current,F).then(U=>{let v={...U,isPositioned:C.current!==!1};J.current&&!E0(R.current,v)&&(R.current=v,Kr.flushSync(()=>{m(v)}))})},[h,l,t,g,C]);Y0(()=>{b===!1&&R.current.isPositioned&&(R.current.isPositioned=!1,m(F=>({...F,isPositioned:!1})))},[b]);let J=u.useRef(!1);Y0(()=>(J.current=!0,()=>{J.current=!1}),[]),Y0(()=>{if(T&&(I.current=T),V&&(w.current=V),T&&V){if(x.current)return x.current(T,V,D);D()}},[T,V,D,x,S]);let k=u.useMemo(()=>({reference:I,floating:w,setReference:y,setFloating:Y}),[y,Y]),O=u.useMemo(()=>({reference:T,floating:V}),[T,V]),j=u.useMemo(()=>{let F={position:t,left:0,top:0};if(!O.floating)return F;let U=Mr(O.floating,o.x),v=Mr(O.floating,o.y);return n?{...F,transform:"translate("+U+"px, "+v+"px)",...LY(O.floating)>=1.5&&{willChange:"transform"}}:{position:t,left:U,top:v}},[t,n,O.floating,o.x,o.y]);return u.useMemo(()=>({...o,update:D,refs:k,elements:O,floatingStyles:j}),[o,D,k,O,j])}var U9=i=>{function l(t){return{}.hasOwnProperty.call(t,"current")}return{name:"arrow",options:i,fn(t){let{element:e,padding:s}=typeof i=="function"?i(t):i;return e&&l(e)?e.current==null?{}:Xr({element:e.current,padding:s}).fn(t):e?Xr({element:e,padding:s}).fn(t):{}}}},E9=(i,l)=>({...g9(i),options:[i,l]}),K9=(i,l)=>({...j9(i),options:[i,l]}),v9=(i,l)=>({...F9(i),options:[i,l]}),Q9=(i,l)=>({...D9(i),options:[i,l]}),P9=(i,l)=>({...C9(i),options:[i,l]}),H9=(i,l)=>({...J9(i),options:[i,l]}),f9=(i,l)=>({...U9(i),options:[i,l]}),B9="Arrow",IY=u.forwardRef((i,l)=>{let{children:t,width:e=10,height:s=5,...c}=i;return G.jsx(Pl.svg,{...c,ref:l,width:e,height:s,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:i.asChild?t:G.jsx("polygon",{points:"0,0 30,0 15,10"})})});IY.displayName=B9;var A9=IY,gG="Popper",[zY,Vu]=wd(gG),[_9,wY]=zY(gG),RY=i=>{let{__scopePopper:l,children:t}=i,[e,s]=u.useState(null);return G.jsx(_9,{scope:l,anchor:e,onAnchorChange:s,children:t})};RY.displayName=gG;var SY="PopperAnchor",xY=u.forwardRef((i,l)=>{let{__scopePopper:t,virtualRef:e,...s}=i,c=wY(SY,t),d=u.useRef(null),n=mt(l,d),Z=u.useRef(null);return u.useEffect(()=>{let b=Z.current;Z.current=(e==null?void 0:e.current)||d.current,b!==Z.current&&c.onAnchorChange(Z.current)}),e?null:G.jsx(Pl.div,{...s,ref:n})});xY.displayName=SY;var jG="PopperContent",[q9,$9]=zY(jG),gY=u.forwardRef((i,l)=>{var sl,Tl,vl,Hl,ul,nt;let{__scopePopper:t,side:e="bottom",sideOffset:s=0,align:c="center",alignOffset:d=0,arrowPadding:n=0,avoidCollisions:Z=!0,collisionBoundary:b=[],collisionPadding:o=0,sticky:m="partial",hideWhenDetached:h=!1,updatePositionStrategy:W="optimized",onPlaced:r,...N}=i,M=wY(jG,t),[X,y]=u.useState(null),Y=mt(l,ht=>y(ht)),[T,V]=u.useState(null),I=WY(T),w=(I==null?void 0:I.width)??0,R=(I==null?void 0:I.height)??0,S=e+(c==="center"?"":"-"+c),x=typeof o=="number"?o:{top:0,right:0,bottom:0,left:0,...o},g=Array.isArray(b)?b:[b],C=g.length>0,D={padding:x,boundary:g.filter(tw),altBoundary:C},{refs:J,floatingStyles:k,placement:O,isPositioned:j,middlewareData:F}=k9({strategy:"fixed",placement:S,whileElementsMounted:(...ht)=>x9(...ht,{animationFrame:W==="always"}),elements:{reference:M.anchor},middleware:[E9({mainAxis:s+R,alignmentAxis:d}),Z&&K9({mainAxis:!0,crossAxis:!1,limiter:m==="partial"?v9():void 0,...D}),Z&&Q9({...D}),P9({...D,apply:({elements:ht,rects:Xi,availableWidth:Mh,availableHeight:ju})=>{let{width:Rd,height:Du}=Xi.reference,yc=ht.floating.style;yc.setProperty("--radix-popper-available-width",`${Mh}px`),yc.setProperty("--radix-popper-available-height",`${ju}px`),yc.setProperty("--radix-popper-anchor-width",`${Rd}px`),yc.setProperty("--radix-popper-anchor-height",`${Du}px`)}}),T&&f9({element:T,padding:n}),ew({arrowWidth:w,arrowHeight:R}),h&&H9({strategy:"referenceHidden",...D})]}),[U,v]=CY(O),A=Nc(r);yd(()=>{j&&(A==null||A())},[j,A]);let q=(sl=F.arrow)==null?void 0:sl.x,_=(Tl=F.arrow)==null?void 0:Tl.y,al=((vl=F.arrow)==null?void 0:vl.centerOffset)!==0,[nl,B]=u.useState();return yd(()=>{X&&B(window.getComputedStyle(X).zIndex)},[X]),G.jsx("div",{ref:J.setFloating,"data-radix-popper-content-wrapper":"",style:{...k,transform:j?k.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:nl,"--radix-popper-transform-origin":[(Hl=F.transformOrigin)==null?void 0:Hl.x,(ul=F.transformOrigin)==null?void 0:ul.y].join(" "),...((nt=F.hide)==null?void 0:nt.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:i.dir,children:G.jsx(q9,{scope:t,placedSide:U,onArrowChange:V,arrowX:q,arrowY:_,shouldHideArrow:al,children:G.jsx(Pl.div,{"data-side":U,"data-align":v,...N,ref:Y,style:{...N.style,animation:j?void 0:"none"}})})})});gY.displayName=jG;var jY="PopperArrow",lw={top:"bottom",right:"left",bottom:"top",left:"r
101ight"},DY=u.forwardRef(function(i,l){let{__scopePopper:t,...e}=i,s=$9(jY,t),c=lw[s.placedSide];return G.jsx("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[c]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:G.jsx(A9,{...e,ref:l,style:{...e.style,display:"block"}})})});DY.displayName=jY;function tw(i){return i!==null}var ew=i=>({name:"transformOrigin",options:i,fn(l){var N,M,X;let{placement:t,rects:e,middlewareData:s}=l,c=((N=s.arrow)==null?void 0:N.centerOffset)!==0,d=c?0:i.arrowWidth,n=c?0:i.arrowHeight,[Z,b]=CY(t),o={start:"0%",center:"50%",end:"100%"}[b],m=(((M=s.arrow)==null?void 0:M.x)??0)+d/2,h=(((X=s.arrow)==null?void 0:X.y)??0)+n/2,W="",r="";return Z==="bottom"?(W=c?o:`${m}px`,r=`${-n}px`):Z==="top"?(W=c?o:`${m}px`,r=`${e.floating.height+n}px`):Z==="right"?(W=`${-n}px`,r=c?o:`${h}px`):Z==="left"&&(W=`${e.floating.width+n}px`,r=c?o:`${h}px`),{data:{x:W,y:r}}}});function CY(i){let[l,t="center"]=i.split("-");return[l,t]}var JY=RY,FY=xY,OY=gY,kY=DY,sw=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),iw="VisuallyHidden",UY=u.forwardRef((i,l)=>G.jsx(Pl.span,{...i,ref:l,style:{...sw,...i.style}}));UY.displayName=iw;var cw=UY,[Lu]=wd("Tooltip",[Vu]),Iu=Vu(),EY="TooltipProvider",dw=700,tG="tooltip.open",[aw,DG]=Lu(EY),KY=i=>{let{__scopeTooltip:l,delayDuration:t=dw,skipDelayDuration:e=300,disableHoverableContent:s=!1,children:c}=i,d=u.useRef(!0),n=u.useRef(!1),Z=u.useRef(0);return u.useEffect(()=>{let b=Z.current;return()=>window.clearTimeout(b)},[]),G.jsx(aw,{scope:l,isOpenDelayedRef:d,delayDuration:t,onOpen:u.useCallback(()=>{window.clearTimeout(Z.current),d.current=!1},[]),onClose:u.useCallback(()=>{window.clearTimeout(Z.current),Z.current=window.setTimeout(()=>d.current=!0,e)},[e]),isPointerInTransitRef:n,onPointerInTransitChange:u.useCallback(b=>{n.current=b},[]),disableHoverableContent:s,children:c})};KY.displayName=EY;var Zo="Tooltip",[nw,zu]=Lu(Zo),vY=i=>{let{__scopeTooltip:l,children:t,open:e,defaultOpen:s,onOpenChange:c,disableHoverableContent:d,delayDuration:n}=i,Z=DG(Zo,i.__scopeTooltip),b=Iu(l),[o,m]=u.useState(null),h=sn(),W=u.useRef(0),r=d??Z.disableHoverableContent,N=n??Z.delayDuration,M=u.useRef(!1),[X,y]=Wh({prop:e,defaultProp:s??!1,onChange:w=>{w?(Z.onOpen(),document.dispatchEvent(new CustomEvent(tG))):Z.onClose(),c==null||c(w)},caller:Zo}),Y=u.useMemo(()=>X?M.current?"delayed-open":"instant-open":"closed",[X]),T=u.useCallback(()=>{window.clearTimeout(W.current),W.current=0,M.current=!1,y(!0)},[y]),V=u.useCallback(()=>{window.clearTimeout(W.current),W.current=0,y(!1)},[y]),I=u.useCallback(()=>{window.clearTimeout(W.current),W.current=window.setTimeout(()=>{M.current=!0,y(!0),W.current=0},N)},[N,y]);return u.useEffect(()=>()=>{W.current&&(W.current=(window.clearTimeout(W.current),0))},[]),G.jsx(JY,{...b,children:G.jsx(nw,{scope:l,contentId:h,open:X,stateAttribute:Y,trigger:o,onTriggerChange:m,onTriggerEnter:u.useCallback(()=>{Z.isOpenDelayedRef.current?I():T()},[Z.isOpenDelayedRef,I,T]),onTriggerLeave:u.useCallback(()=>{r?V():(window.clearTimeout(W.current),W.current=0)},[V,r]),onOpen:T,onClose:V,disableHoverableContent:r,children:t})})};vY.displayName=Zo;var eG="TooltipTrigger",QY=u.forwardRef((i,l)=>{let{__scopeTooltip:t,...e}=i,s=zu(eG,t),c=DG(eG,t),d=Iu(t),n=mt(l,u.useRef(null),s.onTriggerChange),Z=u.useRef(!1),b=u.useRef(!1),o=u.useCallback(()=>Z.current=!1,[]);return u.useEffect(()=>()=>document.removeEventListener("pointerup",o),[o]),G.jsx(FY,{asChild:!0,...d,children:G.jsx(Pl.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...e,ref:n,onPointerMove:ll(i.onPointerMove,m=>{m.pointerType!=="touch"&&!b.current&&!c.isPointerInTransitRef.current&&(s.onTriggerEnter(),b.current=!0)}),onPointerLeave:ll(i.onPointerLeave,()=>{s.onTriggerLeave(),b.current=!1}),onPointerDown:ll(i.onPointerDown,()=>{s.open&&s.onClose(),Z.current=!0,document.addEventListener("pointerup",o,{once:!0})}),onFocus:ll(i.onFocus,()=>{Z.current||s.onOpen()}),onBlur:ll(i.onBlur,s.onClose),onClick:ll(i.onClick,s.onClose)})})});QY.displayName=eG;var Zw="TooltipPortal",[yg,bw]=Lu(Zw,{forceMount:void 0}),Gb="TooltipContent",PY=u.forwardRef((i,l)=>{let t=bw(Gb,i.__scopeTooltip),{forceMount:e=t.forceMount,side:s="top",...c}=i,d=zu(Gb,i.__scopeTooltip);return G.jsx(Ni,{present:e||d.open,children:d.disableHoverableContent?G.jsx(HY,{side:s,...c,ref:l}):G.jsx(ow,{side:s,...c,ref:l})})}),ow=u.forwardRef((i,l)=>{let t=zu(Gb,i.__scopeTooltip),e=DG(Gb,i.__scopeTooltip),s=u.useRef(null),c=mt(l,s),[d,n]=u.useState(null),{trigger:Z,onClose:b}=t,o=s.current,{onPointerInTransitChange:m}=e,h=u.useCallback(()=>{n(null),m(!1)},[m]),W=u.useCallback((r,N)=>{let M=r.currentTarget,X={x:r.clientX,y:r.clientY},y=Gw(X,Ww(X,M.getBoundingClientRect())),Y=Nw(N.getBoundingClientRect());n(Xw([...y,...Y])),m(!0)},[m]);return u.useEffect(()=>()=>h(),[h]),u.useEffect(()=>{if(Z&&o){let r=M=>W(M,o),N=M=>W(M,Z);return Z.addEventListener("pointerleave",r),o.addEventListener("pointerleave",N),()=>{Z.removeEventListener("pointerleave",r),o.removeEventListener("pointerleave",N)}}},[Z,o,W,h]),u.useEffect(()=>{if(d){let r=N=>{let M=N.target,X={x:N.clientX,y:N.clientY}
101,y=(Z==null?void 0:Z.contains(M))||(o==null?void 0:o.contains(M)),Y=!rw(X,d);y?h():Y&&(h(),b())};return document.addEventListener("pointermove",r),()=>document.removeEventListener("pointermove",r)}},[Z,o,d,b,h]),G.jsx(HY,{...i,ref:c})}),[mw,hw]=Lu(Zo,{isInside:!1}),uw=Mz("TooltipContent"),HY=u.forwardRef((i,l)=>{let{__scopeTooltip:t,children:e,"aria-label":s,onEscapeKeyDown:c,onPointerDownOutside:d,...n}=i,Z=zu(Gb,t),b=Iu(t),{onClose:o}=Z;return u.useEffect(()=>(document.addEventListener(tG,o),()=>document.removeEventListener(tG,o)),[o]),u.useEffect(()=>{if(Z.trigger){let m=h=>{var W;(W=h.target)!=null&&W.contains(Z.trigger)&&o()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[Z.trigger,o]),G.jsx(Mu,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:c,onPointerDownOutside:d,onFocusOutside:m=>m.preventDefault(),onDismiss:o,children:G.jsxs(OY,{"data-state":Z.stateAttribute,...b,...n,ref:l,style:{...n.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[G.jsx(uw,{children:e}),G.jsx(mw,{scope:t,isInside:!0,children:G.jsx(cw,{id:Z.contentId,role:"tooltip",children:s||e})})]})})});PY.displayName=Gb;var fY="TooltipArrow",BY=u.forwardRef((i,l)=>{let{__scopeTooltip:t,...e}=i,s=Iu(t);return hw(fY,t).isInside?null:G.jsx(kY,{...s,...e,ref:l})});BY.displayName=fY;function Ww(i,l){let t=Math.abs(l.top-i.y),e=Math.abs(l.bottom-i.y),s=Math.abs(l.right-i.x),c=Math.abs(l.left-i.x);switch(Math.min(t,e,s,c)){case c:return"left";case s:return"right";case t:return"top";case e:return"bottom";default:throw Error("unreachable")}}function Gw(i,l,t=5){let e=[];switch(l){case"top":e.push({x:i.x-t,y:i.y+t},{x:i.x+t,y:i.y+t});break;case"bottom":e.push({x:i.x-t,y:i.y-t},{x:i.x+t,y:i.y-t});break;case"left":e.push({x:i.x+t,y:i.y-t},{x:i.x+t,y:i.y+t});break;case"right":e.push({x:i.x-t,y:i.y-t},{x:i.x-t,y:i.y+t});break}return e}function Nw(i){let{top:l,right:t,bottom:e,left:s}=i;return[{x:s,y:l},{x:t,y:l},{x:t,y:e},{x:s,y:e}]}function rw(i,l){let{x:t,y:e}=i,s=!1;for(let c=0,d=l.length-1;c<l.length;d=c++){let n=l[c],Z=l[d],b=n.x,o=n.y,m=Z.x,h=Z.y;o>e!=h>e&&t<(m-b)*(e-o)/(h-o)+b&&(s=!s)}return s}function Xw(i){let l=i.slice();return l.sort((t,e)=>t.x<e.x?-1:t.x>e.x?1:t.y<e.y?-1:+(t.y>e.y)),Mw(l)}function Mw(i){if(i.length<=1)return i.slice();let l=[];for(let e=0;e<i.length;e++){let s=i[e];for(;l.length>=2;){let c=l[l.length-1],d=l[l.length-2];if((c.x-d.x)*(s.y-d.y)>=(c.y-d.y)*(s.x-d.x))l.pop();else break}l.push(s)}l.pop();let t=[];for(let e=i.length-1;e>=0;e--){let s=i[e];for(;t.length>=2;){let c=t[t.length-1],d=t[t.length-2];if((c.x-d.x)*(s.y-d.y)>=(c.y-d.y)*(s.x-d.x))t.pop();else break}t.push(s)}return t.pop(),l.length===1&&t.length===1&&l[0].x===t[0].x&&l[0].y===t[0].y?l:l.concat(t)}var pr={tooltipContent:"_tooltipContent_12gjy_1",tooltipArrow:"_tooltipArrow_12gjy_8"},dl=zd(({children:i,content:l,className:t,style:e},s)=>G.jsx(KY,{children:G.jsxs(vY,{delayDuration:1e3,children:[G.jsx(QY,{asChild:!0,children:G.jsx("div",{ref:s,className:t,style:e,children:i})}),G.jsxs(PY,{className:pr.tooltipContent,sideOffset:5,children:[G.jsx(BY,{className:pr.tooltipArrow}),G.jsx("span",{children:l})]})]})})),Dh={"rp-input":"_rp-input_d52xg_1","rp-input-wrapper":"_rp-input-wrapper_d52xg_28","rp-input-label":"_rp-input-label_d52xg_32","rp-input-icon":"_rp-input-icon_d52xg_44"},AY=zd((i,l)=>{let{className:t,icon:e,children:s,id:c,label:d,...n}=i,Z=u.useId(),b=c||Z,o=n.role||(n.type==="text"||!n.type?"textbox":void 0);return G.jsxs("div",{className:Dh["rp-input-wrapper"],children:[d?G.jsx("label",{htmlFor:b,className:Dh["rp-input-label"],children:d}):null,G.jsx("input",{...n,id:b,role:o,"data-icon":!!e,ref:l,className:xl(t,Dh["rp-input"],"ignore-hover")}),e&&G.jsx("span",{className:Dh["rp-input-icon"],"aria-hidden":"true",children:e}),s]})}),_Y=u.createContext({}),Kl=()=>
101u.useContext(_Y),pw=({children:i,icons:l={}})=>G.jsx(_Y.Provider,{value:l,children:i}),qY={xs:320,sm:640,md:768,lg:1024,xl:1280,"2xl":1536},Yw={width:0,height:0,isMobile:!1,currentBreakpoint:"xs",orientation:"portrait",breakpoints:qY,isBreakpoint:()=>!1,isMobileDevice:!1,isPortrait:!0,isLandscape:!1,isSmallScreen:!1},$Y=u.createContext(void 0),yw=({children:i,mobileWidth:l=768,onLayoutWidthChange:t})=>{let[e,s]=u.useState(!1),{container:c}=Pe(),[d,n]=u.useState({width:(c==null?void 0:c.clientWidth)||window.innerWidth,height:(c==null?void 0:c.clientHeight)||window.innerHeight,isMobile:!1,currentBreakpoint:"xs",orientation:"portrait"}),Z=u.useMemo(()=>({...qY,md:l}),[l]),b=W=>{let r=Object.entries(Z);for(let N=r.length-1;N>=0;N--)if(W>=r[N][1])return r[N][0];return"xs"},o=()=>{let W=navigator.userAgent.toLowerCase();return["iphone","ipod","ipad","android","mobile","phone","tablet"].some(r=>W.includes(r))};u.useEffect(()=>{s(d.width<=Z.md)},[d,Z]),u.useEffect(()=>{t&&t(e,d.width)},[t,e,d]),u.useEffect(()=>{if(!c)return;let W=()=>{let N=c.clientWidth,M=c.clientHeight;n({width:N,height:M,isMobile:o(),currentBreakpoint:b(N),orientation:M>N?"portrait":"landscape"})};W();let r=new ResizeObserver(W);return r.observe(c),window.addEventListener("resize",W),()=>{r.disconnect(),window.removeEventListener("resize",W)}},[c]);let m=W=>d.width>=Z[W],h={...d,breakpoints:Z,isBreakpoint:m,isMobileDevice:d.isMobile,isPortrait:d.orientation==="portrait",isLandscape:d.orientation==="landscape",isSmallScreen:e};return G.jsx($Y.Provider,{value:h,children:i})},js=()=>u.useContext($Y)??Yw,c2=0;function ly(){u.useEffect(()=>{let i=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",i[0]??Yr()),document.body.insertAdjacentElement("beforeend",i[1]??Yr()),c2++,()=>{c2===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(l=>l.remove()),c2--}},[])}function Yr(){let i=document.createElement("span");return i.setAttribute("data-radix-focus-guard",""),i.tabIndex=0,i.style.outline="none",i.style.opacity="0",i.style.position="fixed",i.style.pointerEvents="none",i}var d2="focusScope.autoFocusOnMount",a2="focusScope.autoFocusOnUnmount",yr={bubbles:!1,cancelable:!0},Tw="FocusScope",CG=u.forwardRef((i,l)=>{let{loop:t=!1,trapped:e=!1,onMountAutoFocus:s,onUnmountAutoFocus:c,...d}=i,[n,Z]=u.useState(null),b=Nc(s),o=Nc(c),m=u.useRef(null),h=mt(l,N=>Z(N)),W=u.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;u.useEffect(()=>{if(e){let N=function(Y){if(W.paused||!n)return;let T=Y.target;n.contains(T)?m.current=T:Lc(m.current,{select:!0})},M=function(Y){if(W.paused||!n)return;let T=Y.relatedTarget;T!==null&&(n.contains(T)||Lc(m.current,{select:!0}))},X=function(Y){if(document.activeElement===document.body)for(let T of Y)T.removedNodes.length>0&&Lc(n)};document.addEventListener("focusin",N),document.addEventListener("focusout",M);let y=new MutationObserver(X);return n&&y.observe(n,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",N),document.removeEventListener("focusout",M),y.disconnect()}}},[e,n,W.paused]),u.useEffect(()=>{if(n){Vr.add(W);let N=document.activeElement;if(!n.contains(N)){let M=new CustomEvent(d2,yr);n.addEventListener(d2,b),n.dispatchEvent(M),M.defaultPrevented||(Vw(Rw(ty(n)),{select:!0}),document.activeElement===N&&Lc(n))}return()=>{n.removeEventListener(d2,b),setTimeout(()=>{let M=new CustomEvent(a2,yr);n.addEventListener(a2,o),n.dispatchEvent(M),M.defaultPrevented||Lc(N??document.body,{select:!0}),n.removeEventListener(a2,o),Vr.remove(W)},0)}}},[n,b,o,W]);let r=u.useCallback(N=>{if(!t&&!e||W.paused)return;let M=N.key==="Tab"&&!N.altKey&&!N.ctrlKey&&!N.metaKey,X=document.activeElement;if(M&&X){let y=N.currentTarget,[Y,T]=Lw(y);Y&&T?!N.shiftKey&&X===T?(N.preventDefault(),t&&Lc(Y,{select:!0})):N.shiftKey&&X===Y&&(N.preventDefault(),t&&Lc(T,{select:!0})):X===y&&N.preventDefault()}},[t,e,W.paused]);return G.jsx(Pl.div,{tabIndex:-1,...d,ref:h,onKeyDown:r})});CG.displayName=Tw;function Vw(i,{select:l=!1}={}){let t=document.activeElement;for(let e of i)if(Lc(e,{select:l}),document.activeElement!==t)return}function Lw(i){let l=ty(i);return[Tr(l,i),Tr(l.reverse(),i)]}function ty(i){let l=[],t=document.createTreeWalker(i,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let s=e.tagName==="INPUT"&&e.type==="hidden";return e.disabled||e.hidden||s?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;t.nextNode();)l.push(t.currentNode);return l}function Tr(i,l){for(let t of i)if(!Iw(t,{upTo:l}))return t}function Iw(i,{upTo:l}){if(getComputedStyle(i).visibility==="hidden")return!0;for(;i;){if(l!==void 0&&i===l)return!1;if(getComputedStyle(i).display==="none")return!0;
vendor: 10,427 bytes, lines 101-141
101i=i.parentElement}return!1}function zw(i){return i instanceof HTMLInputElement&&"select"in i}function Lc(i,{select:l=!1}={}){if(i&&i.focus){let t=document.activeElement;i.focus({preventScroll:!0}),i!==t&&zw(i)&&l&&i.select()}}var Vr=ww();function ww(){let i=[];return{add(l){let t=i[0];l!==t&&(t==null||t.pause()),i=Lr(i,l),i.unshift(l)},remove(l){var t;i=Lr(i,l),(t=i[0])==null||t.resume()}}}function Lr(i,l){let t=[...i],e=t.indexOf(l);return e!==-1&&t.splice(e,1),t}function Rw(i){return i.filter(l=>l.tagName!=="A")}var Sw=function(i){return typeof document>"u"?null:(Array.isArray(i)?i[0]:i).ownerDocument.body},Xn=new WeakMap,Ch=new WeakMap,Jh={},n2=0,ey=function(i){return i&&(i.host||ey(i.parentNode))},xw=function(i,l){return l.map(function(t){if(i.contains(t))return t;var e=ey(t);return e&&i.contains(e)?e:(console.error("aria-hidden",t,"in not contained inside",i,". Doing nothing"),null)}).filter(function(t){return!!t})},gw=function(i,l,t,e){var s=xw(l,Array.isArray(i)?i:[i]);Jh[t]||(Jh[t]=new WeakMap);var c=Jh[t],d=[],n=new Set,Z=new Set(s),b=function(m){!m||n.has(m)||(n.add(m),b(m.parentNode))};s.forEach(b);var o=function(m){!m||Z.has(m)||Array.prototype.forEach.call(m.children,function(h){if(n.has(h))o(h);else try{var W=h.getAttribute(e),r=W!==null&&W!=="false",N=(Xn.get(h)||0)+1,M=(c.get(h)||0)+1;Xn.set(h,N),c.set(h,M),d.push(h),N===1&&r&&Ch.set(h,!0),M===1&&h.setAttribute(t,"true"),r||h.setAttribute(e,"true")}catch(X){console.error("aria-hidden: cannot operate on ",h,X)}})};return o(l),n.clear(),n2++,function(){d.forEach(function(m){var h=Xn.get(m)-1,W=c.get(m)-1;Xn.set(m,h),c.set(m,W),h||(Ch.has(m)||m.removeAttribute(e),Ch.delete(m)),W||m.removeAttribute(t)}),n2--,n2||(Xn=new WeakMap,Xn=new WeakMap,Ch=new WeakMap,Jh={})}},sy=function(i,l,t){t===void 0&&(t="data-aria-hidden");var e=Array.from(Array.isArray(i)?i:[i]),s=l||Sw(i);return s?(e.push.apply(e,Array.from(s.querySelectorAll("[aria-live], script"))),gw(e,s,t,"aria-hidden")):function(){return null}},bi=function(){return bi=Object.assign||function(i){for(var l,t=1,e=arguments.length;t<e;t++)for(var s in l=arguments[t],l)Object.prototype.hasOwnProperty.call(l,s)&&(i[s]=l[s]);return i},bi.apply(this,arguments)};function iy(i,l){var t={};for(var e in i)Object.prototype.hasOwnProperty.call(i,e)&&l.indexOf(e)<0&&(t[e]=i[e]);if(i!=null&&typeof Object.getOwnPropertySymbols=="function")for(var s=0,e=Object.getOwnPropertySymbols(i);s<e.length;s++)l.indexOf(e[s])<0&&Object.prototype.propertyIsEnumerable.call(i,e[s])&&(t[e[s]]=i[e[s]]);return t}function jw(i,l,t){for(var e=0,s=l.length,c;e<s;e++)(c||!(e in l))&&(c||(c=Array.prototype.slice.call(l,0,e)),c[e]=l[e]);return i.concat(c||Array.prototype.slice.call(l))}var y0="right-scroll-bar-position",T0="width-before-scroll-bar",Dw="with-scroll-bars-hidden",Cw="--removed-body-scroll-bar-size";function Z2(i,l){return typeof i=="function"?i(l):i&&(i.current=l),i}function Jw(i,l){var t=u.useState(function(){return{value:i,callback:l,facade:{get current(){return t.value},set current(e){var s=t.value;s!==e&&(t.value=e,t.callback(e,s))}}}})[0];return t.callback=l,t.facade}var Fw=typeof window<"u"?u.useLayoutEffect:u.useEffect,Ir=new WeakMap;function Ow(i,l){var t=Jw(null,function(e){return i.forEach(function(s){return Z2(s,e)})});return Fw(function(){var e=Ir.get(t);if(e){var s=new Set(e),c=new Set(i),d=t.current;s.forEach(function(n){c.has(n)||Z2(n,null)}),c.forEach(function(n){s.has(n)||Z2(n,d)})}Ir.set(t,i)},[i]),t}function kw(i){return i}function Uw(i,l){l===void 0&&(l=kw);var t=[],e=!1;return{read:function(){if(e)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return t.length?t[t.length-1]:i},useMedium:function(s){var c=l(s,e);return t.push(c),function(){t=t.filter(function(d){return d!==c})}},assignSyncMedium:function(s){for(e=!0;t.length;){var c=t;t=[],c.forEach(s)}t={push:function(d){return s(d)},filter:function(){return t}}},assignMedium:function(s){e=!0;var c=[];if(t.length){var d=t;t=[],d.forEach(s),c=t}var n=function(){var b=c;c=[],b.forEach(s)},Z=function(){return Promise.resolve().then(n)};Z(),t={push:function(b){c.push(b),Z()},filter:function(b){return c=c.filter(b),t}}}}}function Ew(i){i===void 0&&(i={});var l=Uw(null);return l.options=bi({async:!0,ssr:!1},i),l}var cy=function(i){var l=i.sideCar,t=iy(i,["sideCar"]);if(!l)throw Error("Sidecar: please provide `sideCar` property to import the right car");var e=l.read();if(!e)throw Error("Sidecar medium not found");return u.createElement(e,bi({},t))};cy.isSideCarExport=!0;function Kw(i,l){return i.useMedium(l),cy}var dy=Ew(),b2=function(){},K0=u.forwardRef(function(i,l){var t=u.useRef(null),e=u.useState({onScrollCapture:b2,onWheelCapture:b2,onTouchMoveCapture:b2}),s=e[0],c=e[1],d=i.forwardProps,n=i.children,Z=i.className,b=i.removeScrollBar,o=i.enabled,m=i.shards,h=i.sideCar,W=i.noRelative,r=i.noIsolation,N=i.inert,M=i.allowPinchZoom,X=i.as,y=X===void 0?"div":X,Y=i.gapMode,T=iy(i,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),V=h,I=Ow([t,l]),w=bi(bi({},T),s);return u.createElement(u.Fragment,null,o&&u.createElement(V,{sideCar:dy,removeScrollBar:b,shards:m,noRelative:W,noIsolation:r,inert:N,setCallbacks:c,allowPinchZoom:!!M,lockRef:t,gapMode:Y}),d?u.cloneElement(u.Children.only(n),bi(bi({},w),{ref:I})):u.createElement(y,bi({},w,{className:Z,ref:I}),n))});K0.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},K0.classNames={fullWidth:T0,zeroRight:y0};var vw=function(){if(typeof __webpack_nonce__<"u")return __webpack_nonce__};function Qw(){if(!document)return null;var i=document.createElement("style");i.type="text/css";var l=vw();return l&&i.setAttribute("nonce",l),i}function Pw(i,l){i.styleSheet?i.styleSheet.cssText=l:i.appendChild(document.createTextNode(l))}function Hw(i){(document.head||document.getElementsByTagName("head")[0]).appendChild(i)}var fw=function(){var i=0,l=null;return{add:function(t){i==0&&(l=Qw())&&(Pw(l,t),Hw(l)),i++},remove:function(){i--,!i&&l&&(l.parentNode&&l.parentNode.removeChild(l),l=null)}}},Bw=function(){var i=fw();return function(l,t){u.useEffect(function(){return i.add(l),function(){i.remove()}},[l&&t])}},ay=function(){var i=Bw();return function(l){var t=l.styles,e=l.dynamic;return i(t,e),null}},Aw={left:0,top:0,right:0,gap:0},o2=function(i){return parseInt(i||"",10)||0},_w=function(i){var l=window.getComputedStyle(document.body),t=l[i==="padding"?"paddingLeft":"marginLeft"],e=l[i==="padding"?"paddingTop":"marginTop"],s=l[i==="padding"?"paddingRight":"marginRight"];return[o2(t),o2(e),o2(s)]},qw=function(i){if(i===void 0&&(i="margin"),typeof window>"u")return Aw;var l=_w(i),t=document.documentElement.clientWidth,e=window.innerWidth;return{left:l[0],top:l[1],right:l[2],gap:Math.max(0,e-t+l[2]-l[0])}},$w=ay(),lo="data-scroll-locked",lR=function(i,l,t,e){var s=i.left,c=i.top,d=i.right,n=i.gap;return t===void 0&&(t="margin"),`
102  .${Dw} {
103   overflow: hidden ${e};
104   padding-right: ${n}px ${e};
105  }
106  body[${lo}] {
107    overflow: hidden ${e};
108    overscroll-behavior: contain;
109    ${[l&&`position: relative ${e};`,t==="margin"&&`
110    padding-left: ${s}px;
111    padding-top: ${c}px;
112    padding-right: ${d}px;
113    margin-left:0;
114    margin-top:0;
115    margin-right: ${n}px ${e};
116    `,t==="padding"&&`padding-right: ${n}px ${e};`].filter(Boolean).join("")}
117  }
118  
119  .${y0} {
120    right: ${n}px ${e};
121  }
122  
123  .${T0} {
124    margin-right: ${n}px ${e};
125  }
126  
127  .${y0} .${y0} {
128    right: 0 ${e};
129  }
130  
131  .${T0} .${T0} {
132    margin-right: 0 ${e};
133  }
134  
135  body[${lo}] {
136    ${Cw}: ${n}px;
137  }
138`},zr=function(){var i=parseInt(document.body.getAttribute("data-scroll-locked")||"0",10);return isFinite(i)?i:0},tR=function(){u.useEffect(function(){return document.body.setAttribute(lo,(zr()+1).toString()),function(){var i=zr()-1;i<=0?document.body.removeAttribute(lo):document.body.setAttribute(lo,i.toString())}},[])},eR=function(i){var l=i.noRelative,t=i.noImportant,e=i.gapMode,s=e===void 0?"margin":e;tR();var c=u.useMemo(function(){return qw(s)},[s]);return u.createElement($w,{styles:lR(c,!l,s,t?"":"!important")})},sG=!1;if(typeof window<"u")try{var Fh=Object.defineProperty({},"passive",{get:function(){return sG=!0,!0}});window.addEventListener("test",Fh,Fh),window.removeEventListener("test",Fh,Fh)}catch{sG=!1}var Mn=sG?{passive:!1}:!1,sR=function(i){return i.tagName==="TEXTAREA"},ny=function(i,l){if(!(i instanceof Element))return!1;var t=window.getComputedStyle(i);return t[l]!=="hidden"&&!(t.overflowY===t.overflowX&&!sR(i)&&t[l]==="visible")},iR=function(i){return ny(i,"overflowY")},cR=function(i){return ny(i,"overflowX")},wr=function(i,l){var t=l.ownerDocument,e=l;do{if(typeof ShadowRoot<"u"&&e instanceof ShadowRoot&&(e=e.host),Zy(i,e)){var s=by(i,e);if(s[1]>s[2])return!0}e=e.parentNode}while(e&&e!==t.body);return!1},dR=function(i){return[i.scrollTop,i.scrollHeight,i.clientHeight]},aR=function(i){return[i.scrollLeft,i.scrollWidth,i.clientWidth]},Zy=function(i,l){return i==="v"?iR(l):cR(l)},by=function(i,l){return i==="v"?dR(l):aR(l)},nR=function(i,l){return i==="h"&&l==="rtl"?-1:1},ZR=function(i,l,t,e,s){var c=nR(i,window.getComputedStyle(l).direction),d=c*e,n=t.target,Z=l.contains(n),b=!1,o=d>0,m=0,h=0;do{if(!n)break;var W=by(i,n),r=W[0],N=W[1]-W[2]-c*r;(r||N)&&Zy(i,n)&&(m+=N,h+=r);var M=n.parentNode;n=M&&M.nodeType===Node.DOCUMENT_FRAGMENT_NODE?M.host:M}while(!Z&&n!==document.body||Z&&(l.contains(n)||l===n));return(o&&Math.abs(m)<1||!o&&Math.abs(h)<1)&&(b=!0),b},Oh=function(i){return"changedTouches"in i?[i.changedTouches[0].clientX,i.changedTouches[0].clientY]:[0,0]},Rr=function(i){return[i.deltaX,i.deltaY]},Sr=function(i){return i&&"current"in i?i.current:i},bR=function(i,l){return i[0]===l[0]&&i[1]===l[1]},oR=function(i){return`
139  .block-interactivity-${i} {pointer-events: none;}
140  .allow-interactivity-${i} {pointer-events: all;}
141`},mR=0,pn=[];function hR(i){var l=u.useRef([]),t=u.useRef([0,0]),e=u.useRef(),s=u.useState(mR++)[0],c=u.useState(ay)[0],d=u.useRef(i);u.useEffect(function(){d.current=i},[i]),u.useEffect(function(){if(i.inert){document.body.classList.add(`block-interactivity-${s}`);var N=jw([i.lockRef.current],(i.shards||[]).map(Sr)).filter(Boolean);return N.forEach(function(M){return M.classList.add(`allow-interactivity-${s}`)}),function(){document.body.classList.remove(`block-interactivity-${s}
141`),N.forEach(function(M){return M.classList.remove(`allow-interactivity-${s}`)})}}},[i.inert,i.lockRef.current,i.shards]);var n=u.useCallback(function(N,M){if("touches"in N&&N.touches.length===2||N.type==="wheel"&&N.ctrlKey)return!d.current.allowPinchZoom;var X=Oh(N),y=t.current,Y="deltaX"in N?N.deltaX:y[0]-X[0],T="deltaY"in N?N.deltaY:y[1]-X[1],V,I=N.target,w=Math.abs(Y)>Math.abs(T)?"h":"v";if("touches"in N&&w==="h"&&I.type==="range")return!1;var R=wr(w,I);if(!R)return!0;if(R?V=w:(V=w==="v"?"h":"v",R=wr(w,I)),!R)return!1;if(!e.current&&"changedTouches"in N&&(Y||T)&&(e.current=V),!V)return!0;var S=e.current||V;return ZR(S,M,N,S==="h"?Y:T)},[]),Z=u.useCallback(function(N){var M=N;if(!(!pn.length||pn[pn.length-1]!==c)){var X="deltaY"in M?Rr(M):Oh(M),y=l.current.filter(function(T){return T.name===M.type&&(T.target===M.target||M.target===T.shadowParent)&&bR(T.delta,X)})[0];if(y&&y.should){M.cancelable&&M.preventDefault();return}if(!y){var Y=(d.current.shards||[]).map(Sr).filter(Boolean).filter(function(T){return T.contains(M.target)});(Y.length>0?n(M,Y[0]):!d.current.noIsolation)&&M.cancelable&&M.preventDefault()}}},[]),b=u.useCallback(function(N,M,X,y){var Y={name:N,delta:M,target:X,should:y,shadowParent:uR(X)};l.current.push(Y),setTimeout(function(){l.current=l.current.filter(function(T){return T!==Y})},1)},[]),o=u.useCallback(function(N){t.current=Oh(N),e.current=void 0},[]),m=u.useCallback(function(N){b(N.type,Rr(N),N.target,n(N,i.lockRef.current))},[]),h=u.useCallback(function(N){b(N.type,Oh(N),N.target,n(N,i.lockRef.current))},[]);u.useEffect(function(){return pn.push(c),i.setCallbacks({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:h}),document.addEventListener("wheel",Z,Mn),document.addEventListener("touchmove",Z,Mn),document.addEventListener("touchstart",o,Mn),function(){pn=pn.filter(function(N){return N!==c}),document.removeEventListener("wheel",Z,Mn),document.removeEventListener("touchmove",Z,Mn),document.removeEventListener("touchstart",o,Mn)}},[]);var W=i.removeScrollBar,r=i.inert;return u.createElement(u.Fragment,null,r?u.createElement(c,{styles:oR(s)}):null,W?u.createElement(eR,{noRelative:i.noRelative,gapMode:i.gapMode}):null)}function uR(i){for(var l=null;i!==null;)i instanceof ShadowRoot&&(l=i.host,i=i.host),i=i.parentNode;return l}var WR=Kw(dy,hR),JG=u.forwardRef(function(i,l){return u.createElement(K0,bi({},i,{ref:l,sideCar:WR}))});JG.classNames=K0.classNames;function oy(i){let l=i+"CollectionProvider",[t,e]=wd(l),[s,c]=t(l,{collectionRef:{current:null},itemMap:new Map}),d=N=>{let{scope:M,children:X}=N,y=xd.useRef(null),Y=xd.useRef(new Map).current;return G.jsx(s,{scope:M,itemMap:Y,collectionRef:y,children:X})};d.displayName=l;let n=i+"CollectionSlot",Z=co(n),b=xd.forwardRef((N,M)=>{let{scope:X,children:y}=N;return G.jsx(Z,{ref:mt(M,c(n,X).collectionRef),children:y})});b.displayName=n;let o=i+"CollectionItemSlot",m="data-radix-collection-item",h=co(o),W=xd.forwardRef((N,M)=>{let{scope:X,children:y,...Y}=N,T=xd.useRef(null),V=mt(M,T),I=c(o,X);return xd.useEffect(()=>(I.itemMap.set(T,{ref:T,...Y}),()=>void I.itemMap.delete(T))),G.jsx(h,{[m]:"",ref:V,children:y})});W.displayName=o;function r(N){let M=c(i+"CollectionConsumer",N);return xd.useCallback(()=>{let X=M.collectionRef.current;if(!X)return[];let y=Array.from(X.querySelectorAll(`[${m}]`));return Array.from(M.itemMap.values()).sort((Y,T)=>y.indexOf(Y.ref.current)-y.indexOf(T.ref.current))},[M.collectionRef,M.itemMap])}return[{Provider:d,Slot:b,ItemSlot:W},r,e]}var GR=u.createContext(void 0);function my(i){let l=u.useContext(GR);return i||l||"ltr"}var m2="rovingFocusGroup.onEntryFocus",NR={bubbles:!1,cancelable:!0},Nh="RovingFocusGroup",[iG,hy,rR]=oy(Nh),[XR,uy]=wd(Nh,[rR]),[MR,pR]=XR(Nh),Wy=u.forwardRef((i,l)=>G.jsx(iG.Provider,{scope:i.__scopeRovingFocusGroup,children:G.jsx(iG.Slot,{scope:i.__scopeRovingFocusGroup,children:G.jsx(YR,{...i,ref:l})})}));Wy.displayName=Nh;var YR=u.forwardRef((i,l)=>{let{__scopeRovingFocusGroup:t,orientation:e,loop:s=!1,dir:c,currentTabStopId:d,defaultCurrentTabStopId:n,onCurrentTabStopIdChange:Z,onEntryFocus:b,preventScrollOnEntryFocus:o=!1,...m}=i,h=u.useRef(null),W=mt(l,h),r=my(c),[N,M]=Wh({prop:d,defaultProp:n??null,onChange:Z,caller:Nh}),[X,y]=u.useState(!1),Y=Nc(b),T=hy(t),V=u.useRef(!1),[I,w]=u.useState(0);return u.useEffect(()=>{let R=h.current;if(R)return R.addEventListener(m2,Y),()=>R.removeEventListener(m2,Y)},[Y]),G.jsx(MR,{scope:t,orientation:e,dir:r,loop:s,currentTabStopId:N,onItemFocus:u.useCallback(R=>M(R),[M]),onItemShiftTab:u.useCallback(()=>y(!0),[]),onFocusableItemAdd:u.useCallback(()=>w(R=>R+1),[]),onFocusableItemRemove:u.useCallback(()=>w(R=>R-1),[]),children:G.jsx(Pl.div,{tabIndex:X||I===0?-1:0,"data-orientation":e,...m,ref:W,style:{outline:"none",...i.style},onMouseDown:ll(i.onMouseDown,()=>{V.current=!0}),onFocus:ll(i.onFocus,R=>{let S=!V.current;if(R.target===R.currentTarget&&S&&!X){let x=new CustomEvent(m2,NR);if(R.currentTarget.dispatchEvent(x),!x.defaultPrevented){let g=T().filter(C=>C.focusable);ry([g.find(C=>C.active),g.find(C=>
141C.id===N),...g].filter(Boolean).map(C=>C.ref.current),o)}}V.current=!1}),onBlur:ll(i.onBlur,()=>y(!1))})})}),Gy="RovingFocusGroupItem",Ny=u.forwardRef((i,l)=>{let{__scopeRovingFocusGroup:t,focusable:e=!0,active:s=!1,tabStopId:c,children:d,...n}=i,Z=sn(),b=c||Z,o=pR(Gy,t),m=o.currentTabStopId===b,h=hy(t),{onFocusableItemAdd:W,onFocusableItemRemove:r,currentTabStopId:N}=o;return u.useEffect(()=>{if(e)return W(),()=>r()},[e,W,r]),G.jsx(iG.ItemSlot,{scope:t,id:b,focusable:e,active:s,children:G.jsx(Pl.span,{tabIndex:m?0:-1,"data-orientation":o.orientation,...n,ref:l,onMouseDown:ll(i.onMouseDown,M=>{e?o.onItemFocus(b):M.preventDefault()}),onFocus:ll(i.onFocus,()=>o.onItemFocus(b)),onKeyDown:ll(i.onKeyDown,M=>{if(M.key==="Tab"&&M.shiftKey){o.onItemShiftTab();return}if(M.target!==M.currentTarget)return;let X=VR(M,o.orientation,o.dir);if(X!==void 0){if(M.metaKey||M.ctrlKey||M.altKey||M.shiftKey)return;M.preventDefault();let y=h().filter(Y=>Y.focusable).map(Y=>Y.ref.current);if(X==="last")y.reverse();else if(X==="prev"||X==="next"){X==="prev"&&y.reverse();let Y=y.indexOf(M.currentTarget);y=o.loop?LR(y,Y+1):y.slice(Y+1)}setTimeout(()=>ry(y))}}),children:typeof d=="function"?d({isCurrentTabStop:m,hasTabStop:N!=null}):d})})});Ny.displayName=Gy;var yR={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function TR(i,l){return l==="rtl"?i==="ArrowLeft"?"ArrowRight":i==="ArrowRight"?"ArrowLeft":i:i}function VR(i,l,t){let e=TR(i.key,t);if(!(l==="vertical"&&["ArrowLeft","ArrowRight"].includes(e))&&!(l==="horizontal"&&["ArrowUp","ArrowDown"].includes(e)))return yR[e]}function ry(i,l=!1){let t=document.activeElement;for(let e of i)if(e===t||(e.focus({preventScroll:l}),document.activeElement!==t))return}function LR(i,l){return i.map((t,e)=>i[(l+e)%i.length])}var IR=Wy,zR=Ny,cG=["Enter"," "],wR=["ArrowDown","PageUp","Home"],Xy=["ArrowUp","PageDown","End"],RR=[...wR,...Xy],SR={ltr:[...cG,"ArrowRight"],rtl:[...cG,"ArrowLeft"]},xR={ltr:["ArrowLeft"],rtl:["ArrowRight"]},rh="Menu",[bo,gR,jR]=oy(rh),[un,My]=wd(rh,[jR,Vu,uy]),wu=Vu(),py=uy(),[DR,Wn]=un(rh),[CR,Xh]=un(rh),Yy=i=>{let{__scopeMenu:l,open:t=!1,children:e,dir:s,onOpenChange:c,modal:d=!0}=i,n=wu(l),[Z,b]=u.useState(null),o=u.useRef(!1),m=Nc(c),h=my(s);return u.useEffect(()=>{let W=()=>{o.current=!0,document.addEventListener("pointerdown",r,{capture:!0,once:!0}),document.addEventListener("pointermove",r,{capture:!0,once:!0})},r=()=>o.current=!1;return document.addEventListener("keydown",W,{capture:!0}),()=>{document.removeEventListener("keydown",W,{capture:!0}),document.removeEventListener("pointerdown",r,{capture:!0}),document.removeEventListener("pointermove",r,{capture:!0})}},[]),G.jsx(JY,{...n,children:G.jsx(DR,{scope:l,open:t,onOpenChange:m,content:Z,onContentChange:b,children:G.jsx(CR,{scope:l,onClose:u.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:o,dir:h,modal:d,children:e})})})};Yy.displayName=rh;var JR="MenuAnchor",FG=u.forwardRef((i,l)=>{let{__scopeMenu:t,...e}=i;return G.jsx(FY,{...wu(t),...e,ref:l})});FG.displayName=JR;var OG="MenuPortal",[FR,yy]=un(OG,{forceMount:void 0}),Ty=i=>{let{__scopeMenu:l,forceMount:t,children:e,container:s}=i,c=Wn(OG,l);return G.jsx(FR,{scope:l,forceMount:t,children:G.jsx(Ni,{present:t||c.open,children:G.jsx(LG,{asChild:!0,container:s,children:e})})})};Ty.displayName=OG;var Zs="MenuContent",[OR,kG]=un(Zs),Vy=u.forwardRef((i,l)=>{let t=yy(Zs,i.__scopeMenu),{forceMount:e=t.forceMount,...s}=i,c=Wn(Zs,i.__scopeMenu),d=Xh(Zs,i.__scopeMenu);return G.jsx(bo.Provider,{scope:i.__scopeMenu,children:G.jsx(Ni,{present:e||c.open,children:G.jsx(bo.Slot,{scope:i.__scopeMenu,children:d.modal?G.jsx(kR,{...s,ref:l}):G.jsx(UR,{...s,ref:l})})})})}),kR=u.forwardRef((i,l)=>{let t=Wn(Zs,i.__scopeMenu),e=u.useRef(null),s=mt(l,e);return u.useEffect(()=>{let c=e.current;if(c)return sy(c)},[]),G.jsx(UG,{...i,ref:s,trapFocus:t.open,disableOutsidePointerEvents:t.open,disableOutsideScroll:!0,onFocusOutside:ll(i.onFocusOutside,c=>c.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>t.onOpenChange(!1)})}),UR=u.forwardRef((i,l)=>{let t=Wn(Zs,i.__scopeMenu);return G.jsx(UG,{...i,ref:l,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>t.onOpenChange(!1)})}),ER=co("MenuContent.ScrollLock"),UG=u.forwardRef((i,l)=>{let{__scopeMenu:t,loop:e=!1,trapFocus:s,onOpenAutoFocus:c,onCloseAutoFocus:d,disableOutsidePointerEvents:n,onEntryFocus:Z,onEscapeKeyDown:b,onPointerDownOutside:o,onFocusOutside:m,onInteractOutside:h,onDismiss:W,disableOutsideScroll:r,...N}=i,M=Wn(Zs,t),X=Xh(Zs,t),y=wu(t),Y=py(t),T=gR(t),[V,I]=u.useState(null),w=u.useRef(null),R=mt(l,w,M.onContentChange),S=u.useRef(0),x=u.useRef(""),g=u.useRef(0),C=u.useRef(null),D=u.useRef("right"),J=u.useRef(0),k=r?JG:u.Fragment,O=r?{as:ER,allowPinchZoom:!0}:void 0,j=U=>{var B,sl;let v=x.current+U,A=T().filter(Tl=>!Tl.disabled),q=document.activeElement,_=(B=A.find(Tl=>Tl.ref.current===q))==null?void 0:B.textValue,al=l3(A.map(Tl=>Tl.textValue),v,_),nl=(sl=A.find(Tl=>Tl.textValue===al))==null?void 0:sl.ref.current;(function Tl(vl){x.current=vl,window.clearTimeout(S.current),vl!==""&&(S.current=window.setTimeout(()=>Tl(""),1e3))})(v),nl&&setTimeout(()=>nl.focus())};u.useEffect(()=>()=>window.clearTimeout(S.current),[]),ly();let F=u.useCallback(U=>{var v,A;return D.current===((v=C.current)==null?void 0:v.side)&&e3(U,(A=C.
141current)==null?void 0:A.area)},[]);return G.jsx(OR,{scope:t,searchRef:x,onItemEnter:u.useCallback(U=>{F(U)&&U.preventDefault()},[F]),onItemLeave:u.useCallback(U=>{var v;F(U)||((v=w.current)==null||v.focus(),I(null))},[F]),onTriggerLeave:u.useCallback(U=>{F(U)&&U.preventDefault()},[F]),pointerGraceTimerRef:g,onPointerGraceIntentChange:u.useCallback(U=>{C.current=U},[]),children:G.jsx(k,{...O,children:G.jsx(CG,{asChild:!0,trapped:s,onMountAutoFocus:ll(c,U=>{var v;U.preventDefault(),(v=w.current)==null||v.focus({preventScroll:!0})}),onUnmountAutoFocus:d,children:G.jsx(Mu,{asChild:!0,disableOutsidePointerEvents:n,onEscapeKeyDown:b,onPointerDownOutside:o,onFocusOutside:m,onInteractOutside:h,onDismiss:W,children:G.jsx(IR,{asChild:!0,...Y,dir:X.dir,orientation:"vertical",loop:e,currentTabStopId:V,onCurrentTabStopIdChange:I,onEntryFocus:ll(Z,U=>{X.isUsingKeyboardRef.current||U.preventDefault()}),preventScrollOnEntryFocus:!0,children:G.jsx(OY,{role:"menu","aria-orientation":"vertical","data-state":Uy(M.open),"data-radix-menu-content":"",dir:X.dir,...y,...N,ref:R,style:{outline:"none",...N.style},onKeyDown:ll(N.onKeyDown,U=>{let v=U.target.closest("[data-radix-menu-content]")===U.currentTarget,A=U.ctrlKey||U.altKey||U.metaKey,q=U.key.length===1;v&&(U.key==="Tab"&&U.preventDefault(),!A&&q&&j(U.key));let _=w.current;if(U.target!==_||!RR.includes(U.key))return;U.preventDefault();let al=T().filter(nl=>!nl.disabled).map(nl=>nl.ref.current);Xy.includes(U.key)&&al.reverse(),qR(al)}),onBlur:ll(i.onBlur,U=>{U.currentTarget.contains(U.target)||(window.clearTimeout(S.current),x.current="")}),onPointerMove:ll(i.onPointerMove,oo(U=>{let v=U.target,A=J.current!==U.clientX;U.currentTarget.contains(v)&&A&&(D.current=U.clientX>J.current?"right":"left",J.current=U.clientX)}))})})})})})})});Vy.displayName=Zs;var KR="MenuGroup",EG=u.forwardRef((i,l)=>{let{__scopeMenu:t,...e}=i;return G.jsx(Pl.div,{role:"group",...e,ref:l})});EG.displayName=KR;var vR="MenuLabel",Ly=u.forwardRef((i,l)=>{let{__scopeMenu:t,...e}=i;return G.jsx(Pl.div,{...e,ref:l})});Ly.displayName=vR;var v0="MenuItem",xr="menu.itemSelect",Ru=u.forwardRef((i,l)=>{let{disabled:t=!1,onSelect:e,...s}=i,c=u.useRef(null),d=Xh(v0,i.__scopeMenu),n=kG(v0,i.__scopeMenu),Z=mt(l,c),b=u.useRef(!1),o=()=>{let m=c.current;if(!t&&m){let h=new CustomEvent(xr,{bubbles:!0,cancelable:!0});m.addEventListener(xr,W=>e==null?void 0:e(W),{once:!0}),mY(m,h),h.defaultPrevented?b.current=!1:d.onClose()}};return G.jsx(Iy,{...s,ref:Z,disabled:t,onClick:ll(i.onClick,o),onPointerDown:m=>{var h;(h=i.onPointerDown)==null||h.call(i,m),b.current=!0},onPointerUp:ll(i.onPointerUp,m=>{var h;b.current||((h=m.currentTarget)==null||h.click())}),onKeyDown:ll(i.onKeyDown,m=>{let h=n.searchRef.current!=="";t||h&&m.key===" "||cG.includes(m.key)&&(m.currentTarget.click(),m.preventDefault())})})});Ru.displayName=v0;var Iy=u.forwardRef((i,l)=>{let{__scopeMenu:t,disabled:e=!1,textValue:s,...c}=i,d=kG(v0,t),n=py(t),Z=u.useRef(null),b=mt(l,Z),[o,m]=u.useState(!1),[h,W]=u.useState("");return u.useEffect(()=>{let r=Z.current;r&&W((r.textContent??"").trim())},[c.children]),G.jsx(bo.ItemSlot,{scope:t,disabled:e,textValue:s??h,children:G.jsx(zR,{asChild:!0,...n,focusable:!e,children:G.jsx(Pl.div,{role:"menuitem","data-highlighted":o?"":void 0,"aria-disabled":e||void 0,"data-disabled":e?"":void 0,...c,ref:b,onPointerMove:ll(i.onPointerMove,oo(r=>{e?d.onItemLeave(r):(d.onItemEnter(r),r.defaultPrevented||r.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:ll(i.onPointerLeave,oo(r=>d.onItemLeave(r))),onFocus:ll(i.onFocus,()=>m(!0)),onBlur:ll(i.onBlur,()=>m(!1))})})})}),QR="MenuCheckboxItem",zy=u.forwardRef((i,l)=>{let{checked:t=!1,onCheckedChange:e,...s}=i;return G.jsx(gy,{scope:i.__scopeMenu,checked:t,children:G.jsx(Ru,{role:"menuitemcheckbox","aria-checked":Q0(t)?"mixed":t,...s,ref:l,"data-state":vG(t),onSelect:ll(s.onSelect,()=>e==null?void 0:e(Q0(t)?!0:!t),{checkForDefaultPrevented:!1})})})});zy.displayName=QR;var wy="MenuRadioGroup",[PR,HR]=un(wy,{value:void 0,onValueChange:()=>{}}),Ry=u.forwardRef((i,l)=>{let{value:t,onValueChange:e,...s}=i,c=Nc(e);return G.jsx(PR,{scope:i.__scopeMenu,value:t,onValueChange:c,children:G.jsx(EG,{...s,ref:l})})});Ry.displayName=wy;var Sy="MenuRadioItem",xy=u.forwardRef((i,l)=>{let{value:t,...e}=i,s=HR(Sy,i.__scopeMenu),c=t===s.value;return G.jsx(gy,{scope:i.__scopeMenu,checked:c,children:G.jsx(Ru,{role:"menuitemradio","aria-checked":c,...e,ref:l,"data-state":vG(c),onSelect:ll(e.onSelect,()=>{var d;return(d=s.onValueChange)==null?void 0:d.call(s,t)},{checkForDefaultPrevented:!1})})})});xy.displayName=Sy;
141var KG="MenuItemIndicator",[gy,fR]=un(KG,{checked:!1}),jy=u.forwardRef((i,l)=>{let{__scopeMenu:t,forceMount:e,...s}=i,c=fR(KG,t);return G.jsx(Ni,{present:e||Q0(c.checked)||c.checked===!0,children:G.jsx(Pl.span,{...s,ref:l,"data-state":vG(c.checked)})})});jy.displayName=KG;var BR="MenuSeparator",Dy=u.forwardRef((i,l)=>{let{__scopeMenu:t,...e}=i;return G.jsx(Pl.div,{role:"separator","aria-orientation":"horizontal",...e,ref:l})});Dy.displayName=BR;var AR="MenuArrow",Cy=u.forwardRef((i,l)=>{let{__scopeMenu:t,...e}=i;return G.jsx(kY,{...wu(t),...e,ref:l})});Cy.displayName=AR;var _R="MenuSub",[Tg,Jy]=un(_R),$b="MenuSubTrigger",Fy=u.forwardRef((i,l)=>{let t=Wn($b,i.__scopeMenu),e=Xh($b,i.__scopeMenu),s=Jy($b,i.__scopeMenu),c=kG($b,i.__scopeMenu),d=u.useRef(null),{pointerGraceTimerRef:n,onPointerGraceIntentChange:Z}=c,b={__scopeMenu:i.__scopeMenu},o=u.useCallback(()=>{d.current&&window.clearTimeout(d.current),d.current=null},[]);return u.useEffect(()=>o,[o]),u.useEffect(()=>{let m=n.current;return()=>{window.clearTimeout(m),Z(null)}},[n,Z]),G.jsx(FG,{asChild:!0,...b,children:G.jsx(Iy,{id:s.triggerId,"aria-haspopup":"menu","aria-expanded":t.open,"aria-controls":s.contentId,"data-state":Uy(t.open),...i,ref:Xu(l,s.onTriggerChange),onClick:m=>{var h;(h=i.onClick)==null||h.call(i,m),!(i.disabled||m.defaultPrevented)&&(m.currentTarget.focus(),t.open||t.onOpenChange(!0))},onPointerMove:ll(i.onPointerMove,oo(m=>{c.onItemEnter(m),!m.defaultPrevented&&!i.disabled&&!t.open&&!d.current&&(c.onPointerGraceIntentChange(null),d.current=window.setTimeout(()=>{t.onOpenChange(!0),o()},100))})),onPointerLeave:ll(i.onPointerLeave,oo(m=>{var W,r;o();let h=(W=t.content)==null?void 0:W.getBoundingClientRect();if(h){let N=(r=t.content)==null?void 0:r.dataset.side,M=N==="right",X=M?-5:5,y=h[M?"left":"right"],Y=h[M?"right":"left"];c.onPointerGraceIntentChange({area:[{x:m.clientX+X,y:m.clientY},{x:y,y:h.top},{x:Y,y:h.top},{x:Y,y:h.bottom},{x:y,y:h.bottom}],side:N}),window.clearTimeout(n.current),n.current=window.setTimeout(()=>c.onPointerGraceIntentChange(null),300)}else{if(c.onTriggerLeave(m),m.defaultPrevented)return;c.onPointerGraceIntentChange(null)}})),onKeyDown:ll(i.onKeyDown,m=>{var W;let h=c.searchRef.current!=="";i.disabled||h&&m.key===" "||SR[e.dir].includes(m.key)&&(t.onOpenChange(!0),(W=t.content)==null||W.focus(),m.preventDefault())})})})});Fy.displayName=$b;var Oy="MenuSubContent",ky=u.forwardRef((i,l)=>{let t=yy(Zs,i.__scopeMenu),{forceMount:e=t.forceMount,...s}=i,c=Wn(Zs,i.__scopeMenu),d=Xh(Zs,i.__scopeMenu),n=Jy(Oy,i.__scopeMenu),Z=u.useRef(null),b=mt(l,Z);return G.jsx(bo.Provider,{scope:i.__scopeMenu,children:G.jsx(Ni,{present:e||c.open,children:G.jsx(bo.Slot,{scope:i.__scopeMenu,children:G.jsx(UG,{id:n.contentId,"aria-labelledby":n.triggerId,...s,ref:b,align:"start",side:d.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:o=>{var m;d.isUsingKeyboardRef.current&&((m=Z.current)==null||m.focus()),o.preventDefault()},onCloseAutoFocus:o=>o.preventDefault(),onFocusOutside:ll(i.onFocusOutside,o=>{o.target!==n.trigger&&c.onOpenChange(!1)}),onEscapeKeyDown:ll(i.onEscapeKeyDown,o=>{d.onClose(),o.preventDefault()}),onKeyDown:ll(i.onKeyDown,o=>{var W;let m=o.currentTarget.contains(o.target),h=xR[d.dir].includes(o.key);m&&h&&(c.onOpenChange(!1),(W=n.trigger)==null||W.focus(),o.preventDefault())})})})})})});ky.displayName=Oy;function Uy(i){return i?"open":"closed"}function Q0(i){return i==="indeterminate"}function vG(i){return Q0(i)?"indeterminate":i?"checked":"unchecked"}function qR(i){let l=document.activeElement;for(let t of i)if(t===l||(t.focus(),document.activeElement!==l))return}function $R(i,l){return i.map((t,e)=>i[(l+e)%i.length])}function l3(i,l,t){let e=l.length>1&&Array.from(l).every(n=>n===l[0])?l[0]:l,s=t?i.indexOf(t):-1,c=$R(i,Math.max(s,0));e.length===1&&(c=c.filter(n=>n!==t));let d=c.find(n=>n.toLowerCase().startsWith(e.toLowerCase()));return d===t?void 0:d}function t3(i,l){let{x:t,y:e}=i,s=!1;for(let c=0,d=l.length-1;c<l.length;d=c++){let n=l[c],Z=l[d],b=n.x,o=n.y,m=Z.x,h=Z.y;o>e!=h>e&&t<(m-b)*(e-o)/(h-o)+b&&(s=!s)}return s}function e3(i,l){return l?t3({x:i.clientX,y:i.clientY},l):!1}function oo(i){return l=>l.pointerType==="mouse"?i(l):void 0}var s3=Yy,i3=FG,c3=Ty,d3=Vy,a3=EG,n3=Ly,Z3=Ru,b3=zy,o3=Ry,m3=xy,h3=jy,u3=Dy,W3=Cy,G3=Fy,N3=ky,Su="DropdownMenu",[r3]=wd(Su,[My]),Ze=My(),[X3,Ey]=r3(Su),Ky=i=>{let{__scopeDropdownMenu:l,children:t,dir:e,open:s,defaultOpen:c,onOpenChange:d,modal:n=!0}=i,Z=Ze(l),b=u.useRef(null),[o,m]=Wh({prop:s,defaultProp:c??!1,onChange:d,caller:Su});return G.jsx(X3,{scope:l,triggerId:sn(),triggerRef:b,contentId:sn(),open:o,onOpenChange:m,onOpenToggle:u.useCallback(()=>m(h=>!h),[m]),modal:n,children:G.jsx(s3,{...Z,open:o,onOpenChange:m,dir:e,modal:n,children:t})})};Ky.displayName=Su;var vy="DropdownMenuTrigger",Qy=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,disabled:e=!1,...s}=i,c=Ey(vy,t);return G.jsx(i3,{asChild:!0,...Ze(t),children:G.jsx(Pl.button,{type:"button",id:c.triggerId,"aria-haspopup":"menu","aria-expanded":c.open,"aria-controls":c.open?c.c
141ontentId:void 0,"data-state":c.open?"open":"closed","data-disabled":e?"":void 0,disabled:e,...s,ref:Xu(l,c.triggerRef),onPointerDown:ll(i.onPointerDown,d=>{!e&&d.button===0&&d.ctrlKey===!1&&(c.onOpenToggle(),c.open||d.preventDefault())}),onKeyDown:ll(i.onKeyDown,d=>{e||(["Enter"," "].includes(d.key)&&c.onOpenToggle(),d.key==="ArrowDown"&&c.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(d.key)&&d.preventDefault())})})})});Qy.displayName=vy;var M3="DropdownMenuPortal",Py=i=>{let{__scopeDropdownMenu:l,...t}=i;return G.jsx(c3,{...Ze(l),...t})};Py.displayName=M3;var Hy="DropdownMenuContent",fy=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i,s=Ey(Hy,t),c=Ze(t),d=u.useRef(!1);return G.jsx(d3,{id:s.contentId,"aria-labelledby":s.triggerId,...c,...e,ref:l,onCloseAutoFocus:ll(i.onCloseAutoFocus,n=>{var Z;d.current||((Z=s.triggerRef.current)==null||Z.focus()),d.current=!1,n.preventDefault()}),onInteractOutside:ll(i.onInteractOutside,n=>{let Z=n.detail.originalEvent,b=Z.button===0&&Z.ctrlKey===!0,o=Z.button===2||b;(!s.modal||o)&&(d.current=!0)}),style:{...i.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});fy.displayName=Hy;var p3="DropdownMenuGroup",By=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i;return G.jsx(a3,{...Ze(t),...e,ref:l})});By.displayName=p3;var Y3="DropdownMenuLabel",y3=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i;return G.jsx(n3,{...Ze(t),...e,ref:l})});y3.displayName=Y3;var T3="DropdownMenuItem",Ay=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i;return G.jsx(Z3,{...Ze(t),...e,ref:l})});Ay.displayName=T3;var V3="DropdownMenuCheckboxItem",L3=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i;return G.jsx(b3,{...Ze(t),...e,ref:l})});L3.displayName=V3;var I3="DropdownMenuRadioGroup",z3=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i;return G.jsx(o3,{...Ze(t),...e,ref:l})});z3.displayName=I3;var w3="DropdownMenuRadioItem",R3=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i;return G.jsx(m3,{...Ze(t),...e,ref:l})});R3.displayName=w3;var S3="DropdownMenuItemIndicator",x3=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i;return G.jsx(h3,{...Ze(t),...e,ref:l})});x3.displayName=S3;var g3="DropdownMenuSeparator",_y=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i;return G.jsx(u3,{...Ze(t),...e,ref:l})});_y.displayName=g3;var j3="DropdownMenuArrow",D3=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i;return G.jsx(W3,{...Ze(t),...e,ref:l})});D3.displayName=j3;var C3="DropdownMenuSubTrigger",J3=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i;return G.jsx(G3,{...Ze(t),...e,ref:l})});J3.displayName=C3;var F3="DropdownMenuSubContent",O3=u.forwardRef((i,l)=>{let{__scopeDropdownMenu:t,...e}=i;return G.jsx(N3,{...Ze(t),...e,ref:l,style:{...i.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});O3.displayName=F3;var k3=Ky,U3=Qy,E3=Py,K3=fy,Ld=By,v3=Ay,Q3=_y,P3={"rp-dropdown-content":"_rp-dropdown-content_1vzkq_1"},QG=i=>{let{triggerComponent:l,children:t,container:e,className:s,open:c,onOpenChange:d,...n}=i;return G.jsxs(k3,{modal:!1,open:c,onOpenChange:d,children:[G.jsx(U3,{asChild:!0,children:l}),G.jsx(E3,{container:e,children:G.jsx(K3,{sideOffset:8,align:"end",...n,className:xl(P3["rp-dropdown-content"],s),children:t})})]})},dG=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M8 2C6.71442 2 5.45772 2.38122 4.3888 3.09545C3.31988 3.80968 2.48676 4.82484 1.99479 6.01256C1.50282 7.20028 1.37409 8.50721 1.6249 9.76809C1.8757 11.029 2.49477 12.1872 3.40381 13.0962C4.31285 14.0052 5.47104 14.6243 6.73192 14.8751C7.99279 15.1259 9.29973 14.9972 10.4874 14.5052C11.6752 14.0132 12.6903 13.1801 13.4046 12.1112C14.1188 11.0423 14.5 9.78558 14.5 8.5C14.4982 6.77665 13.8128 5.12441 12.5942 3.90582C11.3756 2.68722 9.72335 2.00182 8 2ZM8 
14114C6.91221 14 5.84884 13.6774 4.94437 13.0731C4.0399 12.4687 3.33495 11.6098 2.91867 10.6048C2.50238 9.59977 2.39347 8.4939 2.60568 7.427C2.8179 6.36011 3.34173 5.3801 4.11092 4.61091C4.8801 3.84172 5.86011 3.3179 6.92701 3.10568C7.9939 2.89346 9.09977 3.00238 10.1048 3.41866C11.1098 3.83494 11.9687 4.53989 12.5731 5.44436C13.1774 6.34883 13.5 7.4122 13.5 8.5C13.4983 9.95818 12.9184 11.3562 11.8873 12.3873C10.8562 13.4184 9.45819 13.9983 8 14ZM9 11.5C9 11.6326 8.94732 11.7598 8.85356 11.8536C8.75979 11.9473 8.63261 12 8.5 12C8.23479 12 7.98043 11.8946 7.7929 11.7071C7.60536 11.5196 7.5 11.2652 7.5 11V8.5C7.36739 8.5 7.24022 8.44732 7.14645 8.35355C7.05268 8.25979 7 8.13261 7 8C7 7.86739 7.05268 7.74021 7.14645 7.64645C7.24022 7.55268 7.36739 7.5 7.5 7.5C7.76522 7.5 8.01957 7.60536 8.20711 7.79289C8.39465 7.98043 8.5 8.23478 8.5 8.5V11C8.63261 11 8.75979 11.0527 8.85356 11.1464C8.94732 11.2402 9 11.3674 9 11.5ZM7 5.75C7 5.60166 7.04399 5.45666 7.1264 5.33332C7.20881 5.20999 7.32595 5.11386 7.46299 5.05709C7.60003 5.00032 7.75083 4.98547 7.89632 5.01441C8.04181 5.04335 8.17544 5.11478 8.28033 5.21967C8.38522 5.32456 8.45665 5.4582 8.48559 5.60368C8.51453 5.74917 8.49968 5.89997 8.44291 6.03701C8.38615 6.17406 8.29002 6.29119 8.16668 6.3736C8.04334 6.45601 7.89834 6.5 7.75 6.5C7.55109 6.5 7.36032 6.42098 7.21967 6.28033C7.07902 6.13968 7 5.94891 7 5.75Z",fill:"currentColor"})}),qy=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M17.9419 17.0577L14.0302 13.1468C15.1639 11.7856 15.7293 10.0398 15.6086 8.27238C15.488 6.50499 14.6906 4.85217 13.3823 3.65772C12.074 2.46328 10.3557 1.8192 8.58462 1.85944C6.81357 1.89969 5.12622 2.62118 3.87358 3.87383C2.62094 5.12647 1.89945 6.81382 1.8592 8.58486C1.81895 10.3559 2.46304 12.0743 3.65748 13.3825C4.85192 14.6908 6.50475 15.4882 8.27214 15.6089C10.0395 15.7295 11.7854 15.1642 13.1466 14.0304L17.0575 17.9421C17.1156 18.0002 17.1845 18.0463 17.2604 18.0777C17.3363 18.1091 17.4176 18.1253 17.4997 18.1253C17.5818 18.1253 17.6631 18.1091 17.739 18.0777C17.8149 18.0463 17.8838 18.0002 17.9419 17.9421C17.9999 17.8841 18.046 17.8151 18.0774 17.7392C18.1089 17.6634 18.125 17.5821 18.125 17.4999C18.125 17.4178 18.1089 17.3365 18.0774 17.2606C18.046 17.1848 17.9999 17.1158 17.9419 17.0577ZM3.12469 8.74993C3.12469 7.63741 3.45459 6.54988 4.07267 5.62485C4.69076 4.69982 5.56926 3.97885 6.5971 3.55311C7.62493 3.12737 8.75593 3.01598 9.84707 3.23302C10.9382 3.45006 11.9405 3.98579 12.7272 4.77246C13.5138 5.55913 14.0496 6.56141 14.2666 7.65255C14.4837 8.74369 14.3723 9.87469 13.9465 10.9025C13.5208 11.9304 12.7998 12.8089 11.8748 13.427C10.9497 14.045 9.86221 14.3749 8.74969 14.3749C7.25836 14.3733 5.82858 13.7801 4.77404 12.7256C3.71951 11.6711 3.12634 10.2413 3.12469 8.74993Z",fill:"currentColor"})}),qt={"rp-search-tool-content":"_rp-search-tool-content_t0ih3_1","rp-search-tool-input":"_rp-search-tool-input_t0ih3_10","rp-search-tool-input-icon":"_rp-search-tool-input-icon_t0ih3_17","rp-search-tool-controls":"_rp-search-tool-controls_t0ih3_27","rp-search-tool-input-wrapper":"_rp-search-tool-input-wrapper_t0ih3_35","rp-search-tool-input-checkboxes":"_rp-search-tool-input-checkboxes_t0ih3_41","rp-search-tool-input-clear":"_rp-search-tool-input-clear_t0ih3_46","rp-search-input":"_rp-search-input_t0ih3_60","rp-search-icon-info":"_rp-search-icon-info_t0ih3_66","rp-search-loader-icon":"_rp-search-loader-icon_t0ih3_75","rp-search-tool-result-navigator":"_rp-search-tool-result-navigator_t0ih3_80"},mc=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M14.354 5.35372L6.35403 13.3537C6.30759 13.4002 6.25245 13.4371 6.19175 13.4623C6.13105 13.4874 6.06599 13.5004 6.00028 13.5004C5.93457 13.5004 5.86951 13.4874 5.80881 13.4623C5.74811 13.4371 5.69296 13.4002 5.64653 13.3537L2.14653 9.85372C2.05271 9.7599 2 9.63265 2 9.49997C2 9.36729 2.05271 9.24004 2.14653 9.14622C2.24035 9.0524 2.3676 8.99969 2.50028 8.99969C2.63296 8.99969 2.76021 9.0524 2.85403 9.14622L6.00028 12.2931L13.6465 4.64622C13.7403 4.5524 13.8676 4.49969 14.0003 4.49969C14.133 4.49969 14.2602 4.5524 14.354 4.64622C14.4478 4.74004 14.5006 4.86729 14.5006 4.99997C14.5006 5.13265 14.4478 5.2599 14.354 5.35372Z",fill:"currentColor"})});function H3(i){let l=u.useRef({value:i,previous:i});return u.useMemo(()=>(l.current.value!==i&&(l.current.previous=l.current.value,l.current.value=i),l.current.previous),[i])}var xu="Checkbox",[f3]=wd(xu),[B3,PG]=f3(xu);function A3(i){let{__scopeCheckbox:l,checked:t,children:e,defaultChecked:s,disabled:c,form:d,name:n,onCheckedChange:Z,required:b,value:o="on",internal_do_not_use_render:m}=i,[h,W]=Wh({prop:t,defaultProp:s??!1,onChange:Z,caller:xu}),[r,N]=u.useState(null),[M,X]=u.useState(null),y=u.useRef(!1),Y=r?!!d||!!r.closest("form"):!0,T={checked:h,disabled:c,setChecked:W,control:r,setControl:N,name:n,form:d,value:o,hasConsumerStoppedPropagationRef:y,required:b,defaultChecked:pd(s)?!1:s,isFormControl:Y,bubbleInput:M,setBubbleInput:X};return G.jsx(B3,{scope:l,...T,children:_3(m)?m(T):e})}var $y="CheckboxTrigger",lT=u.forwardRef(({__scopeCheckbox:i,onKeyDown:l,onClick:t,...e},s)=>{let{control:c,value:d,disabled:n,checked:Z,required:b,setControl:o,setChecked:m,hasConsumerStoppedPropagationRef:h,isFormControl:W,bubbleInput:r}=PG($y,i),N=mt(s,o),M=u.useRef(Z);return u.useEffect(()=>{let X=c==null?void 0:c.form;if(X){let y=()=>m(M.current);return X.addEventListener("reset",y),()=>X.removeEventListener("reset",y)}},[c,m]),G.jsx(Pl.button,{type:"button",role:"checkbox","aria-checked":pd(Z)?"mixed":Z,"aria-required":b,"data-state":dT(Z),"data-disabled":n?"":void 0,disabled:n,value:d,...e,ref:N,onKeyDown:ll(l,X=>{X.key==="Enter"&&X.preventDefault()}),onClick:ll(t,X=>{m(y=>pd(y)?!0:!y),r&&W&&(h.current=X.isPropagationStopped(),h.current||X.stopPropagation())})})});lT.displayName=$y;var tT=u.forwardRef((i,l)=>{let{__scopeCheckbox:t,name:e,checked:s,defaultChecked:c,required:d,disabled:n,value:Z,onCheckedChange:b,form:o,...m}=i;return G.jsx(A3,{__scopeCheckbox:t,checked:s,defaultChecked:c,disabled:n,required:d,onCheckedChange:b,name:e,form:o,value:Z,internal_do_not_use_render:({isFormControl:h})=>G.jsxs(G.Fragment,{children:[G.jsx(lT,{...m,ref:l,__scopeCheckbox:t}),h&&G.jsx(cT,{__scopeCheckbox:t})]})})});tT.displayName=xu;var eT="CheckboxIndicator",sT=u.forwardRef((i,l)=>{let{__scopeCheckbox:t,forceMount:e,...s}=i,c=PG(eT,t);return G.jsx(Ni,{present:e||pd(c.checked)||c.checked===!0,children:G.jsx(Pl.span,{"data-state":dT(c.checked),"data-disabled":c.disabled?"":void 0,...s,ref:l,style:{pointerEvents:"none",...i.style}})})});sT.displayName=eT;var iT="CheckboxBubbleInput",cT=u.forwardRef(({__scopeCheckbox:i,...l},t)=>{let{control:e,hasConsumerStoppedPropagationRef:s,checked:c,defaultChecked:d,required:n,disabled:Z,name:b,value:o,form:m,bubbleInput:h,setBubbleInput:W}=PG(iT,i),r=mt(t,W),N=H3(c),M=WY(e);u.useEffect(()=>{let y=h;if(!y)return;let Y=window.HTMLInputElement.prototype,T=Object.getOwnPropertyDescriptor(Y,"checked").set,V=!s.current;if(N!==c&&T){let I=new Event("click",{bubbles:V});y.indeterminate=pd(c),T.call(y,pd(c)?!1:c),y.dispatchEvent(I)}},[h,N,c,s]);let X=u.useRef(pd(c)?!1:c);return G.jsx(Pl.input,{type:"checkbox","aria-hidden":!0,defaultChecked:d??X.current,required:n,disabled:Z,name:b,value:o,form:m,...l,tabIndex:-1,ref:r,style:{...l.style,...M,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});
141cT.displayName=iT;function _3(i){return typeof i=="function"}function pd(i){return i==="indeterminate"}function dT(i){return pd(i)?"indeterminate":i?"checked":"unchecked"}var h2={"rp-checkbox":"_rp-checkbox_1vwg8_1","rp-checkbox-indicator":"_rp-checkbox-indicator_1vwg8_25"},gr=({children:i,value:l,name:t,onChange:e,tabIndex:s,"aria-label":c})=>{let d=c?{"aria-label":c}:{};return G.jsxs("div",{style:{display:"flex",alignItems:"center",position:"relative"},children:[G.jsx(tT,{tabIndex:s,className:h2["rp-checkbox"],checked:l,id:t,onCheckedChange:e,role:"checkbox","aria-checked":l,...d,children:G.jsx(sT,{className:h2["rp-checkbox-indicator"],"aria-hidden":"true",children:G.jsx(mc,{})})}),G.jsx("label",{className:h2["rp-checkbox-label"],htmlFor:t,children:i})]})},q3=i=>G.jsxs("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[G.jsx("g",{clipPath:"url(#clip0_1961_3837)",children:G.jsx("path",{d:"M6 0.75C3.10078 0.75 0.75 3.10078 0.75 6C0.75 8.89922 3.10078 11.25 6 11.25C8.89922 11.25 11.25 8.89922 11.25 6C11.25 3.10078 8.89922 0.75 6 0.75ZM7.93828 7.99453L7.16484 7.99102L6 6.60234L4.83633 7.98984L4.06172 7.99336C4.01016 7.99336 3.96797 7.95234 3.96797 7.89961C3.96797 7.87734 3.97617 7.85625 3.99023 7.83867L5.51484 6.02227L3.99023 4.20703C3.97607 4.18986 3.96822 4.16835 3.96797 4.14609C3.96797 4.09453 4.01016 4.05234 4.06172 4.05234L4.83633 4.05586L6 5.44453L7.16367 4.05703L7.93711 4.05352C7.98867 4.05352 8.03086 4.09453 8.03086 4.14727C8.03086 4.16953 8.02266 4.19063 8.00859 4.2082L6.48633 6.02344L8.00977 7.83984C8.02383 7.85742 8.03203 7.87852 8.03203 7.90078C8.03203 7.95234 7.98984 7.99453 7.93828 7.99453Z",fill:"currentColor"})}),G.jsx("defs",{children:G.jsx("clipPath",{id:"clip0_1961_3837",children:G.jsx("rect",{width:"12",height:"12",fill:"white"})})})]}),mo=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M16.692 12.9422C16.634 13.0003 16.5651 13.0464 16.4892 13.0779C16.4133 13.1093 16.332 13.1255 16.2499 13.1255C16.1677 13.1255 16.0864 13.1093 16.0105 13.0779C15.9346 13.0464 15.8657 13.0003 15.8077 12.9422L9.99986 7.1336L4.19205 12.9422C4.07477 13.0595 3.91571 13.1254 3.74986 13.1254C3.58401 13.1254 3.42495 13.0595 3.30767 12.9422C3.1904 12.8249 3.12451 12.6659 3.12451 12.5C3.12451 12.3342 3.1904 12.1751 3.30767 12.0578L9.55767 5.80782C9.61572 5.74971 9.68465 5.70361 9.76052 5.67215C9.8364 5.6407 9.91772 5.62451 9.99986 5.62451C10.082 5.62451 10.1633 5.6407 10.2392 5.67215C10.3151 5.70361 10.384 5.74971 10.442 5.80782L16.692 12.0578C16.7502 12.1159 16.7963 12.1848 16.8277 12.2607C16.8592 12.3365 16.8754 12.4179 16.8754 12.5C16.8754 12.5821 16.8592 12.6635 16.8277 12.7393C16.7963 12.8152 16.7502 12.8841 16.692 12.9422Z",fill:"currentColor"})}),jr=()=>{let{totalMatches:i,nextMatch:l,prevMatch:t}=MG(),{localeMessages:e}=_l(),s=!i||i===0;return G.jsxs(G.Fragment,{children:[G.jsx(dl,{content:e==null?void 0:e.searchPrevTooltip,className:qt["rp-search-tool-result-navigator"],children:G.jsx($t,{tabIndex:0,onClick:t,"aria-label":e==null?void 0:e.searchPrevTooltip,"aria-disabled":s,children:G.jsx(mo,{className:qt["rp-search-tool-input-icon"],"aria-hidden":"true"})})}),G.jsx(dl,{content:e==null?void 0:e.searchNextTooltip,className:qt["rp-search-tool-result-navigator"],children:G.jsx($t,{tabIndex:0,onClick:l,"aria-label":e==null?void 0:e.searchNextTooltip,"aria-disabled":s,children:G.jsx(mo,{style:{transform:"rotate(180deg"},className:qt["rp-search-tool-input-icon"],"aria-hidden":"true"})})})]})},aT=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M16.0673 15.1829C16.1254 15.241 16.1714 15.3099 16.2028 15.3858C16.2343 15.4617 16.2505 15.543 16.2505 15.6251C16.2505 15.7072 16.2343 15.7885 16.2028 15.8644C16.1714 15.9403 16.1254 16.0092 16.0673 16.0673C16.0092 16.1254 15.9403 16.1714 15.8644 16.2028C15.7885 16.2343 15.7072 16.2505 15.6251 16.2505C15.543 16.2505 15.4617 16.2343 15.3858 16.2028C15.3099 16.1714 15.241 16.1254 15.1829 16.0673L10.0001 10.8837L4.81729 16.0673C4.70002 16.1846 4.54096 16.2505 4.3751 16.2505C4.20925 16.2505 4.05019 16.1846 3.93292 16.0673C3.81564 15.95 3.74976 15.791 3.74976 15.6251C3.74976 15.4593 3.81564 15.3002 3.93292 15.1829L9.11651 10.0001L3.93292 4.81729C3.81564 4.70002 3.74976 4.54096 3.74976 4.3751C3.74976 4.20925 3.81564 4.05019 3.93292 3.93292C4.05019 3.81564 4.20925 3.74976 4.3751 3.74976C4.54096 3.74976 4.70002 3.81564 4.81729 3.93292L10.0001 9.11651L15.1829 3.93292C15.3002 3.81564 15.4593 3.74976 15.6251 3.74976C15.791 3.74976 15.95 3.81564 16.0673 3.93292C16.1846 4.05019 16.2505 4.20925 16.2505 4.3751C16.2505 4.54096 16.1846 4.70002 16.0673 4.81729L10.8837 10.0001L16.0673 15.1829Z",fill:"currentColor"})}),Dr=({onKeyPress:i,handleClose:l})=>{let{localeMessages:t}=_l();return G.jsx(dl,{content:t==null?void 0:t.searchCloseButtonTooltip,children:G.jsx($t,{tabIndex:0,onKeyDown:i,"aria-label":t==null?void 0:t.searchCloseButtonTooltip,children:G.jsx(aT,{onClick:l,className:qt["rp-search-tool-input-icon"]})})})},$3=()=>{let{searchIcon:i}=Kl(),{searchIcon:l}=El();return i??l??G.jsx(qy,{})},lS=()=>{let{searchClearIcon:i}=Kl(),{searchClearIcon:l}=El();return i??l??G.jsx(q3,{})},tS=({icon:i})=>{let{container:l}=Pe(),[t,e]=u.useState(!1),s=u.useRef(null),c=u.useRef(t);c.current=t;let{pdf:d}=at(),[n,Z]=u.useState(null),{searchOptions:b,setSearchOptions:o,loading:m,setSearch:h,totalMatches:W,currentMatchPosition:r,nextMatch:N,prevMatch:M,search:X}=MG(),{searchTool:y=!0}=Vt(),{searchTool:Y=!0}=jt(),[T,V]=u.useState(X),{localeMessages:I}=_l(),{isSmallScreen:w}=js(),[R,S]=u.useState(null),[x,g]=u.useState(!1),C=u.useCallback(()=>{c.current&&(h(""),V("")),e(B=>!B)},[h]),D=u.useCallback(()=>{h(""),V(""),e(!1),requestAnimationFrame(()=>{var B;
141(B=s.current)==null||B.focus()})},[h]),J=B=>{let sl=B.key==="Enter",Tl=B.key===" ";(sl||Tl)&&D()},k=u.useCallback(B=>{B.key==="Escape"&&t&&D()},[t]),O=u.useCallback(B=>{B.shiftKey&&B.key==="Enter"?M():B.key==="Enter"&&X!==T?h(T):B.key==="Enter"&&N()},[T,M,N,h,X]);u.useEffect(()=>{V(X)},[X]),u.useEffect(()=>{X&&d&&g(!0)},[X,d]),u.useEffect(()=>{X&&X.trim()!==""&&(V(X),h(X))},[]),u.useEffect(()=>(window.addEventListener("keydown",k),()=>{window.removeEventListener("keydown",k)}),[k]),u.useEffect(()=>{n&&setTimeout(()=>{n.focus()},0)},[n]);let j=u.useCallback(B=>{V(B.target.value)},[]),F=u.useCallback(()=>{V(""),h("")},[h]),U=u.useMemo(()=>`${r} / ${W}`,[r,W]),{wholeWords:v,matchCase:A}=u.useMemo(()=>b,[b]),q=u.useCallback(B=>{o(sl=>({...sl,matchCase:B}))},[o]),_=u.useCallback(B=>{o(sl=>({...sl,wholeWords:B}))},[o]);u.useEffect(()=>{d&&x&&D()},[d,D]);let al=u.useMemo(()=>(R==null?void 0:R.querySelectorAll('[tabindex]:not([tabindex="-1"])'))||[],[R]),nl=u.useCallback(B=>{if(B.key==="Tab"){let sl=document.activeElement,Tl=-1;al.forEach((ul,nt)=>{ul===sl&&(Tl=nt)});let vl=Tl+1;B.shiftKey&&(vl=Tl-1);let Hl=al[vl];if(Hl)Hl.focus();else if(vl>al.length-1){let ul=al[0];ul&&ul.focus()}else{let ul=al[al.length-1];ul&&ul.focus()}}},[al]);return!y||!Y?null:G.jsx(G.Fragment,{children:G.jsx(QG,{open:t,container:l,side:"bottom",align:"start",tabIndex:0,avoidCollisions:!1,triggerComponent:G.jsx(dl,{content:I==null?void 0:I.searchButtonTooltip,children:G.jsx($t,{ref:s,active:t,onClick:C,"aria-label":I==null?void 0:I.searchButtonTooltip,"aria-expanded":t,"aria-haspopup":"dialog",children:i||G.jsx($3,{})})}),children:G.jsxs("div",{ref:S,className:qt["rp-search-tool-content"],tabIndex:-1,onKeyDown:nl,role:"dialog","aria-label":(I==null?void 0:I.searchInputTooltip)||"Search dialog",children:[G.jsxs("div",{className:qt["rp-search-tool-input-wrapper"],children:[G.jsxs("div",{className:qt["rp-search-tool-input"],children:[G.jsx(dl,{content:I==null?void 0:I.searchInputTooltip,children:G.jsx(AY,{value:T,onKeyDown:O,onChange:j,icon:G.jsx(qy,{}),placeholder:I==null?void 0:I.searchInputPlaceholder,className:qt["rp-search-input"],ref:Z,id:"search-input",name:"search-input",label:(I==null?void 0:I.searchInputTooltip)||"Search",tabIndex:0,"aria-label":(I==null?void 0:I.searchInputTooltip)||(I==null?void 0:I.searchInputPlaceholder),"aria-describedby":"search-results-count",children:!!T&&G.jsx("span",{className:qt["rp-search-tool-input-clear"],onClick:F,role:"button",tabIndex:0,"aria-label":(I==null?void 0:I.searchCloseButtonTooltip)||"Clear search",onKeyDown:B=>{(B.key==="Enter"||B.key===" ")&&(B.preventDefault(),F())},children:G.jsx(lS,{})})})}),m?G.jsx("span",{"aria-live":"polite","aria-label":"Searching",children:G.jsx(TG,{className:qt["rp-search-loader-icon"],"aria-hidden":"true"})}):G.jsx("span",{id:"search-results-count","aria-live":"polite",children:U}),w&&G.jsx("div",{className:qt["rp-search-tool-controls"],children:G.jsx(Dr,{onKeyPress:J,handleClose:D})})]}),G.jsxs("div",{className:qt["rp-search-tool-input-checkboxes"],children:[w&&G.jsx(jr,{}),G.jsx(gr,{tabIndex:0,name:"matchCase",value:A,onChange:q,"aria-label":I==null?void 0:I.searchMatchCaseLabel,children:I==null?void 0:I.searchMatchCaseLabel}),!w&&G.jsx(dl,{content:I==null?void 0:I.searchMatchCaseTooltip,children:G.jsx("div",{className:qt["rp-search-icon-info"],tabIndex:0,children:G.jsx(dG,{})})}),G.jsx(gr,{tabIndex:0,name:"wholeWord",value:v,onChange:_,"aria-label":I==null?void 0:I.searchWholeWordsLabel,children:I==null?void 0:I.searchWholeWordsLabel}),!w&&G.jsx(dl,{content:I==null?void 0:I.searchWholeWordsTooltip,children:G.jsx("div",{tabIndex:0,className:qt["rp-search-icon-info"],children:G.jsx(dG,{})})})]})]}),!w&&G.jsxs("div",{className:qt["rp-search-tool-controls"],children:[G.jsx(jr,{}),G.jsx(Dr,{onKeyPress:J,handleClose:D})]})]})})})},wb={"rp-toolbar-content":"_rp-toolbar-content_sz31z_1","rp-toolbar-wrapper":"_rp-toolbar-wrapper_sz31z_10","rp-toolbar-start":"_rp-toolbar-start_sz31z_33","rp-toolbar-middle":"_rp-toolbar-middle_sz31z_39","rp-toolbar-end":"_rp-toolbar-end_sz31z_46"}
141,u2={"rp-paginate":"_rp-paginate_1yinm_1","rp-page-input":"_rp-page-input_1yinm_6","rp-total-page":"_rp-total-page_1yinm_29"},eS=()=>{let{prevIcon:i}=Kl(),{prevIcon:l}=El();return i||l||G.jsx(mo,{})},sS=()=>{let{nextIcon:i}=Kl(),{nextIcon:l}=El();return i||l||G.jsx(mo,{style:{transform:"rotate(180deg"}})},iS=()=>{let{focusedPage:i,totalPages:l,setFocusedPage:t,nextPage:e,prevPage:s,goToPage:c}=Xe(),[d,n]=u.useState(i.toString()),{pageNavigationTool:Z=!0}=Vt(),{pageNavigationTool:b=!0}=jt(),{isSmallScreen:o}=js(),{viewMode:m}=Gi(),{scrollMode:h}=Wi(),{localeMessages:W}=_l();u.useEffect(()=>{n(i.toString())},[i]);let r=u.useCallback(Y=>{let T=Y.target.value;n(T)},[]),N=u.useCallback(async()=>{let Y=c(d);Y.success||n(Y.currentPage.toString())},[c,d,l]),M=u.useCallback(()=>{n(i.toString())},[i]),X=u.useCallback(Y=>{Y.key==="Enter"&&N()},[N]),y=u.useMemo(()=>m===Yl.DUAL_PAGE&&h===kl.PAGE_SCROLLING&&i===l-1||i===l,[i,l,m,h]);return!Z||!b?null:typeof Z=="boolean"?typeof b=="boolean"?G.jsxs("div",{className:u2["rp-paginate"],children:[!o&&G.jsx(dl,{content:W==null?void 0:W.previousPageTooltip,children:G.jsx($t,{onClick:s,"aria-label":W==null?void 0:W.previousPageTooltip,"aria-disabled":i===1,children:G.jsx(eS,{})})}),G.jsx(dl,{content:W==null?void 0:W.currentPageTooltip,children:G.jsx(AY,{onKeyDown:X,onBlur:M,onChange:r,value:d,className:u2["rp-page-input"],id:"page-input",name:"page-input",label:(W==null?void 0:W.currentPageTooltip)||"Current page","aria-label":W==null?void 0:W.currentPageTooltip,"aria-valuemin":1,"aria-valuemax":l,"aria-valuenow":parseInt(d)||i,type:"number",min:1,max:l})}),G.jsxs("span",{className:u2["rp-total-page"],children:["/",l]}),!o&&G.jsx(dl,{content:W==null?void 0:W.nextPageTooltip,children:G.jsx($t,{onClick:e,"aria-label":W==null?void 0:W.nextPageTooltip,"aria-disabled":y,children:G.jsx(sS,{})})})]}):G.jsx(b,{total:l,current:i,nextPage:e,prevPage:s,goToPage:c,changePage:t}):G.jsx(Z,{total:l,current:i,nextPage:e,prevPage:s,goToPage:c,changePage:t})},cS=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("g",{id:"icon - pdf",children:G.jsx("path",{id:"Vector",d:"M16.6922 6.43281L12.3172 2.05781C12.2591 1.99979 12.1902 1.95378 12.1143 1.92241C12.0384 1.89105 11.9571 1.87494 11.875 1.875H4.375C4.04348 1.875 3.72554 2.0067 3.49112 2.24112C3.2567 2.47554 3.125 2.79348 3.125 3.125V16.875C3.125 17.2065 3.2567 17.5245 3.49112 17.7589C3.72554 17.9933 4.04348 18.125 4.375 18.125H15.625C15.9565 18.125 16.2745 17.9933 16.5089 17.7589C16.7433 17.5245 16.875 17.2065 16.875 16.875V6.875C16.8751 6.7929 16.859 6.71159 16.8276 6.63572C16.7962 6.55985 16.7502 6.4909 16.6922 6.43281ZM12.5 4.00859L14.7414 6.25H12.5V4.00859ZM15.625 16.875H4.375V3.125H11.25V6.875C11.25 7.04076 11.3158 7.19973 11.4331 7.31694C11.5503 7.43415 11.7092 7.5 11.875 7.5H15.625V16.875ZM12.5 11.875C12.5 12.0408 12.4342 12.1997 12.3169 12.3169C12.1997 12.4342 12.0408 12.5 11.875 12.5H10.625V13.75C10.625 13.9158 10.5592 14.0747 10.4419 14.1919C10.3247 14.3092 10.1658 14.375 10 14.375C9.83424 14.375 9.67527 14.3092 9.55806 14.1919C9.44085 14.0747 9.375 13.9158 9.375 13.75V12.5H8.125C7.95924 12.5 7.80027 12.4342 7.68306 12.3169C7.56585 12.1997 7.5 12.0408 7.5 11.875C7.5 11.7092 7.56585 11.5503 7.68306 11.4331C7.80027 11.3158 7.95924 11.25 8.125 11.25H9.375V10C9.375 9.83424 9.44085 9.67527 9.55806 9.55806C9.67527 9.44085 9.83424 9.375 10 9.375C10.1658 9.375 10.3247 9.44085 10.4419 9.55806C10.5592 9.67527 10.625 9.83424 10.625 10V11.25H11.875C12.0408 11.25 12.1997 11.3158 12.3169 11.4331C12.4342 11.5503 12.5 11.7092 12.5 11.875Z",fill:"currentColor"})})}),dS={"rp-menu-item":"_rp-menu-item_cu12j_1"},ot=i=>{let{children:l,className:t,...e}=i;return G.jsx(v3,{...e,tabIndex:0,className:xl(dS["rp-menu-item"],t),children:l})},nT=()=>{let{openFileIcon:i}=Kl(),{openFileIcon:l}=El();return i||l||G.jsx(cS,{})},ZT=({children:i,className:l,localeMessages:t})=>G.jsx(dl,{className:l,content:t==null?void 0:t.openLocalFileTooltip,children:i}),aS=({onFileChange:i,localeMessages:l})=>G.jsx(ot,{onClick:i,children:G.jsxs(ZT,{className:"rp-menu-item",localeMessages:l,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(nT,{})}),l==null?void 0:l.openLocalFileLabel]})}),nS=({onFileChange:i,localeMessages:l})=>G.jsx(ZT,{localeMessages:l,children:G.jsx($t,{onClick:i,"aria-label":l==null?void 0:l.openLocalFileTooltip,children:G.jsx(nT,{})})}),bT=()=>{let{openFileTool:i=!0}=Vt(),{openFileTool:l=!0}=jt(),{openFile:t}=CV(),{isSmallScreen:e}=js(),{localeMessages:s}=_l(),c=s==null?void 0:s.openLocalFileTooltip;return!i||!l?null:e?G.jsx(aS,{onFileChange:t,localeMessages:s}):typeof i=="function"?G.jsx(dl,{content:c,children:G.jsx(i,{openFile:t})}):typeof l=="function"?G.jsx(dl,{content:c,children:G.jsx(l,{openFile:t})}):G.jsx(nS,{onFileChange:t,localeMessages:s})},ZS=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M18.2451 11.1117C18.165 11.0313 18.0644 10.9743 17.9543 10.9468C17.8442 10.9193 17.7287 10.9222 17.6201 10.9554C16.4284 11.3157 15.1612 11.3459 13.9537 11.0428C12.74
14161 10.7397 11.6434 10.1147 10.7631 9.23436C9.88272 8.354 9.2577 7.2513 8.95462 6.04374C8.65153 4.83619 8.68174 3.56903 9.04202 2.37729C9.07546 2.26869 9.07866 2.15304 9.05128 2.04276C9.0239 1.93249 8.96698 1.83176 8.88664 1.75142C8.80629 1.67107 8.70557 1.61415 8.59529 1.58677C8.48502 1.5594 8.36936 1.5626 8.26077 1.59604C6.61313 2.10076 5.16666 3.11228 4.12718 4.48666C3.21812 5.69358 2.66362 7.13008 2.52598 8.63476C2.38833 10.1395 2.67298 11.6527 3.34796 13.0045C4.02294 14.3564 5.0615 15.4932 6.34697 16.2873C7.63243 17.0814 9.11386 17.5014 10.6248 17.4999C12.3876 17.5054 14.1035 16.9323 15.5092 15.8687C16.8836 14.8292 17.8951 13.3827 18.3998 11.7351C18.4329 11.6269 18.436 11.5118 18.4087 11.402C18.3815 11.2922 18.3249 11.1918 18.2451 11.1117ZM14.7576 14.8703C13.4339 15.8673 11.7944 16.3527 10.1412 16.2369C8.48796 16.1211 6.93218 15.4121 5.76025 14.2403C4.58833 13.0684 3.87914 11.5127 3.76325 9.85947C3.64735 8.20624 4.13255 6.56679 5.12952 5.24291C5.77905 4.38515 6.61879 3.68982 7.58264 3.21166C7.52774 3.59699 7.50006 3.98572 7.49983 4.37494C7.50211 6.52913 8.35886 8.59443 9.8821 10.1177C11.4053 11.6409 13.4706 12.497
1417 15.6248 12.4999C16.0148 12.4998 16.4044 12.4721 16.7905 12.4171C16.3118 13.3811 15.616 14.2209 14.7576 14.8703Z",fill:"currentColor"})}),bS=i=>G.jsxs("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[G.jsx("g",{clipPath:"url(#clip0_998_9808)",children:G.jsx("path",{d:"M9.375 3.125V1.25C9.375 1.08424 9.44085 0.925268 9.55806 0.808058C9.67527 0.690848 9.83424 0.625 10 0.625C10.1658 0.625 10.3247 0.690848 10.4419 0.808058C10.5592 0.925268 10.625 1.08424 10.625 1.25V3.125C10.625 3.29076 10.5592 3.44973 10.4419 3.56694C10.3247 3.68415 10.1658 3.75 10 3.75C9.83424 3.75 9.67527 3.68415 9.55806 3.56694C9.44085 3.44973 9.375 3.29076 9.375 3.125ZM15 10C15 10.9889 14.7068 11.9556 14.1573 12.7779C13.6079 13.6001 12.827 14.241 11.9134 14.6194C10.9998 14.9978 9.99445 15.0969 9.02455 14.9039C8.05464 14.711 7.16373 14.2348 6.46447 13.5355C5.7652 12.8363 5.289 11.9454 5.09607 10.9755C4.90315 10.0055 5.00216 9.00021 5.3806 8.08658C5.75904 7.17295 6.3999 6.39206 7.22215 5.84265C8.04439 5.29324 9.01109 5 10 5C11.3256 5.00145 12.5966 5.5287 13.5339 6.46606C14.4713 7.40343 14.9986 8.67436 15 10ZM13.75 10C13.75 9.25832 13.5301 8.5333 13.118 7.91661C12.706 7.29993 12.1203 6.81928 11.4351 6.53545C10.7498 6.25162 9.99584 6.17736 9.26841 6.32206C8.54098 6.46675 7.8728 6.8239 7.34835 7.34835C6.8239 7.8728 6.46675 8.54098 6.32206 9.26841C6.17736 9.99584 6.25162 10.7498 6.53545 11.4351C6.81928 12.1203 7.29993 12.706 7.91661 13.118C8.5333 13.5301 9.25832 13.75 10 13.75C10.9942 13.749 11.9475 13.3535 12.6505 12.6505C13.3535 11.9475 13.749 10.9942 13.75 10ZM4.55781 5.44219C4.67509 5.55946 4.83415 5.62535 5 5.62535C5.16585 5.62535 5.32491 5.55946 5.44219 5.44219C5.55946 5.32491 5.62535 5.16585 5.62535 5C5.62535 4.83415 5.55946 4.67509 5.44219 4.55781L4.19219 3.30781C4.07491 3.19054 3.91585 3.12465 3.75 3.12465C3.58415 3.12465 3.42509 3.19054 3.30781 3.30781C3.19054 3.42509 3.12465 3.58415 3.12465 3.75C3.12465 3.91585 3.19054 4.07491 3.30781 4.19219L4.55781 5.44219ZM4.55781 14.5578L3.30781 15.8078C3.19054 15.9251 3.12465 16.0841 3.12465 16.25C3.12465 16.4159 3.19054 16.5749 3.30781 16.6922C3.42509 16.8095 3.58415 16.8753 3.75 16.8753C3.91585 16.8753 4.07491 16.8095 4.19219 16.6922L5.44219 15.4422C5.50026 15.3841 5.54632 15.3152 5.57775 15.2393C5.60917 15.1634 5.62535 15.0821 5.62535 15C5.62535 14.9179 5.60917 14.8366 5.57775 14.7607C5.54632 14.6848 5.50026 14.6159 5.44219 14.5578C5.38412 14.4997 5.31518 14.4537 5.23931 14.4223C5.16344 14.3908 5.08212 14.3747 5 14.3747C4.91788 14.3747 4.83656 14.3908 4.76069 14.4223C4.68482 14.4537 4.61588 14.4997 4.55781 14.5578ZM15 5.625C15.0821 5.62506 15.1634 5.60895 15.2393 5.57759C15.3152 5.54622 15.3841 5.50021 15.4422 5.44219L16.6922 4.19219C16.8095 4.07491 16.8753 3.91585 16.8753 3.75C16.8753 3.58415 16.8095 3.42509 16.6922 3.30781C16.5749 3.19054 16.4159 3.12465 16.25 3.12465C16.0841 3.12465 15.9251 3.19054 15.8078 3.30781L14.5578 4.55781C14.4703 4.64522 14.4107 4.75663 14.3865 4.87793C14.3624 4.99924 14.3748 5.12498 14.4221 5.23924C14.4695 5.35351 14.5496 5.45116 14.6525 5.51982C14.7554 5.58849 14.8763 5.6251 15 5.625ZM15.4422 14.5578C15.3249 14.4405 15.1659 14.3747 15 14.3747C14.8341 14.3747 14.6751 14.4405 14.5578 14.5578C14.4405 14.6751 14.3747 14.8341 14.3747 15C14.3747 15.1659 14.4405 15.3249 14.5578 15.4422L15.8078 16.6922C15.8659 16.7503 15.9348 16.7963 16.0107 16.8277C16.0866 16.8592 16.1679 16.8753 16.25 16.8753C16.3321 16.8753 16.4134 16.8592 16.4893 16.8277C16.5652 16.7963 16.6341 16.7503 16.6922 16.6922C16.7503 16.6341 16.7963 16.5652 16.8277 16.4893C16.8592 16.4134 16.8753 16.3321 16.8753 16.25C16.8753 16.1679 16.8592 16.0866 16.8277 16.0107C16.7963 15.9348 16.7503 15.8659 16.6922 15.8078L15.4422 14.5578ZM3.75 10C3.75 9.83424 3.68415 9.67527 3.56694 9.55806C3.44973 9.44085 3.29076 9.375 3.125 9.375H1.25C1.08424 9.375 0.925268 9.44085 0.808058 9.55806C0.690848 9.67527 0.625 9.83424 0.625 10C0.625 10.1658 0.690848 10.3247 0.808058 10.4419C0.925268 10.5592 1.08424 10.625 1.25 10.625H3.125C3.29076 10.625 3.44973 10.5592 3.56694 10.4419C3.68415 10.3247 3.75 10.1658 3.75 10ZM10 16.25C9.83424 16.25 9.67527 16.3158 9.55806 16.4331C9.44085 16.5503 9.375 16.7092 9.375 16.875V18.7
1415C9.375 18.9158 9.44085 19.0747 9.55806 19.1919C9.67527 19.3092 9.83424 19.375 10 19.375C10.1658 19.375 10.3247 19.3092 10.4419 19.1919C10.5592 19.0747 10.625 18.9158 10.625 18.75V16.875C10.625 16.7092 10.5592 16.5503 10.4419 16.4331C10.3247 16.3158 10.1658 16.25 10 16.25ZM18.75 9.375H16.875C16.7092 9.375 16.5503 9.44085 16.4331 9.55806C16.3158 9.67527 16.25 9.83424 16.25 10C16.25 10.1658 16.3158 10.3247 16.4331 10.4419C16.5503 10.5592 16.7092 10.625 16.875 10.625H18.75C18.9158 10.625 19.0747 10.5592 19.1919 10.4419C19.3092 10.3247 19.375 10.1658 19.375 10C19.375 9.83424 19.3092 9.67527 19.1919 9.55806C19.0747 9.44085 18.9158 9.375 18.75 9.375Z",fill:"currentColor"})}),G.jsx("defs",{children:G.jsx("clipPath",{id:"clip0_998_9808",children:G.jsx("rect",{width:"20",height:"20",fill:"currentColor"})})})]}),oS=()=>{let{lightModeIcon:i}=Kl(),{lightModeIcon:l}=El();return i||l||G.jsx(ZS,{})},mS=()=>{let{darkModeIcon:i}=Kl(),{darkModeIcon:l}=El();return i||l||G.jsx(bS,{})},hS=()=>{let{darkMode:i,setDarkMode:l}=XG(),{themeSwitcher:t=!0}=Vt(),{themeSwitcher:e=!0}=jt(),{localeMessages:s}=_l(),c=i?s==null?void 0:s.themeEnableLightTooltip:s==null?void 0:s.themeEnableDarkTooltip,d=u.useCallback(()=>{l(n=>!n)},[l]);return!t||!e?null:typeof t=="function"?G.jsx(dl,{content:c,children:G.jsx(t,{darkMode:i,setDarkMode:l})}):typeof e=="function"?G.jsx(dl,{content:c,children:G.jsx(e,{darkMode:i,setDarkMode:l})}):G.jsx(dl,{content:c,children:G.jsx($t,{onClick:d,"aria-label":c,children:G.jsx(i?mS:oS,{})})})},uS=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("g",{id:"icon - pdf",children:G.jsx("path",{id:"Vector",d:"M17.5 11.875V16.25C17.5 16.5815 17.3683 16.8995 17.1339 17.1339C16.8995 17.3683 16.5815 17.5 16.25 17.5H3.75C3.41848 17.5 3.10054 17.3683 2.86612 17.1339C2.6317 16.8995 2.5 16.5815 2.5 16.25V11.875C2.5 11.7092 2.56585 11.5503 2.68306 11.4331C2.80027 11.3158 2.95924 11.25 3.125 11.25C3.29076 11.25 3.44973 11.3158 3.56694 11.4331C3.68415 11.5503 3.75 11.7092 3.75 11.875V16.25H16.25V11.875C16.25 11.7092 16.3158 11.5503 16.4331 11.4331C16.5503 11.3158 
14116.7092 11.25 16.875 11.25C17.0408 11.25 17.1997 11.3158 17.3169 11.4331C17.4342 11.5503 17.5 11.7092 17.5 11.875ZM9.55781 12.3172C9.61586 12.3753 9.68479 12.4214 9.76066 12.4529C9.83654 12.4843 9.91787 12.5005 10 12.5005C10.0821 12.5005 10.1635 12.4843 10.2393 12.4529C10.3152 12.4214 10.3841 12.3753 10.4422 12.3172L13.5672 9.19219C13.6253 9.13412 13.6713 9.06518 13.7027 8.98931C13.7342 8.91344 13.7503 8.83212 13.7503 8.75C13.7503 8.66788 13.7342 8.58656 13.7027 8.51069C13.6713 8.43482 13.6253 8.36588 13.5672 8.30781C13.5091 8.24974 13.4402 8.20368 13.3643 8.17225C13.2884 8.14083 13.2071 8.12465 13.125 8.12465C13.0429 8.12465 12.9616 8.14083 12.8857 8.17225C12.8098 8.20368 12.7409 8.24974 12.6828 8.30781L10.625 10.3664V3.125C10.625 2.95924 10.5592 2.80027 10.4419 2.68306C10.3247 2.56585 10.1658 2.5 10 2.5C9.83424 2.5 9.67527 2.56585 9.55806 2.68306C9.44085 2.80027 9.375 2.95924 9.375 3.125V10.3664L7.31719 8.30781C7.19991 8.19054 7.04085 8.12465 6.875 8.12465C6.70915 8.12465 6.55009 8.19054 6.43281 8.30781C6.31554 8.42509 6.24965 8.58415 6.24965 8.75C6.24965 8.91585 6.31554 9.07491 6.43281 9.19219L9.55781 12.3172Z",fill:"currentColor"})})}),oT=()=>{let{downloadIcon:i}=Kl(),{downloadIcon:l}=El();return i||l||G.jsx(uS,{})},mT=({children:i,className:l,localeMessages:t})=>G.jsx(dl,{className:l,content:t==null?void 0:t.downloadFileTooltip,children:i}),WS=({download:i,localeMessages:l})=>G.jsx(mT,{localeMessages:l,children:G.jsx($t,{onClick:i,"aria-label":l==null?void 0:l.downloadFileTooltip,children:G.jsx(oT,{})})}),GS=({download:i,localeMessages:l})=>G.jsx(ot,{onClick:i,children:G.jsxs(mT,{className:"rp-menu-item",localeMessages:l,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(oT,{})}),l==null?void 0:l.downloadFileLabel]})}),hT=()=>{let{download:i}=sY(),{downloadTool:l=!0}=Vt(),{downloadTool:t=!0}=jt(),{isSmallScreen:e}=js(),{localeMessages:s}=_l(),c=s==null?void 0:s.downloadFileTooltip;return!l||!t?null:e?G.jsx(GS,{download:i,localeMessages:s}):typeof l=="function"?G.jsx(dl,{content:c,children:G.jsx(l,{download:i})}):typeof t=="function"?G.jsx(dl,{content:c,children:G.jsx(t,{download:i})}):G.jsx(WS,{download:i,localeMessages:s})},NS=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("g",{id:"icon - pdf",children:G.jsx("path",{id:"Vector",d:"M16.7711 5.625H15.625V3.125C15.625 2.95924 15.5592 2.80027 15.4419 2.68306C15.3247 2.56585 15.1658 2.5 15 2.5H5C4.83424 2.5 4.67527 2.56585 4.55806 2.68306C4.44085 2.80027 4.375 2.95924 4.375 3.125V5.625H3.22891C2.1375 5.625 1.25 6.46641 1.25 7.5V13.75C1.25 13.9158 1.31585 14.0747 1.43306 14.1919C1.55027 14.3092 1.70924 14.375 1.875 14.375H4.375V16.875C4.375 17.0408 4.44085 17.1997 4.55806 17.3169C4.67527 17.4342 4.83424 17.5 5 17.5H15C15.1658 17.5 15.3247 17.4342 15.4419 17.3169C15.5592 17.1997 15.625 17.0408 15.625 16.875V14.375H18.125C18.2908 14.375 18.4497 14.3092 18.5669 14.1919C18.6842 14.0747 18.75 13.9158 18.75 13.75V7.5C18.75 6.46641 17.8625 5.625 16.7711 5.625ZM5.625 3.75H14.375V5.625H5.625V3.75ZM14.375 16.25H5.625V12.5H14.375V16.25ZM17.5 13.125H15.625V11.875C15.625 11.7092 15.5592 11.5503 15.4419 11.4331C15.3247 11.3158 15.1658 11.25 15 11.25H5C4.83424 11.25 4.67527 11.3158 4.55806 11.4331C4.44085 11.5503 4.375 11.7092 4.375 11.875V13.125H2.5V7.5C2.5 7.15547 2.82734 6.875 3.22891 6.875H16.7711C17.1727 6.875 17.5 7.15547 17.5 7.5V13.125ZM15.625 9.0625C15.625 9.24792 15.57 9.42918 15.467 9.58335C15.364 9.73752 15.2176 9.85768 15.0463 9.92864C14.875 9.99959 14.6865 10.0182 14.5046 9.98199C14.3227 9.94581 14.1557 9.85652 14.0246 9.72541C13.8935 9.5943 13.8042 9.42725 13.768 9.2454C13.7318 9.06354 13.7504 8.87504 13.8214 8.70373C13.8923 8.53243 14.0125 8.38601 14.1667 8.283C14.3208 8.17998 14.5021 8.125 14.6875 8.125C14.9361 8.125 15.1746 8.22377 15.3504 8.39959C15.5262 8.5754 15.625 8.81386 15.625 9.0625Z",fill:"currentColor"})})}),uT=()=>{let{printIcon:i}=Kl(),{printIcon:l}=El();return i||l||G.jsx(NS,{})},WT=({children:i,className:l,localeMessages:t})=>G.jsx(dl,{className:l,content:t==null?void 0:t.printTooltip,children:i}),rS=({print:i,localeMessages:l})=>G.jsx(WT,{localeMessages:l,children:G.jsx($t,{onClick:i,"aria-label":l==null?void 0:l.printTooltip,children:G.jsx(uT,{})})}),XS=({print:i,localeMessages:l})=>G.jsx(ot,{onClick:i,children:G.jsxs(WT,{className:"rp-menu-item",localeMessages:l,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(uT,{})}),l==null?void 0:l.printLabel]})}),GT=()=>{let{print:i,cancel:l,setOnProgress:t,setOnComplete:e,setOnError:s,progress:c,showDefaultProgress:d}=ru(),{printTool:n=!0}
141=Vt(),{printTool:Z=!0}=jt(),{isSmallScreen:b}=js(),{localeMessages:o}=_l(),m=o==null?void 0:o.printTooltip;return!n||!Z?null:b?G.jsx(XS,{print:i,localeMessages:o}):typeof n=="function"?G.jsx(dl,{content:m,children:G.jsx(n,{print:i,cancel:l,setOnProgress:t,setOnError:s,setOnComplete:e,progress:c,showDefaultProgress:d})}):typeof Z=="function"?G.jsx(dl,{content:m,children:G.jsx(Z,{print:i,cancel:l,setOnProgress:t,setOnError:s,setOnComplete:e,progress:c,showDefaultProgress:d})}):G.jsx(rS,{print:i,localeMessages:o})},NT=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M16.875 3.75V7.5C16.875 7.66576 16.8092 7.82473 16.6919 7.94194C16.5747 8.05915 16.4158 8.125 16.25 8.125C16.0842 8.125 15.9253 8.05915 15.8081 7.94194C15.6908 7.82473 15.625 7.66576 15.625 7.5V5.25859L12.3172 8.56719C12.1999 8.68446 12.0409 8.75035 11.875 8.75035C11.7091 8.75035 11.5501 8.68446 11.4328 8.56719C11.3155 8.44991 11.2497 8.29085 11.2497 8.125C11.2497 7.95915 11.3155 7.80009 11.4328 7.68281L14.7414 4.375H12.5C12.3342 4.375 12.1753 4.30915 12.0581 4.19194C11.9408 4.07473 11.875 3.91576 11.875 3.75C11.875 3.58424 11.9408 3.42527 12.0581 3.30806C12.1753 3.19085 12.3342 3.125 12.5 3.125H16.25C16.4158 3.125 16.5747 3.19085 16.6919 3.30806C16.8092 3.42527 16.875 3.58424 16.875 3.75ZM7.68281 11.4328L4.375 14.7414V12.5C4.375 12.3342 4.30915 12.1753 4.19194 12.0581C4.07473 11.9408 3.91576 11.875 3.75 11.875C3.58424 11.875 3.42527 11.9408 3.30806 12.0581C3.19085 12.1753 3.125 12.3342 3.125 12.5V16.25C3.125 16.4158 3.19085 16.5747 3.30806 16.6919C3.42527 16.8092 3.58424 16.875 3.75 16.875H7.5C7.66576 16.875 7.82473 16.8092 7.94194 16.6919C8.05915 16.5747 8.125 16.4158 8.125 16.25C8.125 16.0842 8.05915 15.9253 7.94194 15.8081C7.82473 15.6908 7.66576 15.625 7.5 15.625H5.25859L8.56719 12.3172C8.68446 12.1999 8.75035 12.0409 8.75035 11.875C8.75035 11.7091 8.68446 11.5501 8.56719 11.4328C8.44991 11.3155 8.29085 11.2497 8.125 11.2497C7.95915 11.2497 7.80009 11.3155 7.68281 11.4328ZM16.25 11.875C16.0842 11.875 15.9253 11.9408 15.8081 12.0581C15.6908 12.1753 15.625 12.3342 15.625 12.5V14.7414L12.3172 11.4328C12.1999 11.3155 12.0409 11.2497 11.875 11.2497C11.7091 11.2497 11.5501 11.3155 11.4328 11.4328C11.3155 11.5501 11.2497 11.7091 11.2497 11.875C11.2497 12.0409 11.3155 12.1999 11.4328 12.3172L14.7414 15.625H12.5C12.3342 15.625 12.1753 15.6908 12.0581 15.8081C11.9408 15.9253 11.875 16.0842 11.875 16.25C11.875 16.4158 11.9408 16.5747 12.0581 16.6919C12.1753 16.8092 12.3342 16.875 12.5 16.875H16.25C16.4158 16.875 16.5747 16.8092 16.6919 16.6919C16.8092 16.5747 16.875 16.4158 16.875 16.25V12.5C16.875 12.3342 16.8092 12.1753 16.6919 12.0581C16.5747 11.9408 16.4158 11.875 16.25 11.875ZM5.25859 4.375H7.5C7.66576 4.375 7.82473 4.30915 7.94194 4.19194C8.05915 4.07473 8.125 3.91576 8.125 3.75C8.125 3.58424 8.05915 3.42527 7.94194 3.30806C7.82473 3.19085 7.66576 3.125 7.5 3.125H3.75C3.58424 3.125 3.42527 3.19085 3.30806 3.30806C3.19085 3.42527 3.125 3.58424 3.125 3.75V7.5C3.125 7.66576 3.19085 7.82473 3.30806 7.94194C3.42527 8.05915 3.58424 8.125 3.75 8.125C3.91576 8.125 4.07473 8.05915 4.19194 7.94194C4.30915 7.82473 4.375 7.66576 4.375 7.5V5.25859L7.68281 8.56719C7.80009 8.68446 7.95915 8.75035 8.125 8.75035C8.29085 8.75035 8.44991 8.68446 8.56719 8.56719C8.68446 8.44991 8.75035 8.29085 8.75035 8.125C8.75035 7.95915 8.68446 7.80009 8.56719 7.68281L5.25859 4.375Z",fill:"currentColor"})}),MS=()=>{let{fullScreenIcon:i}=Kl(),{fullScreenIcon:l}=El();return i||l||G.jsx(NT,{})},rT=({children:i,className:l,localeMessages:t})=>G.jsx(dl,{className:l,content:t==null?void 0:t.fullScreenTooltip,children:i}),pS=({toggleFullScreen:i,isSupported:l,localeMessages:t})=>G.jsx(ot,{onClick:i,disabled:!l,children:G.jsxs(rT,{className:"rp-menu-item",localeMessages:t,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(NT,{})}),t==null?void 0:t.fullScreenTooltip]})}),XT=()=>{let{isFullScreen:i,toggleFullScreen:l,isSupported:t}=zp(),{fullscreenTool:e=!0}=Vt(),{fullscreenTool:s=!0}=jt(),{isSmallScreen:c}=js(),{localeMessages:d}=_l(),n=d==null?void 0:d.fullScreenTooltip;return!e||!s?null:c?G.jsx(pS,{isFullScreen:i,toggleFullScreen:l,isSupported:t,localeMessages:d}):typeof e=="function"?G.jsx(dl,{content:n,children:G.jsx(e,{isFullScreen:i,toggleFullScreen:l,isSupported:t})}):typeof s=="function"?G.jsx(dl,{content:n,children:G.jsx(s,{isFullScreen:i,toggleFullScreen:l,isSupported:t})}):G.jsx(rT,{localeMessages:d,children:G.jsx($t,{disabled:!t,onClick:l,"aria-label":i?"Exit full screen":"Enter full screen",children:G.jsx(MS,{})})})},YS=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M10.9375 10C10.9375 10.1854 10.8825 10.3667 10.7795 10.5208C10.6765 10.675 10.5301 10.7952 10.3588 10.8661C10.1875 10.9371 9.99896 10.9557 9.8171 10.9195C9.63525 10.8833 9.4682 10.794 9.33709 10.6629C9.20598 10.5318 9.11669 10.3648 9.08051 10.1829C9.04434 10.001 9.06291 9.81254 9.13386 9.64123C9.20482 9.46993 9.32498 9.32351 9.47915 9.2205C9.63332 9.11748 9.81458 9.0625 10 9.0625C10.2486 9.0625 10.4871 9.16127 10.6629 9.33709C10.8387 9.5129 10.9375 9.75136 10.9375 10ZM10 5.625C10.1854 5.625 10.3667 5.57002 10.5208 5.467C10.675 5.36399 10.7952 5.21757 10.8661 5.04627C10.9371 4.87496 10.9557 4.68646 10.9195 4.5046C10.8833 4.32275 10.794 4.1557 10.6629 4.02459C10.5318 3.89348 10.3648 3.80419 10.1829 3.76801C10.001 3.73184 9.81254 3.75041 9.64123 3.82136C9.46993 3.89232 9.32351 4.01248 9.2205 4.16665C9.11748 4.32082 9.0625 4.50208 9.0625 4.6875C9.0625 4.93614 9.16127 5.1746 9.33709 5.35041C9.5129 5.52623 9.75136 5.625 10 5.625ZM10 14.375C9.81458 14.375 9.63332 14.43 9.47915 14.533C9.32498 14.636 9.20482 14.7824 9.13386 14.9537C9.06291 15.125 9.04434 15.3135 9.08051 15.4954C9.11669 15.6773 9.20598 15.8443 9.33709 15.9754C9.4682 16.1065 9.63525 16.1958 9.8171 16.232C9.99896 16.2682 10.187
1415 16.2496 10.3588 16.1786C10.5301 16.1077 10.6765 15.9875 10.7795 15.8333C10.8825 15.6792 10.9375 15.4979 10.9375 15.3125C10.9375 15.0639 10.8387 14.8254 10.6629 14.6496C10.4871 14.4738 10.2486 14.375 10 14.375Z",fill:"currentColor"})}),W2={"rp-property-item-wrapper":"_rp-property-item-wrapper_jno3l_1","rp-property-item-label":"_rp-property-item-label_jno3l_11","rp-property-item-value":"_rp-property-item-value_jno3l_15"},yS=({label:i,value:l})=>G.jsxs("div",{className:W2["rp-property-item-wrapper"],children:[G.jsx("div",{className:W2["rp-property-item-label"],children:i}),G.jsx("div",{className:W2["rp-property-item-value"],children:l||"-"})]}),gu="Dialog",[MT]=wd(gu),[TS,Ds]=MT(gu),pT=i=>{let{__scopeDialog:l,children:t,open:e,defaultOpen:s,onOpenChange:c,modal:d=!0}=i,n=u.useRef(null),Z=u.useRef(null),[b,o]=Wh({prop:e,defaultProp:s??!1,onChange:c,caller:gu});return G.jsx(TS,{scope:l,triggerRef:n,contentRef:Z,contentId:sn(),titleId:sn(),descriptionId:sn(),open:b,onOpenChange:o,onOpenToggle:u.useCallback(()=>o(m=>!m),[o]),modal:d,children:t})};pT.displayName=gu;var YT="DialogTrigger",VS=u.forwardRef((i,l)=>{let{__scopeDialog:t,...e}=i,s=Ds(YT,t),c=mt(l,s.triggerRef);return G.jsx(Pl.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":BG(s.open),...e,ref:c,onClick:ll(i.onClick,s.onOpenToggle)})});VS.displayName=YT;var HG="DialogPortal",[LS,yT]=MT(HG,{forceMount:void 0}),TT=i=>{let{__scopeDialog:l,forceMount:t,children:e,container:s}=i,c=Ds(HG,l);return G.jsx(LS,{scope:l,forceMount:t,children:u.Children.map(e,d=>G.jsx(Ni,{present:t||c.open,children:G.jsx(LG,{asChild:!0,container:s,children:d})}))})};TT.displayName=HG;var P0="DialogOverlay",VT=u.forwardRef((i,l)=>{let t=yT(P0,i.__scopeDialog),{forceMount:e=t.forceMount,...s}=i,c=Ds(P0,i.__scopeDialog);return c.modal?G.jsx(Ni,{present:e||c.open,children:G.jsx(zS,{...s,ref:l})}):null});VT.displayName=P0;var IS=co("DialogOverlay.RemoveScroll"),zS=u.forwardRef((i,l)=>{let{__scopeDialog:t,...e}=i,s=Ds(P0,t);return G.jsx(JG,{as:IS,allowPinchZoom:!0,shards:[s.contentRef],children:G.jsx(Pl.div,{"data-state":BG(s.open),...e,ref:l,style:{pointerEvents:"auto",...e.style}})})}),Zn="DialogContent",LT=u.forwardRef((i,l)=>{let t=yT(Zn,i.__scopeDialog),{forceMount:e=t.forceMount,...s}=i,c=Ds(Zn,i.__scopeDialog);return G.jsx(Ni,{present:e||c.open,children:c.modal?G.jsx(wS,{...s,ref:l}):G.jsx(RS,{...s,ref:l})})});LT.displayName=Zn;var wS=u.forwardRef((i,l)=>{let t=Ds(Zn,i.__scopeDialog),e=u.useRef(null),s=mt(l,t.contentRef,e);return u.useEffect(()=>{let c=e.current;if(c)return sy(c)},[]),G.jsx(IT,{...i,ref:s,trapFocus:t.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:ll(i.onCloseAutoFocus,c=>{var d;c.preventDefault(),(d=t.triggerRef.current)==null||d.focus()}),onPointerDownOutside:ll(i.onPointerDownOutside,c=>{let d=c.detail.originalEvent,n=d.button===0&&d.ctrlKey===!0;(d.button===2||n)&&c.preventDefault()}),onFocusOutside:ll(i.onFocusOutside,c=>c.preventDefault())})}),RS=u.forwardRef((i,l)=>{let t=Ds(Zn,i.__scopeDialog),e=u.useRef(!1),s=u.useRef(!1);return G.jsx(IT,{...i,ref:l,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:c=>{var d,n;(d=i.onCloseAutoFocus)==null||d.call(i,c),c.defaultPrevented||(e.current||((n=t.triggerRef.current)==null||n.focus()),c.preventDefault()),e.current=!1,s.current=!1},onInteractOutside:c=>{var n,Z;(n=i.onInteractOutside)==null||n.call(i,c),c.defaultPrevented||(e.current=!0,c.detail.originalEvent.type==="pointerdown"&&(s.current=!0));let d=c.target;(Z=t.triggerRef.current)!=null&&Z.contains(d)&&c.preventDefault(),c.detail.originalEvent.type==="focusin"&&s.current&&c.preventDefault()}})}),IT=u.forwardRef((i,l)=>{let{__scopeDialog:t,trapFocus:e,onOpenAutoFocus:s,onCloseAutoFocus:c,...d}=i,n=Ds(Zn,t),Z=u.useRef(null),b=mt(l,Z);return ly(),G.jsxs(G.Fragment,{children:[G.jsx(CG,{asChild:!0,loop:!0,trapped:e,onMountAutoFocus:s,onUnmountAutoFocus:c,children:G.jsx(Mu,{role:"dialog",id:n.contentId,"aria-describedby":n.descriptionId,"aria-labelledby":n.titleId,"data-state":BG(n.open),...d,ref:b,onDismiss:()=>n.onOpenChange(!1)})}),G.jsxs(G.Fragment,{children:[G.jsx(xS,{titleId:n.titleId}),G.jsx(jS,{contentRef:Z,descriptionId:n.descriptionId})]})]})}),fG="DialogTitle",zT=u.forwardRef((i,l)=>{let{__scopeDialog:t,...e}=i,s=Ds(fG,t);return G.jsx(Pl.h2,{id:s.titleId,...e,ref:l})});zT.displayName=fG;var wT="DialogDescription",SS=u.forwardRef((i,l)=>{let{__scopeDialog:t,...e}=i,s=Ds(wT,t);return G.jsx(Pl.p,{id:s.descriptionId,...e,ref:l})});SS.displayName=wT;var RT="DialogClose",ST=u.forwardRef((i,l)=>{let{__scopeDialog:t,...e}=i,s=Ds(RT,t);return G.jsx(Pl.button,{type:"button",...e,ref:l,onClick:ll(i.onClick,()=>s.onOpenChange(!1))})});ST.displayName=RT;function BG(i){return i?"open":"closed"}var xT="DialogTitleWarning",[Vg,gT]=Nz(xT,{contentName:Zn,titleName:fG,docsSlug:"dialog"}),xS=({titleId:i})=>{let l=gT(xT),t=`\`${l.contentName}\` requires a \`${l.titleName}\` for the component to be accessible for screen reader users.
142
143If you want to hide the \`${l.titleName}\`, you can wrap it with our VisuallyHidden component.
144
145For more information, see https://radix-ui.com/primitives/docs/components/${l.docsSlug}`;return u.useEffect(()=>
145{i&&(document.getElementById(i)||console.error(t))},[t,i]),null},gS="DialogDescriptionWarning",jS=({contentRef:i,descriptionId:l})=>{let t=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${gT(gS).contentName}}.`;return u.useEffect(()=>{var s;let e=(s=i.current)==null?void 0:s.getAttribute("aria-describedby");l&&e&&(document.getElementById(l)||console.warn(t))},[t,i,l]),null},DS=pT,CS=TT,JS=VT,FS=LT,OS=zT,kS=ST,jd={"rp-dialog-wrapper":"_rp-dialog-wrapper_xb722_1","rp-dialog-overlay":"_rp-dialog-overlay_xb722_7","rp-document-dialog":"_rp-document-dialog_xb722_13","rp-dialog-title":"_rp-dialog-title_xb722_35","rp-dialog-close":"_rp-dialog-close_xb722_44","rp-properties-divider":"_rp-properties-divider_xb722_52"},US=()=>{let{pdfProperties:i}=at(),{container:l}=Pe(),{activeDocumentProperties:t,setActiveDocumentProperties:e}=$p(),{localeMessages:s}=_l(),c=u.useMemo(()=>{if(!i)return[];let{fileSize:d,filename:n,title:Z,author:b,subject:o,createdOn:m,creator:h,keywords:W,modifiedOn:r,pdfProducer:N,pdfVersion:M,pageCount:X}=i;return[{label:s==null?void 0:s.propertiesFilenameLabel,value:n},{label:s==null?void 0:s.propertiesFileSizeLabel,value:d},{separate:!0},{label:s==null?void 0:s.propertiesTitleLabel,value:Z},{label:s==null?void 0:s.propertiesAuthorLabel,value:b},{label:s==null?void 0:s.propertiesSubjectLabel,value:o},{label:s==null?void 0:s.propertiesKeywordLabel,value:W},{label:s==null?void 0:s.propertiesCreatorLabel,value:h},{label:s==null?void 0:s.propertiesCreateOnLabel,value:m?QW(m):""},{label:s==null?void 0:s.propertiesModifiedOnLabel,value:r?QW(r):""},{separate:!0},{label:s==null?void 0:s.propertiesPDFProducerLabel,value:N},{label:s==null?void 0:s.propertiesPDFVersionLabel,value:M},{label:s==null?void 0:s.propertiesPageCountLabel,value:X}]},[i,s]);return G.jsx(DS,{open:t,onOpenChange:e,children:G.jsx(CS,{container:l,children:G.jsxs("div",{className:jd["rp-dialog-wrapper"],children:[G.jsx(JS,{className:jd["rp-dialog-overlay"]}),G.jsxs(FS,{className:jd["rp-document-dialog"],"aria-describedby":void 0,children:[G.jsx(OS,{className:jd["rp-dialog-title"],children:(s==null?void 0:s.documentPropertiesLabel)??"Document properties"}),G.jsx("div",{className:jd["rp-document-properties"],role:"region","aria-label":(s==null?void 0:s.documentPropertiesLabel)??"Document properties",children:c.map((d,n)=>G.jsx("div",{children:d.separate?G.jsx("div",{className:jd["rp-properties-divider"],role:"separator","aria-orientation":"horizontal"}):G.jsx(yS,{label:d.label,value:d.value})},n))}),G.jsx(kS,{asChild:!0,className:jd["rp-dialog-close"],"aria-label":(s==null?void 0:s.searchCloseButtonTooltip)||"Close dialog",children:G.jsx(aT,{"aria-hidden":"true"})})]})]})})})},ES={"rp-other-tool-content":"_rp-other-tool-content_su718_1"},KS={"rp-menu-separator":"_rp-menu-separator_17dlz_1"},Gn=()=>G.jsx(Q3,{className:KS["rp-menu-separator"]}),vS=()=>{let{documentPropertiesIcon:i}=Kl(),{documentPropertiesIcon:l}=El();return i||l||G.jsx(dG,{})},QS=()=>{let{setActiveDocumentProperties:i}=$p(),{documentProperties:l=!0}=Vt(),{documentProperties:t=!0,scrollModeTool:e}=jt(),{localeMessages:s}=_l();return!l||!t?null:G.jsxs(G.Fragment,{children:[e&&G.jsx(Gn,{}),G.jsx(ot,{onClick:()=>i(c=>!c),children:G.jsxs(dl,{className:"rp-menu-item",content:s==null?void 0:s.documentPropertiesTooltip,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(vS,{})}),s==null?void 0:s.documentPropertiesLabel]})})]})},jT=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M15.0001 3.99993V6.99993C15.0001 7.13253 14.9474 7.25971 14.8536 7.35348C14.7599 7.44725 14.6327 7.49993 14.5001 7.49993H11.5001C11.3675 7.49993 11.2403 7.44725 11.1465 7.35348C11.0528 7.25971 11.0001 7.13253 11.0001 6.99993C11.0001 6.86732 11.0528 6.74014 11.1465 6.64637C11.2403 6.5526 11.3675 6.49993 11.5001 6.49993H13.2126L11.5507 4.97743L11.5351 4.96243C10.8401 4.26773 9.95588 3.79321 8.99281 3.59814C8.02973 3.40307 7.03053 3.4961 6.12002 3.86561C5.20951 4.23512 4.42806 4.86473 3.8733 5.67578C3.31853 6.48683 3.01505 7.44336 3.00075 8.42589C2.98646 9.40842 3.26199 10.3734 3.79292 11.2002C4.32385 12.0271 5.08665 12.6791 5.98603 13.075C6.8854 13.4708 7.88148 13.5929 8.84982 13.4259C9.81816 13.259 10.7158 12.8104 11.4307 12.1362C11.5271 12.045 11.6558 11.9959 11.7884 11.9996C11.921 12.0032 12.0467 12.0595 12.1379 12.1559C12.2291 12.2523 12.2782 12.3809 12.2745 12.5135C12.2708 12.6462 12.2146 12.7719 12.1182 12.8631C11.0066 13.9173 9.53206 14.5034 8.00009 14.4999H7.91759C6.93492 14.4865 5.97061 14.2318 5.1094 
14513.7584C4.24819 13.285 3.51645 12.6073 2.9785 11.7848C2.44055 10.9624 2.11285 10.0204 2.02421 9.04165C1.93557 8.0629 2.08871 7.07736 2.47015 6.17165C2.8516 5.26594 3.44968 4.46779 4.21183 3.84736C4.97398 3.22693 5.87686 2.8032 6.84112 2.61342C7.80538 2.42365 8.80149 2.47363 9.74191 2.75898C10.6823 3.04433 11.5382 3.55631 12.2345 4.24993L14.0001 5.86243V3.99993C14.0001 3.86732 14.0528 3.74014 14.1465 3.64637C14.2403 3.5526 14.3675 3.49993 14.5001 3.49993C14.6327 3.49993 14.7599 3.5526 14.8536 3.64637C14.9474 3.74014 15.0001 3.86732 15.0001 3.99993Z",fill:"currentColor"})}),PS={"rp-rotate-counterclockwise":"_rp-rotate-counterclockwise_1nqcb_1"},HS=()=>{let{setRotate:i}=GG();return{handleRotateClockwise:u.useCallback(()=>{i(l=>(l+90)%360)},[i]),handleRotateCounterclockwise:u.useCallback(()=>{i(l=>(l-90+360)%360)},[i])}},fS=()=>{let{rotateClockwiseIcon:i}=Kl(),{rotateClockwiseIcon:l}=El();return i||l||G.jsx(jT,{})},BS=()=>{let{rotateCounterClockwiseIcon:i}=Kl(),{rotateCounterClockwiseIcon:l}=El();return i||l||G.jsx(jT,{className:PS["rp-rotate-counterclockwise"]})},AS=()=>{let{handleRotateClockwise:i,handleRotateCounterclockwise:l}=HS(),{rotateTool:t=!0}=Vt(),{rotateTool:e=!0}=jt(),{localeMessages:s}=_l();return!t||!e?null:G.jsx(G.Fragment,{children:G.jsxs(Ld,{children:[G.jsx(ot,{onClick:i,children:G.jsxs(dl,{className:"rp-menu-item",content:s==null?void 0:s.rotateClockwiseTooltip,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(fS,{})}),s==null?void 0:s.rotateClockwiseLabel]})}),G.jsx(ot,{onClick:l,children:G.jsxs(dl,{className:"rp-menu-item",content:s==null?void 0:s.rotateCounterclockwiseTooltip,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(BS,{})}),s==null?void 0:s.rotateCounterclockwiseLabel]})}),G.jsx(Gn,{})]})})},_S=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M13.8337 3H2.16699C1.90178 3 1.64742 3.10536 1.45989 3.29289C1.27235 3.48043 1.16699 3.73478 1.16699 4V13C1.16699 13.2652 1.27235 13.5196 1.45989 13.7071C1.64742 13.8946 1.90178 14 2.16699 14H13.8337C14.0989 14 14.3532 13.8946 14.5408 13.7071C14.7283 13.5196 14.8337 13.2652 14.8337 13V4C14.8337 3.73478 14.7283 3.48043 14.5408 3.29289C14.3532 3.10536 14.0989 3 13.8337 3ZM2.16699 4H7.50033V13H2.16699V4ZM13.8337 13H8.50033V4H13.8337V13Z",fill:"currentColor"})}),qS=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M11 1.5C11.2761 1.5 11.5 1.72386 11.5 2V7.5H14C14.2761 7.5 14.5 7.72386 14.5 8V14C14.5 14.2761 14.2761 14.5 14 14.5H2C1.72386 14.5 1.5 14.2761 1.5 14V8C1.5 7.72386 1.72386 7.5 2 7.5H4.5V2C4.5 1.72386 4.72386 1.5 5 1.5H11ZM8.5 13.5H13.5V8.5H8.5V13.5ZM2.5 13.5H7.5V8.5H2.5V13.5ZM5.5 7.5H10.5V2.5H5.5V7.5Z",fill:"currentColor"})}),$S=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M12.3337 2.5H3.66699C3.40178 2.5 3.14742 2.60536 2.95989 2.79289C2.77235 2.98043 2.66699 3.23478 2.66699 3.5V13.5C2.66699 13.7652 2.77235 14.0196 2.95989 14.2071C3.14742 14.3946 3.40178 14.5 3.66699 14.5H12.3337C12.5989 14.5 12.8532 14.3946 13.0408 14.2071C13.2283 14.0196 13.3337 13.7652 13.3337 13.5V3.5C13.3337 3.23478 13.2283 2.98043 13.0408 2.79289C12.8532 2.60536 12.5989 2.5 12.3337 2.5ZM12.3337 13.5H3.66699V3.5H12.3337V13.5Z",fill:"currentColor"})}),lx=()=>{let{singlePageIcon:i}=Kl(),{singlePageIcon:l}=El();return i||l||G.jsx($S,{})},tx=()=>{let{dualPageIcon:i}=Kl(),{dualPageIcon:l}=El();return i||l||G.jsx(_S,{})},ex=()=>{let{dualPageWithCoverIcon:i}=Kl(),{dualPageWithCoverIcon:l}=El();return i||l||G.jsx(qS,{})},sx=()=>{let{viewMode:i,setDualPage:l,setDualPageWithCover:t,setSinglePage:e}=Gi(),{viewModeTool:s=!0}=Vt(),{viewModeTool:c=!0}=jt(),{scrollMode:d}=Wi(),{localeMessages:n}=_l(),Z=u.useMemo(()=>[kl.HORIZONTAL_SCROLLING].includes(d),[d]);return!s||!c?null:G.jsx(G.Fragment,{children:G.jsxs(Ld,{children:[G.jsx(ot,{onClick:e,children:G.jsxs(dl,{className:"rp-menu-item",content:n==null?void 0:n.singlePageTooltip,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(lx,{})}),n==null?void 0:n.singlePageLabel,i===Yl.SINGLE_PAGE?G.jsx(mc,{className:"rp-menu-item-right"}):null]})}),G.jsx(ot,{disabled:Z,onClick:l,children:G.jsxs(dl,{className:"rp-menu-item",content:n==null?void 0:n.dualPageTooltip,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(tx,{})}),n==null?void 0:n.dualPageLabel,i===Yl.DUAL_PAGE?G.jsx(mc,{className:"rp-menu-item-right"}):null]})}),G.jsx(ot,{disabled:Z,onClick:t,children:G.jsxs(dl,{className:"rp-menu-item",content:n==null?void 0:n.dualPageWithCoverTooltip,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(ex,{})}),n==null?void 0:n.dualPageWithCoverLabel,i===Yl.DUAL_PAGE_WITH_COVER?G.jsx(mc,{className:"rp-menu-item-right"}):null]})}),G.jsx(Gn,{})]})})},ix=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12.5 2H3.5C3.23478 2 2.98043 2.10536 2.79289 2.29289C2.60536 2.48043 2.5 2.73478 2.5 3V14C2.5 14.2652 2.60536 14.5196 2.79289 14.7071C2.98043 14.8946 3.23478 15 3.5 15H12.5C12.7652 15 13.0196 14.8946 13.2071 14.7071C13.3946 14.5196 13.5 14.2652 13.5 14V3C13.5 2.73478 13.3946 2.48043 13.2071 2.29289C13.0196 2.10536 12.7652 2 12.5 2ZM12.5 14H3.5V3H12.5V14ZM10.462
1456 10.4534C10.4374 10.3927 10.4005 10.3375 10.354 10.2911C10.3076 10.2446 10.2524 10.2077 10.1917 10.1826C10.131 10.1574 10.066 10.1445 10.0003 10.1445C9.93457 10.1445 9.86951 10.1574 9.80881 10.1826C9.74811 10.2077 9.69296 10.2446 9.64653 10.2911L8.50028 11.438V5.51841L9.64653 6.66528C9.74035 6.7591 9.8676 6.81181 10.0003 6.81181C10.133 6.81181 10.2602 6.7591 10.354 6.66528C10.4478 6.57146 10.5006 6.44421 10.5006 6.31153C10.5006 6.17885 10.4478 6.0516 10.354 5.95778L8.35403 3.95778C8.30759 3.91129 8.25245 3.87441 8.19175 3.84925C8.13105 3.82409 8.06599 3.81114 8.00028 3.81114C7.93457 3.81114 7.86951 3.82409 7.80881 3.84925C7.74811 3.87441 7.69296 3.91129 7.64653 3.95778L5.64653 5.95778C5.55271 6.0516 5.5 6.17885 5.5 6.31153C5.5 6.44421 5.55271 6.57146 5.64653 6.66528C5.74035 6.7591 5.8676 6.81181 6.00028 6.81181C6.13296 6.81181 6.26021 6.7591 6.35403 6.66528L7.50028 5.51841V11.438L6.35403 10.2911C6.26021 10.1973 6.13296 10.1446 6.00028 10.1446C5.8676 10.1446 5.74035 10.1973 5.64653 10.2911C5.55271 10.3849 5.5 10.5122 5.5 10.6449C5.5 10.7775 5.55271 10.9048 5.64653 10.9986L7.64653 12.9986C7.69296 13.0451 7.74811 13.082 7.80881 13.1071C7.86951 13.1323 7.93457 13.1453 8.00028 13.1453C8.06599 13.1453 8.13105 13.1323 8.19175 13.1071C8.25245 13.082 8.30759 13.0451 8.35403 12.9986L10.354 10.9986C10.4005 10.9522 10.4374 10.897 10.4626 10.8363C10.4877 10.7756 10.5007 10.7106 10.5007 10.6449C10.5007 10.5792 10.4877 10.5141 10.4626 10.4534Z",fill:"currentColor"})}),cx=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M3.16699 1C3.44313 1 3.66699 1.22386 3.66699 1.5V3H12.3337V1.5C12.3337 1.22386 12.5575 1 12.8337 1C13.1098 1 13.3337 1.22386 13.3337 1.5V3.16667C13.3337 3.6269 12.9606 4 12.5003 4H3.50033C3.04009 4 2.66699 3.6269 2.66699 3.16667V1.5C2.66699 1.22386 2.89085 1 3.16699 1ZM2.66699 5.83333C2.66699 5.28105 3.11471 4.83333 3.66699 4.83333H12.3337C12.8859 4.83333 13.3337 5.28105 13.3337 5.83333V11.1667C13.3337 11.719 12.8859 12.1667 12.3337 12.1667H3.66699C3.11471 12.1667 2.66699 11.719 2.66699 11.1667V5.83333ZM12.3337 5.83333H3.66699V11.1667H12.3337V5.83333ZM3.66699 15.5C3.66699 15.7761 3.44313 16 3.16699 16C2.89085 16 2.66699 15.7761 2.66699 15.5V13.8333C2.66699 13.3731 3.04009 13 3.50033 13H12.5003C12.9606 13 13.3337 13.3731 13.3337 13.8333V15.5C13.3337 15.7761 13.1098 16 12.8337 16C12.5575 16 12.3337 15.7761 12.3337 15.5V14H3.66699V15.5Z",fill:"currentColor"})}),dx=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M15.5 13.3333C15.5 13.0572 15.2761 12.8333 15 12.8333L13.5 12.8333L13.5 4.16665L15 4.16665C15.2761 4.16665 15.5 3.94279 15.5 3.66665C15.5 3.3905 15.2761 3.16665 15 3.16665L13.3333 3.16665C12.8731 3.16665 12.5 3.53974 12.5 3.99998L12.5 13C12.5 13.4602 12.8731 13.8333 13.3333 13.8333L15 13.8333C15.2761 13.8333 15.5 13.6095 15.5 13.3333ZM10.6667 13.8333C11.219 13.8333 11.6667 13.3856 11.6667 12.8333L11.6667 4.16665C11.6667 3.61436 11.219 3.16665 10.6667 3.16665L5.33333 3.16665C4.78105 3.16665 4.33333 3.61436 4.33333 4.16665L4.33333 12.8333C4.33333 13.3856 4.78105 13.8333 5.33333 13.8333L10.6667 13.8333ZM10.6667 4.16665L10.6667 12.8333L5.33333 12.8333L5.33333 4.16665L10.6667 4.16665ZM1 12.8333C0.723858 12.8333 0.5 13.0572 0.5 13.3333C0.5 13.6095 0.723858 13.8333 1 13.8333L2.66667 13.8333C3.1269 13.8333 3.5 13.4602 3.5 13L3.5 3.99998C3.5 3.53974 3.1269 3.16665 2.66667 3.16665L1 3.16665C0.723858 3.16665 0.5 3.3905 0.5 3.66665C0.5 3.94279 0.723858 4.16665 1 4.16665L2.5 4.16665L2.5 12.8333L1 12.8333Z",fill:"currentColor"})}),ax=()=>{let{pageScrollIcon:i}=Kl(),{pageScrollIcon:l}=El();return i||l||G.jsx(ix,{})},nx=()=>{let{verticalScrollIcon:i}=Kl(),{verticalScrollIcon:l}=El();return i||l||G.jsx(cx,{})},Zx=()=>{let{horizontalScrollIcon:i}=Kl(),{horizontalScrollIcon:l}=El();return i||l||G.jsx(dx,{})},bx=()=>{let{scrollModeTool:i=!0}=Vt(),{scrollModeTool:l=!0}=jt(),{viewMode:t}=Gi(),{scrollMode:e,setScrollMode:s}=Wi(),{localeMessages:c}=_l(),d=u.useMemo(()=>t===Yl.DUAL_PAGE||t===Yl.DUAL_PAGE_WITH_COVER,[t]);return!i||!l?null:G.jsx(G.Fragment,{children:G.jsxs(Ld,{children:[G.jsx(ot,{onClick:()=>s(kl.PAGE_SCROLLING),children:G.jsxs(dl,{className:"rp-menu-item",content:c==null?void 0:c.pageScrollingTooltip,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(ax,{})}),c==null?void 0:c.pageScrollingLabel,e===kl.PAGE_SCROLLING?G.jsx(mc,{className:"rp-menu-item-right"}):null]})}),G.jsx(ot,{onClick:()=>s(kl.VERTICAL_SCROLLING),children:G.jsxs(dl,{className:"rp-menu-item",content:c==null?void 0:c.verticalScrollingTooltip,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(nx,{})}),c==null?void 0:c.verticalScrollingLabel,e===kl.VERTICAL_SCROLLING?G.jsx(mc,{className:"rp-menu-item-right"}):null]})}),G.jsx(ot,{disabled:d,onClick:()=>s(kl.HORIZONTAL_SCROLLING),children:G.jsxs(dl,{className:"rp-menu-item",content:c==null?void 0:c.horizontalTooltip,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(Zx,{})}),c==null?void 0:c.horizontalLabel,e===kl.HORIZONTAL_SCROLLING?G.jsx(mc,{className:"rp-menu-item-right"}):null]})})]})})},DT=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M3.14625 7.85375C3.05243 7.75993 2.99972 7.63268 2.99972 7.5C2.99972 7.36732 3.05243 7.24007 3.14625 7.14625C3.24007 7.05243 3.36732 6.99972 3.5 6.99972C3.63268 6.99972 3.75993 7.05243 3.85375 7.14625L7.5 10.7931V2.5C7.5 2.36739 7.55268 2.24021 7.64645 2.14645C7.74021 2.05268 7.86739 2 8 2C8.13261 2 8.25979 2.05268 8.35355 2.14645C8.44732 2.24021 8.5 2.36739 8.5 2.5V10.7931L12.1462 7.14625C12.1927 7.09979 12.2479 7.06294 12.3086 7.0378C12.3
145692 7.01266 12.4343 6.99972 12.5 6.99972C12.5657 6.99972 12.6308 7.01266 12.6914 7.0378C12.7521 7.06294 12.8073 7.09979 12.8538 7.14625C12.9002 7.1927 12.9371 7.24786 12.9622 7.30855C12.9873 7.36925 13.0003 7.4343 13.0003 7.5C13.0003 7.5657 12.9873 7.63075 12.9622 7.69145C12.9371 7.75214 12.9002 7.8073 12.8538 7.85375L8.35375 12.3538C8.30731 12.4002 8.25217 12.4371 8.19147 12.4623C8.13077 12.4874 8.06571 12.5004 8 12.5004C7.93429 12.5004 7.86923 12.4874 7.80853 12.4623C7.74783 12.4371 7.69269 12.4002 7.64625 12.3538L3.14625 7.85375ZM13.5 13.5H2.5C2.36739 13.5 2.24021 13.5527 2.14645 13.6464C2.05268 13.7402 2 13.8674 2 14C2 14.1326 2.05268 14.2598 2.14645 14.3536C2.24021 14.4473 2.36739 14.5 2.5 14.5H13.5C13.6326 14.5 13.7598 14.4473 13.8536 14.3536C13.9473 14.2598 14 14.1326 14 14C14 13.8674 13.9473 13.7402 13.8536 13.6464C13.7598 13.5527 13.6326 13.5 13.5 13.5Z",fill:"currentColor"})}),ox={"rp-go-to-Top":"_rp-go-to-Top_4e0yd_1"},mx=()=>{let{goToFirstPageIcon:i}=Kl(),{goToFirstPageIcon:l}=El();return i||l||G.jsx(DT,{className:ox["rp-go-to-Top"]})},hx=()=>{let{goToLastPageIcon:i}=Kl(),{goToLastPageIcon:l}=El();return i||l||G.jsx(DT,{})},Cr={width:"100%"},ux=()=>{let{goToPage:i,totalPages:l,focusedPage:t}=Xe(),{jumpNavigationTool:e=!0}=Vt(),{jumpNavigationTool:s=!0}=jt(),{localeMessages:c}=_l(),d=u.useMemo(()=>t===1,[t]),n=u.useMemo(()=>t===l,[t,l]),Z=u.useCallback(()=>{i(1)},[i]),b=u.useCallback(()=>{i(l)},[i,l]);return!e||!s?null:G.jsxs(Ld,{children:[G.jsx(ot,{onClick:Z,children:G.jsx(dl,{content:c==null?void 0:c.firstPageTooltip,style:Cr,children:G.jsxs("div",{className:"rp-menu-item","aria-disabled":d,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(mx,{})}),G.jsx("span",{children:c==null?void 0:c.firstPageLabel})]})})}),G.jsx(ot,{onClick:b,children:G.jsx(dl,{content:c==null?void 0:c.lastPageTooltip,style:Cr,children:G.jsxs("div",{className:"rp-menu-item","aria-disabled":n,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(hx,{})}),G.jsx("span",{children:c==null?void 0:c.lastPageLabel})]})})}),G.jsx(Gn,{})]})},Wx=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("g",{id:"icon - pdf",children:G.jsx("path",{id:"Vector",d:"M10.6029 8.89562L13.4011 7.67937C13.5854 7.59764 13.7407 7.46209 13.8466 7.29052C13.9525 7.11895 14.0041 6.91936 13.9946 6.71796C13.985 6.51655 13.9148 6.32273 13.7932 6.16192C13.6716 6.00112 13.5041 5.88084 13.3129 5.81687L3.30793 2.55C3.13286 2.4927 2.94534 2.48503 2.76617 2.52785C2.58701 2.57066 2.42321 2.66227 2.29295 2.79253C2.1627 2.92278 2.07108 3.08658 2.02827 3.26574C1.98546 3.44491 1.99313 3.63243 2.05043 3.8075L5.3173 13.8125C5.37887 14.0056 5.49828 14.1751 5.65937 14.298C5.82046 14.421 6.01545 14.4915 6.21793 14.5H6.26668C6.46089 14.5007 6.65102 14.4442 6.81338 14.3376C6.97574 14.2311 7.10317 14.0791 7.1798 13.9006L8.39605 11.1025L11.5004 14.2069C11.5933 14.2998 11.7035 14.3734 11.8249 14.4237C11.9462 14.474 12.0763 14.4998 12.2076 14.4998C12.339 14.4998 12.469 14.474 12.5904 14.4237C12.7117 14.3734 12.8219 14.2998 12.9148 14.2069L13.7073 13.4144C13.8002 13.3215 13.8739 13.2113 13.9241 13.0899C13.9744 12.9686 14.0003 12.8385 14.0003 12.7072C14.0003 12.5758 13.9744 12.4458 13.9241 12.3245C13.8739 12.2031 13.8002 12.0929 13.7073 12L10.6029 8.89562ZM12.2073 13.5L9.10293 10.3956C8.98771 10.2802 8.84601 10.1947 8.69018 10.1466C8.53435 10.0985 8.36911 10.0892 8.20887 10.1196C8.04864 10.15 7.89826 10.2191 7.77086 10.3209C7.64346 10.4227 7.54289 10.5542 7.47793 10.7037L6.2648 13.495L3.00043 3.5L12.9923 6.7625L10.2017 7.97625C10.0521 8.04121 9.92065 8.14178 9.81883 8.26918C9.71701 8.39659 9.6479 8.54696 9.61751 8.7072C9.58713 8.86743 9.5964 9.03267 9.64451 9.1885C9.69263 9.34433 9.77812 9.48603 9.89355 9.60125L13.0004 12.7069L12.2073 13.5Z",fill:"currentColor"})})}),Gx=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M11.75 3.5C11.4905 3.49963 11.2342 3.55751 11 3.66937V3.25C11.0001 2.8329 10.8513 2.42947 10.5803 2.11239C10.3094 1.79531 9.93404 1.58544 9.52202 1.52061C9.11 1.45577 8.68836 1.54022 8.3331 1.75875C7.97783 1.97728 7.7123 2.31551 7.58435 2.7125C7.31786 2.56795 7.01838 2.49511 6.71526 2.50113C6.41214 2.50714 6.11579 2.5918 5.85523 2.74681C5.59468 2.90182 5.37887 3.12186 5.22894 3.38537C5.07901 3.64888 5.00012 3.94682 4.99998 4.25V8.25L4.76123 7.86687C4.52933 7.46668 4.14843 7.17457 3.70179 7.05438C3.25515 6.9342 2.7791 6.99572 2.37769 7.2255C1.97627 7.45528 1.68215 7.83463 1.55961 8.28063C1.43707 8.72663 1.49607 9.203 1.72373 9.60562C2.72373 11.7162 3.53185 13.2131 4.45623 14.1487C5.38998 15.0962 6.44998 15.5 7.99998 15.5C9.45816 15.4983 10.8561 14.9183 11.8872 13.8873C12.9183 12.8562 13.4983 11.4582 13.5 10V5.25C13.5 4.78587 13.3156 4.34075 12.9874 4.01256C12.6592 3.68437 12.2141 3.5 11.75 3.5ZM12.5 10C12.4987 11.1931 12.0241 12.3369 11.1805 13.1805C10.3369 14.0241 9.19305 14.4987 7.99998 14.5C6.72623 14.5 5.9056 14.195 5.16685 13.4469C4.33998 12.6087 3.57873 11.187
1455 2.61873 9.16125C2.6131 9.14885 2.60685 9.13675 2.59998 9.125C2.50052 8.95269 2.47359 8.74793 2.5251 8.55576C2.57662 8.3636 2.70236 8.19977 2.87467 8.10031C3.04697 8.00085 3.25173 7.97392 3.4439 8.02543C3.63607 8.07695 3.7999 8.20269 3.89935 8.375C3.9019 8.38 3.90482 8.38481 3.9081 8.38937L5.07498 10.2644C5.1323 10.3569 5.21823 10.4281 5.31973 10.4674C5.42123 10.5066 5.53276 10.5116 5.63738 10.4817C5.74201 10.4518 5.83403 10.3886 5.89946 10.3017C5.9649 10.2147 6.00019 10.1088 5.99998 10V4.25C5.99998 4.05108 6.079 3.86032 6.21965 3.71967C6.3603 3.57901 6.55107 3.5 6.74998 3.5C6.94889 3.5 7.13966 3.57901 7.28031 3.71967C7.42096 3.86032 7.49998 4.05108 7.49998 4.25V8C7.49998 8.13261 7.55266 8.25978 7.64643 8.35355C7.74019 8.44732 7.86737 8.5 7.99998 8.5C8.13259 8.5 8.25977 8.44732 8.35353 8.35355C8.4473 8.25978 8.49998 8.13261 8.49998 8V3.25C8.49998 3.05108 8.579 2.86032 8.71965 2.71967C8.8603 2.57901 9.05107 2.5 9.24998 2.5C9.44889 2.5 9.63966 2.57901 9.78031 2.71967C9.92096 2.86032 9.99998 3.05108 9.99998 3.25V8C9.99998 8.13261 10.0527 8.25978 10.1464 8.35355C10.2402 8.44732 10.3674 8.5 10.5 8.5C10.6326 8.5 10.7598 8.44732 10.8535 8.35355C10.9473 8.25978 11 8.13261 11 8V5.25C11 5.05108 11.079 4.86032 11.2196 4.71967C11.3603 4.57901 11.5511 4.5 11.75 4.5C11.9489 4.5 12.1397 4.57901 12.2803 4.71967C12.421 4.86032 12.5 5.05108 12.5 5.25V10Z",fill:"currentColor"})}),Nx=()=>{let{textSelectionIcon:i}=Kl(),{textSelectionIcon:l}=El();return i||l||G.jsx(Wx,{})},rx=()=>{let{handModeIcon:i}=Kl(),{handModeIcon:l}=El();return i||l||G.jsx(Gx,{})},Xx=()=>{let{selectionModeTool:i=!0}=Vt(),{selectionModeTool:l=!0}=jt(),{selectionMode:t,setSelectionMode:e}=Lp(),{localeMessages:s}=_l();return!i||!l?null:G.jsx(G.Fragment,{children:G.jsxs(Ld,{children:[G.jsx(ot,{onClick:()=>e(Nd.TEXT),children:G.jsxs(dl,{className:"rp-menu-item",content:s==null?void 0:s.textSelectionTooltip,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(Nx,{})}),s==null?void 0:s.textSelectionLabel,t===Nd.TEXT?G.jsx(mc,{className:"rp-menu-item-right"}):null]})}),G.jsx(ot,{onClick:()=>e(Nd.HAND),children:G.jsxs(dl,{className:"rp-menu-item",content:s==null?void 0:s.handToolTooltip,children:[G.jsx("div",{className:"rp-menu-item-left",children:G.jsx(rx,{})}),s==null?void 0:s.handToolLabel,t===Nd.HAND?G.jsx(mc,{className:"rp-menu-item-right"}):null]})}),G.jsx(Gn,{})]})})},Mx=()=>{let[i,l]=u.useState(!1),{container:t,pagesRef:e}=Pe(),{isSmallScreen:s}=js(),{openFileTool:c,downloadTool:d,documentProperties:n,scrollModeTool:Z,rotateTool:b,selectionModeTool:o,jumpNavigationTool:m,printTool:h,fullscreenTool:W,viewModeTool:r}=Vt(),{openFileTool:N,downloadTool:M,documentProperties:X,scrollModeTool:y,rotateTool:Y,selectionModeTool:T,jumpNavigationTool:V,printTool:I,fullscreenTool:w,viewModeTool:R}=jt(),{localeMessages:S}=_l(),[x,g]=u.useState(0),C=u.useRef(new ResizeObserver(k=>{g(k[0].contentRect.height)})),D=u.useMemo(()=>m||b||o||Z||n||r||s&&(c||d||h||W),[c,d,h,W,n,Z,b,o,m,s]),J=u.useMemo(()=>V||Y||T||y||X||R||s&&(N||M||I||w),[N,M,I,w,X,y,Y,T,V,s]);return u.useEffect(()=>(e&&C.current.observe(e),()=>{C.current.disconnect()}),[e]),!D||!J?null:G.jsxs(G.Fragment,{children:[G.jsx(QG,{container:t,onOpenChange:l,triggerComponent:G.jsx("div",{role:"button","aria-haspopup":"menu",children:G.jsx(dl,{content:S==null?void 0:S.moreOptionTooltip,children:G.jsx($t,{active:i,"aria-label":S==null?void 0:S.moreOptionTooltip,"aria-expanded":i,children:G.jsx(YS,{"aria-hidden":"true"})})})}),side:"bottom",avoidCollisions:!1,children:G.jsxs("div",{style:{maxHeight:`${x}px`,overflow:"auto"},className:ES["rp-other-tool-content"],"data-rp":"moreOptionsDropdown",children:[s&&G.jsxs(Ld,{children:[G.jsx(bT,{}),G.jsx(hT,{}),G.jsx(GT,{}),G.jsx(XT,{}),G.jsx(Gn,{})]}),G.jsx(ux,{}),G.jsx(AS,{}),G.jsx(Xx,{}),G.jsx(sx,{}),G.jsx(bx,{}),G.jsx(QS,{})]})}),G.jsx(US,{})]})},px=()=>{let{isSmallScreen:i}=js();return G.jsxs(G.Fragment,{children:[G.jsx(hS,{}),!i&&G.jsxs(G.Fragment,{children:[G.jsx(bT,{}),G.jsx(hT,{}),G.jsx(GT,{}),G.jsx(XT,{})]}),G.jsx(Mx,{})]})},Yx=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M11.8747 8.75006C11.8747 8.91582 11.8088 9.07479 11.6916 9.192C11.5744 9.30921 11.4155 9.37506 11.2497 9.37506H9.37469V11.2501C9.37469 11.4158 9.30884 11.5748 9.19163 11.692C9.07442 11.8092 8.91545 11.8751 8.74969 11.8751C8.58393 11.8751 8.42496 11.8092 8.30775 11.692C8.19054 11.5748 8.12469 11.4158 8.12469 11.2501V9.37506H6.24969C6.08393 9.37506 5.92496 9.30921 5.80775 9.192C5.69054 9.07479 5.62469 8.91582 5.62469 8.75006C5.62469 8.5843 5.69054 8.42532 5.80775 8.30811C5.92496 8.1909 6.08393 8.12506 6.24969 8.12506H8.12469V6.25006C8.12469 6.0843 8.19054 5.92532 8.30775 5.80811C8.42496 5.6909 8.58393 5.62506 8.74969 5.62506C8.91545 5.62506 9.07442 5.6909 9.19163 5.80811C9.30884 5.92532 9.37469 6.0843 9.37469 6.25006V8.12506H11.2497C11.4155 8.12506 11.5744 8.1909 11.6916 8.30811C11.8088 8.42532 11.8747 8.5843 11.8747 8.75006ZM17.9419 17.9422C17.8838 18.0004 17.8149 18.0465 17.739 18.0779C17.6632 18.1094 17.5818 
14518.1255 17.4997 18.1255C17.4176 18.1255 17.3362 18.1094 17.2604 18.0779C17.1845 18.0465 17.1155 18.0004 17.0575 17.9422L13.1466 14.0305C11.7854 15.1643 10.0395 15.7297 8.27214 15.609C6.50475 15.4883 4.85192 14.6909 3.65748 13.3827C2.46304 12.0744 1.81895 10.356 1.8592 8.58498C1.89945 6.81394 2.62094 5.12659 3.87358 3.87395C5.12622 2.62131 6.81357 1.89982 8.58462 1.85957C10.3557 1.81932 12.074 2.46341 13.3823 3.65785C14.6906 4.85229 15.488 6.50512 15.6086 8.2725C15.7293 10.0399 15.1639 11.7858 14.0302 13.1469L17.9419 17.0579C18 17.1159 18.0461 17.1848 18.0775 17.2607C18.109 17.3366 18.1252 17.4179 18.1252 17.5001C18.1252 17.5822 18.109 17.6635 18.0775 17.7394C18.0461 17.8153 18 17.8842 17.9419 17.9422ZM8.74969 14.3751C9.86221 14.3751 10.9497 14.0452 11.8748 13.4271C12.7998 12.809 13.5208 11.9305 13.9465 10.9027C14.3723 9.87482 14.4837 8.74382 14.2666 7.65267C14.0496 6.56153 13.5138 5.55925 12.7272 4.77258C11.9405 3.98591 10.9382 3.45018 9.84707 3.23314C8.75593 3.0161 7.62493 3.12749 6.5971 3.55323C5.56926 3.97898 4.69076 4.69995 4.07267 5.62497C3.45459 6.55 3.12469 7.63754 3.12469 8.75006C3.12634 10.2414 3.71951 11.6712 4.77404 12.7257C5.82858 13.7802 7.25836 14.3734 8.74969 14.3751Z",fill:"currentColor"})}),yx=i=>G.jsx("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:G.jsx("path",{d:"M11.8747 8.75006C11.8747 8.91582 11.8088 9.07479 11.6916 9.192C11.5744 9.30921 11.4155 9.37506 11.2497 9.37506H6.24969C6.08393 9.37506 5.92496 9.30921 5.80775 9.192C5.69054 9.07479 5.62469 8.91582 5.62469 8.75006C5.62469 8.5843 5.69054 8.42532 5.80775 8.30811C5.92496 8.1909 6.08393 8.12506 6.24969 8.12506H11.2497C11.4155 8.12506 11.5744 8.1909 11.6916 8.30811C11.8088 8.42532 11.8747 8.5843 11.8747 8.75006ZM17.9419 17.9422C17.8838 18.0004 17.8149 18.0465 17.739 18.0779C17.6632 18.1094 17.5818 18.1255 17.4997 18.1255C17.4176 18.1255 17.3362 18.1094 17.2604 18.0779C17.1845 18.0465 17.1155 18.0004 17.0575 17.9422L13.1466 14.0305C11.7854 15.1643 10.0395 15.7297 8.27214 15.609C6.50475 15.4883 4.85192 14.6909 3.65748 13.3827C2.46304 12.0744 1.81895 10.356 1.8592 8.58498C1.89945 6.81394 2.62094 5.12659 3.87358 3.87395C5.12622 2.62131 6.81357 1.89982 8.58462 1.85957C10.3557 1.81932 12.074 2.46341 13.3823 3.65785C14.6906 4.85229 15.488 6.50512 15.6086 8.2725C15.7293 10.0399 15.1639 11.7858 14.0302 13.1469L17.9419 17.0579C18 17.1159 18.0461 17.1848 18.0775 17.2607C18.109 17.3366 18.1252 17.4179 18.1252 17.5001C18.1252 17.5822 18.109 17.6635 18.0775 17.7394C18.0461 17.8153 18 17.8842 17.9419 17.9422ZM8.74969 14.3751C9.86221 14.3751 10.9497 14.0452 11.8748 13.4271C12.7998 12.809 13.5208 11.9305 13.9465 10.9027C14.3723 9.87482 14.4837 8.74382 14.2666 7.65267C14.0496 6.56153 13.5138 5.55925 12.7272 4.77258C11.9405 3.98591 10.9382 3.45018 9.84707 3.23314C8.75593 3.0161 7.62493 3.12749 6.5971 3.55323C5.56926 3.97898 4.69076 4.69995 4.07267 5.62497C3.45459 6.55 3.12469 7.63754 3.12469 8.75006C3.12634 10.2414 3.71951 11.6712 4.77404 12.7257C5.82858 13.7802 7.25836 14.3734 8.74969 14.3751Z",fill:"currentColor"})}),Yn={"rp-zoom-wrapper":"_rp-zoom-wrapper_1yldl_1","rp-current-zoom-wrapper":"_rp-current-zoom-wrapper_1yldl_6",active:"_active_1yldl_11","rp-current-zoom-icon":"_rp-current-zoom-icon_1yldl_15","rp-current-zoom-text":"_rp-current-zoom-text_1yldl_24","rp-zoom-dropdown-content":"_rp-zoom-dropdown-content_1yldl_28"},Tx=({zoomLevel:i,className:l})=>{let{localeMessages:t}=_l(),e=u.useMemo(()=>{switch(i){case ws.ACTUAL:return t==null?void 0:t.zoomActualSize;case ws.PAGE_FIT:return t==null?void 0:t.zoomPageFit;case ws.PAGE_WIDTH:return t==null?void 0:t.zoomPageWidth}return i.toString()},[i,t]);return G.jsx(G.Fragment,{children:typeof i=="number"?G.jsxs(u.Fragment,{children:[G.jsx("span",{className:l,children:i}),G.jsx("span",{className:l,children:"%"})]}):G.jsx("span",{className:l,children:e})})},Vx=i=>i*100<=25,Lx=i=>i*100>=vW,Ix=[50,75,100,125,150,200,300,400],zx=()=>{let{zoomInIcon:i}=Kl(),{zoomInIcon:l}=El();return i||l||G.jsx(Yx,{})},wx=()=>{let{zoomOutIcon:i}=Kl(),{zoomOutIcon:l}=El();return i||l||G.jsx(yx,{})},Rx=()=>{let{zoomLevel:i,setZoomLevel:l,currentZoom:t}=mn(),{container:e,pagesRef:s}=Pe(),{zoomTool:c=!0}=Vt(),{zoomTool:d=!0}=jt(),{isSmallScreen:n}=js(),{localeMessages:Z}=_l(),[b,o]=u.useState(0),[m,h]=u.useState(!1),W=u.useRef(new ResizeObserver(y=>{o(y[0].contentRect.height)})),r=u.useCallback(()=>
145{l(()=>{let y=Math.floor(t*100/25)*25;return Math.min(y+25,vW)})},[l,t]),N=u.useCallback(()=>{l(()=>{let y=Math.ceil(t*100/25)*25;return Math.min(y-25,vW)})},[l,t]),M=u.useMemo(()=>Vx(t),[t]),X=u.useMemo(()=>Lx(t),[t]);return u.useEffect(()=>(s&&W.current.observe(s),()=>{W.current.disconnect()}),[s]),!c||!d?null:typeof c=="function"?G.jsx(c,{zoomLevel:i,setZoomLevel:l}):typeof d=="function"?G.jsx(d,{zoomLevel:i,setZoomLevel:l}):G.jsxs("div",{className:Yn["rp-zoom-wrapper"],children:[G.jsx(dl,{content:Z==null?void 0:Z.zoomOutTooltip,children:G.jsx($t,{disabled:M,onClick:N,"aria-label":Z==null?void 0:Z.zoomOutTooltip,children:G.jsx(wx,{})})}),!n&&G.jsx(QG,{container:e,open:m,onOpenChange:h,triggerComponent:G.jsx("div",{role:"button",children:G.jsx(dl,{content:Z==null?void 0:Z.zoomSelectTooltip,children:G.jsxs($t,{className:xl(Yn["rp-current-zoom-wrapper"],m&&Yn.active),"aria-label":Z==null?void 0:Z.zoomSelectTooltip,children:[G.jsx(Tx,{zoomLevel:i,className:Yn["rp-current-zoom-text"]}),G.jsx(mo,{className:Yn["rp-current-zoom-icon"]})]})})}),style:{minWidth:"200px"},align:"center",side:"bottom",avoidCollisions:!1,children:G.jsxs("div",{style:{maxHeight:`${b}px`,overflow:"auto"},className:Yn["rp-zoom-dropdown-content"],children:[G.jsxs(Ld,{children:[G.jsx(ot,{onClick:()=>l(ws.ACTUAL),children:Z==null?void 0:Z.zoomActualSize}),G.jsx(ot,{onClick:()=>l(ws.PAGE_FIT),children:Z==null?void 0:Z.zoomPageFit}),G.jsx(ot,{onClick:()=>l(ws.PAGE_WIDTH),children:Z==null?void 0:Z.zoomPageWidth})]}),G.jsx(Gn,{}),G.jsx(Ld,{children:Ix.map(y=>G.jsxs(ot,{onClick:()=>l(y),children:[y," %"]},y))})]})}),G.jsx(dl,{content:Z==null?void 0:Z.zoomInTooltip,children:G.jsx($t,{disabled:X,onClick:r,"aria-label":Z==null?void 0:Z.zoomInTooltip,children:G.jsx(zx,{})})})]})},yn={"rp-loading-overlay":"_rp-loading-overlay_wazy2_1","rp-loading-modal":"_rp-loading-modal_wazy2_14","rp-loading-title":"_rp-loading-title_wazy2_27","rp-loading-progress-bar":"_rp-loading-progress-bar_wazy2_35","rp-loading-progress":"_rp-loading-progress_wazy2_35","rp-loading-cancel-button":"_rp-loading-cancel-button_wazy2_55"},Sx=({percentage:i})=>{let{cancel:l}=ru(),{localeMessages:t}=_l();return i<1?null:G.jsx("div",{className:xl(yn["rp-loading-overlay"]),children:G.jsxs("div",{className:xl(yn["rp-loading-modal"]),children:[G.jsxs("div",{className:xl(yn["rp-loading-title"]),children:[t==null?void 0:t.printLoadingMessage,"..."]}),G.jsx("div",{className:xl(yn["rp-loading-progress-bar"]),children:G.jsx("div",{className:xl(yn["rp-loading-progress"]),style:{width:`${i}%`}})}),G.jsx("button",{className:xl(yn["rp-loading-cancel-button"]),onClick:l,onKeyDown:e=>{e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),l())},autoFocus:!0,children:t==null?void 0:t.printCancelLabel})]})})},xx=zd((i,l)=>{let{showPrintProgress:t=!0}=Vt(),{showPrintProgress:e=!0}=jt(),{progress:s,showDefaultProgress:c}=ru(),{isSmallScreen:d}=js(),{percentage:n}=s||{};return G.jsxs("div",{children:[G.jsx("div",{"data-rp":"topBar",ref:l,className:wb["rp-toolbar-content"],children:G.jsxs("div",{className:wb["rp-toolbar-wrapper"],style:d?{gridTemplateColumns:"25% 60% 15%"}:void 0,children:[G.jsxs("div",{"data-rp":"topBarLeft",className:wb["rp-toolbar-start"],children:[G.jsx(tS,{}),G.jsx(iS,{})]}),G.jsx("div",{"data-rp":"topBarCenter",className:wb["rp-toolbar-middle"],children:G.jsx(Rx,{})}),G.jsx("div",{"data-rp":"topBarRight",className:wb["rp-toolbar-end"],children:G.jsx(px,{})})]})}),G.jsx(()=>{if(!(!(c??(t&&e))||!n))return G.jsx(Sx,{percentage:n})},{})]})}),gx=i=>G.jsxs("svg",{...i,width:"1em",height:"1em",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[G.jsx("path",{d:"M16.875 3.125H3.125C2.79348 3.125 2.47554 3.2567 2.24112 3.49112C2.0067 3.72554 1.875 4.04348 1.875 4.375V15.625C1.875 15.9565 2.0067 16.2745 2.24112 16.5089C2.47554 16.7433 2.79348 16.875 3.125 16.875H16.875C17.2065 16.875 17.5245 16.7433 17.7589 16.5089C17.9933 16.2745 18.125 15.9565 18.125 15.625V4.375C18.125 4.04348 17.9933 3.72554 17.7589 3.49112C17.5245 3.2567 17.2065 3.125 16.875 3.125ZM3.125 4.375H7.08333V15.625H3.125V4.375ZM16.875 15.625H8.33333V4.375H16.875V15.625Z",fill:"currentColor"}),G.jsx("rect",{x:"4.25",y:"5.83325",width:"1.66667",height:"1.66667",fill:"currentColor"}),G.jsx("rect",{x:"4.25",y:"9.16675",width:"1.66667",height:"1.66667",fill:"currentColor"}),G.jsx("rect",{x:"4.25",y:"12.5",width:"1.66667",height:"1.66667",fill:"currentColor"})]}),jn={"rp-sidebar-content-wrapper":"_rp-sidebar-content-wrapper_ppg43_1","rp-sidebar-content":"_rp-sidebar-content_ppg43_1","rp-thumbnails-wrapper":"_rp-thumbnails-wrapper_ppg43_17","rp-thumbnails-wrapper-dragging":"_rp-thumbnails-wrapper-dragging_ppg43_24","rp-thumbnails-wrapper-hidden":"_rp-thumbnails-wrapper-hidden_ppg43_28"},kh={"rp-thumbnail-dragger":"_rp-thumbnail-dragger_1faw8_2","rp-thumbnail-dragger-dragging":"_rp-thumbnail-dragger-dragging_1faw8_13"},Uh={"rp-thumbnail-dragger":"_rp-thumbnail-dragger_174bn_1","rp-thumbnail-dragger-dragging":"_rp-thumbnail-dragger-dragging_174bn_15"},jx=20,Dx=640,Cx=112,G2=i=>{i.preventDefault(),i.stopPropagation()},Jx=i=>{let{onWidthChange:l,thumbnailRef:t,leftSidebarRef:e,isRPLayout:s}=i,c=u.useRef(null),d=u.useRef(0),n=u.useRef(null),Z=u.useRef(!1),b=u.useRef(200),o=u.useRef(200),m=u.useRef(200),[h,W]=u.useState(200),{container:r,pagesRef:N}=Pe(),{width:M}=js(),X=M>0&&M<Dx;u.useLayoutEffect(()=>{b.current=h},[h]);let y=u.useCallback(()=>{var k,O,j,F;if(!r)return null;let w=((O=(k=c.current)==null?void 0:k.closest(".rp-content"))==null?void 0:O.clientWidth)??r.clientWidth,R=((j=e.current)==null?void 0:j.getBoundingClientRect().width)??0,S=((F=c.current)==null?void 0:F.offsetWidth)??0,x=(N==null?void 0:N.clientWidth)??1/0,g=Math.floor(w*.5-R),C=Math.floor(w*jx/100-R-S),D=Math.min(g,x);Number.isFinite(D)||(D=0),D=Math.max(0,Math.floor(D));let J=Math.max(200,C);return J=Math.min(J,D),m.current=J,{maxAllowed:D,minAllowed:J}},[r,N,e]),Y=u.useCallback(()=>
145{if(!r||Z.current||X)return;let w=y();w&&W(w.maxAllowed)},[r,X,y]),T=u.useCallback(w=>{var g,C,D,J,k,O,j,F;if(X)return;G2(w);let R=y();R?(m.current=R.minAllowed,o.current=R.maxAllowed):o.current=b.current,Z.current=!0;try{w.currentTarget.setPointerCapture(w.pointerId)}catch{}let S=((C=(g=c.current)==null?void 0:g.getBoundingClientRect())==null?void 0:C.left)??0,x=((J=(D=t.current)==null?void 0:D.getBoundingClientRect())==null?void 0:J.width)??0;n.current={x:S,y:0},d.current=x,(k=c.current)==null||k.classList.add(kh["rp-thumbnail-dragger-dragging"]),(O=c.current)==null||O.classList.add(Uh["rp-thumbnail-dragger-dragging"]),(F=(j=c.current)==null?void 0:j.closest('[data-rp="thumbnailSidebar"]'))==null||F.classList.add(jn["rp-thumbnails-wrapper"],jn["rp-thumbnails-wrapper-dragging"])},[t,y,X]),V=u.useCallback(w=>{var R,S;G2(w);try{c.current&&w.pointerId!=null&&c.current.releasePointerCapture(w.pointerId)}catch{}n.current=null,Z.current=!1,requestAnimationFrame(()=>{Y()}),(R=c.current)==null||R.classList.remove(kh["rp-thumbnail-dragger-dragging"]),(S=c.current)==null||S.classList.remove(Uh["rp-thumbnail-dragger-dragging"])},[Y]),I=u.useCallback(w=>{if(X||!n.current)return;let R=w.clientX-n.current.x,S=Math.max(m.current,Math.min(d.current+R,o.current));l==null||l(S),G2(w)},[l,X]);return u.useEffect(()=>{if(!r||X)return;let w=new ResizeObserver(()=>{Y()});return w.observe(r),N&&w.observe(N),Y(),()=>{w.disconnect()}},[r,N,Y,X]),u.useEffect(()=>{var R;if(Z.current||X)return;let w=((R=t.current)==null?void 0:R.clientWidth)??200;w>h?l==null||l(h):h>=200&&w<200&&(l==null||l(200))},[h,l,t,X]),u.useEffect(()=>{var R,S;if(!X)return;let w=y();if(w){let x=Math.min(Cx,w.maxAllowed);b.current=x,o.current=x,m.current=x,W(x),l==null||l(x)}n.current=null,Z.current=!1,(R=c.current)==null||R.classList.remove(kh["rp-thumbnail-dragger-dragging"]),(S=c.current)==null||S.classList.remove(Uh["rp-thumbnail-dragger-dragging"])},[X,y,l,t]),u.useEffect(()=>(window.addEventListener("pointermove",I),window.addEventListener("pointerup",V),window.addEventListener("pointercancel",V),()=>{window.removeEventListener("pointermove",I),window.removeEventListener("pointerup",V),window.removeEventListener("pointercancel",V)}),[I,V]),G.jsx("div",{ref:c,className:s?Uh["rp-thumbnail-dragger"]:kh["rp-thumbnail-dragger"],onPointerDown:X?void 0:T})},Fx={"rp-custom-thumbnail-element":"_rp-custom-thumbnail-element_h5ef7_1"},Ox=({child:i})=>{let l=u.useRef(null);return u.useEffect(()=>{var t;return(t=l.current)==null||t.appendChild(i),()=>{var e;(e=l.current)==null||e.removeChild(i)}},[i]),G.jsx("div",{ref:l})},kx=({pageNumber:i})=>{let{elementList:l}=KL(),t=u.useMemo(()=>{var e;return(e=l[i])==null?void 0:e.map((s,c)=>s instanceof HTMLElement?G.jsx(Ox,{child:s},c):G.jsx("div",{children:s},c))},[l,i]);return t?G.jsx("div",{className:Fx["rp-custom-thumbnail-element"],"data-rp":`thumbnail-${i}-customElement`,children:t}):null},Rb={"rp-thumbnail-wrapper":"_rp-thumbnail-wrapper_czi7p_1","rp-thumbnail-text":"_rp-thumbnail-text_czi7p_10","rp-thumbnail":"_rp-thumbnail_czi7p_1","rp-thumbnail-active":"_rp-thumbnail-active_czi7p_23","rp-thumbnail-loader":"_rp-thumbnail-loader_czi7p_32"},Ux=i=>{let{pageNumber:l,isFocused:t,viewport:e}=i,{goToPage:s}=Xe(),{pageRotate:c}=hn(),d=u.useRef(null),n=fp(),{pages:Z}=at(),[b,o]=u.useState(null),m=u.useRef(!1),h=u.useRef(),W=u.useMemo(()=>t?Rb["rp-thumbnail-active"]:"",[t]),r=u.useMemo(()=>({width:Math.round(e.width),height:Math.round(e.height)}),[e]),N=u.useCallback(()=>{l&&s(l)},[s,l]);return u.useEffect(()=>{let M=Z.get(l);h.current!==M&&(o(null),h.current=M)},[Z,l]),u.useEffect(()=>{let M=Z.get(l);if(!d.current||!l||!M||b)return;let X=new IntersectionObserver(y=>{y.forEach(Y=>{if(m.current){m.current=!1,n.removeQueue(`thumbnail-${l}`);return}if(Y.isIntersecting){let T=document.createElement("canvas");m.current=!0,n.enqueue(`thumbnail-${l}`,{page:M.page,canvasElem:T,options:{scale:1},onLoaded:()=>{T.toBlob(V=>{V&&o(URL.createObjectURL(V))})}},2)}})});return d.current&&X.observe(d.current),()=>{X.disconnect(),n.removeQueue(`thumbnail-${l}`)}},[n,l,Z,b]),G.jsxs("div",{onClick:N,onKeyDown:M=>{(M.key==="Enter"||M.key===" ")&&(M.preventDefault(),N())},id:`page-${l}`,className:Rb["rp-thumbnail-wrapper"],ref:d,role:"button",tabIndex:0,"aria-label":`Go to page ${l}`,"aria-current":t?"page":void 0,children:[G.jsxs("div",{style:{transform:`rotate(${c[l||0]}deg)`}
145,className:xl(W,Rb["rp-thumbnail"]),"aria-hidden":"true",children:[b?G.jsx("img",{src:b,width:r.width,height:r.height,alt:`Page ${l} thumbnail`,"aria-hidden":"true"}):G.jsx("div",{className:Rb["rp-thumbnail-loader"],style:{width:`${r.width}px`,height:`${r.height}px`},children:G.jsx(TG,{"aria-hidden":"true"})}),G.jsx(kx,{pageNumber:l})]}),G.jsx("div",{className:Rb["rp-thumbnail-text"],"aria-hidden":"true",children:l})]})},Ex=(i,l,t={})=>{let{distance:e=10,loadFirst:s=!1}=t,c=u.useCallback(d=>{i&&i.scrollHeight-i.clientHeight-i.scrollTop<e&&l()},[l,i,e]);u.useEffect(()=>{s&&l()},[s]),u.useEffect(()=>(i==null||i.addEventListener("scroll",c),()=>{i==null||i.removeEventListener("scroll",c)}),[c,i])},Jr={"rp-thumbnails-container":"_rp-thumbnails-container_1szrf_1","rp-thumbnails":"_rp-thumbnails_1szrf_1"},Kx=16,vx=(i,l)=>{let t=i==null?void 0:i.querySelector(`#page-${l}`);i&&(t!=null&&t.offsetTop)&&(i.scrollTop=(t==null?void 0:t.offsetTop)-Kx)},Qx=zd((i,l)=>{let{show:t,width:e}=i,{focusedPage:s,totalPages:c}=Xe(),{thumbnailPages:d,addPage:n,thumbnailLength:Z,addToPage:b}=YG(),o=EL(),m=u.useRef(null),h=u.useRef(1);u.useImperativeHandle(l,()=>m.current),u.useEffect(()=>(o(m.current),()=>o(null)),[o]);let W=u.useMemo(()=>Object.values(d),[d]),r=u.useCallback(()=>{let N=Z+1;N<=c&&n(N)},[n,c,Z]);return u.useEffect(()=>{s>Z&&c>Z?b(s):t&&h.current!==s&&(vx(m.current,s),h.current=s)},[s,Z,b,t,W]),Ex(m.current,r),G.jsx("div",{ref:m,className:Jr["rp-thumbnails-container"],style:{width:e},children:G.jsx("div",{className:Jr["rp-thumbnails"],children:t?W.map((N,M)=>{var X,y;return G.jsx(Ux,{isFocused:s===((X=N.page)==null?void 0:X.pageNumber),pageNumber:(y=N.page)==null?void 0:y.pageNumber,loading:N.loading,viewport:N.viewport,defaultRotation:N.defaultRotation},M)}):null})})}),Px=()=>{let{thumbnailIcon:i}=Kl(),{thumbnailIcon:l}=El();return i||l||G.jsx(gx,{})},Hx=()=>{let{active:i,setActive:l}=YG(),[t,e]=u.useState(200),s=u.useRef(null),c=u.useRef(null),{thumbnailTool:d,sidebarEnable:n}=Vt(),{localeMessages:Z}=_l(),b=u.useCallback(()=>{l(m=>!m)},[]),o=u.useMemo(()=>typeof d!="boolean"&&d?G.jsx(d,{onClick:b,active:i}):d?G.jsx(dl,{content:Z==null?void 0:Z.thumbnailTooltip,children:G.jsx($t,{onClick:b,active:i,"aria-label":Z==null?void 0:Z.thumbnailTooltip,children:G.jsx(Px,{})})}):null,[d,i,b,Z]);return G.jsx(G.Fragment,{children:n&&G.jsxs("div",{style:{"--rp-thumbnail-width":`${t}px`},className:jn["rp-sidebar-content-wrapper"],"data-rp":"sidebar",children:[G.jsx("div",{ref:c,className:jn["rp-sidebar-content"],children:o}),G.jsxs("div",{"data-rp":"thumbnailSidebar",className:`${jn["rp-thumbnails-wrapper"]} ${i?"":jn["rp-thumbnails-wrapper-hidden"]}`,children:[G.jsx(Qx,{show:i,ref:s}),G.jsx(Jx,{onWidthChange:e,thumbnailRef:s,leftSidebarRef:c})]})]})})},fx={"rp-container":"_rp-container_f63gc_1"},Bx=i=>{let{children:l,getContainerRef:t,style:e,className:s}=i;return G.jsx("div",{tabIndex:0,ref:t,"data-rp":"container",className:xl(fx["rp-container"],s),style:e,children:l})},Ax={"rp-wrapper-layout":"_rp-wrapper-layout_2cghq_1"},_x=({children:i})=>{let{handleDragEnter:l}=Dp();return G.jsx("div",{className:Ax["rp-wrapper-layout"],onDragEnter:l,children:i})},qx="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAB5aSURBVHgBxV17jBzJWf+quuflnfHu3u54fRs/5oy9F7x3IWBElIvASwRJJPAhkuzx+AOQiBSE+IM/4C7nI+yshAQCggTK8RBw4g8EilYKUi4gRYmOdUiISM4JibO+xOdb1vbertdje7yeGc+zu/i+enRX9/Y87PNB3fV2TXVVddWvv1d99TCDhxYEA2FiTIDAv/2y6ueUPSmPSZd3xoJahYj+xl8C/p+DCw8YVGfoHgNK9lyw5WWMLYFYXFnh8xcXw44uqedlyroMQHdzyWeYxrBcGcsv4+9yWbAl/E310euiwCOIIdLUpgFf7e0J9/M6nVe2VgQUt7yMYCyFuajTCMLiyRXMvyiTVkDFzD0e5ovA1iqKfisYL2J85SKCfxLYCpZatErNLxK4+IKlJbqzcnlJBJRJ4GpAQ0p9e8N9ABiyqAllRWWSatZOhnURCACrsID/bV06j/FTUJ0Ehun+XAHYpRqI2iVgZ+ZArGJ+ip86tfeNlG8On2FxGae0VQTX/ggENFF6GftSVowRNuT/AMRRAWT0me3MZUxbW9FJ2KP5VWAvy86eh2PrWbZ+bF42/lgW2MGrwC5j/Dhe8n4C/7yu6rls1Wme5+sIykmMXASo5y+zK/W2mId5TFgDqpewloCew8jpVShWFgRRpqxEEicoQmSKIN/OMDKA6tsq4AzFEUsuXAQ29yiw6uQa1jUPB/PAarkNttMsiWZO1V/Cq1HB+CGMbKoKm9ktBtsAuclZYX7PwixUWwiElQ8ObUKlfUi9fGMDcjMlQQCvIZgE6voxEGcQTBIBK4uSEiWI5SWpxgyARlI+9DACgJp1sTFlITillJHyFpBNDev9/hw8NpGDo22vh/W5sk6v11N1u6inPI+B44RVeh6A/OmAh/856gcmY9xxBGXFqOo0lRUOtqAHjutKEN64C9/+k9XN3Xr+kE+/Dx8A/zzeCwhkcQHLrGhZGYDGBLxNpDiwWvl2oT4iacGTSHXPYMMWVoGTLPuDJ6DUqd782wPF6dNC9Kn9IXx3X6hqPISrp19UvX3zP9KTxWd/40tb35kuzPoNlK/rSL0FLSuNIiqDoUaQltDD1tJ80ENmXdQIYtnyqipTXV9jzVs7f1qcRvD6FRQDKh70O/aMHvsIHF0e1tlGAp6YnP7x2Rx87VNPeC94nR1nrAL8wA3gCByvFaTCYouWYmNSMytiEOLhicaBAJoXSW2LF5kbq/i7WAT+2P98+bF2s/W0yhgvCKE1nFjxkN+xZ7I6oSiRqLCLKHbwEhg/UTp89q/fX3zh9t2bKae35SBw/Ng6ymUNYtm032rXwyRCPiyD3TcS1NSwOmrVP//UH5eOHj2aXIglFB4WWOxuVaEuhtISAUQkuwQiounrZzmHP/9PH3rkhXorxfO1LeqTc+3GZU4feuE0cFJ4ZV2zkMb3wzNv+gIoRxj6RWtoFC8uqS9axa+br29yh6cHg2/YeNQgYndmtwWpj/QJgtaT4KnLUCVd+1L8uc89PfnJVquVah7DNk4c5/Wrl5lhZzK5ysEABkdCZVKIb52V+4KghQUOyZZltIJ2HjVmTT49BA7P9h8GCut60CBi1WmgCMCOBFKoNAvIsZT77GefPnK2db6a2q3t8HciiEourvGVi6vUdho9KrG0RMQIbzn0pyJNfWUcMtkDsKNo57Vr33c94EPZ/2EEAiegNCBjhqiPSQCNRjVUSA0eSyOIvzZ+trPVTG1ugkO2aD2fQYVS5GTsG0qkC9Tgmr0VpdKfhUEJ3+AjncNRBbLvDDaom3HYUBa+3zCgC0QqUgP7Wokg2RGAdjEDspCUyJ/93C8f+USlseGehIo7kzsuQVxDSpSKRTkxxFvmEhjGwkvKOULal0YbdaS+DUzupjkTPOPAwMIJ8UFBDEiW4DBpwpAd2EMK9HxdPYuB6Bt25s89e2jrExc3Gq7XAceASEqQFMviCvCyKg7LoaPkvilxIBWVGfPpa61ifBYH/nD5MhmojDwDDoK4p0A/596wPH2abYoSVr5lxvSkPSi050yVN0AG8hLzvefU/HO/CF//RGu36jYqFZcUy7Ubyk5cr57nhp2XtJtMmkzi/kiyP4CyQiGN0QX8uYUvPX78OOkPyORrHGVg/681xK4LwhBzx1Cf4jQhNbEfaF4lA1kCtRt23r9/HBZ/7oPP/XTji89XGg03WwNOMvEpBPEUjkGNdl4OTJxIq0YKQ+UYjSlXgUYeyqPSvLnFGqgGI/z7IHbfKPmFAs4QBX1TA2LSd5DxmPlDIH4EQfwl9vXnt3fX3SJ
145S4gUE0VCibeI8iCYZqoVNmEf30oz0rsxCxmtwD6IdvQ+/zsj55BAOWMCWKo1Fh4kWFQZDT8v1K0EcH4ePPv3BZxdbr56tQs053FHamVxtlK9SXJUeJlMHaeVROXkoBZIMpIH52sUwTVIgt1jY7lC/cL9UGlCZbRCqOIcQLB6rPnhdnBIJxDMffPaZxqvP3/RuO2k5ft7gN1AzzxUWmD1aUR9hNIUyHMAl5WGePKZ6Mnlnh41jY1BKi76gJA3L4jzXr3ksIYGZTjGUvEw6v3gMXhuwyOuZtiVRqYxrdv75nS+dbWw6fKuTc47m5xm5wrB/UqnA8kOUgWXL60wycIPuEzNid5fGpCMoETHgeT/QRZhJMK0VfQ0epjooWchfSLKQsagZsycY1maqWpKd9PEJxF/lr7xQrNSc/AR5cS5z8i4RK5dBOx8eBguX8b3zF3VVJ1VaBykQkAAd6oUlh/o1fuR0sfenckGh1OOaXfGPi/EUXg301zbavaBOI/tsUAPVGiihKIinvW+erWyuoTx0lY14qSBZ2cyRCT0DOCgMHInIwrqySXRWlmADZmZmYKyJXUHrNJI5qQLon86GAGzmK7luZAAeFsSBEGTSKXj1egdu3euFggus76MRZPYdwqHhuJSJH3jutybu/EQxU8IRFnrStWkjMy4HRQeGgfPCVLis48TCY0WAnZ0dtPIZ406a7cmcABpjgeyP5IlMnwkrnwiSJPWZOmzqy5A5Qy0XabhwC4d1N5oIMpfuLl+/zMhLyk/l0g6HFDIN2f9pvGfod2ocnnj8xNlP/1fly2PFUo9cYHPXdv21yik5w1cewe01eCinQ7FiulWCGfxbcT009D3RV0nYySKWJ15GJBePWSro/SH5R51nkEUAiGDwQ8J+RKOQTSFFOpBN0eXqy8E8HO9cxqlcBv0fBKBrFBFWvL29/b6P/6Az2chsqpaZ+dUlABjByTBwJEIdICVitPAGzoqREsFxJsOZn/6ym0XvcWD2jCDk+2APvwSmCgOtQNRFVJXFa58GsSCBRNGcCa8J/buAmQs6z5hLwJMDFinTpekvAY+VjsI/f/rPHsvWUry54zJSJnaThnlqRvKoLOBVRaOzZHfO84RhPYhfELtblxAQNYzj+WNxZfMx6TwjylHsqOQgUeI+VwGZ19f+lLoKaaaBAwkc5cumqIxmYfwqKSTrqckJ+PcvvPLI7uYdXiqVgKZmgyHe8vDRyUhDObnsAg3pxpjLJjM7zCV/Ok1Nsv76g0GUqIK7lRCwaRw8qwIBRgYSiAIBRPaTnUcgXQUksfO+lAFTUybdEbBcSj3Pugpw8iFRWSNPHfUeBtNTqCLVRH7QliU9D/6gAC5rO9BoprHiIYE6BHqohT3miiTi60eE8Xu/ZzaIRHWcmREHaWSmWFiyMVISV4DIi+SdlHkEGv3WVCrzKNlpFIr8CCzU7iLt8u6VO0x6mmh9xLkQgDK5VAaw8cCxcDlmB5IMlGE//fHgYQWW+PqQ3ZUMZFKRUNzhhoIUMPKSrA3qzklhqN+uAY4ZEcBk3GHhx3FEincPTrFmdYvR8hLyfcpGSBOOJuX7a+OBk0p0J8OyqFmYtHAalUij64thIIxoyO+pw7JsIjLSGMem49wCwbUvboAOgTJmUD+BRtIoc3OT5yZ9UdvZkIuZAntQu/X6tbmvHWiWi0kKRA8u+gPFWA39gtd22FiWM8f0kkU7nOTFSFCwYVqCaWN7UwAghqoFdJLsNIHruiDeMdjzdR0UqvuQbLM4LQqlQx7ZvFCk9TcqN3tQCiyTDNSz+5lx4LRAaBzB6zXr+FVSzCgRo1WFnqhllm0n9G/f0r7GYDaaWI5TTX4LPAlUxLCOtpHtIVm7AyZTQvoeVD24R1N9M9HU+cAh9AAykEqQAiEt/DI6Hi+/fll6o9GsBigUgKdQJ7KILRzEJRim48wCRViA62cmL4vd4wAEFKcv1ofaIx0AgFGGmcTCvelJBjvq99rFNVhYgJFCXwBp0oWWi22dV0unZtDIbN5EjYzx/cjKtGbKUJwBRrbN+u1Zc7YRStXxpJGIb4sFEfs4fkJDkwBicF9COJXK8H3IVS3krkZlk82fnFcTQUF9/Vk4QQaGK1FpFdalc/gLtdLO4ZJwelvQraVZCyc1HUZWWRj8mGGssBEB9TMj3Ezn+mgdpuuKmDpCU7FVNlAyYH0MBpGPMmrwPV+4ubzItnzRyqq0VVADiGEhoECldUNX9opuBqn0A4eB5+vAcyhki4+4jkf2AHpD/DhLCmuS2zdwmHSmqVMEbOvZ+UXI/kGbNJv6BqCwyjCPBVgAeJLE6ivFiFN8cfcuRrQMXK+CWIBg8fuAkhaAjEUbiSwszZfzOmkT/6sg/96BCbhOBTnjpgPCFxEFYVYR+DH29W0gIXr5kCAGLEraQ1jCarfF8hDPF+9+EhwOTVNURWuXs0qjJ45NBi4tPQE/khJhIqi/rG7SFtLOiU72EGuOOzzTBf5IlvNux6zZUya1oRRzGcAMOEHc3AP5qVYdmLQA3JgpYz6w0eoR9rXzxBNFn7sdUIuMoRJpZou+Gg8rFqYFVWUYvBmFmzqD4YqeE1jUy2Focc5rO8DegZ70Xpqxngss3+ROKpvhIeWwCMX5hj1BLcfwTdwCMQDbYu2gPiESqdfGJGBXC7xAFsbDQCZEJYJ9ofE9zffY6WTGlGEEO5DFNsvI/RkoBGnelKb/5pwd5xamFxqMpXt13kkj+3KXmSnHADC9YsAPADDAChXXK0xNXrMMgz6A0EDKNIixsw1cREmFoW8PR9DI3S5KbJzoIVedGa6GPtDBQbEwjXuX7fGfYl+ivjYaz9fRjd9LAXPGHWcXKbDntzkJQQOIoT7pEbYuT6d5hkKBaYB1HGxZqYA3oxnb7WXAMjaisNjZYMRswKx4X+KzHjho0fbSkzKlOOaG4gsMVY8wlCvLbVnK9qtcRAVyEng9T7IPWKkF/K4P/E3MV0BXzBuN7Hu7P/nrP/aZ19W8SER4i5CdAsPYNNj6ptKiEbDHvTWOfrwPHU2pkZgByNSv6wismaRuWYoQxADisx6QFqY7TZjVvUP+3JOIQS2sZrgdqBGWm1VQ+66j6XIDvS+dqwDvxPQuUl+7fpfPZVru125lvjg3nZkvPPoe9q9X2R7tzSwKsUcLgRJg0VGH6QtJwC6SZAsF+ovfacPnzxQkdZKuF1anzWSqvRrBF1GnQ19ZaAoISGDtXXSUzIvZgpr/obFw8FprtW4CgCF5St8fUh8aznKXECAF1pH6XFTrU9n9/Ks32Hsfn3SeeEfeFeSwRDea9oyEn5vkmd6EKCd2klY77dGeoNi93RNwD6/1OwK+ut2D9z3qAAu2qai8vgbRbHb0IapQbK2dONRL0Ma0yoLW0DSBNgTR3Mgh5RNciCqspBCYMWWT7zTA+W1VfRGN59dwOvNmHVgdatDtdY/SAITTVC3nykusdkmC9Cxw8hrrkYeZUeNMe5O5muOV87zMimunPVNlqVgKfVCbdS8QA0l9j8z9DtGyw4Lnd9GQ3pUsTE5jg0NQ9ShDuTLITXwy/ykafeSBXagD/Mg0ONs7d8BD4epyV5IzKgBBc3LjGWTxCQ0ehpstgNd31bvePaVmzqi7TZz/vtYQcKul3jWNkz0nxhXbGli+X8UZsnsiHJXEmhxQHljKBGDPygRDhYHcBYDh+tShxTOQzs6EOc/JXQkMFgeXDgFELbx6Wu0DOTmpzJeTDvDbKJfyaP9BPg/+HQQSR3s4dGS0SvQH0DP9KydYpAP/iabUS98X8JFjOM2QsXsB8PIVgM9dEXBMlgufUQv//nsCQQ61tEwn9tWgBYuI2HC2ioiImOISCfIvlXJl9USBG7eaqIlLkgLnF9TmoiEAMrlPeRmU7XOqCrw5KeNomYNYb4F/EMadibp8KZMLvYW6zDLbv/sewFeuC3ju3QyewvHkZzdUA4ki/+i/BUzhAP1j72Rw5ih+1SrI7QokKwm0r+yovGRo9/Q2hsA3GG9tTHAGAw8R1cgxRRymJyoP5UwAGgun4b6D3Cth3i0ViIk3QGzj/Vge+C7I+VQpshX1qe0Gnm7IIwjQcWTJovZk3O2EAGyjZP7ubYC/eU0x7LunqZyi2h+eZvD0EYB3Tal9H+bD+CLkvX57EWxtG6fGpBFd8CChOu4owR3zp0KwnXdAcIXSc3JVEk4cCfKXnkTqy9VwsmoWTRpk4XdMoRK5B1IRqL0aaHLo0QWFD5foYtBAWfcPlwTsWstmutrPVeuo9tMsmaeZ8DBqeZqnvdsNN9DIlfjWpHGkz5bpEphBtvmShHXUVkoM3W7bJzMGZvDrboXpZNatwBAzhtlWNs5/oAKRLNzEYVxtCoTzJr62DVpacqI60cP6aL+apxv1EoL29Rto8kgzhEHgB2QKlLEUyUS1ou9CNezPZ94Q8MqWAkuYLVx6dCP7bnBM7neUVUUydmKoAiEzJqVegeKEnAmNSqyeQVqYntAMfBnUGLhCBiQak0CWuP4a9X0g3Ht14esVMURVtE5F7RhiUEXq2mwITVeKNIiiDuQAXnxKTXqT3fjFTQFfwOv9s2qbQocuT5WRstVXIHrBAiGIGnlBh8J7X3YFq9wQEM16b/JIA9qBa2gHHoDRgqttYPUKzfNNtMR38yDGTS6k7nwK+Y3dFj2zUxKTr9YEfP6qD1frNIJQ8oopCOGVbR/yWsfXkbW/cUPAd6vK7L2CH+flq0KXU2lCKDYmY7rnhfqZacM8CReVo39IfBaxtlXczHBnx33hbPVErqNEmZSBi5qd+o9EQBmKZcFXTio3dg49sgeK6EjIgJhGck4hBeJnQr8pF0R1zZ4vKe8byLavViAcdVvC6S+/26dH+CoqR1eYrFbikzLsIKAd7dNnWgaaYaEZKsbxuK8gkuNuriCkGimh4qzIuR9hZOCg4GpVJrtOXujKOYzhUO5GBXxaiIrcJ65CVTwmJmVOOdxCPpNLxLiwqCP+aeOt7sdLKq/xyEgKx3eMp3nIvTrCbXOFQWQcnqREgscJVGdnImcCLVeptpFg0JSpX7+MY+HjYesHrDh3TYVlrKqszmqBVdLE6M6pXAX/vWhMb7cm/Xvtu6K4L/dvtxrN3wHmHk7pIZphMxussK3R1worbzQOGkRlC06mBTw55cinZkVBfLRhKFNAODZOCns+WxxI/dvNoUM1Qw7VGcgfPC7eswAjBWlIU2VlbAG6tGgxERqBIHIFEEfx4eVd8FHIskxqv3+4CHc6b7Y/cudu5+P+jY0f+uhTj/+oAKsne4IIaC+epvoQFjLUNIF2zsfms3BkPw/6yO06dIWmpO32Sm5BaO6IPuxLzoRW7x6HnQxseOQTRCJahXBueJgMDI5vWlazcVIbox1Ix4s0SSujQHC7IBpt8Od462p30l1+7R8//VN/cfall3wRmiHGdBEihC3KLTHa1HYKpSt5p1ZgKeq0XFcWCBYHj6JgwzxDMrrdvKgemBGlAnlkaGJ9XqaXpShmfr9yyqUf7A2OvobOZNlsogmDHpkUaibn1q5wsvt
145EtoljNL8n1KpRppeJsWA5GqWZ1aTmcvWCH7nPA19n3GCOvqvF5ErjmqVnBgDVRoggNwp4e3AboHH2yxVnxoqelxSI0kxuRBxpeZvJUgZlgdP5K3SECI35x7Lgp5ClHz0w7uMowhO5tOf3Or6iHL1aiocdl3EeXUHFLTAVkBBZgW/uCh9mxSO47aE828QZgI/uZHIyKZF7N0kGYuvMEj6QLlGxPKTakIUNgESFND9CJg0qkyt1adKI1jW0dXHM6lZJ0mMer6u22jDDcBB4ToxGZKQ2fQZRWyTsrMkLJq8WASYXB4hMItllmIiCKMRoFJkclCWYa3siM1MSFw5I4pHEJKsdOivHyCPDwkl+AvGimp1H8PwcsnF6Yktktioil/J9JyOE3/M8xXpMrR5lIlgIbuSXfMYhYFduUSOzKFCVYSE1G+qLfXsDogEvAG5U5PrQEp2c1EAtbBj4lF5NQGYdg8EkGK5MgKi5UKZLH3NCymT61qxPlnq7gfRe9zzPbwuz2j4AMvgdY834FQMSrHJBO1hUcdjtMwQ9CslFZKhIeAA0r972J9AxTGd5yQWWoAYU+uSj4Sy8541CnYBGfUWzxl9HH+GTczjZUvNEM839dqvnMRzUGfTNGhauy6u+Ce1yUlqVazTsySSTl8Veb9tqzIpz611sYLfCYIrvoVLbjMFr+1rPP3LQFQ0o+emOOiOHnpWHfKbY8jY50SjMV0cN5NEChcIciAuXwCMqLELRy0zhWK5Fp4IFfYsYvEYrg6ZKR5ooLHhhQGE21QFEtkxEqE5/VGGAGBE8AIiYQACQ8LXQodFte+6YJ8YaPUGjkEtz2vLRVskDLDLfu9+YNvDszFwWtMxo/+2253tdH1iU3ezLaF0biAC8WN6gHmGl85AabYqLjErYcCxFPJJgTLsugpeakLbejczuHpvvgZb4UiFycy3SaW3nUAOfPw/5+nFBs1aZwljvZ84sePbGZ5uqAgoSMcAsCgWIgQgKNJMubDZm/UEJNPmQwBIoz8RPlI700hOe2Kn1RGHulFDLOoa5EVQYuE9EmjRMHSE3ixXPo0beQY08VuyJJ878wreqd+8mjlNtzRThHBECzBOoF4RFkXa5IWGYFt6jqa347u5d+PBvP//temHWpzGwSTcH5w7TU4N3KpEXQugdmwvgr55bhcNoDzaKJf/bu7Wbb1zb/qtWqx1SHIsXT74PDSIxGiZY1Jn0vlFDu9OGN2/e+cN/2eG3cs3LYr16XgD20Zw7mPCKPWHgcyM8mfZYrymPtTy8hraGejfvub973Pu9owenf9Zx2BMwQrAN4gfLcH8hyXKhtE63e+12rfXiJ7/mv/jkB+a717+1JirFeZ/Yl7Z2lMvK6zHsHNYRvplaW0FHDpNtY7Z+EYi0AXH3m99JXdmu8XFvKi0611Odru+gM8PtpHz0JdIImCaH2+DQOhA0D7ror0rty+KcSisCUQrN8q6DzzzafqTS6uhhTXtdlk5noOup2WKBv3vg+PvSei4X6+51HD+lZ9a6XkqknC7jeJfPe0LkXPT3oaMM5+17OKffY+mDXY83elNOqjc7/S4v/SR46pRgOtC2go7URbkuUMnXwXuGhwKoZIfy1tDku9k3Qoc00J1ArHwDeL6zxeu9FC8Wa852t8GL1RSnqVYPHYd5AoPibepkDefoC9DEiRV0zIqM3+ROZky+hZ47GV9QGQef5fB3E3/n8HdT746idJquoXL3OmPiwCNYJ1ZO+ai+qX0ur+PvcfzdzFJaXuxr1Vm71vWnDxZExW97reLjXuHWhl/Cei48WfJIQR6bPOWT4lCyb1kduqb47y0CKKu
145wTrKE8Mzo4ETLyhpX20Q38F6CdmaTHcKJGdoWQR4OGqTv6D0YcvJ1J7zTxh1K3h0P16B2dlVaGtMonm6pTTAyjmkz+IN2zney6ndQH4ZxzEMjJkpKT9FSjS35f256VsDmJtAaaDoJ+Ep9TeSqLdS6Nfne36wsiGcW7fXso523OvQoePUR1KK1JXWQhlIqy3g/uYIOhyKy9II8YHsdSh5NSB3NtxgcQW67Q8Vn4VoaWOkwltlAzNCdM+MB28BOlUr6JRtyQaO8U9pGQwNJ9xLVAMpJouOUr0OIFfXvwxA4UeozaCXg+2hqehZJ9SvNWXECe7m2ibINPyqt/UOCg2fm5mkrF/o6FdU9A+ECqz6LyvrjM2IIz5ImpSLPu1fHwJvDXisXVxmcXpBLg81purVL5xmyR/Ae8jESyOpYbaQM/E3H6q0fC+U9/aYd8nKdHoGSV+Nx2n5AK+hNXlOPrFc/ozrn9W9KPwXng7/nJ8Ff0CtPVysroozAxX2gFASMftrv/Sl+zcpGUUrFQgO+JXXCEQX75FwK8rBu3WjScMEuyITQ7/kCRDcODSpjjoo3Z/IH7ViU/zCCEj2L+h9HWNayzvTpAc5WvU/LyQSRfK5+LJRBnXxEmps6YM6nKscAN8e4U/5FPTe9ovcp23lNXUH+5fA53SmsWeWDZxB62w33mH+yw6CgI/cN4P8CsU/UP1Xsj+wAAAAASUVORK5CYII=",$x=({className:i,...l})=>G.jsx("img",{...l,alt:"pdf",src:qx}),lg="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAACWDSURBVHgBvX1rbF3Zdd5a+9wXdfkQKV1pKEszMq1RUtJOPCHSwB67YgGjQNsZF2jBcVPYk/xy2rT51R9NgBS8/NM2v+Mp0EGaus3UCIZAYXQGcZG46Z0+DDsxG9djciayrOjBiKKuKIrivbzPc1bX2q+zz+ElR+Ma3ZrD89pn372/vd5rnzMIJxQiAkSUQ3SX+D/M1OFbyPVgdZWvr/CVVajXecdbfWMej218bQ2Wl5dhzZ03NxFq8ySHy7wtLCxTfWMN62ubVK+vcHOrsDE/j2uvbJK0faSv9RVC27vVOiD3gc/kinTPj4PgJ1zww903/RHUpKMCXJ2Bq4dV5IQHDDx4AaK5UMPaRpM8UHy+JPvGO9AQwBxwvF9augYNrgtBXQjOpb20nc0jYNR5W6nXuX8CmBAAOODyg/iJFXXcDZ41nsW6YETmlOxPk5AcI2uoru4eYGpblm2Zqa7+Cgoga7w1GCjZa4Bk3wADHoOlweP94vSeWoJr+hbwsb4uhS8sM2JLzZpvT19fE/BW9G9qSpdjpkDpyyr3edVOPHL/pN9ug/9fFCjguZkjO5u+1Fezz8gghBpCdnVUJRR07zou6ouLMHH9bWpcnUW4vk3Ae7m+vq5vAexNm+en90hfl2NbT1+/cJWWeCfU3JSJkWvyGywK6rBAdZ64OrO97iKze9rfup55HhIPipAshDy+nwiYePJ1CvoRUBvPtgYyAG3JUkeDt0Ue9MT1q/rhg6vXsXNhGjfv7dH8hRdxc2MTrjwzjqX7LdpcAJjfANi0bczb/RiDuL63jYs3Z6kzx8/yubmzCEsXDqjBk6LB1azPkwTvwDIfO/au84RKX7Vc1LxCqRDXItzIRLJkOYLNn7rg8dcceFY0E1h5ZwS67JeFVZdFzv0q6kEJCAIWQzG/YWDpt8bxxvkdvNiuIlwEKOy1CW4BDGtV3OL7F/na1tYWnK/EWpzsdKNELl6ELb4OcLk6TYWd87ozL4y3mKqZgxn0LzOorzOgi4ZWYX1vOhF2X1s2vZbdm2vLie5U3fR7pY587qgQHWf9P1HisRTIlI8rK1bliiyRCyxfQAMolNZQjYZQ2wTi9//FNQXJ3+EJfZan9TTAiCnFcF4oOKdsdX1uu0a5sSHdjjG6DYn6H//7xS/89/ktiPvP3McbvXKi2V5TfZYaQdi6vgpecwv3uEMBtl5PrMj6sYA8kQLD/q8yiGJGLLAZscHyRuTQfnx7Ouo8+ueAya8NhoeQJEN+KrFNEBw/P1YheVU5ujta/oKpJ8cKIz6OoBAVeSvdIVV4ozs+88bjT/yNW1vD8WSxdy6ZuMBylhWS1t6CoqVIYesVTwSggXRzJzrGsvSHZudjKdArD6s0xLYTQb0kioG16IMaqOqdP1sbDruf7w8OII7j9OFAAZ34q6lA953PPONGZ+uSfwyhVKrAqcokUAJ34rGJf3j/p77wznZ/N5m/XE3GWN4KNS6y/F0XWbnEs+qUHZdlsSc3N4lWUmoM+vChKPGIGSPk7AZTz2tcEdgNYPDmVfXuu79ESfz5bm8/A55t4+hsImSBo2z9I0XqJoaayRrIFLSt7xd4V4BnC52DP7jw/Td+7Xx8Idrch2i9fEnN15p6bMLOGrw1aynUWU6+8kqif4K5Srrouhk4DU9Nhirb5XAGzK4eVFiuNdkMuY6iGICGX+oPWkAjZPBICsyBFv6qeyYE3ch5ZTkdA52mshMjIyjyLun+q4vXX/9N+FG5cLFwWols3P/4JXXT2ZXL856TQNi4HnQtZyI65QxPUZR9AP1w7HHda/4VbevVtdyr4Tzba+1Lw4jrfTahQTCwoENgKMQP9KSuUKbTVnKaf8Z4t4YwIlDaenYupH0BkQa/vvjo97/U2+pF7d7lCL4h2pnNITarxMwScbghVCgG/5tCjXVtjol8p6AzoYnzQSUFzioNS4EITthC6pbJbO7f7an9jz5TvPzdNw4Ouw+PsG+mZYIPdS8vA8lWNKxrASTTz1KlAuPjU9kGpALP6aBU/cffu/r3f2+2gHG5P5Hcar+TfHl6ls0eEIM98fXz7qB4Mwzoyko9QTxxBL6osMPG3SYM1W9dTAAwPqgYx93xZ9SgVCscaSlPZSf99EmsbPoQVAy7Q0YWnmT+MyUW++3XPnn9zVe3Yax4q93EK8/8Vfzjck+Jjbr4ubnUVQTruttN27pifGNIWCcXhcfo7br82dhg1t2w/ifbfiyYtxbm8PEgjo48QLmBjDoeVfL3nVTHfBUd9wHH4Ce2p0E8+MrPbX71i3PT06WDxw8Lz8MV6O/eR/Edl1xdZuUN603V5c/qqps/P4MfxMnKVcrXq4OYUMv6rw4E1GsoLtj51i5We+3CSY3qAWJwfFKhtF7g9EPYpwQCHcR/EqKTecuCGDGIpxnEne5s4Rt/MYxuMIhzTIUH4l9bKhTOEvvWj7sumll7K2QN7BMHoAIFIoI6068FicWtGTkhURXxX3dUVbW7Za+9cQS1UWC05WdwlGIZZcSiNRD0dWu1ePMInmJiAhB/bvurX5we6xZnGcS1W20lPvXiL76kQdQhMoOiblCMbTJRO7TxxFxvs0VToOcaB+YqaJdNh4pYW0mcbmmJnf6FmprpPEEYn/QAZuxeR3kEx7Kx09DgYnWY18DmAbInzuZzRoHGGBHog+V7BsSP3vv6l7anCoWL7T3c7R9EnW++zXevQdOGylwAQsJh0i/U0bq6+qCfUGbW0xFqNG04qO6vcvzu3ixevnULZh5xtAQ6mT56yiMK3YWgAqTmad6ADuuRVRLODNIOf5befPWndbkciIPWb3/y9n/8Unv6E6Xew+vqcOGaEk/lgH15iepI9NxH0BlEHTjR1MiWjrdIjpZUC5NhYfEVtbEpxTYovuXi4iIMp6v4sNZTVCp5JZLGBk4YEAVbDsRMHe19uFFDThs7DZ279TQlUCwfZZnY++jPFm5tNPEca2aJUUpAV9fTscUgsm3DXivG5cPjmnadxDQQsqotd+uHa0ErPnBjslmc+uGg0iuem/jEt3/7ttiBCduBNAqU3LWjfi6M0NzokSEXbIBUaVi7WtcrVcowkbcDP6h4O/HUP/nec6/+3sVzrcHk1mYs4Tc2tBOdYtBB2dX0mSB6E9jJvjglkkHXUeAaz4hEXQS8A4n3PanRfuUMduO+E1WeAjMllIMhe7vbONoUweBv2mnday/O0bJ4EifwoYunxMOvLP7Fv//i4XC8eFhlVr65Rw+W5o19KDFOD8SKs931w6O4rJDVfKBtIWcbLX75c6rBoXQJy4sRCvtNPL1XS7rVQ1v/GLal3PEo2XdkbHgE5HSCSKQ1z7bh8IivD4dDjjVwiEs9pSxMf8i4fYPOa8/+nzf2t5/7pa/vn7tEJXiWW69JqAZcjHx5eU0tsHJBXKHAU8s0
145pyhUgWD4f826OBIKWgKTsujvjuOnpNpYgVuo2EcoM9i8aWI1gbuQ+sf5+oG2dV2RtikJfNOEvElj6hIcdlrwYxVHid32a9Pbb83duHQ36u/ewcVfnDCJL0tACxYHbziNoECVscvQeSBG/i2Bsf8kaD7Vu8s+ZQUT1VMQq/QhpzVdA2h+KHQQU4bFnBZFZ5ekhjemjOzMCZemNPcsqLzrdTtwcPBEy+EfC8SIpiZa9369tndVdQsttf7NmylCopVBxJkNwuoM5VHWUZB6SimbMfIL1oCWtKMrUbVL2H1EUFDeesEAoBxReRAgf83+HmbqKQ+8nwBr86VtUOrloaHCQb8Lj/YewuP9PWi1nvB24LeDzDkft59AWzY+PuR9p3sAFA/+wXj8v87ETBxXPjuODZcFdMVHsOvOR8bQ+dAs7M0xe7kOJvrcsJWWWA52OIw1iKYUVWaw2xkaCY4jIQuue7LKwXeUFVzUNA+8W1CggjihspSJVv3L+XDYh16vx1sHurzJXihU9v1+RwM96Hah3+vqY7k+GHRhGHdh5v73/tFgSNGNH2ofReeidQlTtUKBbhZTD8X4S449NIEy0nUHnN0k4yapxZ14P5lOuglMqBxZYRY/CHDM1LNsiYEsHPWg7mJgzoARE+5nCMizs1E+CQ8ErYAg5wRmqN/JTaMMDOjEEe9B3AeM488Mk8kI7jMb793EtaVN7ysvWxAl/I8uQxnEgzwL+wSOtrzTcTfsXmthTjbeAadCzGBHa+LjKM64YKG0GM37aD0ihylrYKWCwAMY0DCQlY5SIQUWgdLN1TVWUZCDieX+s+PTPTU7PYdaAwdsvGYXk5jfpEC2mD/KGoZkJ16XegDFEisRncTmXOz56EBNqL7qDhLKwpX9BzCKsTEnM/PSM71nKNXOLZrrooVVpIzZYgE1dQw1OZBcEl2hAUh5wZXtUPqrLI0oubTfLquks4vzC/N+FYQUWQClp8bIYgOf1WyakvVNykqzEEG9hsUqEvWkR1g6RaetIX2EA3OsPHrDdA/BYNAxHlkoHdU4WWhABAolKLmkhDXO+VSFE2tpHSErZeRSzn4kJoydYldtcrRmSa/dMdcljVu3IEmwmePLruM66KBs39w10kFF7wPbYlcdRHs3CJ4AdAun0tGPkmG5bbSOtiCmjpIHyjEhWImjnLwLFIubg9CMMANCcNgoR4GU+VUjZhPjF7prrUK3MFMt4mWQ5SiGhYX26vruis7g8THWV6yEtqG1TDDBCUcJ7WjCtev1hIXFNt+6eBGwM6QKDb0fhdbM8FETzG12xNl6waxZZSL/hD2VpUQv2ywdubkxLGkzczbm5bN2RL5JAdIPUmHG3DQsbv64+RsrjuPMo0f62CwWueaX0m3IOkXQS1uMCtFmDDoRgWmog9L8gPjBOhINZrGQrEWRFSv
145iiXSLqR0Yhq8wZ9ZoAFSUDjK4rilEqYAqzLMaEqUs2CoFB1MlQtaS8BQmgClL6Y5rlQHJKQyvgBR6CyDsLeBQPXy+qiTitOiuySICNufWLCZgNLGbcwhkIJkkOpowjlReWlpACaJKEEFWV12/cDWaYSVC59iVa/XtDAS9VGkQ1P2C0X/OU0QzqoDNjW+pNGBSPwko00R5LVsqRzWYUhHZ33e/p5slLYUcdVIgGx3bc2jHTrxlYfdsl0+7RXviIcwWEW82XJ2KDPvLdR3/Qu0xS45AQjsH917CCdZImn13O7TD+0mWgVRU6PkAAznnKVAFbGsBcrhJTYuI3KNAE+lzF/kACLwTo3WVUjkRYFmYINMd9GYMAmQCFIYCfTQbgwkuZLXKopX7yzkMRYmY1RsBBRorwHKyoMw0K+m/dZYGD+ZrSuITF8+MYTJewidSqWwaIzLySK8gQGdWWPBAeSdcW2fMyoZi0utGEAXAEwSkgmCVrrEBwcQFM+IAA9nmD5SfoBQ406bhZJfds8ViOQbTQD1OJE9VUIxpd7tpDeq6PV+pexM1pEBNkOR8vDXhfRDj+UWETaa/DUOBs60+QSXCig4mGKC0feQpjI/FVouUua2rOTY3ss0JXFQFSKkRbd2U9VMZ5dbGhHI0GLyTiw58gCPhsjDJlQ+budLpHygsDylplVEIRjhPrjesItXLiFfMQnbbkj7yVsDqKml6YJdFLw2TpbcS4unPvID9z76A3Y+eVr1aVVUUFKg6ZglPpdpVKMwqDDMPyrKgsloz8qyIFlDnJ3iqzGhyw94emDSMk8o8SA1nJxutYD0KNEIW3FwViBLaZwrcYVtX3NYH0NT24JIlproBCU2f0CffFQSWGFfCV9bMMo75CxWc+tbdpPSoR8NHW1j4fo92d009cdpTOacCEORy5DeyrG0oS1nVaNb4OVbLaEUvL9EGDVItbF0Ai19K9c7MyZe0vlM8WTMqnRCzE+9qkjMEF/e6JOu1x2bnqAEmnGewWQWzHE4rKnSTUXAH0g9cMc0tTs/p3nVefhH7u2WEMwza5Ql1mqbwcWkfS62OMlpS+WVnKjBTHDHpiLFoV/ZbjSUSaS2o2ZSMxtRcyE69kZ+JE3qWmhLP8mamjWXtgq8+7OX+eHDcqpqUfc1LJMchzf49K8bTOz0aLLA/vHHTrH7XC+Kvsk3chDXjXBB6ag608KpWzyCeMy7VDMku8Nb/zh1m3aYaTpbx2ZmpwhBbzMDjOB4XIkcFsqkosrIsS20YGSrEqGhlnjIy0cpKshJEA2snxIBn5R6kpo+z8ymdI8+ZqazMkZU7C0XAcYVDXXcqBdyGeyA5EsHPGDPvGIOanQuNE5rVC2YJEVmzX7sqfGsTqNZsUofZl/UGDH+BZd3FSzBzdk49rsaUlCM8fchpzfKY8iDZwSeO7Byr+vsqBUZZFhbAMfITYNpQXoY6xeM8ES/30HkiluW1UgqRwWAXKCE4Ru6FJSrRVHdIF/e7+s0AQU+vbg1KXViYzAIkS4Gks3KymPzNedu8jT70Z8o4O3kF4z2F26yg4jZr35kz0eFkD3sVpyIdUJGhMN4wKmiASM5FcVh552WjNXVI2Q0jS5GRoajIgulMHvs7Tsk42QYEaZIHjwEnkH+6UHgrt7rBelcSNHavXSyF4IF5S8E0g15aaBmI5j034qCLasrSe85O1YYV1X+yg0l8Eedm99VOs6B6B5LEKajh+NmffzT3KR7AAGIKF4K7Pts4iA5cKrD2ObhRhIxm4pDuPtfvtaF657tmgEksYRJz3cpISoWeheWo3Esbd794tIRJLCnsiECZlUjxR/sJ2PdSJBKlIzPi1i686V/gCbxz8KusOJuHC0uidZbg3HO31C0YUu8J4F95TuEdpsJT1Fa1M+cKN/u1P/iZs5X5iblfYShVduJDwWTBdAP2EW8nv3KjElj7MUGPt/ffvw7nvv4bYOQjGPdLiVLC1Lf1WsIZ124yjq6bMdIfveuWB8+V/X2AUwsVViLMwg5EtgOXGRynhdO+m7YKpp0V/bfB28H1ddy/NEXDP2qqC1Ml2C4jTpbkBYNp9cOu+tR8rTz/kYkiVTmjXCoYLeSCxU7RodeyKVCheZahFHvOuEFvSNDmQM/hx56HR8/Mw6n7GwZasjlZMN5IqhRMo+ijME6R2JCYi8AHv5aJPgUgSpS9yxS4LYb0QpfVgQ2qyjt6LiqVacnwnSGhFXu9wabLdAVL/65HcOkSdIDN5oc8uI5CzmsJBTzLglssbnQhImWDCMrKKOd2mUGit8WiyEWYU7sPvD1nQ0PKRFeKnDkfjteMoa0BczIx0KjOjYNUwVCGtUeU/I0ciFNMgSCGtMyb9YUb7iabMatWBga2PBUcpAusge+9BOpBkxXIZ8t4vqyw86QJY6oaPR47TYWDErIPrB1p1rjEFIM1NhF/+rSz0gAesiD54b5p8JNsO0oOXgDosCjbahPsdg0lzjCXPD/lbDRT//3HPPuHBDbOaUJVMjmJtQApfYHHUHvAqBRAZ9kgLwvNLkf7wanIwEpnQLOXI6iWx3Gqt0cGvGu8NbUZUwc48qpyAez7b/MsA+/xhbG9BTqcuKUGUYQTVy6qnQHLhbilylz1QSysxuAlhEOWRx+bAHj1+YxrDt/aQfjdPyf4e2yPni27Xpry1m2A/3ybYG6S9HPunozh375PDLJhZRdE0DY3mKybkwfaDUww50lgWu+EkjEHczJYWDiZHqhoY0Alvrs+bfJBDX3XvAZZl83rLC1KUIlg3Jhf00HD628DdaZNl57h2NXjv4ypnIzrtP9YsY1yIF1kUaW32Hbid94H+OUGwXtMRZ8+D3C6bDooFPlPv03wL79H0OTjl58D+NgkP2cdjt9h0OS5X24k8A6bXAO+LrHuGCB1u6Q3mYxcOiFmCqycyxnRmKlrJ4ryzwdTz3meJ91TupH+M+OGfYNFBQ7AXNE2Aqxtmvdsr84C9u/fwNm9At7n84jD9z3ViiQP0oJx8zua+uxAbZ9nePquMEvWbL7zSd+5UQD3DwF+8Ijg37xn2ExYO7YJ9BfOInyeQf3ZM2gmJTETk4adIN0QMxrWxQm9cnLyMUUvy8YQ8ILXIykZdsWQtseyjMWHVN07yXU5WQkbJeeJkKyHE1Pn+jbQVPlKUp4eUrEd08RMWanqFCVnTM+KbC8neqBMLWTklZS/exngN19AlnkAX71O8Ljv+6XrCWUd9M0AypFQmHnwEs/JT51GmClb8HITk2Z1HWgQgJfme1PTKKDC0ZaKtxJyxKnLfuUQC9U27d+9pAlrCcx70BKd1wCu+KgpaMNImzGrq6puX2GtzXPKY/xG9N5OAc7MMgs/5qHscW2mrKjMz/b04GjIzw5iO1DefpdB+84DYBOE4HBok+cm76LBqxZBy0Sp/u5eKrt//0cE/+2eUYVinhjRQL5dP9eB8kjVAWYNcg/PkYsjQKS0XVunwtEYdoc5aHJG3Wq3hr5ygylwWdh3U2PkRCDakLhi/w5EBi4tADZrgLdbbMLcTn9MVYmKhfGkzT/AsjsR7St5daGUvt3v9Y2W3WOAxRB2smyGpfFrn0b4Cm8vMOv+0RbBH/LWT4wclHr9GLQBLRMi7Q70vZRNLT8f5T97XyfaKfGgZgoCjCS13AS5MnFuBrfv5S4u1dIH/Xsk6dKOgnD16uayJs+3XodobJG1cPsW3GNQJl0tNtGrQ04kFUo4jI3HIO8F3zlQ8PYd2bMMyZANwh9vJzBu/ZwWa/I/bSZaFgrP3T4geOsOwh32DLs2Q0qW+np8PrRKFyhdw0RJGpFJf4d0yMwEbelopHkESKFXkinsC2N3QBerXTq/ztEYEYLaFpSAwrx+x47kDfi6e9YY93qIEkx4ZQ3U3DSjcnMj2r1dhQvMwp3xIcV26lSZKXCAiVBdRw8S4U8fCDB6iRc4QeTWnPzrd2GE4WrqfZefky0cpxCdgCGT00+yVEZxCmRiO29JITCEyJqBR125FLmMp5lelyI2Khzi1qCCkxyNWQQGUcL6rBikyKJTfNN4N9aA1+q/wLlinTSmFUj+egOiB+8wqjND2t2GZLIaY1xJqB0Nk7FKVanEuFuHzGeSxIp8YwCjhY43mhxJpYiFnbcyUHAbCID8G2P9thmwC546dw4DX1SiOUmSRmXyDiLCEUrLupcp21cqQuWlBC4k0GdDerNnP3TREF9Y4qMr2uF1XXZsrOQLP+IocyhfcR44GZtdIB3GnyxgsT2gs1Kpl1Brl2gSO9847A22WizE2rzJ/qAXQ6vHx8H+wG7u2NXzdeW87+qnbbT52iELw96j+1DevW0BSazXEVAZOPmYeE9uVKIoM0fuLJi81HdmhTmwZsz+WZI3suS1Dl1kqZs2Y1Zz86HtVNIsLDlhSQtvyFV+bmy9S4fbVWJ5iheG/TjqxFGpNExqpcrjw07nC09aya9M3fmTVwmDt8dd5zDf/RzTEIVxAE8J7l7UP4Rz7/0XKLaaxrNwHlzmhTlI88dER100X1JtS3nNQQBBik1T4D7LajYCaVOQ3D7QwQR5R4aj8yz+5nUzlmLdN2iwoG15OVrVSWNqQoMzUjV1CtrJZU6G/Pn2tpquVagc15K/TA7jyt7juzAc
145/NZHvv0fXoViAnFsJD55OTgCSH0eAOgQBLdw3E4EOZ83SUNTmOSsk2Ctg6XMY4jPPQBHHGN/lnayy/8q5YG5eW+O9+uol7ktMS6NDWQUSX8KxM6cTW6ZaKU0I5+7EiavzS/RZ17q6lpbu0Mqw5lkrzCdHERxovosF8Y6HDW2KOiNByuLvLWaTMx3Duwe3TXptNESWmaBqKbEPIM2UJCp68GMvZJIlQV4NvaJeQ8OjFBcqd2XvxcqG0kq4SEDuN9E/S0amxeWLyXV628a1ChHF+SzOqidFGFhCeivm+VJUDrDNuFzbES3ZfQPQCi72FXDfk8jYUEA6y+AB9GcG7DQ14s1UHrTIBpAxSBET3n2Gjkf12xJ4oANwLPg4BGREZ7lwKWj4Pq6VEgmZk6py3tto33BENNaWF/sQPuhCie3CgZIUhzrgjUOLKzJHeZ/zklxOm9DbVTbySEnmcf6V5NC7258MBinipi7dnCZcDyAde+c7OF7cY5qNOeSV8ompOXAM3HFRMD2bYRumgMRg3dIQmVAOXzSNo5weZ5S2Yo/KJYTdpT0uhgNoigPeVtBhGB9hTIS3b5MXLB2m3sFAleWmaVfkfiX+Ymxb3ap//EO7QxvU3VqhqJHu0m/cDZ2gzEDSYWe/pukcsoPgNyfELhAHmmh7q3lQFkkuVHb53BEuzAKJTpOBGZkoHaDYBouXy7A+r3r7Ae/A80FMfHmTYfst8NWzWvAbmUCKZurMM2uWgCWZXX6Gq01mknnwk184dGzVCk8TsrF00m32YnxoB1rVnWfwSMj48jKOWN6JCn1uOtWYdh1yeAUAVjWBgpfqHYA298AS20OUAqoEuEDi6f+UeDJ+WSZ9g6HdFlOdDrzGjTqG2ahqf5WmElritNBAXW4Jb4+EqQ/M7W8rB3o5V9tqnONWnLzniiV56F4c4taSTnpJd1haBWg7Z0X+HZwWRBAA25kJ3lW1p+K8grJGMx6Mijx18ABKqIX0vV+ATRpodEnR8QfZV0/9aQ9rMWdpPGdjgavZj/86F5703YeIgXhfKPHXHMavBVhdf6tVfMa/PLaWiwxnfULBzT1g/1kgjXyMxOPhqrXi538S4W+7SYlnooSp5EtiEmcykYEBxgEAFpAA9mfWv4palmj+QQzxj6DodYJ9mFYq1VlL4RD91f+pgljaeVhc+TyqahQ/IDvso8HhphKWdULC18BWaE6YZb5LopZ8x49TioJp9n1F3fM8o7AXXPKAKwmToWU0c6Gnw0AHtzEKyNw9CXmgXXfXNOYA4oygi0omLJnJpozqq6rw2XqsBAXhnPJxf80FjdY/qVlRT4V5TqC5F91kENjB1pyTm2qOjjSXYZ/9rnFRL5r+jpr5qneuUSN9+j84/6An74rHTPZOb9QLZAtZJfThqxsQFQYKhmzyV8dmQJHvemA07+B3Aj2+XWDvvVj3bt0pVZBFcV++MF+3E3K/YNEyG/ZpTHTl6/JL2SyOELIwgZNr//0QsK6bmCTll/hUa/ZdyXYwCzDRFLqt5JYlb4myYuIidisPjDCAcEJVsjYaBjkbwGC5bg2s2q+v5LSiLeRpY7PiKbC+uiqf/Bh//Cev2/lgV/uJsGQQgSRqgAVS1+rFfbiws67Ru7Jhyjs50R9ztebXuSWXRtKDGfG2nPGQrTBQ1825v2b67v9q9HUw2+eKT34wbc4RPgsFlC/QU6W6py4MlGSNDEOACPtNSDyVJOaBMH1dGqPnHuTCEa0T8dTonBOxLnGSFXv9KsX/9bu2Ws3rzQ3xRuGmnzA0aUx5Q+tEASSCoPX/kcZAPqavN2pybeefgJAXryTL+nOP5hXe5+pFKa2/vBjEw/vvh0VGMRi+oKLH6pVEPloSRg8gBQWyCgEyud/8wCPaM/fzwGYeV4GKIn6Eve3fOdg8tJLe7Mv39x5GA8XL51L5vZuJlqBrMkn8uqMlFvO4VelZmbjuC8Q6ZW+KN9wg7pfRy0fx4aNNVi7yj5x+VIcVf/ajdLwf/7t8pOt36Be8jOYJB+HpyqY2x9f6ISnjzs/8YaWs3iXCsWvPap98rUfPf/zjy4/vBcvPugnL//CGNX3jPJdW6hrw9l8edd/AZjy8haP/1k7/wz9qv6Gyoq2xpfgmtLLXq++hPN7N2XVftSr1aLq4ePCbul0oXwqKrb7VGD1VCjHCrvFJJI33HvlEpTjgbEY+bwfdak8LFIPI1XibJVO5JXLUJLVwwWux6m/PktcuQeFCp+LLVqGfp/PoyLHvZh+ooRKHNntcR1piwOxRJWh6vNxWeq09zktOxbL+uexLsfTx6M4OowH0SkYFvvN4bN3KklnrDu0y9libXpsHv2iWw4aOhFAH5YyZ0fkYR3MJ971J5NkKTBHHq58+pK68e4Y1uabhXi/r5LiR1ScxBFFJdVqceLjzBQD8FC3UZX2ChVqlSOsStBZDRWcOsUJaTYSD83HLNqlCE/x/pCvneJjZNMdSgWkYYRsbdApuwc4xRm/mNrtNlSr3DLv+QCwN0ayEG+cM1wYc/R2QjCP4sflIZ2/tz3cOXslufJ+Lbkx/mcknzuRd+NkVX6j/k5iPuwN+lsxZvBuhZJxd5+GAu11Y9pgsLbYLTDUX/hhdn5zYw1/a3pPSfRmnvMI/dZ9vHF+Aj81XcV+u4L3dIaLcwM/fVm/YwIPmqAOurRTnFK1yiQ1z5l2zx4+wYcPec/HSbWIj+Kx5Gz3CSLXId4/PMspvYd2hTvfh7EB1VqTBOdq0Dx8jLXWadLv+Up+Zr9LyZVLOHuqT9/fAZjd65FkNS6f3dWGkXxS+cZtjjh/Zo7WWd5pdhWhx5aGfJRxgb2wurPbLQkhpCCOAOpoIf8lc8PGjhLzXzHX+WTx/SRaa19IWeKtwey9uP46TExcoIODWVx/+UV978ruHSz91z/h6MY8HFY5aNtu6kHpb02Pt8h9iHtTllZwWP2KXWIxPDOGt3Y7NM/XZNnFjfum7mbL3L/Cmzx/xd4D3kvdTftV9M7eNo5Nv0RaQSyY78BCzX6jfy33PzdgyiNjOmCYP0E8yr7HAnj0np8PcFGJurvlvisQ/t8Z/AcOr+mO6q8e8dniWxwmWjSLt/UX4O1n4NddW3Iwly5udMV/Gj53nCnrxlsyn2q5Zt73bbhlunaRULDOT4oWQ9bXrYNJbXid7f0zzAGQLQqeqmD6AS79mcxAsLrPaIb/awvpqKzslFluGvBkpdP6xLakCfUnipd40+euSPxNzhdqiT4ONg2KO7d1l+wGJvXIz17V7cqrCfKhXP2SjGDYaJJ+26jhIiumzxLnWwg+GV83sIFjU/1d1TSRMhI8Kf8XHzvd/1wZlMkAAAAASUVORK5CYII=",tg=({className:i,...l})=>G.jsx("img",{...l,alt:"pdf",src:lg}),eg=u.createContext(!0),sg=()=>u.useContext(eg),ig=()=>{let i=sg(),{dropFileZone:l}=jt(),{dropFileZone:t}=Vt();return{DropFileZoneLayout:i,DropFileZoneTool:l,DropFileZoneToolbar:t}},Fr={"rp-drop-zone":"_rp-drop-zone_1sc50_1","rp-drop-zone-transparent":"_rp-drop-zone-transparent_1sc50_15"},cg={},dg=()=>{let{dragging:i,handleDragLeave:l,handleDrop:t}=Dp(),{darkMode:e}=XG(),{localeMessages:s}=_l(),{DropFileZoneLayout:c,DropFileZoneTool:d,DropFileZoneToolbar:n}=ig(),Z=[c,d,n].includes(!1),b=u.useCallback(h=>{h.preventDefault()},[]);if(!i||Z)return null;let o=h=>h?typeof h=="function"?G.jsx(h,{}):typeof h=="boolean"?null:G.jsx(G.Fragment,{children:h}):null,m=G.jsxs(G.Fragment,{children:[G.jsx("div",{children:G.jsx(e?tg:$x,{})}),G.jsx("p",{children:s==null?void 0:s.dragDropFileMessage})]});return G.jsxs(G.Fragment,{children:[G.jsx("div",{className:xl(Fr["rp-drop-zone"],e?cg["rp-dark-mode"]:""),children:G.jsx(()=>o(c)??o(d)??o(n)??m,{})}),G.jsx("div",{className:Fr["rp-drop-zone-transparent"],onDragOver:b,onDragLeave:l,onDrop:t})]})},ag={"rp-skip-link":"_rp-skip-link_15qjp_1"},Or=({href:i,label:l})=>G.jsx("a",{href:i,className:ag["rp-skip-link"],onClick:t=>{t.preventDefault();let e=document.querySelector(i);if(!e)return;let s=e.querySelector('button, [href], input, select, textarea, [tabindex]:not
145([tabindex="-1"])')||e;s&&typeof s.focus=="function"&&s.focus()},"aria-label":l,tabIndex:0,children:l}),ng=u.forwardRef((i,l)=>{let{children:t,slots:e,icons:s,style:c,className:d,mobileWidth:n,onLoaded:Z,cleanupOnLoaded:b,onLayoutWidthChange:o}=i,[m,h]=u.useState(null),{setContainer:W,setContentRef:r}=Pe(),{loading:N}=at(),{LoaderImageComponent:M}=VG();return u.useEffect(()=>(Z&&Z(),()=>{b&&b()}),[Z,b]),G.jsx(dY,{toolbarRef:m,ref:l,children:G.jsx(yw,{mobileWidth:n,onLayoutWidthChange:o,children:G.jsx(kV,{slots:e,children:G.jsx(pw,{icons:s,children:G.jsxs(Bx,{getContainerRef:W,style:c,className:d,children:[G.jsx(Or,{href:"#rp-menu",label:"Skip to Menu"}),G.jsx(Or,{href:"#rp-main-content",label:"Skip to Main Content"}),G.jsxs(_x,{children:[G.jsxs("div",{className:bc["rp-layout"],children:[G.jsx("header",{children:G.jsx("nav",{id:"rp-menu",role:"menu","aria-label":"PDF viewer toolbar",children:G.jsx(xx,{ref:h})})}),G.jsxs("div",{className:bc["rp-content"],children:[G.jsx("aside",{className:bc["rp-sidebar"],role:"complementary","aria-label":"PDF viewer sidebar",children:G.jsx(Hx,{})}),G.jsx("main",{id:"rp-main-content",ref:r,className:bc["rp-pages"],role:"main","aria-label":"PDF document pages",children:t})]})]}),G.jsx(dg,{})]}),N?G.jsx("div",{className:bc["rp-loader"],style:{position:"absolute",top:0,left:0,right:0,bottom:0,width:"100%",height:"100%"},children:G.jsx("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100%",width:"100%"},children:M&&G.jsx(M,{})})}):null]})})})})})});const Zg="/build/assets/pdf.worker.min-BmS4jSda.mjs",kr={"--rp-outline-color":"#00934b","--rp-primary-color":"#00934b","--rp-thumbnail-active-color":"#00934b","--rp-password-button-border-color":"#00934b","--rp-password-button-background-color":"#00934b"},Ur=600,bg=i=>{const{url:l,className:t,onLoaded:e,...s}=i,[c,d]=u.useState(null),[n,Z]=u.useState(null),[b,o]=u.useState(!1),[m,h]=u.useState(!1);if(u.useEffect(()=>{n&&(h(n.offsetWidth<=Ur),o(!0))},[n]),c)throw c;return l?G.jsx("div",{...s,ref:Z,className:PT("[&>div]:w-full [&>div]:h-full [&>div]:relative",'[&_[data-rp="pages"]_>_*:only-child]:py-1',"[&_input]:outline [&_input]:outline-1 [&_input]:outline-transparent [&_input:focus-visible]:outline-primary-900",BT,t),children:b?G.jsx(Gz,{workerUrl:Zg,licenseKey:"eyJkYXRhIjoiZXlKMElqb2liM0puWVc1cGVtRjBhVzl1SWl3aVlYWjFJam94TnpjMU9EWTFOVGs1TENKa2JTSTZJbXhwYldWM2FYSmxMbU52YlNJc0ltNGlPaUprWW1KaE1UVTBZemxrT1RGaFpXTmhJaXdpWlhod0lqb3hPREl6TkRjeE9UazVMQ0prYlhRaU9pSjNhV3hrWTJGeVpDSjkiLCJzaWduYXR1cmUiOiJZZXdGdnNPQlpqN3NWcHFTNkprd2Y4alFXVXhzek1JcThWQTdkU3UxaXRzV1R6bWNNSmdWekFBK1llTnFId2FIOUgreUxrNVZZZEdkL0tCcUxaNUFBWk5GWTZ2aEhkQTkzRUZYa2RpZUI2RXMyZk9QOVM4ZlR6dVN0Q1lXVmFvZnd1RFoyUDRGSmVjMlQ2YXpXYmtDT2VEUHUzOEMzdm5aekhjRmRaZEF6amtyKzhnRlNmZ2NzR2tlY1FtaHU2NEpVeDdzb3JGNU9vTXM4N0FDOWdtMHdWOXhtbjFISmxXYi9KcGhmbEhCeDZsQlo0bWpkOUVPQUtCR2ZsMDh4OFFRYU5Eb2ZGa0ZDSHBUdFRIRW9xVTQwcjhnVzdEUkFVNUE5b3pDRzllVUlmU2tsSDR4OXU3RWNKQkxGM0Z5aXdXRHBqbmhRME5KMVlFNGpVSkRubWhINUE9PSJ9",children:G.jsx(oI,{src:l,initialThumbnailsVisible:!m,initialScale:ws.PAGE_WIDTH,onLoaded:e,onLoadError:W=>{d(AT(W))},darkMode:!0,children:G.jsx(bY,{customVariables:kr,customDarkVariables:kr,children:G.jsx(ng,{className:"absolute !w-full !h-full !rounded-none",mobileWidth:Ur,slots:{downloadTool:!1,dropFileZone:!1,openFileTool:!1},children:G.jsx(uz,{})})})})}):G.jsx(iN,{...i,className:"w-full h-full"})}):G.jsx(iN,{...i})},Lg=Object.freeze(Object.defineProperty({__proto__:null,PdfViewerSuspended:bg},Symbol.toStringTag,{value:"Module"}));export{Xg as o,Lg as p};
146!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5410cd62-c104-5060-98ea-1a3a7b04fc2c")}catch(e){}}()
147//# debugId=5410cd62-c104-5060-98ea-1a3a7b04fc2c
148//# sourceMappingURL=pdf-viewer-suspended-BTKzWNhw.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.