@flyfish-group/file-viewer 1.0.25 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +5 -375
- package/README.md +6 -352
- package/dist/index.d.ts +2 -606
- package/dist/index.js +2 -0
- package/package.json +32 -107
- package/dist/components/3MFLoader.js +0 -1
- package/dist/components/AMFLoader.js +0 -1
- package/dist/components/ArchiveViewer.js +0 -377
- package/dist/components/AudioViewer.js +0 -1
- package/dist/components/CadViewer.js +0 -1
- package/dist/components/CodeViewer.js +0 -1
- package/dist/components/ColladaLoader.js +0 -1
- package/dist/components/DrawingViewer.js +0 -1
- package/dist/components/EdaViewer.js +0 -1
- package/dist/components/EmailViewer.js +0 -1
- package/dist/components/EpubViewer.js +0 -1
- package/dist/components/FBXLoader.js +0 -1
- package/dist/components/GLTFLoader.js +0 -1
- package/dist/components/ImageViewer.js +0 -1
- package/dist/components/KMZLoader.js +0 -1
- package/dist/components/MarkdownViewer.js +0 -1
- package/dist/components/ModelViewer.js +0 -26885
- package/dist/components/OBJLoader.js +0 -1
- package/dist/components/OfdViewer.js +0 -1
- package/dist/components/PCDLoader.js +0 -1
- package/dist/components/PLYLoader.js +0 -1
- package/dist/components/PdfView.js +0 -31013
- package/dist/components/PptxRender.js +0 -19347
- package/dist/components/STLLoader.js +0 -1
- package/dist/components/TDSLoader.js +0 -1
- package/dist/components/TypstViewer.js +0 -2029
- package/dist/components/USDLoader.js +0 -1
- package/dist/components/UmdViewer.js +0 -2
- package/dist/components/VRMLLoader.js +0 -1
- package/dist/components/VTKLoader.js +0 -1
- package/dist/components/XYZLoader.js +0 -1
- package/dist/components/XlsxTable.js +0 -1
- package/dist/components/___vite-browser-external_commonjs-proxy.js +0 -1
- package/dist/components/_commonjs-dynamic-modules.js +0 -1
- package/dist/components/_commonjsHelpers.js +0 -1
- package/dist/components/ar-SA-G6X2FPQ2.js +0 -1
- package/dist/components/arc.js +0 -1
- package/dist/components/architecture-7EHR7CIX.js +0 -1
- package/dist/components/architectureDiagram-3BPJPVTR.js +0 -1
- package/dist/components/az-AZ-76LH7QW2.js +0 -1
- package/dist/components/bash.js +0 -1
- package/dist/components/bg-BG-XCXSNQG7.js +0 -1
- package/dist/components/blockDiagram-GPEHLZMM.js +0 -1
- package/dist/components/bn-BD-2XOGV67Q.js +0 -1
- package/dist/components/c4Diagram-AAUBKEIU.js +0 -1
- package/dist/components/ca-ES-6MX7JW3Y.js +0 -1
- package/dist/components/cfb.js +0 -1
- package/dist/components/channel.js +0 -1
- package/dist/components/chunk-2J33WTMH.js +0 -1
- package/dist/components/chunk-4BX2VUAB.js +0 -1
- package/dist/components/chunk-55IACEB6.js +0 -1
- package/dist/components/chunk-727SXJPM.js +0 -1
- package/dist/components/chunk-AQP2D5EJ.js +0 -1
- package/dist/components/chunk-EIO257PC.js +0 -1722
- package/dist/components/chunk-FMBD7UC4.js +0 -1
- package/dist/components/chunk-ND2GUHAM.js +0 -1
- package/dist/components/chunk-QZHKN3VN.js +0 -1
- package/dist/components/classDiagram-4FO5ZUOK.js +0 -1
- package/dist/components/classDiagram-v2-Q7XG4LA2.js +0 -1
- package/dist/components/core.js +0 -1
- package/dist/components/cose-bilkent-S5V4N54A.js +0 -1
- package/dist/components/cpp.js +0 -1
- package/dist/components/cs-CZ-2BRQDIVT.js +0 -1
- package/dist/components/csharp.js +0 -1
- package/dist/components/css.js +0 -1
- package/dist/components/cytoscape.esm.js +0 -1
- package/dist/components/da-DK-5WZEPLOC.js +0 -1
- package/dist/components/dagre-BM42HDAG.js +0 -1
- package/dist/components/de-DE-XR44H4JA.js +0 -1
- package/dist/components/defaultLocale.js +0 -1
- package/dist/components/diagram-2AECGRRQ.js +0 -1
- package/dist/components/diagram-5GNKFQAL.js +0 -1
- package/dist/components/diagram-KO2AKTUF.js +0 -1
- package/dist/components/diagram-LMA3HP47.js +0 -1
- package/dist/components/diagram-OG6HWLK6.js +0 -1
- package/dist/components/diff.js +0 -1
- package/dist/components/directory-open-01563666.js +0 -1
- package/dist/components/directory-open-4ed118d0.js +0 -1
- package/dist/components/docx-preview.js +0 -7
- package/dist/components/el-GR-BZB4AONW.js +0 -1
- package/dist/components/en-B4ZKOASM.js +0 -1
- package/dist/components/erDiagram-TEJ5UH35.js +0 -1
- package/dist/components/es-ES-U4NZUMDT.js +0 -1
- package/dist/components/eu-ES-A7QVB2H4.js +0 -1
- package/dist/components/eventmodeling-FCH6USID.js +0 -1
- package/dist/components/fa-IR-HGAKTJCU.js +0 -1
- package/dist/components/fflate.module.js +0 -1
- package/dist/components/fi-FI-Z5N7JZ37.js +0 -1
- package/dist/components/file-open-002ab408.js +0 -1
- package/dist/components/file-open-7c801643.js +0 -1
- package/dist/components/file-save-3189631c.js +0 -1
- package/dist/components/file-save-745eba88.js +0 -1
- package/dist/components/flowDiagram-I6XJVG4X.js +0 -1
- package/dist/components/fr-FR-RHASNOE6.js +0 -1
- package/dist/components/ganttDiagram-6RSMTGT7.js +0 -1
- package/dist/components/gitGraph-WXDBUCRP.js +0 -1
- package/dist/components/gitGraphDiagram-PVQCEYII.js +0 -1
- package/dist/components/gl-ES-HMX3MZ6V.js +0 -1
- package/dist/components/global-compiler.js +0 -1
- package/dist/components/global-renderer.js +0 -1
- package/dist/components/go.js +0 -1
- package/dist/components/graph.js +0 -1
- package/dist/components/he-IL-6SHJWFNN.js +0 -1
- package/dist/components/hi-IN-IWLTKZ5I.js +0 -1
- package/dist/components/hu-HU-A5ZG7DT2.js +0 -1
- package/dist/components/id-ID-SAP4L64H.js +0 -1
- package/dist/components/image-GAAHSSAO.js +0 -1
- package/dist/components/image-blob-reduce.esm.js +0 -2
- package/dist/components/index.js +0 -23989
- package/dist/components/index10.js +0 -1
- package/dist/components/index11.js +0 -1
- package/dist/components/index12.js +0 -1
- package/dist/components/index13.js +0 -1
- package/dist/components/index14.js +0 -1
- package/dist/components/index15.js +0 -1
- package/dist/components/index16.js +0 -1
- package/dist/components/index17.js +0 -1
- package/dist/components/index18.js +0 -1
- package/dist/components/index19.js +0 -1
- package/dist/components/index2.js +0 -1
- package/dist/components/index20.js +0 -1
- package/dist/components/index21.js +0 -1
- package/dist/components/index22.js +0 -2
- package/dist/components/index23.js +0 -1
- package/dist/components/index24.js +0 -1
- package/dist/components/index3.js +0 -1
- package/dist/components/index4.js +0 -1
- package/dist/components/index5.js +0 -1
- package/dist/components/index6.js +0 -1
- package/dist/components/index7.js +0 -1
- package/dist/components/index8.js +0 -1
- package/dist/components/index9.js +0 -1
- package/dist/components/info-J43DQDTF.js +0 -1
- package/dist/components/infoDiagram-5YYISTIA.js +0 -1
- package/dist/components/ini.js +0 -1
- package/dist/components/init.js +0 -1
- package/dist/components/ishikawaDiagram-YF4QCWOH.js +0 -1
- package/dist/components/it-IT-JPQ66NNP.js +0 -1
- package/dist/components/ja-JP-DBVTYXUO.js +0 -1
- package/dist/components/java.js +0 -1
- package/dist/components/javascript.js +0 -1
- package/dist/components/journeyDiagram-JHISSGLW.js +0 -1
- package/dist/components/json.js +0 -1
- package/dist/components/jszip.min.js +0 -1
- package/dist/components/kaa-6HZHGXH3.js +0 -1
- package/dist/components/kab-KAB-ZGHBKWFO.js +0 -1
- package/dist/components/kanban-definition-UN3LZRKU.js +0 -1
- package/dist/components/katex.js +0 -1
- package/dist/components/kk-KZ-P5N5QNE5.js +0 -1
- package/dist/components/km-KH-HSX4SM5Z.js +0 -1
- package/dist/components/ko-KR-MTYHY66A.js +0 -1
- package/dist/components/ku-TR-6OUDTVRD.js +0 -1
- package/dist/components/layout.js +0 -1
- package/dist/components/libarchive.js +0 -6
- package/dist/components/linear.js +0 -1
- package/dist/components/lt-LT-XHIRWOB4.js +0 -1
- package/dist/components/lv-LV-5QDEKY6T.js +0 -1
- package/dist/components/markdown.js +0 -1
- package/dist/components/mermaid-parser.core.js +0 -14
- package/dist/components/mindmap-definition-RKZ34NQL.js +0 -1
- package/dist/components/mr-IN-CRQNXWMA.js +0 -1
- package/dist/components/my-MM-5M5IBNSE.js +0 -1
- package/dist/components/nb-NO-T6EIAALU.js +0 -1
- package/dist/components/nestedRender.js +0 -1
- package/dist/components/nl-NL-IS3SIHDZ.js +0 -1
- package/dist/components/nn-NO-6E72VCQL.js +0 -1
- package/dist/components/oc-FR-POXYY2M6.js +0 -1
- package/dist/components/ofd.js +0 -1
- package/dist/components/ordinal.js +0 -1
- package/dist/components/pa-IN-N4M65BXN.js +0 -1
- package/dist/components/packet-YPE3B663.js +0 -1
- package/dist/components/percentages-BXMCSKIN.js +0 -1
- package/dist/components/php.js +0 -1
- package/dist/components/pica.js +0 -1
- package/dist/components/pie-LRSECV5Y.js +0 -1
- package/dist/components/pie.js +0 -1
- package/dist/components/pieDiagram-4H26LBE5.js +0 -1
- package/dist/components/pl-PL-T2D74RX3.js +0 -1
- package/dist/components/postal-mime.js +0 -1
- package/dist/components/printLayout.js +0 -1
- package/dist/components/pt-BR-5N22H2LF.js +0 -1
- package/dist/components/pt-PT-UZXXM6DQ.js +0 -1
- package/dist/components/python.js +0 -1
- package/dist/components/quadrantDiagram-W4KKPZXB.js +0 -1
- package/dist/components/radar-GUYGQ44K.js +0 -1
- package/dist/components/requirementDiagram-4Y6WPE33.js +0 -1
- package/dist/components/ro-RO-JPDTUUEW.js +0 -1
- package/dist/components/rough.esm.js +0 -1
- package/dist/components/roundRect.js +0 -1
- package/dist/components/ru-RU-B4JR7IUQ.js +0 -1
- package/dist/components/rust.js +0 -1
- package/dist/components/sankeyDiagram-5OEKKPKP.js +0 -1
- package/dist/components/sequenceDiagram-3UESZ5HK.js +0 -1
- package/dist/components/si-LK-N5RQ5JYF.js +0 -1
- package/dist/components/sk-SK-C5VTKIMK.js +0 -1
- package/dist/components/sl-SI-NN7IZMDC.js +0 -1
- package/dist/components/sql.js +0 -1
- package/dist/components/stateDiagram-AJRCARHV.js +0 -1
- package/dist/components/stateDiagram-v2-BHNVJYJU.js +0 -1
- package/dist/components/subset-shared.chunk.js +0 -1
- package/dist/components/subset-worker.chunk.js +0 -1
- package/dist/components/sv-SE-XGPEYMSR.js +0 -1
- package/dist/components/ta-IN-2NMHFXQM.js +0 -1
- package/dist/components/th-TH-HPSO5L25.js +0 -1
- package/dist/components/time.js +0 -1
- package/dist/components/timeline-definition-PNZ67QCA.js +0 -1
- package/dist/components/tr-TR-DEFEU3FU.js +0 -1
- package/dist/components/transform.js +0 -1
- package/dist/components/treeView-BLDUP644.js +0 -1
- package/dist/components/treemap-LRROVOQU.js +0 -1
- package/dist/components/typescript.js +0 -1
- package/dist/components/uk-UA-QMV73CPH.js +0 -1
- package/dist/components/vennDiagram-CIIHVFJN.js +0 -1
- package/dist/components/vi-VN-M7AON7JQ.js +0 -1
- package/dist/components/wardley-L42UT6IY.js +0 -1
- package/dist/components/wardleyDiagram-YWT4CUSO.js +0 -1
- package/dist/components/wasm-pack-shim.js +0 -1
- package/dist/components/wasm-pack-shim2.js +0 -1
- package/dist/components/worker-ref.js +0 -1
- package/dist/components/xml.js +0 -1
- package/dist/components/xychartDiagram-2RQKCTM6.js +0 -1
- package/dist/components/yaml.js +0 -1
- package/dist/components/zh-CN-LNUGB5OW.js +0 -1
- package/dist/components/zh-HK-E62DVLB3.js +0 -1
- package/dist/components/zh-TW-RAJ6MFWO.js +0 -1
- package/dist/index.mjs +0 -1
- package/dist/package/index.d.ts +0 -36
- package/dist/style.css +0 -17
- package/dist/wasm/cad/dwfv-render.wasm +0 -0
- package/dist/wasm/cad/dwg-worker.js +0 -24
- package/dist/wasm/cad/libredwg-web.js +0 -15
- package/dist/wasm/cad/libredwg-web.wasm +0 -0
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2019 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
const a9=b;(function(c,d){const a8=b,f=c();while(!![]){try{const i=parseInt(a8(0x173))/0x1*(-parseInt(a8(0x16b))/0x2)+parseInt(a8(0x18f))/0x3*(parseInt(a8(0x176))/0x4)+parseInt(a8(0x186))/0x5*(-parseInt(a8(0x156))/0x6)+parseInt(a8(0x14f))/0x7+parseInt(a8(0x160))/0x8*(parseInt(a8(0x15b))/0x9)+parseInt(a8(0x17e))/0xa*(-parseInt(a8(0x15d))/0xb)+parseInt(a8(0x17d))/0xc*(parseInt(a8(0x166))/0xd);if(i===d)break;else f['push'](f['shift']());}catch(j){f['push'](f['shift']());}}}(a,0x31837));const N=Symbol('Comlink.proxy'),w=Symbol('Comlink.endpoint'),B=Symbol('Comlink.releaseProxy'),o=Symbol('Comlink.finalizer'),L=Symbol('Comlink.thrown'),x=c=>typeof c==a9(0x18a)&&c!==null||typeof c=='function',P=new Map([['proxy',{'canHandle':c=>x(c)&&c[N],'serialize'(c){const {port1:d,port2:f}=new MessageChannel();return z(c,d),[f,[f]];},'deserialize':c=>(c['start'](),v(c))}],['throw',{'canHandle':c=>x(c)&&L in c,'serialize'({value:c}){const aa=a9;let d;return d=c instanceof Error?{'isError':!0x0,'value':{'message':c['message'],'name':c[aa(0x175)],'stack':c['stack']}}:{'isError':!0x1,'value':c},[d,[]];},'deserialize'(c){throw c['isError']?Object['assign'](new Error(c['value']['message']),c['value']):c['value'];}}]]);function z(d,f=globalThis,i=['*']){f['addEventListener']('message',function j(q){const ab=b;if(!q||!q['data'])return;if(!function(a0,a1){for(const a2 of a0)if(a1===a2||a2==='*'||a2 instanceof RegExp&&a2['test'](a1))return!0x0;return!0x1;}(i,q['origin']))return void console[ab(0x155)]('Invalid\x20origin\x20\x27'+q['origin']+'\x27\x20for\x20comlink\x20proxy');const {id:r,type:A,path:D}=Object['assign']({'path':[]},q['data']),E=(q['data']['argumentList']||[])['map'](p);let O;try{const a0=D['slice'](0x0,-0x1)[ab(0x191)]((a2,a3)=>a2[a3],d),a1=D['reduce']((a2,a3)=>a2[a3],d);switch(A){case'GET':O=a1;break;case'SET':a0[D[ab(0x18d)](-0x1)[0x0]]=p(q['data']['value']),O=!0x0;break;case'APPLY':O=a1['apply'](a0,E);break;case'CONSTRUCT':O=J(new a1(...E));break;case'ENDPOINT':{const {port1:a2,port2:a3}=new MessageChannel();z(d,a3),O=function(a4,a5){return M['set'](a4,a5),a4;}(a2,[a2]);}break;case ab(0x162):O=void 0x0;break;default:return;}}catch(a4){O={'value':a4,[L]:0x0};}Promise[ab(0x157)](O)['catch'](a5=>({'value':a5,[L]:0x0}))['then'](a5=>{const ac=ab,[a6,a7]=Y(a5);f[ac(0x158)](Object['assign'](Object['assign']({},a6),{'id':r}),a7),A===ac(0x162)&&(f['removeEventListener']('message',j),C(f),o in d&&typeof d[o]=='function'&&d[o]());})['catch'](a5=>{const ad=ab,[a6,a7]=Y({'value':new TypeError('Unserializable\x20return\x20value'),[L]:0x0});f[ad(0x158)](Object['assign'](Object['assign']({},a6),{'id':r}),a7);});}),f['start']&&f['start']();}function C(c){(function(d){return d['constructor']['name']==='MessagePort';}(c)&&c['close']());}function v(c,d){return n(c,[],d);}function I(c){const ae=a9;if(c)throw new Error(ae(0x192));}function g(c){return h(c,{'type':'RELEASE'})['then'](()=>{C(c);});}const R=new WeakMap(),S='FinalizationRegistry'in globalThis&&new FinalizationRegistry(c=>{const d=(R['get'](c)||0x0)-0x1;R['set'](c,d),d===0x0&&g(c);});function n(d,f=[],i=function(){}){let j=!0x1;const q=new Proxy(i,{'get'(r,u){if(I(j),u===B)return()=>{(function(y){S&&S['unregister'](y);}(q),g(d),j=!0x0);};if(u==='then'){if(f['length']===0x0)return{'then':()=>q};const y=h(d,{'type':'GET','path':f['map'](A=>A['toString']())})['then'](p);return y['then']['bind'](y);}return n(d,[...f,u]);},'set'(r,u,y){const af=b;I(j);const [A,D]=Y(y);return h(d,{'type':'SET','path':[...f,u]['map'](E=>E['toString']()),'value':A},D)[af(0x154)](p);},'apply'(r,u,A){const ag=b;I(j);const D=f[f['length']-0x1];if(D===w)return h(d,{'type':'ENDPOINT'})['then'](p);if(D===ag(0x150))return n(d,f[ag(0x18d)](0x0,-0x1));const [E,K]=H(A);return h(d,{'type':'APPLY','path':f[ag(0x152)](O=>O['toString']()),'argumentList':E},K)['then'](p);},'construct'(r,u){I(j);const [y,A]=H(u);return h(d,{'type':'CONSTRUCT','path':f['map'](D=>D['toString']()),'argumentList':y},A)['then'](p);}});return function(r,u){const y=(R['get'](u)||0x0)+0x1;R['set'](u,y),S&&S['register'](r,u,r);}(q,d),q;}function H(c){const ah=a9,d=c['map'](Y);return[d['map'](i=>i[0x0]),(f=d[ah(0x152)](i=>i[0x1]),Array['prototype'][ah(0x172)]['apply']([],f))];var f;}const M=new WeakMap();function J(c){return Object['assign'](c,{[N]:!0x0});}function Y(d){for(const [f,i]of P)if(i['canHandle'](d)){const [j,q]=i['serialize'](d);return[{'type':'HANDLER','name':f,'value':j},q];}return[{'type':'RAW','value':d},M['get'](d)||[]];}function p(c){const ai=a9;switch(c['type']){case'HANDLER':return P[ai(0x189)](c['name'])['deserialize'](c['value']);case'RAW':return c[ai(0x185)];}}function a(){const az=['then','warn','52662eDcQNG','resolve','postMessage','LZIP','getFilesArray','477CCyjRg','getWorker','2319713oaxxen','_processed','posix','14360TYhibU','getFilesObject','RELEASE','client','path','open','391729hwGFsF','MTREE','length','data','xar','180406pFDVnu','forEach','POSIX','_options','ustar','data:application/javascript;base64,LyoqCiAqIEBsaWNlbnNlCiAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMKICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKICovCmNvbnN0IGU9U3ltYm9sKCJDb21saW5rLnByb3h5Iikscj1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSx0PVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxuPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxvPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxhPWU9PiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlLHM9bmV3IE1hcChbWyJwcm94eSIse2NhbkhhbmRsZTpyPT5hKHIpJiZyW2VdLHNlcmlhbGl6ZShlKXtjb25zdHtwb3J0MTpyLHBvcnQyOnR9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gaShlLHIpLFt0LFt0XV19LGRlc2VyaWFsaXplKGUpe3JldHVybiBlLnN0YXJ0KCksZihlLFtdLHIpO3ZhciByfX1dLFsidGhyb3ciLHtjYW5IYW5kbGU6ZT0+YShlKSYmbyBpbiBlLHNlcmlhbGl6ZSh7dmFsdWU6ZX0pe2xldCByO3JldHVybiByPWUgaW5zdGFuY2VvZiBFcnJvcj97aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTplLm1lc3NhZ2UsbmFtZTplLm5hbWUsc3RhY2s6ZS5zdGFja319Ontpc0Vycm9yOiExLHZhbHVlOmV9LFtyLFtdXX0sZGVzZXJpYWxpemUoZSl7aWYoZS5pc0Vycm9yKXRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKGUudmFsdWUubWVzc2FnZSksZS52YWx1ZSk7dGhyb3cgZS52YWx1ZX19XV0pO2Z1bmN0aW9uIGkocix0PWdsb2JhbFRoaXMsYT1bIioiXSl7dC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoZnVuY3Rpb24gcyhsKXtpZighbHx8IWwuZGF0YSlyZXR1cm47aWYoIWZ1bmN0aW9uKGUscil7Zm9yKGNvbnN0IHQgb2YgZSl7aWYocj09PXR8fCIqIj09PXQpcmV0dXJuITA7aWYodCBpbnN0YW5jZW9mIFJlZ0V4cCYmdC50ZXN0KHIpKXJldHVybiEwfXJldHVybiExfShhLGwub3JpZ2luKSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luICcke2wub3JpZ2lufScgZm9yIGNvbWxpbmsgcHJveHlgKTtjb25zdHtpZDpjLHR5cGU6ZCxwYXRoOmh9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LGwuZGF0YSksZj0obC5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcCh3KTtsZXQgbTt0cnl7Y29uc3QgdD1oLnNsaWNlKDAsLTEpLnJlZHVjZSgoKGUscik9PmVbcl0pLHIpLG49aC5yZWR1Y2UoKChlLHIpPT5lW3JdKSxyKTtzd2l0Y2goZCl7Y2FzZSJHRVQiOm09bjticmVhaztjYXNlIlNFVCI6dFtoLnNsaWNlKC0xKVswXV09dyhsLmRhdGEudmFsdWUpLG09ITA7YnJlYWs7Y2FzZSJBUFBMWSI6bT1uLmFwcGx5KHQsZik7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOm09ZnVuY3Rpb24ocil7cmV0dXJuIE9iamVjdC5hc3NpZ24ocix7W2VdOiEwfSl9KG5ldyBuKC4uLmYpKTticmVhaztjYXNlIkVORFBPSU5UIjp7Y29uc3R7cG9ydDE6ZSxwb3J0Mjp0fT1uZXcgTWVzc2FnZUNoYW5uZWw7aShyLHQpLG09ZnVuY3Rpb24oZSxyKXtyZXR1cm4gcC5zZXQoZSxyKSxlfShlLFtlXSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjptPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2goZSl7bT17dmFsdWU6ZSxbb106MH19UHJvbWlzZS5yZXNvbHZlKG0pLmNhdGNoKChlPT4oe3ZhbHVlOmUsW29dOjB9KSkpLnRoZW4oKGU9Pntjb25zdFtvLGFdPXYoZSk7dC5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse2lkOmN9KSxhKSwiUkVMRUFTRSI9PT1kJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixzKSx1KHQpLG4gaW4gciYmImZ1bmN0aW9uIj09dHlwZW9mIHJbbl0mJnJbbl0oKSl9KSkuY2F0Y2goKGU9Pntjb25zdFtyLG5dPXYoe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFtvXTowfSk7dC5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse2lkOmN9KSxuKX0pKX0pKSx0LnN0YXJ0JiZ0LnN0YXJ0KCl9ZnVuY3Rpb24gdShlKXsoZnVuY3Rpb24oZSl7cmV0dXJuIk1lc3NhZ2VQb3J0Ij09PWUuY29uc3RydWN0b3IubmFtZX0pKGUpJiZlLmNsb3NlKCl9ZnVuY3Rpb24gbChlKXtpZihlKXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZyhlLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCgpPT57dShlKX0pKX1jb25zdCBkPW5ldyBXZWFrTWFwLGg9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoZT0+e2NvbnN0IHI9KGQuZ2V0KGUpfHwwKS0xO2Quc2V0KGUsciksMD09PXImJmMoZSl9KSk7ZnVuY3Rpb24gZihlLG49W10sbz1mdW5jdGlvbigpe30pe2xldCBhPSExO2NvbnN0IHM9bmV3IFByb3h5KG8se2dldChyLG8pe2lmKGwoYSksbz09PXQpcmV0dXJuKCk9PnshZnVuY3Rpb24oZSl7aCYmaC51bnJlZ2lzdGVyKGUpfShzKSxjKGUpLGE9ITB9O2lmKCJ0aGVuIj09PW8pe2lmKDA9PT1uLmxlbmd0aClyZXR1cm57dGhlbjooKT0+c307Y29uc3Qgcj1nKGUse3R5cGU6IkdFVCIscGF0aDpuLm1hcCgoZT0+ZS50b1N0cmluZygpKSl9KS50aGVuKHcpO3JldHVybiByLnRoZW4uYmluZChyKX1yZXR1cm4gZihlLFsuLi5uLG9dKX0sc2V0KHIsdCxvKXtsKGEpO2NvbnN0W3MsaV09dihvKTtyZXR1cm4gZyhlLHt0eXBlOiJTRVQiLHBhdGg6Wy4uLm4sdF0ubWFwKChlPT5lLnRvU3RyaW5nKCkpKSx2YWx1ZTpzfSxpKS50aGVuKHcpfSxhcHBseSh0LG8scyl7bChhKTtjb25zdCBpPW5bbi5sZW5ndGgtMV07aWYoaT09PXIpcmV0dXJuIGcoZSx7dHlwZToiRU5EUE9JTlQifSkudGhlbih3KTtpZigiYmluZCI9PT1pKXJldHVybiBmKGUsbi5zbGljZSgwLC0xKSk7Y29uc3RbdSxjXT1tKHMpO3JldHVybiBnKGUse3R5cGU6IkFQUExZIixwYXRoOm4ubWFwKChlPT5lLnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6dX0sYykudGhlbih3KX0sY29uc3RydWN0KHIsdCl7bChhKTtjb25zdFtvLHNdPW0odCk7cmV0dXJuIGcoZSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOm4ubWFwKChlPT5lLnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6b30scykudGhlbih3KX19KTtyZXR1cm4gZnVuY3Rpb24oZSxyKXtjb25zdCB0PShkLmdldChyKXx8MCkrMTtkLnNldChyLHQpLGgmJmgucmVnaXN0ZXIoZSxyLGUpfShzLGUpLHN9ZnVuY3Rpb24gbShlKXtjb25zdCByPWUubWFwKHYpO3JldHVybltyLm1hcCgoZT0+ZVswXSkpLCh0PXIubWFwKChlPT5lWzFdKSksQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSx0KSldO3ZhciB0fWNvbnN0IHA9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gdihlKXtmb3IoY29uc3Rbcix0XW9mIHMpaWYodC5jYW5IYW5kbGUoZSkpe2NvbnN0W24sb109dC5zZXJpYWxpemUoZSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOnIsdmFsdWU6bn0sb119cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOmV9LHAuZ2V0KGUpfHxbXV19ZnVuY3Rpb24gdyhlKXtzd2l0Y2goZS50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBzLmdldChlLm5hbWUpLmRlc2VyaWFsaXplKGUudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gZS52YWx1ZX19ZnVuY3Rpb24gZyhlLHIsdCl7cmV0dXJuIG5ldyBQcm9taXNlKChuPT57Y29uc3Qgbz1uZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCgpPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSkpLmpvaW4oIi0iKTtlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbiByKHQpe3QuZGF0YSYmdC5kYXRhLmlkJiZ0LmRhdGEuaWQ9PT1vJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyKSxuKHQuZGF0YSkpfSkpLGUuc3RhcnQmJmUuc3RhcnQoKSxlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOm99LHIpLHQpfSkpfWNvbnN0IF89ezMyNzY4OiJGSUxFIiwxNjM4NDoiRElSIiw0MDk2MDoiU1lNQk9MSUNfTElOSyIsNDkxNTI6IlNPQ0tFVCIsODE5MjoiQ0hBUkFDVEVSX0RFVklDRSIsMjQ1NzY6IkJMT0NLX0RFVklDRSIsNDA5NjoiTkFNRURfUElQRSJ9O2NsYXNzIHl7Y29uc3RydWN0b3IoZSl7dGhpcy5fd2FzbU1vZHVsZT1lLHRoaXMuX3J1bkNvZGU9ZS5ydW5Db2RlLHRoaXMuX2ZpbGU9bnVsbCx0aGlzLl9wYXNzcGhyYXNlPW51bGwsdGhpcy5fbG9jYWxlPSJlbl9VUy5VVEYtOCJ9YXN5bmMgb3BlbihlKXtudWxsIT09dGhpcy5fZmlsZSYmKGNvbnNvbGUud2FybigiQ2xvc2luZyBwcmV2aW91cyBmaWxlIiksdGhpcy5jbG9zZSgpKTtjb25zdCByPWF3YWl0IHRoaXMuX2xvYWRGaWxlKGUpO3RoaXMuX2ZpbGVMZW5ndGg9ci5sZW5ndGgsdGhpcy5fZmlsZVB0cj1yLnB0cn1jbG9zZSgpe3RoaXMuX3J1bkNvZGUuY2xvc2VBcmNoaXZlKHRoaXMuX2FyY2hpdmUpLHRoaXMuX3dhc21Nb2R1bGUuX2ZyZWUodGhpcy5fZmlsZVB0ciksdGhpcy5fZmlsZT1udWxsLHRoaXMuX2ZpbGVQdHI9bnVsbCx0aGlzLl9hcmNoaXZlPW51bGx9aGFzRW5jcnlwdGVkRGF0YSgpe3RoaXMuX2FyY2hpdmU9dGhpcy5fcnVuQ29kZS5vcGVuQXJjaGl2ZSh0aGlzLl9maWxlUHRyLHRoaXMuX2ZpbGVMZW5ndGgsdGhpcy5fcGFzc3BocmFzZSx0aGlzLl9sb2NhbGUpLHRoaXMuX3J1bkNvZGUuZ2V0TmV4dEVudHJ5KHRoaXMuX2FyY2hpdmUpO2NvbnN0IGU9dGhpcy5fcnVuQ29kZS5oYXNFbmNyeXB0ZWRFbnRyaWVzKHRoaXMuX2FyY2hpdmUpO3JldHVybiAwIT09ZSYmKGU+MHx8bnVsbCl9c2V0UGFzc3BocmFzZShlKXt0aGlzLl9wYXNzcGhyYXNlPWV9c2V0TG9jYWxlKGUpe3RoaXMuX2xvY2FsZT1lfSplbnRyaWVzKGU9ITEscj1udWxsKXtsZXQgdDtmb3IodGhpcy5fYXJjaGl2ZT10aGlzLl9ydW5Db2RlLm9wZW5BcmNoaXZlKHRoaXMuX2ZpbGVQdHIsdGhpcy5fZmlsZUxlbmd0aCx0aGlzLl9wYXNzcGhyYXNlLHRoaXMuX2xvY2FsZSk7dD10aGlzLl9ydW5Db2RlLmdldE5leHRFbnRyeSh0aGlzLl9hcmNoaXZlKSwwIT09dDspe2NvbnN0IG49e3NpemU6dGhpcy5fcnVuQ29kZS5nZXRFbnRyeVNpemUodCkscGF0aDp0aGlzLl9ydW5Db2RlLmdldEVudHJ5TmFtZSh0KSx0eXBlOl9bdGhpcy5fcnVuQ29kZS5nZXRFbnRyeVR5cGUodCldLGxhc3RNb2RpZmllZDp0aGlzLl9ydW5Db2RlLmdldEVudHJ5TGFzdE1vZGlmaWVkKHQpLHJlZjp0fTtpZigiRklMRSI9PT1uLnR5cGUpe2xldCBlPW4ucGF0aC5zcGxpdCgiLyIpO24uZmlsZU5hbWU9ZVtlLmxlbmd0aC0xXX1pZihlJiZyIT09bi5wYXRoKXRoaXMuX3J1bkNvZGUuc2tpcEVudHJ5KHRoaXMuX2FyY2hpdmUpO2Vsc2V7Y29uc3QgZT10aGlzLl9ydW5Db2RlLmdldEZpbGVEYXRhKHRoaXMuX2FyY2hpdmUsbi5zaXplKTtpZihlPDApdGhyb3cgbmV3IEVycm9yKHRoaXMuX3J1bkNvZGUuZ2V0RXJyb3IodGhpcy5fYXJjaGl2ZSkpO24uZmlsZURhdGE9dGhpcy5fd2FzbU1vZHVsZS5IRUFQVTguc2xpY2UoZSxlK24uc2l6ZSksdGhpcy5fd2FzbU1vZHVsZS5fZnJlZShlKX15aWVsZCBufX1hc3luYyBfbG9hZEZpbGUoZSl7Y29uc3Qgcj1hd2FpdCBlLmFycmF5QnVmZmVyKCksdD1uZXcgVWludDhBcnJheShyKSxuPXRoaXMuX3J1bkNvZGUubWFsbG9jKHQubGVuZ3RoKTtyZXR1cm4gdGhpcy5fd2FzbU1vZHVsZS5IRUFQVTguc2V0KHQsbikse3B0cjpuLGxlbmd0aDp0Lmxlbmd0aH19fWNsYXNzIEV7Y29uc3RydWN0b3IoZSl7dGhpcy5fd2FzbU1vZHVsZT1lLHRoaXMuX3J1bkNvZGU9ZS5ydW5Db2RlLHRoaXMuX3Bhc3NwaHJhc2U9bnVsbCx0aGlzLl9sb2NhbGU9ImVuX1VTLlVURi04In1hc3luYyB3cml0ZShlLHIsdCxuPW51bGwpe2xldCBvPWUucmVkdWNlKCgoZSx7ZmlsZTpyfSk9PmUrci5zaXplKzEyOCksMCkrMTI4O2NvbnN0IGE9dGhpcy5fcnVuQ29kZS5tYWxsb2Mobykscz10aGlzLl9ydW5Db2RlLm1hbGxvYyh0aGlzLl9ydW5Db2RlLnNpemVPZlNpemVUKCkpLGk9dGhpcy5fcnVuQ29kZS5zdGFydEFyY2hpdmVXcml0ZShyLHQsYSxvLHMsbik7Zm9yKGNvbnN0e2ZpbGU6cixwYXRobmFtZTp0fW9mIGUpe2NvbnN0IGU9YXdhaXQgdGhpcy5fbG9hZEZpbGUocik7dGhpcy5fcnVuQ29kZS53cml0ZUFyY2hpdmVGaWxlKGksdHx8ci5uYW1lLGUubGVuZ3RoLGUucHRyKSx0aGlzLl9ydW5Db2RlLmZyZWUoZS5wdHIpfWNvbnN0IHU9dGhpcy5fcnVuQ29kZS5maW5pc2hBcmNoaXZlV3JpdGUoaSxzKTtpZih1PDApdGhyb3cgbmV3IEVycm9yKHRoaXMuX3J1bkNvZGUuZ2V0RXJyb3IoaSkpO3JldHVybiB0aGlzLl93YXNtTW9kdWxlLkhFQVBVOC5zbGljZShhLGErdSl9YXN5bmMgX2xvYWRGaWxlKGUpe2NvbnN0IHI9YXdhaXQgZS5hcnJheUJ1ZmZlcigpLHQ9bmV3IFVpbnQ4QXJyYXkociksbj10aGlzLl9ydW5Db2RlLm1hbGxvYyh0Lmxlbmd0aCk7cmV0dXJuIHRoaXMuX3dhc21Nb2R1bGUuSEVBUFU4LnNldCh0LG4pLHtwdHI6bixsZW5ndGg6dC5sZW5ndGh9fX12YXIgYixrPShiPWltcG9ydC5tZXRhLnVybCxhc3luYyBmdW5jdGlvbihlPXt9KXt2YXIgcix0LG49ZTtuLnJlYWR5PW5ldyBQcm9taXNlKCgoZSxuKT0+e3I9ZSx0PW59KSk7dmFyIG8sYSxzLGk9T2JqZWN0LmFzc2lnbih7fSxuKSx1PSIuL3RoaXMucHJvZ3JhbSIsbD0oZSxyKT0+e3Rocm93IHJ9LGM9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3csZD0iZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyxoPSJvYmplY3QiPT10eXBlb2YgcHJvY2VzcyYmIm9iamVjdCI9PXR5cGVvZiBwcm9jZXNzLnZlcnNpb25zJiYic3RyaW5nIj09dHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZSxmPSIiO2lmKGgpe2NvbnN0e2NyZWF0ZVJlcXVpcmU6ZX09YXdhaXQgaW1wb3J0KCJtb2R1bGUiKTt2YXIgbT1lKGltcG9ydC5tZXRhLnVybCkscD1tKCJmcyIpLHY9bSgicGF0aCIpO2Y9ZD92LmRpcm5hbWUoZikrIi8iOm0oInVybCIpLmZpbGVVUkxUb1BhdGgobmV3IFVSTCgiLi8iLGltcG9ydC5tZXRhLnVybCkpLG89KGUscik9PihlPVkoZSk/bmV3IFVSTChlKTp2Lm5vcm1hbGl6ZShlKSxwLnJlYWRGaWxlU3luYyhlLHI/dm9pZCAwOiJ1dGY4IikpLHM9ZT0+e3ZhciByPW8oZSwhMCk7cmV0dXJuIHIuYnVmZmVyfHwocj1uZXcgVWludDhBcnJheShyKSkscn0sYT0oZSxyLHQsbj0hMCk9PntlPVkoZSk/bmV3IFVSTChlKTp2Lm5vcm1hbGl6ZShlKSxwLnJlYWRGaWxlKGUsbj92b2lkIDA6InV0ZjgiLCgoZSxvKT0+e2U/dChlKTpyKG4/by5idWZmZXI6byl9KSl9LCFuLnRoaXNQcm9ncmFtJiZwcm9jZXNzLmFyZ3YubGVuZ3RoPjEmJih1PXByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCIvIikpLHByb2Nlc3MuYXJndi5zbGljZSgyKSxsPShlLHIpPT57dGhyb3cgcHJvY2Vzcy5leGl0Q29kZT1lLHJ9LG4uaW5zcGVjdD0oKT0+IltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdIn1lbHNlKGN8fGQpJiYoZD9mPXNlbGYubG9jYXRpb24uaHJlZjoidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5jdXJyZW50U2NyaXB0JiYoZj1kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyksYiYmKGY9YiksZj0wIT09Zi5pbmRleE9mKCJibG9iOiIpP2Yuc3Vic3RyKDAsZi5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpOiIiLG89ZT0+e3ZhciByPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gci5vcGVuKCJHRVQiLGUsITEpLHIuc2VuZChudWxsKSxyLnJlc3BvbnNlVGV4dH0sZCYmKHM9ZT0+e3ZhciByPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gci5vcGVuKCJHRVQiLGUsITEpLHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsci5zZW5kKG51bGwpLG5ldyBVaW50OEFycmF5KHIucmVzcG9uc2UpfSksYT0oZSxyLHQpPT57dmFyIG49bmV3IFhNTEh0dHBSZXF1ZXN0O24ub3BlbigiR0VUIixlLCEwKSxuLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLG4ub25sb2FkPSgpPT57MjAwPT1uLnN0YXR1c3x8MD09bi5zdGF0dXMmJm4ucmVzcG9uc2U/cihuLnJlc3BvbnNlKTp0KCl9LG4ub25lcnJvcj10LG4uc2VuZChudWxsKX0pO3ZhciB3LGcsXz1uLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLHk9bi5wcmludEVycnx8Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24obixpKSxpPW51bGwsbi5hcmd1bWVudHMmJm4uYXJndW1lbnRzLG4udGhpc1Byb2dyYW0mJih1PW4udGhpc1Byb2dyYW0pLG4ucXVpdCYmKGw9bi5xdWl0KSxuLndhc21CaW5hcnkmJih3PW4ud2FzbUJpbmFyeSksIm9iamVjdCIhPXR5cGVvZiBXZWJBc3NlbWJseSYmTygibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpO3ZhciBFLGssUyxGLEQsTT0hMTtmdW5jdGlvbiBBKGUscil7ZXx8TyhyKX1mdW5jdGlvbiBDKCl7dmFyIGU9Zy5idWZmZXI7bi5IRUFQOD1FPW5ldyBJbnQ4QXJyYXkoZSksbi5IRUFQMTY9Uz1uZXcgSW50MTZBcnJheShlKSxuLkhFQVBVOD1rPW5ldyBVaW50OEFycmF5KGUpLG4uSEVBUFUxNj1uZXcgVWludDE2QXJyYXkoZSksbi5IRUFQMzI9Rj1uZXcgSW50MzJBcnJheShlKSxuLkhFQVBVMzI9RD1uZXcgVWludDMyQXJyYXkoZSksbi5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoZSksbi5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoZSl9dmFyIFA9W10sVD1bXSxSPVtdLHo9MCxVPW51bGw7ZnVuY3Rpb24gTChlKXt6Kyssbi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzPy4oeil9ZnVuY3Rpb24geChlKXtpZih6LS0sbi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzPy4oeiksMD09eiYmVSl7dmFyIHI9VTtVPW51bGwscigpfX1mdW5jdGlvbiBPKGUpe24ub25BYm9ydD8uKGUpLHkoZT0iQWJvcnRlZCgiK2UrIikiKSxNPSEwLGUrPSIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIjt2YXIgcj1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGUpO3Rocm93IHQocikscn12YXIgTixCLGosSSxIPWU9PmUuc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpLFk9ZT0+ZS5zdGFydHNXaXRoKCJmaWxlOi8vIik7ZnVuY3Rpb24gVyhlKXtpZihlPT1OJiZ3KXJldHVybiBuZXcgVWludDhBcnJheSh3KTtpZihzKXJldHVybiBzKGUpO3Rocm93ImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIn1mdW5jdGlvbiBLKGUscix0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoIXcmJihjfHxkKSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGZldGNoJiYhWShlKSlyZXR1cm4gZmV0Y2goZSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oKHI9PntpZighci5vayl0aHJvdyJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0ICciK2UrIiciO3JldHVybiByLmFycmF5QnVmZmVyKCl9KSkuY2F0Y2goKCgpPT5XKGUpKSk7aWYoYSlyZXR1cm4gbmV3IFByb21pc2UoKChyLHQpPT57YShlLChlPT5yKG5ldyBVaW50OEFycmF5KGUpKSksdCl9KSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT5XKGUpKSl9KGUpLnRoZW4oKGU9PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGUscikpKS50aGVuKChlPT5lKSkudGhlbih0LChlPT57eShgZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogJHtlfWApLE8oZSl9KSl9ZnVuY3Rpb24gcShlKXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiLHRoaXMubWVzc2FnZT1gUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgke2V9KWAsdGhpcy5zdGF0dXM9ZX1uLmxvY2F0ZUZpbGU/SChOPSJsaWJhcmNoaXZlLndhc20iKXx8KEI9TixOPW4ubG9jYXRlRmlsZT9uLmxvY2F0ZUZpbGUoQixmKTpmK0IpOk49bmV3IFVSTCgibGliYXJjaGl2ZS53YXNtIixpbXBvcnQubWV0YS51cmwpLmhyZWY7dmFyICQ9ZT0+e2Zvcig7ZS5sZW5ndGg+MDspZS5zaGlmdCgpKG4pfSxYPW4ubm9FeGl0UnVudGltZXx8ITAsWj17aXNBYnM6ZT0+Ii8iPT09ZS5jaGFyQXQoMCksc3BsaXRQYXRoOmU9Pi9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLy5leGVjKGUpLnNsaWNlKDEpLG5vcm1hbGl6ZUFycmF5OihlLHIpPT57Zm9yKHZhciB0PTAsbj1lLmxlbmd0aC0xO24+PTA7bi0tKXt2YXIgbz1lW25dOyIuIj09PW8/ZS5zcGxpY2UobiwxKToiLi4iPT09bz8oZS5zcGxpY2UobiwxKSx0KyspOnQmJihlLnNwbGljZShuLDEpLHQtLSl9aWYocilmb3IoO3Q7dC0tKWUudW5zaGlmdCgiLi4iKTtyZXR1cm4gZX0sbm9ybWFsaXplOmU9Pnt2YXIgcj1aLmlzQWJzKGUpLHQ9Ii8iPT09ZS5zdWJzdHIoLTEpO3JldHVybihlPVoubm9ybWFsaXplQXJyYXkoZS5zcGxpdCgiLyIpLmZpbHRlcigoZT0+ISFlKSksIXIpLmpvaW4oIi8iKSl8fHJ8fChlPSIuIiksZSYmdCYmKGUrPSIvIiksKHI/Ii8iOiIiKStlfSxkaXJuYW1lOmU9Pnt2YXIgcj1aLnNwbGl0UGF0aChlKSx0PXJbMF0sbj1yWzFdO3JldHVybiB0fHxuPyhuJiYobj1uLnN1YnN0cigwLG4ubGVuZ3RoLTEpKSx0K24pOiIuIn0sYmFzZW5hbWU6ZT0+e2lmKCIvIj09PWUpcmV0dXJuIi8iO3ZhciByPShlPShlPVoubm9ybWFsaXplKGUpKS5yZXBsYWNlKC9cLyQvLCIiKSkubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PXI/ZTplLnN1YnN0cihyKzEpfSxqb2luOmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gWi5ub3JtYWxpemUoZS5qb2luKCIvIikpfSxqb2luMjooZSxyKT0+Wi5ub3JtYWxpemUoZSsiLyIrcil9LEc9ZT0+KEc9KCgpPT57aWYoIm9iamVjdCI9PXR5cGVvZiBjcnlwdG8mJiJmdW5jdGlvbiI9PXR5cGVvZiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKXJldHVybiBlPT5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGUpO2lmKGgpdHJ5e3ZhciBlPW0oImNyeXB0byIpO2lmKGUucmFuZG9tRmlsbFN5bmMpcmV0dXJuIHI9PmUucmFuZG9tRmlsbFN5bmMocik7dmFyIHI9ZS5yYW5kb21CeXRlcztyZXR1cm4gZT0+KGUuc2V0KHIoZS5ieXRlTGVuZ3RoKSksZSl9Y2F0Y2goZSl7fU8oImluaXRSYW5kb21EZXZpY2UiKX0pKCkpKGUpLFY9e3Jlc29sdmU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9IiIscj0hMSx0PWFyZ3VtZW50cy5sZW5ndGgtMTt0Pj0tMSYmIXI7dC0tKXt2YXIgbj10Pj0wP2FyZ3VtZW50c1t0XTpsZS5jd2QoKTtpZigic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKTtpZighbilyZXR1cm4iIjtlPW4rIi8iK2Uscj1aLmlzQWJzKG4pfXJldHVybihyPyIvIjoiIikrKGU9Wi5ub3JtYWxpemVBcnJheShlLnNwbGl0KCIvIikuZmlsdGVyKChlPT4hIWUpKSwhcikuam9pbigiLyIpKXx8Ii4ifSxyZWxhdGl2ZTooZSxyKT0+e2Z1bmN0aW9uIHQoZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aCYmIiI9PT1lW3JdO3IrKyk7Zm9yKHZhciB0PWUubGVuZ3RoLTE7dD49MCYmIiI9PT1lW3RdO3QtLSk7cmV0dXJuIHI+dD9bXTplLnNsaWNlKHIsdC1yKzEpfWU9Vi5yZXNvbHZlKGUpLnN1YnN0cigxKSxyPVYucmVzb2x2ZShyKS5zdWJzdHIoMSk7Zm9yKHZhciBuPXQoZS5zcGxpdCgiLyIpKSxvPXQoci5zcGxpdCgiLyIpKSxhPU1hdGgubWluKG4ubGVuZ3RoLG8ubGVuZ3RoKSxzPWEsaT0wO2k8YTtpKyspaWYobltpXSE9PW9baV0pe3M9aTticmVha312YXIgdT1bXTtmb3IoaT1zO2k8bi5sZW5ndGg7aSsrKXUucHVzaCgiLi4iKTtyZXR1cm4odT11LmNvbmNhdChvLnNsaWNlKHMpKSkuam9pbigiLyIpfX0sSj0idW5kZWZpbmVkIiE9dHlwZW9mIFRleHREZWNvZGVyP25ldyBUZXh0RGVjb2RlcigidXRmOCIpOnZvaWQgMCxRPShlLHIsdCk9Pntmb3IodmFyIG49cit0LG89cjtlW29dJiYhKG8+PW4pOykrK287aWYoby1yPjE2JiZlLmJ1ZmZlciYmSilyZXR1cm4gSi5kZWNvZGUoZS5zdWJhcnJheShyLG8pKTtmb3IodmFyIGE9IiI7cjxvOyl7dmFyIHM9ZVtyKytdO2lmKDEyOCZzKXt2YXIgaT02MyZlW3IrK107aWYoMTkyIT0oMjI0JnMpKXt2YXIgdT02MyZlW3IrK107aWYoKHM9MjI0PT0oMjQwJnMpPygxNSZzKTw8MTJ8aTw8Nnx1Oig3JnMpPDwxOHxpPDwxMnx1PDw2fDYzJmVbcisrXSk8NjU1MzYpYSs9U3RyaW5nLmZyb21DaGFyQ29kZShzKTtlbHNle3ZhciBsPXMtNjU1MzY7YSs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxsPj4xMCw1NjMyMHwxMDIzJmwpfX1lbHNlIGErPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJnMpPDw2fGkpfWVsc2UgYSs9U3RyaW5nLmZyb21DaGFyQ29kZShzKX1yZXR1cm4gYX0sZWU9W10scmU9ZT0+e2Zvcih2YXIgcj0wLHQ9MDt0PGUubGVuZ3RoOysrdCl7dmFyIG49ZS5jaGFyQ29kZUF0KHQpO248PTEyNz9yKys6bjw9MjA0Nz9yKz0yOm4+PTU1Mjk2JiZuPD01NzM0Mz8ocis9NCwrK3QpOnIrPTN9cmV0dXJuIHJ9LHRlPShlLHIsdCxuKT0+e2lmKCEobj4wKSlyZXR1cm4gMDtmb3IodmFyIG89dCxhPXQrbi0xLHM9MDtzPGUubGVuZ3RoOysrcyl7dmFyIGk9ZS5jaGFyQ29kZUF0KHMpO2lmKGk+PTU1Mjk2JiZpPD01NzM0MyYmKGk9NjU1MzYrKCgxMDIzJmkpPDwxMCl8MTAyMyZlLmNoYXJDb2RlQXQoKytzKSksaTw9MTI3KXtpZih0Pj1hKWJyZWFrO3JbdCsrXT1pfWVsc2UgaWYoaTw9MjA0Nyl7aWYodCsxPj1hKWJyZWFrO3JbdCsrXT0xOTJ8aT4+NixyW3QrK109MTI4fDYzJml9ZWxzZSBpZihpPD02NTUzNSl7aWYodCsyPj1hKWJyZWFrO3JbdCsrXT0yMjR8aT4+MTIsclt0KytdPTEyOHxpPj42JjYzLHJbdCsrXT0xMjh8NjMmaX1lbHNle2lmKHQrMz49YSlicmVhaztyW3QrK109MjQwfGk+PjE4LHJbdCsrXT0xMjh8aT4+MTImNjMsclt0KytdPTEyOHxpPj42JjYzLHJbdCsrXT0xMjh8NjMmaX19cmV0dXJuIHJbdF09MCx0LW99O2Z1bmN0aW9uIG5lKGUscix0KXt2YXIgbj10PjA/dDpyZShlKSsxLG89bmV3IEFycmF5KG4pLGE9dGUoZSxvLDAsby5sZW5ndGgpO3JldHVybiByJiYoby5sZW5ndGg9YSksb312YXIgb2U9e3R0eXM6W10saW5pdCgpe30sc2h1dGRvd24oKXt9LHJlZ2lzdGVyKGUscil7b2UudHR5c1tlXT17aW5wdXQ6W10sb3V0cHV0OltdLG9wczpyfSxsZS5yZWdpc3RlckRldmljZShlLG9lLnN0cmVhbV9vcHMpfSxzdHJlYW1fb3BzOntvcGVuKGUpe3ZhciByPW9lLnR0eXNbZS5ub2RlLnJkZXZdO2lmKCFyKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQzKTtlLnR0eT1yLGUuc2Vla2FibGU9ITF9LGNsb3NlKGUpe2UudHR5Lm9wcy5mc3luYyhlLnR0eSl9LGZzeW5jKGUpe2UudHR5Lm9wcy5mc3luYyhlLnR0eSl9LHJlYWQoZSxyLHQsbixvKXtpZighZS50dHl8fCFlLnR0eS5vcHMuZ2V0X2NoYXIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNjApO2Zvcih2YXIgYT0wLHM9MDtzPG47cysrKXt2YXIgaTt0cnl7aT1lLnR0eS5vcHMuZ2V0X2NoYXIoZS50dHkpfWNhdGNoKGUpe3Rocm93IG5ldyBsZS5FcnJub0Vycm9yKDI5KX1pZih2b2lkIDA9PT1pJiYwPT09YSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig2KTtpZihudWxsPT1pKWJyZWFrO2ErKyxyW3Qrc109aX1yZXR1cm4gYSYmKGUubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSksYX0sd3JpdGUoZSxyLHQsbixvKXtpZighZS50dHl8fCFlLnR0eS5vcHMucHV0X2NoYXIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNjApO3RyeXtmb3IodmFyIGE9MDthPG47YSsrKWUudHR5Lm9wcy5wdXRfY2hhcihlLnR0eSxyW3QrYV0pfWNhdGNoKGUpe3Rocm93IG5ldyBsZS5FcnJub0Vycm9yKDI5KX1yZXR1cm4gbiYmKGUubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSksYX19LGRlZmF1bHRfdHR5X29wczp7Z2V0X2NoYXI6ZT0+KCgpPT57aWYoIWVlLmxlbmd0aCl7dmFyIGU9bnVsbDtpZihoKXt2YXIgcj1CdWZmZXIuYWxsb2MoMjU2KSx0PTAsbj1wcm9jZXNzLnN0ZGluLmZkO3RyeXt0PXAucmVhZFN5bmMobixyKX1jYXRjaChlKXtpZighZS50b1N0cmluZygpLmluY2x1ZGVzKCJFT0YiKSl0aHJvdyBlO3Q9MH1lPXQ+MD9yLnNsaWNlKDAsdCkudG9TdHJpbmcoInV0Zi04Iik6bnVsbH1lbHNlInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cucHJvbXB0P251bGwhPT0oZT13aW5kb3cucHJvbXB0KCJJbnB1dDogIikpJiYoZSs9IlxuIik6ImZ1bmN0aW9uIj09dHlwZW9mIHJlYWRsaW5lJiZudWxsIT09KGU9cmVhZGxpbmUoKSkmJihlKz0iXG4iKTtpZighZSlyZXR1cm4gbnVsbDtlZT1uZShlLCEwKX1yZXR1cm4gZWUuc2hpZnQoKX0pKCkscHV0X2NoYXIoZSxyKXtudWxsPT09cnx8MTA9PT1yPyhfKFEoZS5vdXRwdXQsMCkpLGUub3V0cHV0PVtdKTowIT1yJiZlLm91dHB1dC5wdXNoKHIpfSxmc3luYyhlKXtlLm91dHB1dCYmZS5vdXRwdXQubGVuZ3RoPjAmJihfKFEoZS5vdXRwdXQsMCkpLGUub3V0cHV0PVtdKX0saW9jdGxfdGNnZXRzOmU9Pih7Y19pZmxhZzoyNTg1NixjX29mbGFnOjUsY19jZmxhZzoxOTEsY19sZmxhZzozNTM4NyxjX2NjOlszLDI4LDEyNywyMSw0LDAsMSwwLDE3LDE5LDI2LDAsMTgsMTUsMjMsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF19KSxpb2N0bF90Y3NldHM6KGUscix0KT0+MCxpb2N0bF90aW9jZ3dpbnN6OmU9PlsyNCw4MF19LGRlZmF1bHRfdHR5MV9vcHM6e3B1dF9jaGFyKGUscil7bnVsbD09PXJ8fDEwPT09cj8oeShRKGUub3V0cHV0LDApKSxlLm91dHB1dD1bXSk6MCE9ciYmZS5vdXRwdXQucHVzaChyKX0sZnN5bmMoZSl7ZS5vdXRwdXQmJmUub3V0cHV0Lmxlbmd0aD4wJiYoeShRKGUub3V0cHV0LDApKSxlLm91dHB1dD1bXSl9fX0sYWU9ZT0+e08oKX0sc2U9e29wc190YWJsZTpudWxsLG1vdW50OmU9PnNlLmNyZWF0ZU5vZGUobnVsbCwiLyIsMTY4OTUsMCksY3JlYXRlTm9kZShlLHIsdCxuKXtpZihsZS5pc0Jsa2Rldih0KXx8bGUuaXNGSUZPKHQpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYzKTtzZS5vcHNfdGFibGV8fD17ZGlyOntub2RlOntnZXRhdHRyOnNlLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpzZS5ub2RlX29wcy5zZXRhdHRyLGxvb2t1cDpzZS5ub2RlX29wcy5sb29rdXAsbWtub2Q6c2Uubm9kZV9vcHMubWtub2QscmVuYW1lOnNlLm5vZGVfb3BzLnJlbmFtZSx1bmxpbms6c2Uubm9kZV9vcHMudW5saW5rLHJtZGlyOnNlLm5vZGVfb3BzLnJtZGlyLHJlYWRkaXI6c2Uubm9kZV9vcHMucmVhZGRpcixzeW1saW5rOnNlLm5vZGVfb3BzLnN5bWxpbmt9LHN0cmVhbTp7bGxzZWVrOnNlLnN0cmVhbV9vcHMubGxzZWVrfX0sZmlsZTp7bm9kZTp7Z2V0YXR0cjpzZS5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6c2Uubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOntsbHNlZWs6c2Uuc3RyZWFtX29wcy5sbHNlZWsscmVhZDpzZS5zdHJlYW1fb3BzLnJlYWQsd3JpdGU6c2Uuc3RyZWFtX29wcy53cml0ZSxhbGxvY2F0ZTpzZS5zdHJlYW1fb3BzLmFsbG9jYXRlLG1tYXA6c2Uuc3RyZWFtX29wcy5tbWFwLG1zeW5jOnNlLnN0cmVhbV9vcHMubXN5bmN9fSxsaW5rOntub2RlOntnZXRhdHRyOnNlLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpzZS5ub2RlX29wcy5zZXRhdHRyLHJlYWRsaW5rOnNlLm5vZGVfb3BzLnJlYWRsaW5rfSxzdHJlYW06e319LGNocmRldjp7bm9kZTp7Z2V0YXR0cjpzZS5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6c2Uubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOmxlLmNocmRldl9zdHJlYW1fb3BzfX07dmFyIG89bGUuY3JlYXRlTm9kZShlLHIsdCxuKTtyZXR1cm4gbGUuaXNEaXIoby5tb2RlKT8oby5ub2RlX29wcz1zZS5vcHNfdGFibGUuZGlyLm5vZGUsby5zdHJlYW1fb3BzPXNlLm9wc190YWJsZS5kaXIuc3RyZWFtLG8uY29udGVudHM9e30pOmxlLmlzRmlsZShvLm1vZGUpPyhvLm5vZGVfb3BzPXNlLm9wc190YWJsZS5maWxlLm5vZGUsby5zdHJlYW1fb3BzPXNlLm9wc190YWJsZS5maWxlLnN0cmVhbSxvLnVzZWRCeXRlcz0wLG8uY29udGVudHM9bnVsbCk6bGUuaXNMaW5rKG8ubW9kZSk/KG8ubm9kZV9vcHM9c2Uub3BzX3RhYmxlLmxpbmsubm9kZSxvLnN0cmVhbV9vcHM9c2Uub3BzX3RhYmxlLmxpbmsuc3RyZWFtKTpsZS5pc0NocmRldihvLm1vZGUpJiYoby5ub2RlX29wcz1zZS5vcHNfdGFibGUuY2hyZGV2Lm5vZGUsby5zdHJlYW1fb3BzPXNlLm9wc190YWJsZS5jaHJkZXYuc3RyZWFtKSxvLnRpbWVzdGFtcD1EYXRlLm5vdygpLGUmJihlLmNvbnRlbnRzW3JdPW8sZS50aW1lc3RhbXA9by50aW1lc3RhbXApLG99LGdldEZpbGVEYXRhQXNUeXBlZEFycmF5OmU9PmUuY29udGVudHM/ZS5jb250ZW50cy5zdWJhcnJheT9lLmNvbnRlbnRzLnN1YmFycmF5KDAsZS51c2VkQnl0ZXMpOm5ldyBVaW50OEFycmF5KGUuY29udGVudHMpOm5ldyBVaW50OEFycmF5KDApLGV4cGFuZEZpbGVTdG9yYWdlKGUscil7dmFyIHQ9ZS5jb250ZW50cz9lLmNvbnRlbnRzLmxlbmd0aDowO2lmKCEodD49cikpe3I9TWF0aC5tYXgocix0Kih0PDEwNDg1NzY/MjoxLjEyNSk+Pj4wKSwwIT10JiYocj1NYXRoLm1heChyLDI1NikpO3ZhciBuPWUuY29udGVudHM7ZS5jb250ZW50cz1uZXcgVWludDhBcnJheShyKSxlLnVzZWRCeXRlcz4wJiZlLmNvbnRlbnRzLnNldChuLnN1YmFycmF5KDAsZS51c2VkQnl0ZXMpLDApfX0scmVzaXplRmlsZVN0b3JhZ2UoZSxyKXtpZihlLnVzZWRCeXRlcyE9cilpZigwPT1yKWUuY29udGVudHM9bnVsbCxlLnVzZWRCeXRlcz0wO2Vsc2V7dmFyIHQ9ZS5jb250ZW50cztlLmNvbnRlbnRzPW5ldyBVaW50OEFycmF5KHIpLHQmJmUuY29udGVudHMuc2V0KHQuc3ViYXJyYXkoMCxNYXRoLm1pbihyLGUudXNlZEJ5dGVzKSkpLGUudXNlZEJ5dGVzPXJ9fSxub2RlX29wczp7Z2V0YXR0cihlKXt2YXIgcj17fTtyZXR1cm4gci5kZXY9bGUuaXNDaHJkZXYoZS5tb2RlKT9lLmlkOjEsci5pbm89ZS5pZCxyLm1vZGU9ZS5tb2RlLHIubmxpbms9MSxyLnVpZD0wLHIuZ2lkPTAsci5yZGV2PWUucmRldixsZS5pc0RpcihlLm1vZGUpP3Iuc2l6ZT00MDk2OmxlLmlzRmlsZShlLm1vZGUpP3Iuc2l6ZT1lLnVzZWRCeXRlczpsZS5pc0xpbmsoZS5tb2RlKT9yLnNpemU9ZS5saW5rLmxlbmd0aDpyLnNpemU9MCxyLmF0aW1lPW5ldyBEYXRlKGUudGltZXN0YW1wKSxyLm10aW1lPW5ldyBEYXRlKGUudGltZXN0YW1wKSxyLmN0aW1lPW5ldyBEYXRlKGUudGltZXN0YW1wKSxyLmJsa3NpemU9NDA5NixyLmJsb2Nrcz1NYXRoLmNlaWwoci5zaXplL3IuYmxrc2l6ZSkscn0sc2V0YXR0cihlLHIpe3ZvaWQgMCE9PXIubW9kZSYmKGUubW9kZT1yLm1vZGUpLHZvaWQgMCE9PXIudGltZXN0YW1wJiYoZS50aW1lc3RhbXA9ci50aW1lc3RhbXApLHZvaWQgMCE9PXIuc2l6ZSYmc2UucmVzaXplRmlsZVN0b3JhZ2UoZSxyLnNpemUpfSxsb29rdXAoZSxyKXt0aHJvdyBsZS5nZW5lcmljRXJyb3JzWzQ0XX0sbWtub2Q6KGUscix0LG4pPT5zZS5jcmVhdGVOb2RlKGUscix0LG4pLHJlbmFtZShlLHIsdCl7aWYobGUuaXNEaXIoZS5tb2RlKSl7dmFyIG47dHJ5e249bGUubG9va3VwTm9kZShyLHQpfWNhdGNoKGUpe31pZihuKWZvcih2YXIgbyBpbiBuLmNvbnRlbnRzKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDU1KX1kZWxldGUgZS5wYXJlbnQuY29udGVudHNbZS5uYW1lXSxlLnBhcmVudC50aW1lc3RhbXA9RGF0ZS5ub3coKSxlLm5hbWU9dCxyLmNvbnRlbnRzW3RdPWUsci50aW1lc3RhbXA9ZS5wYXJlbnQudGltZXN0YW1wLGUucGFyZW50PXJ9LHVubGluayhlLHIpe2RlbGV0ZSBlLmNvbnRlbnRzW3JdLGUudGltZXN0YW1wPURhdGUubm93KCl9LHJtZGlyKGUscil7dmFyIHQ9bGUubG9va3VwTm9kZShlLHIpO2Zvcih2YXIgbiBpbiB0LmNvbnRlbnRzKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDU1KTtkZWxldGUgZS5jb250ZW50c1tyXSxlLnRpbWVzdGFtcD1EYXRlLm5vdygpfSxyZWFkZGlyKGUpe3ZhciByPVsiLiIsIi4uIl07Zm9yKHZhciB0IG9mIE9iamVjdC5rZXlzKGUuY29udGVudHMpKXIucHVzaCh0KTtyZXR1cm4gcn0sc3ltbGluayhlLHIsdCl7dmFyIG49c2UuY3JlYXRlTm9kZShlLHIsNDE0NzEsMCk7cmV0dXJuIG4ubGluaz10LG59LHJlYWRsaW5rKGUpe2lmKCFsZS5pc0xpbmsoZS5tb2RlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOCk7cmV0dXJuIGUubGlua319LHN0cmVhbV9vcHM6e3JlYWQoZSxyLHQsbixvKXt2YXIgYT1lLm5vZGUuY29udGVudHM7aWYobz49ZS5ub2RlLnVzZWRCeXRlcylyZXR1cm4gMDt2YXIgcz1NYXRoLm1pbihlLm5vZGUudXNlZEJ5dGVzLW8sbik7aWYocz44JiZhLnN1YmFycmF5KXIuc2V0KGEuc3ViYXJyYXkobyxvK3MpLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxzO2krKylyW3QraV09YVtvK2ldO3JldHVybiBzfSx3cml0ZShlLHIsdCxuLG8sYSl7aWYoci5idWZmZXI9PT1FLmJ1ZmZlciYmKGE9ITEpLCFuKXJldHVybiAwO3ZhciBzPWUubm9kZTtpZihzLnRpbWVzdGFtcD1EYXRlLm5vdygpLHIuc3ViYXJyYXkmJighcy5jb250ZW50c3x8cy5jb250ZW50cy5zdWJhcnJheSkpe2lmKGEpcmV0dXJuIHMuY29udGVudHM9ci5zdWJhcnJheSh0LHQrbikscy51c2VkQnl0ZXM9bixuO2lmKDA9PT1zLnVzZWRCeXRlcyYmMD09PW8pcmV0dXJuIHMuY29udGVudHM9ci5zbGljZSh0LHQrbikscy51c2VkQnl0ZXM9bixuO2lmKG8rbjw9cy51c2VkQnl0ZXMpcmV0dXJuIHMuY29udGVudHMuc2V0KHIuc3ViYXJyYXkodCx0K24pLG8pLG59aWYoc2UuZXhwYW5kRmlsZVN0b3JhZ2UocyxvK24pLHMuY29udGVudHMuc3ViYXJyYXkmJnIuc3ViYXJyYXkpcy5jb250ZW50cy5zZXQoci5zdWJhcnJheSh0LHQrbiksbyk7ZWxzZSBmb3IodmFyIGk9MDtpPG47aSsrKXMuY29udGVudHNbbytpXT1yW3QraV07cmV0dXJuIHMudXNlZEJ5dGVzPU1hdGgubWF4KHMudXNlZEJ5dGVzLG8rbiksbn0sbGxzZWVrKGUscix0KXt2YXIgbj1yO2lmKDE9PT10P24rPWUucG9zaXRpb246Mj09PXQmJmxlLmlzRmlsZShlLm5vZGUubW9kZSkmJihuKz1lLm5vZGUudXNlZEJ5dGVzKSxuPDApdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjgpO3JldHVybiBufSxhbGxvY2F0ZShlLHIsdCl7c2UuZXhwYW5kRmlsZVN0b3JhZ2UoZS5ub2RlLHIrdCksZS5ub2RlLnVzZWRCeXRlcz1NYXRoLm1heChlLm5vZGUudXNlZEJ5dGVzLHIrdCl9LG1tYXAoZSxyLHQsbixvKXtpZighbGUuaXNGaWxlKGUubm9kZS5tb2RlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0Myk7dmFyIGEscyxpPWUubm9kZS5jb250ZW50cztpZigyJm98fGkuYnVmZmVyIT09RS5idWZmZXIpe2lmKCh0PjB8fHQrcjxpLmxlbmd0aCkmJihpPWkuc3ViYXJyYXk/aS5zdWJhcnJheSh0LHQrcik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaSx0LHQrcikpLHM9ITAsIShhPWFlKCkpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQ4KTtFLnNldChpLGEpfWVsc2Ugcz0hMSxhPWkuYnl0ZU9mZnNldDtyZXR1cm57cHRyOmEsYWxsb2NhdGVkOnN9fSxtc3luYzooZSxyLHQsbixvKT0+KHNlLnN0cmVhbV9vcHMud3JpdGUoZSxyLDAsbix0LCExKSwwKX19LGllPW4ucHJlbG9hZFBsdWdpbnN8fFtdLHVlPShlLHIpPT57dmFyIHQ9MDtyZXR1cm4gZSYmKHR8PTM2NSksciYmKHR8PTE0NiksdH0sbGU9e3Jvb3Q6bnVsbCxtb3VudHM6W10sZGV2aWNlczp7fSxzdHJlYW1zOltdLG5leHRJbm9kZToxLG5hbWVUYWJsZTpudWxsLGN1cnJlbnRQYXRoOiIvIixpbml0aWFsaXplZDohMSxpZ25vcmVQZXJtaXNzaW9uczohMCxFcnJub0Vycm9yOm51bGwsZ2VuZXJpY0Vycm9yczp7fSxmaWxlc3lzdGVtczpudWxsLHN5bmNGU1JlcXVlc3RzOjAsbG9va3VwUGF0aChlLHI9e30pe2lmKCEoZT1WLnJlc29sdmUoZSkpKXJldHVybntwYXRoOiIiLG5vZGU6bnVsbH07aWYoKHI9T2JqZWN0LmFzc2lnbih7Zm9sbG93X21vdW50OiEwLHJlY3Vyc2VfY291bnQ6MH0scikpLnJlY3Vyc2VfY291bnQ+OCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigzMik7Zm9yKHZhciB0PWUuc3BsaXQoIi8iKS5maWx0ZXIoKGU9PiEhZSkpLG49bGUucm9vdCxvPSIvIixhPTA7YTx0Lmxlbmd0aDthKyspe3ZhciBzPWE9PT10Lmxlbmd0aC0xO2lmKHMmJnIucGFyZW50KWJyZWFrO2lmKG49bGUubG9va3VwTm9kZShuLHRbYV0pLG89Wi5qb2luMihvLHRbYV0pLGxlLmlzTW91bnRwb2ludChuKSYmKCFzfHxzJiZyLmZvbGxvd19tb3VudCkmJihuPW4ubW91bnRlZC5yb290KSwhc3x8ci5mb2xsb3cpZm9yKHZhciBpPTA7bGUuaXNMaW5rKG4ubW9kZSk7KXt2YXIgdT1sZS5yZWFkbGluayhvKTtpZihvPVYucmVzb2x2ZShaLmRpcm5hbWUobyksdSksbj1sZS5sb29rdXBQYXRoKG8se3JlY3Vyc2VfY291bnQ6ci5yZWN1cnNlX2NvdW50KzF9KS5ub2RlLGkrKz40MCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigzMil9fXJldHVybntwYXRoOm8sbm9kZTpufX0sZ2V0UGF0aChlKXtmb3IodmFyIHI7Oyl7aWYobGUuaXNSb290KGUpKXt2YXIgdD1lLm1vdW50Lm1vdW50cG9pbnQ7cmV0dXJuIHI/Ii8iIT09dFt0Lmxlbmd0aC0xXT9gJHt0fS8ke3J9YDp0K3I6dH1yPXI/YCR7ZS5uYW1lfS8ke3J9YDplLm5hbWUsZT1lLnBhcmVudH19LGhhc2hOYW1lKGUscil7Zm9yKHZhciB0PTAsbj0wO248ci5sZW5ndGg7bisrKXQ9KHQ8PDUpLXQrci5jaGFyQ29kZUF0KG4pfDA7cmV0dXJuKGUrdD4+PjApJWxlLm5hbWVUYWJsZS5sZW5ndGh9LGhhc2hBZGROb2RlKGUpe3ZhciByPWxlLmhhc2hOYW1lKGUucGFyZW50LmlkLGUubmFtZSk7ZS5uYW1lX25leHQ9bGUubmFtZVRhYmxlW3JdLGxlLm5hbWVUYWJsZVtyXT1lfSxoYXNoUmVtb3ZlTm9kZShlKXt2YXIgcj1sZS5oYXNoTmFtZShlLnBhcmVudC5pZCxlLm5hbWUpO2lmKGxlLm5hbWVUYWJsZVtyXT09PWUpbGUubmFtZVRhYmxlW3JdPWUubmFtZV9uZXh0O2Vsc2UgZm9yKHZhciB0PWxlLm5hbWVUYWJsZVtyXTt0Oyl7aWYodC5uYW1lX25leHQ9PT1lKXt0Lm5hbWVfbmV4dD1lLm5hbWVfbmV4dDticmVha310PXQubmFtZV9uZXh0fX0sbG9va3VwTm9kZShlLHIpe3ZhciB0PWxlLm1heUxvb2t1cChlKTtpZih0KXRocm93IG5ldyBsZS5FcnJub0Vycm9yKHQsZSk7Zm9yKHZhciBuPWxlLmhhc2hOYW1lKGUuaWQsciksbz1sZS5uYW1lVGFibGVbbl07bztvPW8ubmFtZV9uZXh0KXt2YXIgYT1vLm5hbWU7aWYoby5wYXJlbnQuaWQ9PT1lLmlkJiZhPT09cilyZXR1cm4gb31yZXR1cm4gbGUubG9va3VwKGUscil9LGNyZWF0ZU5vZGUoZSxyLHQsbil7dmFyIG89bmV3IGxlLkZTTm9kZShlLHIsdCxuKTtyZXR1cm4gbGUuaGFzaEFkZE5vZGUobyksb30sZGVzdHJveU5vZGUoZSl7bGUuaGFzaFJlbW92ZU5vZGUoZSl9LGlzUm9vdDplPT5lPT09ZS5wYXJlbnQsaXNNb3VudHBvaW50OmU9PiEhZS5tb3VudGVkLGlzRmlsZTplPT4zMjc2OD09KDYxNDQwJmUpLGlzRGlyOmU9PjE2Mzg0PT0oNjE0NDAmZSksaXNMaW5rOmU9PjQwOTYwPT0oNjE0NDAmZSksaXNDaHJkZXY6ZT0+ODE5Mj09KDYxNDQwJmUpLGlzQmxrZGV2OmU9PjI0NTc2PT0oNjE0NDAmZSksaXNGSUZPOmU9PjQwOTY9PSg2MTQ0MCZlKSxpc1NvY2tldDplPT40OTE1Mj09KDQ5MTUyJmUpLGZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKGUpe3ZhciByPVsiciIsInciLCJydyJdWzMmZV07cmV0dXJuIDUxMiZlJiYocis9InciKSxyfSxub2RlUGVybWlzc2lvbnM6KGUscik9PmxlLmlnbm9yZVBlcm1pc3Npb25zfHwoIXIuaW5jbHVkZXMoInIiKXx8MjkyJmUubW9kZSkmJighci5pbmNsdWRlcygidyIpfHwxNDYmZS5tb2RlKSYmKCFyLmluY2x1ZGVzKCJ4Iil8fDczJmUubW9kZSk/MDoyLG1heUxvb2t1cChlKXt2YXIgcj1sZS5ub2RlUGVybWlzc2lvbnMoZSwieCIpO3JldHVybiByfHwoZS5ub2RlX29wcy5sb29rdXA/MDoyKX0sbWF5Q3JlYXRlKGUscil7dHJ5e3JldHVybiBsZS5sb29rdXBOb2RlKGUsciksMjB9Y2F0Y2goZSl7fXJldHVybiBsZS5ub2RlUGVybWlzc2lvbnMoZSwid3giKX0sbWF5RGVsZXRlKGUscix0KXt2YXIgbjt0cnl7bj1sZS5sb29rdXBOb2RlKGUscil9Y2F0Y2goZSl7cmV0dXJuIGUuZXJybm99dmFyIG89bGUubm9kZVBlcm1pc3Npb25zKGUsInd4Iik7aWYobylyZXR1cm4gbztpZih0KXtpZighbGUuaXNEaXIobi5tb2RlKSlyZXR1cm4gNTQ7aWYobGUuaXNSb290KG4pfHxsZS5nZXRQYXRoKG4pPT09bGUuY3dkKCkpcmV0dXJuIDEwfWVsc2UgaWYobGUuaXNEaXIobi5tb2RlKSlyZXR1cm4gMzE7cmV0dXJuIDB9LG1heU9wZW46KGUscik9PmU/bGUuaXNMaW5rKGUubW9kZSk/MzI6bGUuaXNEaXIoZS5tb2RlKSYmKCJyIiE9PWxlLmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKHIpfHw1MTImcik/MzE6bGUubm9kZVBlcm1pc3Npb25zKGUsbGUuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcocikpOjQ0LE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZCgpe2Zvcih2YXIgZT0wO2U8PWxlLk1BWF9PUEVOX0ZEUztlKyspaWYoIWxlLnN0cmVhbXNbZV0pcmV0dXJuIGU7dGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMzMpfSxnZXRTdHJlYW1DaGVja2VkKGUpe3ZhciByPWxlLmdldFN0cmVhbShlKTtpZighcil0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtyZXR1cm4gcn0sZ2V0U3RyZWFtOmU9PmxlLnN0cmVhbXNbZV0sY3JlYXRlU3RyZWFtOihlLHI9LTEpPT4obGUuRlNTdHJlYW18fChsZS5GU1N0cmVhbT1mdW5jdGlvbigpe3RoaXMuc2hhcmVkPXt9fSxsZS5GU1N0cmVhbS5wcm90b3R5cGU9e30sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobGUuRlNTdHJlYW0ucHJvdG90eXBlLHtvYmplY3Q6e2dldCgpe3JldHVybiB0aGlzLm5vZGV9LHNldChlKXt0aGlzLm5vZGU9ZX19LGlzUmVhZDp7Z2V0KCl7cmV0dXJuIDEhPSgyMDk3MTU1JnRoaXMuZmxhZ3MpfX0saXNXcml0ZTp7Z2V0KCl7cmV0dXJuIDAhPSgyMDk3MTU1JnRoaXMuZmxhZ3MpfX0saXNBcHBlbmQ6e2dldCgpe3JldHVybiAxMDI0JnRoaXMuZmxhZ3N9fSxmbGFnczp7Z2V0KCl7cmV0dXJuIHRoaXMuc2hhcmVkLmZsYWdzfSxzZXQoZSl7dGhpcy5zaGFyZWQuZmxhZ3M9ZX19LHBvc2l0aW9uOntnZXQoKXtyZXR1cm4gdGhpcy5zaGFyZWQucG9zaXRpb259LHNldChlKXt0aGlzLnNoYXJlZC5wb3NpdGlvbj1lfX19KSksZT1PYmplY3QuYXNzaWduKG5ldyBsZS5GU1N0cmVhbSxlKSwtMT09ciYmKHI9bGUubmV4dGZkKCkpLGUuZmQ9cixsZS5zdHJlYW1zW3JdPWUsZSksY2xvc2VTdHJlYW0oZSl7bGUuc3RyZWFtc1tlXT1udWxsfSxjaHJkZXZfc3RyZWFtX29wczp7b3BlbihlKXt2YXIgcj1sZS5nZXREZXZpY2UoZS5ub2RlLnJkZXYpO2Uuc3RyZWFtX29wcz1yLnN0cmVhbV9vcHMsZS5zdHJlYW1fb3BzLm9wZW4/LihlKX0sbGxzZWVrKCl7dGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNzApfX0sbWFqb3I6ZT0+ZT4+OCxtaW5vcjplPT4yNTUmZSxtYWtlZGV2OihlLHIpPT5lPDw4fHIscmVnaXN0ZXJEZXZpY2UoZSxyKXtsZS5kZXZpY2VzW2VdPXtzdHJlYW1fb3BzOnJ9fSxnZXREZXZpY2U6ZT0+bGUuZGV2aWNlc1tlXSxnZXRNb3VudHMoZSl7Zm9yKHZhciByPVtdLHQ9W2VdO3QubGVuZ3RoOyl7dmFyIG49dC5wb3AoKTtyLnB1c2gobiksdC5wdXNoLmFwcGx5KHQsbi5tb3VudHMpfXJldHVybiByfSxzeW5jZnMoZSxyKXsiZnVuY3Rpb24iPT10eXBlb2YgZSYmKHI9ZSxlPSExKSxsZS5zeW5jRlNSZXF1ZXN0cysrLGxlLnN5bmNGU1JlcXVlc3RzPjEmJnkoYHdhcm5pbmc6ICR7bGUuc3luY0ZTUmVxdWVzdHN9IEZTLnN5bmNmcyBvcGVyYXRpb25zIGluIGZsaWdodCBhdCBvbmNlLCBwcm9iYWJseSBqdXN0IGRvaW5nIGV4dHJhIHdvcmtgKTt2YXIgdD1sZS5nZXRNb3VudHMobGUucm9vdC5tb3VudCksbj0wO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGxlLnN5bmNGU1JlcXVlc3RzLS0scihlKX1mdW5jdGlvbiBhKGUpe2lmKGUpcmV0dXJuIGEuZXJyb3JlZD92b2lkIDA6KGEuZXJyb3JlZD0hMCxvKGUpKTsrK24+PXQubGVuZ3RoJiZvKG51bGwpfXQuZm9yRWFjaCgocj0+e2lmKCFyLnR5cGUuc3luY2ZzKXJldHVybiBhKG51bGwpO3IudHlwZS5zeW5jZnMocixlLGEpfSkpfSxtb3VudChlLHIsdCl7dmFyIG4sbz0iLyI9PT10LGE9IXQ7aWYobyYmbGUucm9vdCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigxMCk7aWYoIW8mJiFhKXt2YXIgcz1sZS5sb29rdXBQYXRoKHQse2ZvbGxvd19tb3VudDohMX0pO2lmKHQ9cy5wYXRoLG49cy5ub2RlLGxlLmlzTW91bnRwb2ludChuKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigxMCk7aWYoIWxlLmlzRGlyKG4ubW9kZSkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNTQpfXZhciBpPXt0eXBlOmUsb3B0czpyLG1vdW50cG9pbnQ6dCxtb3VudHM6W119LHU9ZS5tb3VudChpKTtyZXR1cm4gdS5tb3VudD1pLGkucm9vdD11LG8/bGUucm9vdD11Om4mJihuLm1vdW50ZWQ9aSxuLm1vdW50JiZuLm1vdW50Lm1vdW50cy5wdXNoKGkpKSx1fSx1bm1vdW50KGUpe3ZhciByPWxlLmxvb2t1cFBhdGgoZSx7Zm9sbG93X21vdW50OiExfSk7aWYoIWxlLmlzTW91bnRwb2ludChyLm5vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTt2YXIgdD1yLm5vZGUsbj10Lm1vdW50ZWQsbz1sZS5nZXRNb3VudHMobik7T2JqZWN0LmtleXMobGUubmFtZVRhYmxlKS5mb3JFYWNoKChlPT57Zm9yKHZhciByPWxlLm5hbWVUYWJsZVtlXTtyOyl7dmFyIHQ9ci5uYW1lX25leHQ7by5pbmNsdWRlcyhyLm1vdW50KSYmbGUuZGVzdHJveU5vZGUocikscj10fX0pKSx0Lm1vdW50ZWQ9bnVsbDt2YXIgYT10Lm1vdW50Lm1vdW50cy5pbmRleE9mKG4pO3QubW91bnQubW91bnRzLnNwbGljZShhLDEpfSxsb29rdXA6KGUscik9PmUubm9kZV9vcHMubG9va3VwKGUsciksbWtub2QoZSxyLHQpe3ZhciBuPWxlLmxvb2t1cFBhdGgoZSx7cGFyZW50OiEwfSkubm9kZSxvPVouYmFzZW5hbWUoZSk7aWYoIW98fCIuIj09PW98fCIuLiI9PT1vKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTt2YXIgYT1sZS5tYXlDcmVhdGUobixvKTtpZihhKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKGEpO2lmKCFuLm5vZGVfb3BzLm1rbm9kKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYzKTtyZXR1cm4gbi5ub2RlX29wcy5ta25vZChuLG8scix0KX0sY3JlYXRlOihlLHIpPT4ocj12b2lkIDAhPT1yP3I6NDM4LHImPTQwOTUscnw9MzI3NjgsbGUubWtub2QoZSxyLDApKSxta2RpcjooZSxyKT0+KHI9dm9pZCAwIT09cj9yOjUxMSxyJj0xMDIzLHJ8PTE2Mzg0LGxlLm1rbm9kKGUsciwwKSksbWtkaXJUcmVlKGUscil7Zm9yKHZhciB0PWUuc3BsaXQoIi8iKSxuPSIiLG89MDtvPHQubGVuZ3RoOysrbylpZih0W29dKXtuKz0iLyIrdFtvXTt0cnl7bGUubWtkaXIobixyKX1jYXRjaChlKXtpZigyMCE9ZS5lcnJubyl0aHJvdyBlfX19LG1rZGV2OihlLHIsdCk9Pih2b2lkIDA9PT10JiYodD1yLHI9NDM4KSxyfD04MTkyLGxlLm1rbm9kKGUscix0KSksc3ltbGluayhlLHIpe2lmKCFWLnJlc29sdmUoZSkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNDQpO3ZhciB0PWxlLmxvb2t1cFBhdGgocix7cGFyZW50OiEwfSkubm9kZTtpZighdCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7dmFyIG49Wi5iYXNlbmFtZShyKSxvPWxlLm1heUNyZWF0ZSh0LG4pO2lmKG8pdGhyb3cgbmV3IGxlLkVycm5vRXJyb3Iobyk7aWYoIXQubm9kZV9vcHMuc3ltbGluayl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig2Myk7cmV0dXJuIHQubm9kZV9vcHMuc3ltbGluayh0LG4sZSl9LHJlbmFtZShlLHIpe3ZhciB0LG4sbz1aLmRpcm5hbWUoZSksYT1aLmRpcm5hbWUocikscz1aLmJhc2VuYW1lKGUpLGk9Wi5iYXNlbmFtZShyKTtpZih0PWxlLmxvb2t1cFBhdGgoZSx7cGFyZW50OiEwfSkubm9kZSxuPWxlLmxvb2t1cFBhdGgocix7cGFyZW50OiEwfSkubm9kZSwhdHx8IW4pdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNDQpO2lmKHQubW91bnQhPT1uLm1vdW50KXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDc1KTt2YXIgdSxsPWxlLmxvb2t1cE5vZGUodCxzKSxjPVYucmVsYXRpdmUoZSxhKTtpZigiLiIhPT1jLmNoYXJBdCgwKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOCk7aWYoIi4iIT09KGM9Vi5yZWxhdGl2ZShyLG8pKS5jaGFyQXQoMCkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNTUpO3RyeXt1PWxlLmxvb2t1cE5vZGUobixpKX1jYXRjaChlKXt9aWYobCE9PXUpe3ZhciBkPWxlLmlzRGlyKGwubW9kZSksaD1sZS5tYXlEZWxldGUodCxzLGQpO2lmKGgpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoaCk7aWYoaD11P2xlLm1heURlbGV0ZShuLGksZCk6bGUubWF5Q3JlYXRlKG4saSkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoaCk7aWYoIXQubm9kZV9vcHMucmVuYW1lKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYzKTtpZihsZS5pc01vdW50cG9pbnQobCl8fHUmJmxlLmlzTW91bnRwb2ludCh1KSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigxMCk7aWYobiE9PXQmJihoPWxlLm5vZGVQZXJtaXNzaW9ucyh0LCJ3IikpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKGgpO2xlLmhhc2hSZW1vdmVOb2RlKGwpO3RyeXt0Lm5vZGVfb3BzLnJlbmFtZShsLG4saSl9Y2F0Y2goZSl7dGhyb3cgZX1maW5hbGx5e2xlLmhhc2hBZGROb2RlKGwpfX19LHJtZGlyKGUpe3ZhciByPWxlLmxvb2t1cFBhdGgoZSx7cGFyZW50OiEwfSkubm9kZSx0PVouYmFzZW5hbWUoZSksbj1sZS5sb29rdXBOb2RlKHIsdCksbz1sZS5tYXlEZWxldGUocix0LCEwKTtpZihvKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKG8pO2lmKCFyLm5vZGVfb3BzLnJtZGlyKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYzKTtpZihsZS5pc01vdW50cG9pbnQobikpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMTApO3Iubm9kZV9vcHMucm1kaXIocix0KSxsZS5kZXN0cm95Tm9kZShuKX0scmVhZGRpcihlKXt2YXIgcj1sZS5sb29rdXBQYXRoKGUse2ZvbGxvdzohMH0pLm5vZGU7aWYoIXIubm9kZV9vcHMucmVhZGRpcil0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig1NCk7cmV0dXJuIHIubm9kZV9vcHMucmVhZGRpcihyKX0sdW5saW5rKGUpe3ZhciByPWxlLmxvb2t1cFBhdGgoZSx7cGFyZW50OiEwfSkubm9kZTtpZighcil0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7dmFyIHQ9Wi5iYXNlbmFtZShlKSxuPWxlLmxvb2t1cE5vZGUocix0KSxvPWxlLm1heURlbGV0ZShyLHQsITEpO2lmKG8pdGhyb3cgbmV3IGxlLkVycm5vRXJyb3Iobyk7aWYoIXIubm9kZV9vcHMudW5saW5rKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYzKTtpZihsZS5pc01vdW50cG9pbnQobikpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMTApO3Iubm9kZV9vcHMudW5saW5rKHIsdCksbGUuZGVzdHJveU5vZGUobil9LHJlYWRsaW5rKGUpe3ZhciByPWxlLmxvb2t1cFBhdGgoZSkubm9kZTtpZighcil0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7aWYoIXIubm9kZV9vcHMucmVhZGxpbmspdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjgpO3JldHVybiBWLnJlc29sdmUobGUuZ2V0UGF0aChyLnBhcmVudCksci5ub2RlX29wcy5yZWFkbGluayhyKSl9LHN0YXQoZSxyKXt2YXIgdD1sZS5sb29rdXBQYXRoKGUse2ZvbGxvdzohcn0pLm5vZGU7aWYoIXQpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNDQpO2lmKCF0Lm5vZGVfb3BzLmdldGF0dHIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNjMpO3JldHVybiB0Lm5vZGVfb3BzLmdldGF0dHIodCl9LGxzdGF0OmU9PmxlLnN0YXQoZSwhMCksY2htb2QoZSxyLHQpe3ZhciBuO2lmKCEobj0ic3RyaW5nIj09dHlwZW9mIGU/bGUubG9va3VwUGF0aChlLHtmb2xsb3c6IXR9KS5ub2RlOmUpLm5vZGVfb3BzLnNldGF0dHIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNjMpO24ubm9kZV9vcHMuc2V0YXR0cihuLHttb2RlOjQwOTUmcnwtNDA5NiZuLm1vZGUsdGltZXN0YW1wOkRhdGUubm93KCl9KX0sbGNobW9kKGUscil7bGUuY2htb2QoZSxyLCEwKX0sZmNobW9kKGUscil7dmFyIHQ9bGUuZ2V0U3RyZWFtQ2hlY2tlZChlKTtsZS5jaG1vZCh0Lm5vZGUscil9LGNob3duKGUscix0LG4pe3ZhciBvO2lmKCEobz0ic3RyaW5nIj09dHlwZW9mIGU/bGUubG9va3VwUGF0aChlLHtmb2xsb3c6IW59KS5ub2RlOmUpLm5vZGVfb3BzLnNldGF0dHIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNjMpO28ubm9kZV9vcHMuc2V0YXR0cihvLHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxsY2hvd24oZSxyLHQpe2xlLmNob3duKGUscix0LCEwKX0sZmNob3duKGUscix0KXt2YXIgbj1sZS5nZXRTdHJlYW1DaGVja2VkKGUpO2xlLmNob3duKG4ubm9kZSxyLHQpfSx0cnVuY2F0ZShlLHIpe2lmKHI8MCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOCk7dmFyIHQ7aWYoISh0PSJzdHJpbmciPT10eXBlb2YgZT9sZS5sb29rdXBQYXRoKGUse2ZvbGxvdzohMH0pLm5vZGU6ZSkubm9kZV9vcHMuc2V0YXR0cil0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig2Myk7aWYobGUuaXNEaXIodC5tb2RlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigzMSk7aWYoIWxlLmlzRmlsZSh0Lm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTt2YXIgbj1sZS5ub2RlUGVybWlzc2lvbnModCwidyIpO2lmKG4pdGhyb3cgbmV3IGxlLkVycm5vRXJyb3Iobik7dC5ub2RlX29wcy5zZXRhdHRyKHQse3NpemU6cix0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxmdHJ1bmNhdGUoZSxyKXt2YXIgdD1sZS5nZXRTdHJlYW1DaGVja2VkKGUpO2lmKDA9PSgyMDk3MTU1JnQuZmxhZ3MpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTtsZS50cnVuY2F0ZSh0Lm5vZGUscil9LHV0aW1lKGUscix0KXt2YXIgbj1sZS5sb29rdXBQYXRoKGUse2ZvbGxvdzohMH0pLm5vZGU7bi5ub2RlX29wcy5zZXRhdHRyKG4se3RpbWVzdGFtcDpNYXRoLm1heChyLHQpfSl9LG9wZW4oZSxyLHQpe2lmKCIiPT09ZSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7dmFyIG87aWYodD12b2lkIDA9PT10PzQzODp0LHQ9NjQmKHI9InN0cmluZyI9PXR5cGVvZiByPyhlPT57dmFyIHI9e3I6MCwicisiOjIsdzo1NzcsIncrIjo1NzgsYToxMDg5LCJhKyI6MTA5MH1bZV07aWYodm9pZCAwPT09cil0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZmlsZSBvcGVuIG1vZGU6ICR7ZX1gKTtyZXR1cm4gcn0pKHIpOnIpPzQwOTUmdHwzMjc2ODowLCJvYmplY3QiPT10eXBlb2YgZSlvPWU7ZWxzZXtlPVoubm9ybWFsaXplKGUpO3RyeXtvPWxlLmxvb2t1cFBhdGgoZSx7Zm9sbG93OiEoMTMxMDcyJnIpfSkubm9kZX1jYXRjaChlKXt9fXZhciBhPSExO2lmKDY0JnIpaWYobyl7aWYoMTI4JnIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjApfWVsc2Ugbz1sZS5ta25vZChlLHQsMCksYT0hMDtpZighbyl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7aWYobGUuaXNDaHJkZXYoby5tb2RlKSYmKHImPS01MTMpLDY1NTM2JnImJiFsZS5pc0RpcihvLm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDU0KTtpZighYSl7dmFyIHM9bGUubWF5T3BlbihvLHIpO2lmKHMpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3Iocyl9NTEyJnImJiFhJiZsZS50cnVuY2F0ZShvLDApLHImPS0xMzE3MTM7dmFyIGk9bGUuY3JlYXRlU3RyZWFtKHtub2RlOm8scGF0aDpsZS5nZXRQYXRoKG8pLGZsYWdzOnIsc2Vla2FibGU6ITAscG9zaXRpb246MCxzdHJlYW1fb3BzOm8uc3RyZWFtX29wcyx1bmdvdHRlbjpbXSxlcnJvcjohMX0pO3JldHVybiBpLnN0cmVhbV9vcHMub3BlbiYmaS5zdHJlYW1fb3BzLm9wZW4oaSksIW4ubG9nUmVhZEZpbGVzfHwxJnJ8fChsZS5yZWFkRmlsZXN8fChsZS5yZWFkRmlsZXM9e30pLGUgaW4gbGUucmVhZEZpbGVzfHwobGUucmVhZEZpbGVzW2VdPTEpKSxpfSxjbG9zZShlKXtpZihsZS5pc0Nsb3NlZChlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtlLmdldGRlbnRzJiYoZS5nZXRkZW50cz1udWxsKTt0cnl7ZS5zdHJlYW1fb3BzLmNsb3NlJiZlLnN0cmVhbV9vcHMuY2xvc2UoZSl9Y2F0Y2goZSl7dGhyb3cgZX1maW5hbGx5e2xlLmNsb3NlU3RyZWFtKGUuZmQpfWUuZmQ9bnVsbH0saXNDbG9zZWQ6ZT0+bnVsbD09PWUuZmQsbGxzZWVrKGUscix0KXtpZihsZS5pc0Nsb3NlZChlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtpZighZS5zZWVrYWJsZXx8IWUuc3RyZWFtX29wcy5sbHNlZWspdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNzApO2lmKDAhPXQmJjEhPXQmJjIhPXQpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjgpO3JldHVybiBlLnBvc2l0aW9uPWUuc3RyZWFtX29wcy5sbHNlZWsoZSxyLHQpLGUudW5nb3R0ZW49W10sZS5wb3NpdGlvbn0scmVhZChlLHIsdCxuLG8pe2lmKG48MHx8bzwwKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTtpZihsZS5pc0Nsb3NlZChlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtpZigxPT0oMjA5NzE1NSZlLmZsYWdzKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtpZihsZS5pc0RpcihlLm5vZGUubW9kZSkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMzEpO2lmKCFlLnN0cmVhbV9vcHMucmVhZCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOCk7dmFyIGE9dm9pZCAwIT09bztpZihhKXtpZighZS5zZWVrYWJsZSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig3MCl9ZWxzZSBvPWUucG9zaXRpb247dmFyIHM9ZS5zdHJlYW1fb3BzLnJlYWQoZSxyLHQsbixvKTtyZXR1cm4gYXx8KGUucG9zaXRpb24rPXMpLHN9LHdyaXRlKGUscix0LG4sbyxhKXtpZihuPDB8fG88MCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOCk7aWYobGUuaXNDbG9zZWQoZSkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoOCk7aWYoMD09KDIwOTcxNTUmZS5mbGFncykpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoOCk7aWYobGUuaXNEaXIoZS5ub2RlLm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDMxKTtpZighZS5zdHJlYW1fb3BzLndyaXRlKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTtlLnNlZWthYmxlJiYxMDI0JmUuZmxhZ3MmJmxlLmxsc2VlayhlLDAsMik7dmFyIHM9dm9pZCAwIT09bztpZihzKXtpZighZS5zZWVrYWJsZSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig3MCl9ZWxzZSBvPWUucG9zaXRpb247dmFyIGk9ZS5zdHJlYW1fb3BzLndyaXRlKGUscix0LG4sbyxhKTtyZXR1cm4gc3x8KGUucG9zaXRpb24rPWkpLGl9LGFsbG9jYXRlKGUscix0KXtpZihsZS5pc0Nsb3NlZChlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtpZihyPDB8fHQ8PTApdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjgpO2lmKDA9PSgyMDk3MTU1JmUuZmxhZ3MpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDgpO2lmKCFsZS5pc0ZpbGUoZS5ub2RlLm1vZGUpJiYhbGUuaXNEaXIoZS5ub2RlLm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQzKTtpZighZS5zdHJlYW1fb3BzLmFsbG9jYXRlKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDEzOCk7ZS5zdHJlYW1fb3BzLmFsbG9jYXRlKGUscix0KX0sbW1hcChlLHIsdCxuLG8pe2lmKDAhPSgyJm4pJiYwPT0oMiZvKSYmMiE9KDIwOTcxNTUmZS5mbGFncykpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMik7aWYoMT09KDIwOTcxNTUmZS5mbGFncykpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMik7aWYoIWUuc3RyZWFtX29wcy5tbWFwKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQzKTtyZXR1cm4gZS5zdHJlYW1fb3BzLm1tYXAoZSxyLHQsbixvKX0sbXN5bmM6KGUscix0LG4sbyk9PmUuc3RyZWFtX29wcy5tc3luYz9lLnN0cmVhbV9vcHMubXN5bmMoZSxyLHQsbixvKTowLG11bm1hcDplPT4wLGlvY3RsKGUscix0KXtpZighZS5zdHJlYW1fb3BzLmlvY3RsKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDU5KTtyZXR1cm4gZS5zdHJlYW1fb3BzLmlvY3RsKGUscix0KX0scmVhZEZpbGUoZSxyPXt9KXtpZihyLmZsYWdzPXIuZmxhZ3N8fDAsci5lbmNvZGluZz1yLmVuY29kaW5nfHwiYmluYXJ5IiwidXRmOCIhPT1yLmVuY29kaW5nJiYiYmluYXJ5IiE9PXIuZW5jb2RpbmcpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVuY29kaW5nIHR5cGUgIiR7ci5lbmNvZGluZ30iYCk7dmFyIHQsbj1sZS5vcGVuKGUsci5mbGFncyksbz1sZS5zdGF0KGUpLnNpemUsYT1uZXcgVWludDhBcnJheShvKTtyZXR1cm4gbGUucmVhZChuLGEsMCxvLDApLCJ1dGY4Ij09PXIuZW5jb2Rpbmc/dD1RKGEsMCk6ImJpbmFyeSI9PT1yLmVuY29kaW5nJiYodD1hKSxsZS5jbG9zZShuKSx0fSx3cml0ZUZpbGUoZSxyLHQ9e30pe3QuZmxhZ3M9dC5mbGFnc3x8NTc3O3ZhciBuPWxlLm9wZW4oZSx0LmZsYWdzLHQubW9kZSk7aWYoInN0cmluZyI9PXR5cGVvZiByKXt2YXIgbz1uZXcgVWludDhBcnJheShyZShyKSsxKSxhPXRlKHIsbywwLG8ubGVuZ3RoKTtsZS53cml0ZShuLG8sMCxhLHZvaWQgMCx0LmNhbk93bil9ZWxzZXtpZighQXJyYXlCdWZmZXIuaXNWaWV3KHIpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgZGF0YSB0eXBlIik7bGUud3JpdGUobixyLDAsci5ieXRlTGVuZ3RoLHZvaWQgMCx0LmNhbk93bil9bGUuY2xvc2Uobil9LGN3ZDooKT0+bGUuY3VycmVudFBhdGgsY2hkaXIoZSl7dmFyIHI9bGUubG9va3VwUGF0aChlLHtmb2xsb3c6ITB9KTtpZihudWxsPT09ci5ub2RlKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQ0KTtpZighbGUuaXNEaXIoci5ub2RlLm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDU0KTt2YXIgdD1sZS5ub2RlUGVybWlzc2lvbnMoci5ub2RlLCJ4Iik7aWYodCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcih0KTtsZS5jdXJyZW50UGF0aD1yLnBhdGh9LGNyZWF0ZURlZmF1bHREaXJlY3Rvcmllcygpe2xlLm1rZGlyKCIvdG1wIiksbGUubWtkaXIoIi9ob21lIiksbGUubWtkaXIoIi9ob21lL3dlYl91c2VyIil9LGNyZWF0ZURlZmF1bHREZXZpY2VzKCl7bGUubWtkaXIoIi9kZXYiKSxsZS5yZWdpc3RlckRldmljZShsZS5tYWtlZGV2KDEsMykse3JlYWQ6KCk9PjAsd3JpdGU6KGUscix0LG4sbyk9Pm59KSxsZS5ta2RldigiL2Rldi9udWxsIixsZS5tYWtlZGV2KDEsMykpLG9lLnJlZ2lzdGVyKGxlLm1ha2VkZXYoNSwwKSxvZS5kZWZhdWx0X3R0eV9vcHMpLG9lLnJlZ2lzdGVyKGxlLm1ha2VkZXYoNiwwKSxvZS5kZWZhdWx0X3R0eTFfb3BzKSxsZS5ta2RldigiL2Rldi90dHkiLGxlLm1ha2VkZXYoNSwwKSksbGUubWtkZXYoIi9kZXYvdHR5MSIsbGUubWFrZWRldig2LDApKTt2YXIgZT1uZXcgVWludDhBcnJheSgxMDI0KSxyPTAsdD0oKT0+KDA9PT1yJiYocj1HKGUpLmJ5dGVMZW5ndGgpLGVbLS1yXSk7bGUuY3JlYXRlRGV2aWNlKCIvZGV2IiwicmFuZG9tIix0KSxsZS5jcmVhdGVEZXZpY2UoIi9kZXYiLCJ1cmFuZG9tIix0KSxsZS5ta2RpcigiL2Rldi9zaG0iKSxsZS5ta2RpcigiL2Rldi9zaG0vdG1wIil9LGNyZWF0ZVNwZWNpYWxEaXJlY3Rvcmllcygpe2xlLm1rZGlyKCIvcHJvYyIpO3ZhciBlPWxlLm1rZGlyKCIvcHJvYy9zZWxmIik7bGUubWtkaXIoIi9wcm9jL3NlbGYvZmQiKSxsZS5tb3VudCh7bW91bnQoKXt2YXIgcj1sZS5jcmVhdGVOb2RlKGUsImZkIiwxNjg5NSw3Myk7cmV0dXJuIHIubm9kZV9vcHM9e2xvb2t1cChlLHIpe3ZhciB0PStyLG49bGUuZ2V0U3RyZWFtQ2hlY2tlZCh0KSxvPXtwYXJlbnQ6bnVsbCxtb3VudDp7bW91bnRwb2ludDoiZmFrZSJ9LG5vZGVfb3BzOntyZWFkbGluazooKT0+bi5wYXRofX07cmV0dXJuIG8ucGFyZW50PW8sb319LHJ9fSx7fSwiL3Byb2Mvc2VsZi9mZCIpfSxjcmVhdGVTdGFuZGFyZFN0cmVhbXMoKXtuLnN0ZGluP2xlLmNyZWF0ZURldmljZSgiL2RldiIsInN0ZGluIixuLnN0ZGluKTpsZS5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3RkaW4iKSxuLnN0ZG91dD9sZS5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRvdXQiLG51bGwsbi5zdGRvdXQpOmxlLnN5bWxpbmsoIi9kZXYvdHR5IiwiL2Rldi9zdGRvdXQiKSxuLnN0ZGVycj9sZS5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRlcnIiLG51bGwsbi5zdGRlcnIpOmxlLnN5bWxpbmsoIi9kZXYvdHR5MSIsIi9kZXYvc3RkZXJyIiksbGUub3BlbigiL2Rldi9zdGRpbiIsMCksbGUub3BlbigiL2Rldi9zdGRvdXQiLDEpLGxlLm9wZW4oIi9kZXYvc3RkZXJyIiwxKX0sZW5zdXJlRXJybm9FcnJvcigpe2xlLkVycm5vRXJyb3J8fChsZS5FcnJub0Vycm9yPWZ1bmN0aW9uKGUscil7dGhpcy5uYW1lPSJFcnJub0Vycm9yIix0aGlzLm5vZGU9cix0aGlzLnNldEVycm5vPWZ1bmN0aW9uKGUpe3RoaXMuZXJybm89ZX0sdGhpcy5zZXRFcnJubyhlKSx0aGlzLm1lc3NhZ2U9IkZTIGVycm9yIn0sbGUuRXJybm9FcnJvci5wcm90b3R5cGU9bmV3IEVycm9yLGxlLkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPWxlLkVycm5vRXJyb3IsWzQ0XS5mb3JFYWNoKChlPT57bGUuZ2VuZXJpY0Vycm9yc1tlXT1uZXcgbGUuRXJybm9FcnJvcihlKSxsZS5nZW5lcmljRXJyb3JzW2VdLnN0YWNrPSI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+In0pKSl9LHN0YXRpY0luaXQoKXtsZS5lbnN1cmVFcnJub0Vycm9yKCksbGUubmFtZVRhYmxlPW5ldyBBcnJheSg0MDk2KSxsZS5tb3VudChzZSx7fSwiLyIpLGxlLmNyZWF0ZURlZmF1bHREaXJlY3RvcmllcygpLGxlLmNyZWF0ZURlZmF1bHREZXZpY2VzKCksbGUuY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzKCksbGUuZmlsZXN5c3RlbXM9e01FTUZTOnNlfX0saW5pdChlLHIsdCl7bGUuaW5pdC5pbml0aWFsaXplZD0hMCxsZS5lbnN1cmVFcnJub0Vycm9yKCksbi5zdGRpbj1lfHxuLnN0ZGluLG4uc3Rkb3V0PXJ8fG4uc3Rkb3V0LG4uc3RkZXJyPXR8fG4uc3RkZXJyLGxlLmNyZWF0ZVN0YW5kYXJkU3RyZWFtcygpfSxxdWl0KCl7bGUuaW5pdC5pbml0aWFsaXplZD0hMTtmb3IodmFyIGU9MDtlPGxlLnN0cmVhbXMubGVuZ3RoO2UrKyl7dmFyIHI9bGUuc3RyZWFtc1tlXTtyJiZsZS5jbG9zZShyKX19LGZpbmRPYmplY3QoZSxyKXt2YXIgdD1sZS5hbmFseXplUGF0aChlLHIpO3JldHVybiB0LmV4aXN0cz90Lm9iamVjdDpudWxsfSxhbmFseXplUGF0aChlLHIpe3RyeXtlPShuPWxlLmxvb2t1cFBhdGgoZSx7Zm9sbG93OiFyfSkpLnBhdGh9Y2F0Y2goZSl7fXZhciB0PXtpc1Jvb3Q6ITEsZXhpc3RzOiExLGVycm9yOjAsbmFtZTpudWxsLHBhdGg6bnVsbCxvYmplY3Q6bnVsbCxwYXJlbnRFeGlzdHM6ITEscGFyZW50UGF0aDpudWxsLHBhcmVudE9iamVjdDpudWxsfTt0cnl7dmFyIG49bGUubG9va3VwUGF0aChlLHtwYXJlbnQ6ITB9KTt0LnBhcmVudEV4aXN0cz0hMCx0LnBhcmVudFBhdGg9bi5wYXRoLHQucGFyZW50T2JqZWN0PW4ubm9kZSx0Lm5hbWU9Wi5iYXNlbmFtZShlKSxuPWxlLmxvb2t1cFBhdGgoZSx7Zm9sbG93OiFyfSksdC5leGlzdHM9ITAsdC5wYXRoPW4ucGF0aCx0Lm9iamVjdD1uLm5vZGUsdC5uYW1lPW4ubm9kZS5uYW1lLHQuaXNSb290PSIvIj09PW4ucGF0aH1jYXRjaChlKXt0LmVycm9yPWUuZXJybm99cmV0dXJuIHR9LGNyZWF0ZVBhdGgoZSxyLHQsbil7ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpsZS5nZXRQYXRoKGUpO2Zvcih2YXIgbz1yLnNwbGl0KCIvIikucmV2ZXJzZSgpO28ubGVuZ3RoOyl7dmFyIGE9by5wb3AoKTtpZihhKXt2YXIgcz1aLmpvaW4yKGUsYSk7dHJ5e2xlLm1rZGlyKHMpfWNhdGNoKGUpe31lPXN9fXJldHVybiBzfSxjcmVhdGVGaWxlKGUscix0LG4sbyl7dmFyIGE9Wi5qb2luMigic3RyaW5nIj09dHlwZW9mIGU/ZTpsZS5nZXRQYXRoKGUpLHIpLHM9dWUobixvKTtyZXR1cm4gbGUuY3JlYXRlKGEscyl9LGNyZWF0ZURhdGFGaWxlKGUscix0LG4sbyxhKXt2YXIgcz1yO2UmJihlPSJzdHJpbmciPT10eXBlb2YgZT9lOmxlLmdldFBhdGgoZSkscz1yP1ouam9pbjIoZSxyKTplKTt2YXIgaT11ZShuLG8pLHU9bGUuY3JlYXRlKHMsaSk7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtmb3IodmFyIGw9bmV3IEFycmF5KHQubGVuZ3RoKSxjPTAsZD10Lmxlbmd0aDtjPGQ7KytjKWxbY109dC5jaGFyQ29kZUF0KGMpO3Q9bH1sZS5jaG1vZCh1LDE0NnxpKTt2YXIgaD1sZS5vcGVuKHUsNTc3KTtsZS53cml0ZShoLHQsMCx0Lmxlbmd0aCwwLGEpLGxlLmNsb3NlKGgpLGxlLmNobW9kKHUsaSl9fSxjcmVhdGVEZXZpY2UoZSxyLHQsbil7dmFyIG89Wi5qb2luMigic3RyaW5nIj09dHlwZW9mIGU/ZTpsZS5nZXRQYXRoKGUpLHIpLGE9dWUoISF0LCEhbik7bGUuY3JlYXRlRGV2aWNlLm1ham9yfHwobGUuY3JlYXRlRGV2aWNlLm1ham9yPTY0KTt2YXIgcz1sZS5tYWtlZGV2KGxlLmNyZWF0ZURldmljZS5tYWpvcisrLDApO3JldHVybiBsZS5yZWdpc3RlckRldmljZShzLHtvcGVuKGUpe2Uuc2Vla2FibGU9ITF9LGNsb3NlKGUpe24/LmJ1ZmZlcj8ubGVuZ3RoJiZuKDEwKX0scmVhZChlLHIsbixvLGEpe2Zvcih2YXIgcz0wLGk9MDtpPG87aSsrKXt2YXIgdTt0cnl7dT10KCl9Y2F0Y2goZSl7dGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjkpfWlmKHZvaWQgMD09PXUmJjA9PT1zKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYpO2lmKG51bGw9PXUpYnJlYWs7cysrLHJbbitpXT11fXJldHVybiBzJiYoZS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKSxzfSx3cml0ZShlLHIsdCxvLGEpe2Zvcih2YXIgcz0wO3M8bztzKyspdHJ5e24oclt0K3NdKX1jYXRjaChlKXt0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOSl9cmV0dXJuIG8mJihlLm5vZGUudGltZXN0YW1wPURhdGUubm93KCkpLHN9fSksbGUubWtkZXYobyxhLHMpfSxmb3JjZUxvYWRGaWxlKGUpe2lmKGUuaXNEZXZpY2V8fGUuaXNGb2xkZXJ8fGUubGlua3x8ZS5jb250ZW50cylyZXR1cm4hMDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0KXRocm93IG5ldyBFcnJvcigiTGF6eSBsb2FkaW5nIHNob3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIChjb250ZW50cyBzZXQpIGluIGNyZWF0ZUxhenlGaWxlLCBidXQgaXQgd2FzIG5vdC4gTGF6eSBsb2FkaW5nIG9ubHkgd29ya3MgaW4gd2ViIHdvcmtlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyBvbiB0aGUgbWFpbiB0aHJlYWQuIik7aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbG9hZCB3aXRob3V0IHJlYWQoKSBvciBYTUxIdHRwUmVxdWVzdC4iKTt0cnl7ZS5jb250ZW50cz1uZShvKGUudXJsKSwhMCksZS51c2VkQnl0ZXM9ZS5jb250ZW50cy5sZW5ndGh9Y2F0Y2goZSl7dGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjkpfX0sY3JlYXRlTGF6eUZpbGUoZSxyLHQsbixvKXtmdW5jdGlvbiBhKCl7dGhpcy5sZW5ndGhLbm93bj0hMSx0aGlzLmNodW5rcz1bXX1pZihhLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7aWYoIShlPnRoaXMubGVuZ3RoLTF8fGU8MCkpe3ZhciByPWUldGhpcy5jaHVua1NpemUsdD1lL3RoaXMuY2h1bmtTaXplfDA7cmV0dXJuIHRoaXMuZ2V0dGVyKHQpW3JdfX0sYS5wcm90b3R5cGUuc2V0RGF0YUdldHRlcj1mdW5jdGlvbihlKXt0aGlzLmdldHRlcj1lfSxhLnByb3RvdHlwZS5jYWNoZUxlbmd0aD1mdW5jdGlvbigpe3ZhciBlPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihlLm9wZW4oIkhFQUQiLHQsITEpLGUuc2VuZChudWxsKSwhKGUuc3RhdHVzPj0yMDAmJmUuc3RhdHVzPDMwMHx8MzA0PT09ZS5zdGF0dXMpKXRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgbG9hZCAiK3QrIi4gU3RhdHVzOiAiK2Uuc3RhdHVzKTt2YXIgcixuPU51bWJlcihlLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKSxvPShyPWUuZ2V0UmVzcG9uc2VIZWFkZXIoIkFjY2VwdC1SYW5nZXMiKSkmJiJieXRlcyI9PT1yLGE9KHI9ZS5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1FbmNvZGluZyIpKSYmImd6aXAiPT09cixzPTEwNDg1NzY7b3x8KHM9bik7dmFyIGk9dGhpcztpLnNldERhdGFHZXR0ZXIoKGU9Pnt2YXIgcj1lKnMsbz0oZSsxKSpzLTE7aWYobz1NYXRoLm1pbihvLG4tMSksdm9pZCAwPT09aS5jaHVua3NbZV0mJihpLmNodW5rc1tlXT0oKGUscik9PntpZihlPnIpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHJhbmdlICgiK2UrIiwgIityKyIpIG9yIG5vIGJ5dGVzIHJlcXVlc3RlZCEiKTtpZihyPm4tMSl0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIituKyIgYnl0ZXMgYXZhaWxhYmxlISBwcm9ncmFtbWVyIGVycm9yISIpO3ZhciBvPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihvLm9wZW4oIkdFVCIsdCwhMSksbiE9PXMmJm8uc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCJieXRlcz0iK2UrIi0iK3IpLG8ucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsby5vdmVycmlkZU1pbWVUeXBlJiZvLm92ZXJyaWRlTWltZVR5cGUoInRleHQvcGxhaW47IGNoYXJzZXQ9eC11c2VyLWRlZmluZWQiKSxvLnNlbmQobnVsbCksIShvLnN0YXR1cz49MjAwJiZvLnN0YXR1czwzMDB8fDMwND09PW8uc3RhdHVzKSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGxvYWQgIit0KyIuIFN0YXR1czogIitvLnN0YXR1cyk7cmV0dXJuIHZvaWQgMCE9PW8ucmVzcG9uc2U/bmV3IFVpbnQ4QXJyYXkoby5yZXNwb25zZXx8W10pOm5lKG8ucmVzcG9uc2VUZXh0fHwiIiwhMCl9KShyLG8pKSx2b2lkIDA9PT1pLmNodW5rc1tlXSl0aHJvdyBuZXcgRXJyb3IoImRvWEhSIGZhaWxlZCEiKTtyZXR1cm4gaS5jaHVua3NbZV19KSksIWEmJm58fChzPW49MSxuPXRoaXMuZ2V0dGVyKDApLmxlbmd0aCxzPW4sXygiTGF6eUZpbGVzIG9uIGd6aXAgZm9yY2VzIGRvd25sb2FkIG9mIHRoZSB3aG9sZSBmaWxlIHdoZW4gbGVuZ3RoIGlzIGFjY2Vzc2VkIikpLHRoaXMuX2xlbmd0aD1uLHRoaXMuX2NodW5rU2l6ZT1zLHRoaXMubGVuZ3RoS25vd249ITB9LCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3Qpe2lmKCFkKXRocm93IkNhbm5vdCBkbyBzeW5jaHJvbm91cyBiaW5hcnkgWEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2MiO3ZhciBzPW5ldyBhO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHMse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RoS25vd258fHRoaXMuY2FjaGVMZW5ndGgoKSx0aGlzLl9sZW5ndGh9fSxjaHVua1NpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aEtub3dufHx0aGlzLmNhY2hlTGVuZ3RoKCksdGhpcy5fY2h1bmtTaXplfX19KTt2YXIgaT17aXNEZXZpY2U6ITEsY29udGVudHM6c319ZWxzZSBpPXtpc0RldmljZTohMSx1cmw6dH07dmFyIHU9bGUuY3JlYXRlRmlsZShlLHIsaSxuLG8pO2kuY29udGVudHM/dS5jb250ZW50cz1pLmNvbnRlbnRzOmkudXJsJiYodS5jb250ZW50cz1udWxsLHUudXJsPWkudXJsKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh1LHt1c2VkQnl0ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRlbnRzLmxlbmd0aH19fSk7dmFyIGw9e307ZnVuY3Rpb24gYyhlLHIsdCxuLG8pe3ZhciBhPWUubm9kZS5jb250ZW50cztpZihvPj1hLmxlbmd0aClyZXR1cm4gMDt2YXIgcz1NYXRoLm1pbihhLmxlbmd0aC1vLG4pO2lmKGEuc2xpY2UpZm9yKHZhciBpPTA7aTxzO2krKylyW3QraV09YVtvK2ldO2Vsc2UgZm9yKGk9MDtpPHM7aSsrKXJbdCtpXT1hLmdldChvK2kpO3JldHVybiBzfXJldHVybiBPYmplY3Qua2V5cyh1LnN0cmVhbV9vcHMpLmZvckVhY2goKGU9Pnt2YXIgcj11LnN0cmVhbV9vcHNbZV07bFtlXT1mdW5jdGlvbigpe3JldHVybiBsZS5mb3JjZUxvYWRGaWxlKHUpLHIuYXBwbHkobnVsbCxhcmd1bWVudHMpfX0pKSxsLnJlYWQ9KGUscix0LG4sbyk9PihsZS5mb3JjZUxvYWRGaWxlKHUpLGMoZSxyLHQsbixvKSksbC5tbWFwPShlLHIsdCxuLG8pPT57bGUuZm9yY2VMb2FkRmlsZSh1KTt2YXIgYT1hZSgpO2lmKCFhKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQ4KTtyZXR1cm4gYyhlLEUsYSxyLHQpLHtwdHI6YSxhbGxvY2F0ZWQ6ITB9fSx1LnN0cmVhbV9vcHM9bCx1fX0sY2U9KGUscik9PmU/UShrLGUscik6IiIsZGU9e0RFRkFVTFRfUE9MTE1BU0s6NSxjYWxjdWxhdGVBdChlLHIsdCl7aWYoWi5pc0FicyhyKSlyZXR1cm4gcjt2YXIgbjtpZihuPS0xMDA9PT1lP2xlLmN3ZCgpOmRlLmdldFN0cmVhbUZyb21GRChlKS5wYXRoLDA9PXIubGVuZ3RoKXtpZighdCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7cmV0dXJuIG59cmV0dXJuIFouam9pbjIobixyKX0sZG9TdGF0KGUscix0KXt0cnl7dmFyIG49ZShyKX1jYXRjaChlKXtpZihlJiZlLm5vZGUmJloubm9ybWFsaXplKHIpIT09Wi5ub3JtYWxpemUobGUuZ2V0UGF0aChlLm5vZGUpKSlyZXR1cm4tNTQ7dGhyb3cgZX1GW3Q+PjJdPW4uZGV2LEZbdCs0Pj4yXT1uLm1vZGUsRFt0Kzg+PjJdPW4ubmxpbmssRlt0KzEyPj4yXT1uLnVpZCxGW3QrMTY+PjJdPW4uZ2lkLEZbdCsyMD4+Ml09bi5yZGV2LEk9W24uc2l6ZT4+PjAsKGo9bi5zaXplLCtNYXRoLmFicyhqKT49MT9qPjA/K01hdGguZmxvb3Ioai80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChqLSsofn5qPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sRlt0KzI0Pj4yXT1JWzBdLEZbdCsyOD4+Ml09SVsxXSxGW3QrMzI+PjJdPTQwOTYsRlt0KzM2Pj4yXT1uLmJsb2Nrczt2YXIgbz1uLmF0aW1lLmdldFRpbWUoKSxhPW4ubXRpbWUuZ2V0VGltZSgpLHM9bi5jdGltZS5nZXRUaW1lKCk7cmV0dXJuIEk9W01hdGguZmxvb3Ioby8xZTMpPj4+MCwoaj1NYXRoLmZsb29yKG8vMWUzKSwrTWF0aC5hYnMoaik+PTE/aj4wPytNYXRoLmZsb29yKGovNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoai0rKH5+aj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLEZbdCs0MD4+Ml09SVswXSxGW3QrNDQ+PjJdPUlbMV0sRFt0KzQ4Pj4yXT1vJTFlMyoxZTMsST1bTWF0aC5mbG9vcihhLzFlMyk+Pj4wLChqPU1hdGguZmxvb3IoYS8xZTMpLCtNYXRoLmFicyhqKT49MT9qPjA/K01hdGguZmxvb3Ioai80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChqLSsofn5qPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sRlt0KzU2Pj4yXT1JWzBdLEZbdCs2MD4+Ml09SVsxXSxEW3QrNjQ+PjJdPWElMWUzKjFlMyxJPVtNYXRoLmZsb29yKHMvMWUzKT4+PjAsKGo9TWF0aC5mbG9vcihzLzFlMyksK01hdGguYWJzKGopPj0xP2o+MD8rTWF0aC5mbG9vcihqLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNlaWwoKGotKyh+fmo+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSxGW3QrNzI+PjJdPUlbMF0sRlt0Kzc2Pj4yXT1JWzFdLERbdCs4MD4+Ml09cyUxZTMqMWUzLEk9W24uaW5vPj4+MCwoaj1uLmlubywrTWF0aC5hYnMoaik+PTE/aj4wPytNYXRoLmZsb29yKGovNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoai0rKH5+aj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLEZbdCs4OD4+Ml09SVswXSxGW3QrOTI+PjJdPUlbMV0sMH0sZG9Nc3luYyhlLHIsdCxuLG8pe2lmKCFsZS5pc0ZpbGUoci5ub2RlLm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQzKTtpZigyJm4pcmV0dXJuIDA7dmFyIGE9ay5zbGljZShlLGUrdCk7bGUubXN5bmMocixhLG8sdCxuKX0sdmFyYXJnczp2b2lkIDAsZ2V0KCl7dmFyIGU9RlsrZGUudmFyYXJncz4+Ml07cmV0dXJuIGRlLnZhcmFyZ3MrPTQsZX0sZ2V0cDooKT0+ZGUuZ2V0KCksZ2V0U3RyOmU9PmNlKGUpLGdldFN0cmVhbUZyb21GRDplPT5sZS5nZXRTdHJlYW1DaGVja2VkKGUpfSxoZT1lPT4oRltPZSgpPj4yXT1lLGUpLGZlPXtCVUNLRVRfQlVGRkVSX1NJWkU6ODE5Mixtb3VudDplPT5sZS5jcmVhdGVOb2RlKG51bGwsIi8iLDE2ODk1LDApLGNyZWF0ZVBpcGUoKXt2YXIgZT17YnVja2V0czpbXSxyZWZjbnQ6Mn07ZS5idWNrZXRzLnB1c2goe2J1ZmZlcjpuZXcgVWludDhBcnJheShmZS5CVUNLRVRfQlVGRkVSX1NJWkUpLG9mZnNldDowLHJvZmZzZXQ6MH0pO3ZhciByPWZlLm5leHRuYW1lKCksdD1mZS5uZXh0bmFtZSgpLG49bGUuY3JlYXRlTm9kZShmZS5yb290LHIsNDA5NiwwKSxvPWxlLmNyZWF0ZU5vZGUoZmUucm9vdCx0LDQwOTYsMCk7bi5waXBlPWUsby5waXBlPWU7dmFyIGE9bGUuY3JlYXRlU3RyZWFtKHtwYXRoOnIsbm9kZTpuLGZsYWdzOjAsc2Vla2FibGU6ITEsc3RyZWFtX29wczpmZS5zdHJlYW1fb3BzfSk7bi5zdHJlYW09YTt2YXIgcz1sZS5jcmVhdGVTdHJlYW0oe3BhdGg6dCxub2RlOm8sZmxhZ3M6MSxzZWVrYWJsZTohMSxzdHJlYW1fb3BzOmZlLnN0cmVhbV9vcHN9KTtyZXR1cm4gby5zdHJlYW09cyx7cmVhZGFibGVfZmQ6YS5mZCx3cml0YWJsZV9mZDpzLmZkfX0sc3RyZWFtX29wczp7cG9sbChlKXt2YXIgcj1lLm5vZGUucGlwZTtpZigxPT0oMjA5NzE1NSZlLmZsYWdzKSlyZXR1cm4gMjYwO2lmKHIuYnVja2V0cy5sZW5ndGg+MClmb3IodmFyIHQ9MDt0PHIuYnVja2V0cy5sZW5ndGg7dCsrKXt2YXIgbj1yLmJ1Y2tldHNbdF07aWYobi5vZmZzZXQtbi5yb2Zmc2V0PjApcmV0dXJuIDY1fXJldHVybiAwfSxpb2N0bDooZSxyLHQpPT4yOCxmc3luYzplPT4yOCxyZWFkKGUscix0LG4sbyl7Zm9yKHZhciBhPWUubm9kZS5waXBlLHM9MCxpPTA7aTxhLmJ1Y2tldHMubGVuZ3RoO2krKyl7dmFyIHU9YS5idWNrZXRzW2ldO3MrPXUub2Zmc2V0LXUucm9mZnNldH12YXIgbD1yLnN1YmFycmF5KHQsdCtuKTtpZihuPD0wKXJldHVybiAwO2lmKDA9PXMpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNik7dmFyIGM9TWF0aC5taW4ocyxuKSxkPWMsaD0wO2ZvcihpPTA7aTxhLmJ1Y2tldHMubGVuZ3RoO2krKyl7dmFyIGY9YS5idWNrZXRzW2ldLG09Zi5vZmZzZXQtZi5yb2Zmc2V0O2lmKGM8PW0pe3ZhciBwPWYuYnVmZmVyLnN1YmFycmF5KGYucm9mZnNldCxmLm9mZnNldCk7YzxtPyhwPXAuc3ViYXJyYXkoMCxjKSxmLnJvZmZzZXQrPWMpOmgrKyxsLnNldChwKTticmVha31wPWYuYnVmZmVyLnN1YmFycmF5KGYucm9mZnNldCxmLm9mZnNldCksbC5zZXQocCksbD1sLnN1YmFycmF5KHAuYnl0ZUxlbmd0aCksYy09cC5ieXRlTGVuZ3RoLGgrK31yZXR1cm4gaCYmaD09YS5idWNrZXRzLmxlbmd0aCYmKGgtLSxhLmJ1Y2tldHNbaF0ub2Zmc2V0PTAsYS5idWNrZXRzW2hdLnJvZmZzZXQ9MCksYS5idWNrZXRzLnNwbGljZSgwLGgpLGR9LHdyaXRlKGUscix0LG4sbyl7dmFyIGE9ZS5ub2RlLnBpcGUscz1yLnN1YmFycmF5KHQsdCtuKSxpPXMuYnl0ZUxlbmd0aDtpZihpPD0wKXJldHVybiAwO3ZhciB1PW51bGw7MD09YS5idWNrZXRzLmxlbmd0aD8odT17YnVmZmVyOm5ldyBVaW50OEFycmF5KGZlLkJVQ0tFVF9CVUZGRVJfU0laRSksb2Zmc2V0OjAscm9mZnNldDowfSxhLmJ1Y2tldHMucHVzaCh1KSk6dT1hLmJ1Y2tldHNbYS5idWNrZXRzLmxlbmd0aC0xXSxBKHUub2Zmc2V0PD1mZS5CVUNLRVRfQlVGRkVSX1NJWkUpO3ZhciBsPWZlLkJVQ0tFVF9CVUZGRVJfU0laRS11Lm9mZnNldDtpZihsPj1pKXJldHVybiB1LmJ1ZmZlci5zZXQocyx1Lm9mZnNldCksdS5vZmZzZXQrPWksaTtsPjAmJih1LmJ1ZmZlci5zZXQocy5zdWJhcnJheSgwLGwpLHUub2Zmc2V0KSx1Lm9mZnNldCs9bCxzPXMuc3ViYXJyYXkobCxzLmJ5dGVMZW5ndGgpKTtmb3IodmFyIGM9cy5ieXRlTGVuZ3RoL2ZlLkJVQ0tFVF9CVUZGRVJfU0laRXwwLGQ9cy5ieXRlTGVuZ3RoJWZlLkJVQ0tFVF9CVUZGRVJfU0laRSxoPTA7aDxjO2grKyl7dmFyIGY9e2J1ZmZlcjpuZXcgVWludDhBcnJheShmZS5CVUNLRVRfQlVGRkVSX1NJWkUpLG9mZnNldDpmZS5CVUNLRVRfQlVGRkVSX1NJWkUscm9mZnNldDowfTthLmJ1Y2tldHMucHVzaChmKSxmLmJ1ZmZlci5zZXQocy5zdWJhcnJheSgwLGZlLkJVQ0tFVF9CVUZGRVJfU0laRSkpLHM9cy5zdWJhcnJheShmZS5CVUNLRVRfQlVGRkVSX1NJWkUscy5ieXRlTGVuZ3RoKX1yZXR1cm4gZD4wJiYoZj17YnVmZmVyOm5ldyBVaW50OEFycmF5KGZlLkJVQ0tFVF9CVUZGRVJfU0laRSksb2Zmc2V0OnMuYnl0ZUxlbmd0aCxyb2Zmc2V0OjB9LGEuYnVja2V0cy5wdXNoKGYpLGYuYnVmZmVyLnNldChzKSksaX0sY2xvc2UoZSl7dmFyIHI9ZS5ub2RlLnBpcGU7ci5yZWZjbnQtLSwwPT09ci5yZWZjbnQmJihyLmJ1Y2tldHM9bnVsbCl9fSxuZXh0bmFtZTooKT0+KGZlLm5leHRuYW1lLmN1cnJlbnR8fChmZS5uZXh0bmFtZS5jdXJyZW50PTApLCJwaXBlWyIrZmUubmV4dG5hbWUuY3VycmVudCsrKyJdIil9LG1lPShlLHIpPT5yKzIwOTcxNTI+Pj4wPDQxOTQzMDUtISFlPyhlPj4+MCkrNDI5NDk2NzI5NipyOk5hTixwZT1lPT5lJTQ9PTAmJihlJTEwMCE9MHx8ZSU0MDA9PTApLHZlPVswLDMxLDYwLDkxLDEyMSwxNTIsMTgyLDIxMywyNDQsMjc0LDMwNSwzMzVdLHdlPVswLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwzMzRdLGdlPWU9PihwZShlLmdldEZ1bGxZZWFyKCkpP3ZlOndlKVtlLmdldE1vbnRoKCldK2UuZ2V0RGF0ZSgpLTEsX2U9KGUscix0KT0+dGUoZSxrLHIsdCkseWU9ZT0+e3ZhciByPXJlKGUpKzEsdD14ZShyKTtyZXR1cm4gdCYmX2UoZSx0LHIpLHR9LEVlPWU9Pnt2YXIgcj0oZS1nLmJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1KS82NTUzNjt0cnl7cmV0dXJuIGcuZ3JvdyhyKSxDKCksMX1jYXRjaChlKXt9fSxiZT17fSxrZT0oKT0+e2lmKCFrZS5zdHJpbmdzKXt2YXIgZT17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLmxhbmd1YWdlcyYmbmF2aWdhdG9yLmxhbmd1YWdlc1swXXx8IkMiKS5yZXBsYWNlKCItIiwiXyIpKyIuVVRGLTgiLF86dXx8Ii4vdGhpcy5wcm9ncmFtIn07Zm9yKHZhciByIGluIGJlKXZvaWQgMD09PWJlW3JdP2RlbGV0ZSBlW3JdOmVbcl09YmVbcl07dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdC5wdXNoKGAke3J9PSR7ZVtyXX1gKTtrZS5zdHJpbmdzPXR9cmV0dXJuIGtlLnN0cmluZ3N9LFNlPWU9PntYfHwobi5vbkV4aXQ/LihlKSxNPSEwKSxsKGUsbmV3IHEoZSkpfSxGZT0oZSxyKT0+e1NlKGUpfSxEZT1bMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLE1lPVszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sQWU9KGUscik9PntFLnNldChlLHIpfSxDZT1lPT5uWyJfIitlXSxQZT0oZSxyLHQsbixvKT0+e3ZhciBhPXtzdHJpbmc6ZT0+e3ZhciByPTA7cmV0dXJuIG51bGwhPWUmJjAhPT1lJiYocj0oZT0+e3ZhciByPXJlKGUpKzEsdD1IZShyKTtyZXR1cm4gX2UoZSx0LHIpLHR9KShlKSkscn0sYXJyYXk6ZT0+e3ZhciByPUhlKGUubGVuZ3RoKTtyZXR1cm4gQWUoZSxyKSxyfX0scz1DZShlKSxpPVtdLHU9MDtpZihuKWZvcih2YXIgbD0wO2w8bi5sZW5ndGg7bCsrKXt2YXIgYz1hW3RbbF1dO2M/KDA9PT11JiYodT1qZSgpKSxpW2xdPWMobltsXSkpOmlbbF09bltsXX12YXIgZD1zLmFwcGx5KG51bGwsaSk7cmV0dXJuIGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIDAhPT11JiZJZSh1KSxmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09PXI/Y2UoZSk6ImJvb2xlYW4iPT09cj9Cb29sZWFuKGUpOmV9KGUpfShkKX0sVGU9ZnVuY3Rpb24oZSxyLHQsbil7ZXx8KGU9dGhpcyksdGhpcy5wYXJlbnQ9ZSx0aGlzLm1vdW50PWUubW91bnQsdGhpcy5tb3VudGVkPW51bGwsdGhpcy5pZD1sZS5uZXh0SW5vZGUrKyx0aGlzLm5hbWU9cix0aGlzLm1vZGU9dCx0aGlzLm5vZGVfb3BzPXt9LHRoaXMuc3RyZWFtX29wcz17fSx0aGlzLnJkZXY9bn0sUmU9MzY1LHplPTE0NjtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhUZS5wcm90b3R5cGUse3JlYWQ6e2dldDpmdW5jdGlvbigpe3JldHVybih0aGlzLm1vZGUmUmUpPT09UmV9LHNldDpmdW5jdGlvbihlKXtlP3RoaXMubW9kZXw9UmU6dGhpcy5tb2RlJj0tMzY2fX0sd3JpdGU6e2dldDpmdW5jdGlvbigpe3JldHVybih0aGlzLm1vZGUmemUpPT09emV9LHNldDpmdW5jdGlvbihlKXtlP3RoaXMubW9kZXw9emU6dGhpcy5tb2RlJj0tMTQ3fX0saXNGb2xkZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBsZS5pc0Rpcih0aGlzLm1vZGUpfX0saXNEZXZpY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiBsZS5pc0NocmRldih0aGlzLm1vZGUpfX19KSxsZS5GU05vZGU9VGUsbGUuY3JlYXRlUHJlbG9hZGVkRmlsZT0oZSxyLHQsbixvLHMsaSx1LGwsYyk9Pnt2YXIgZD1yP1YucmVzb2x2ZShaLmpvaW4yKGUscikpOmU7ZnVuY3Rpb24gaCh0KXtmdW5jdGlvbiBhKHQpe2M/LigpLHV8fCgoZSxyLHQsbixvLGEpPT57bGUuY3JlYXRlRGF0YUZpbGUoZSxyLHQsbixvLGEpfSkoZSxyLHQsbixvLGwpLHM/LigpLHgoKX0oKGUscix0LG4pPT57InVuZGVmaW5lZCIhPXR5cGVvZiBCcm93c2VyJiZCcm93c2VyLmluaXQoKTt2YXIgbz0hMTtyZXR1cm4gaWUuZm9yRWFjaCgoYT0+e298fGEuY2FuSGFuZGxlKHIpJiYoYS5oYW5kbGUoZSxyLHQsbiksbz0hMCl9KSksb30pKHQsZCxhLCgoKT0+e2k/LigpLHgoKX0pKXx8YSh0KX1MKCksInN0cmluZyI9PXR5cGVvZiB0PygoZSxyLHQsbik9Pnt2YXIgbz1uPyIiOmBhbCAke2V9YDthKGUsKHQ9PntBKHQsYExvYWRpbmcgZGF0YSBmaWxlICIke2V9IiBmYWlsZWQgKG5vIGFycmF5QnVmZmVyKS5gKSxyKG5ldyBVaW50OEFycmF5KHQpKSxvJiZ4KCl9KSwocj0+e2lmKCF0KXRocm93YExvYWRpbmcgZGF0YSBmaWxlICIke2V9IiBmYWlsZWQuYDt0KCl9KSksbyYmTCgpfSkodCwoZT0+aChlKSksaSk6aCh0KX0sbGUuc3RhdGljSW5pdCgpO3ZhciBVZT17aTpmdW5jdGlvbihlKXt0cnl7dmFyIHI9ZGUuZ2V0U3RyZWFtRnJvbUZEKGUpO3JldHVybiBsZS5jcmVhdGVTdHJlYW0ocikuZmR9Y2F0Y2goZSl7aWYodm9pZCAwPT09bGV8fCJFcnJub0Vycm9yIiE9PWUubmFtZSl0aHJvdyBlO3JldHVybi1lLmVycm5vfX0sYTpmdW5jdGlvbihlLHIsdCl7ZGUudmFyYXJncz10O3RyeXt2YXIgbj1kZS5nZXRTdHJlYW1Gcm9tRkQoZSk7c3dpdGNoKHIpe2Nhc2UgMDppZigobz1kZS5nZXQoKSk8MClyZXR1cm4tMjg7Zm9yKDtsZS5zdHJlYW1zW29dOylvKys7cmV0dXJuIGxlLmNyZWF0ZVN0cmVhbShuLG8pLmZkO2Nhc2UgMTpjYXNlIDI6Y2FzZSA2OmNhc2UgNzpyZXR1cm4gMDtjYXNlIDM6cmV0dXJuIG4uZmxhZ3M7Y2FzZSA0OnZhciBvPWRlLmdldCgpO3JldHVybiBuLmZsYWdzfD1vLDA7Y2FzZSA1OnJldHVybiBvPWRlLmdldHAoKSxTW28rMD4+MV09MiwwO2Nhc2UgMTY6Y2FzZSA4OmRlZmF1bHQ6cmV0dXJuLTI4O2Nhc2UgOTpyZXR1cm4gaGUoMjgpLC0xfX1jYXRjaChlKXtpZih2b2lkIDA9PT1sZXx8IkVycm5vRXJyb3IiIT09ZS5uYW1lKXRocm93IGU7cmV0dXJuLWUuZXJybm99fSx4OmZ1bmN0aW9uKGUscil7dHJ5e3ZhciB0PWRlLmdldFN0cmVhbUZyb21GRChlKTtyZXR1cm4gZGUuZG9TdGF0KGxlLnN0YXQsdC5wYXRoLHIpfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4tZS5lcnJub319LHU6ZnVuY3Rpb24oZSxyKXt0cnl7cmV0dXJuIGU9ZGUuZ2V0U3RyKGUpLGRlLmRvU3RhdChsZS5sc3RhdCxlLHIpfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4tZS5lcnJub319LHY6ZnVuY3Rpb24oZSxyLHQsbil7dHJ5e3I9ZGUuZ2V0U3RyKHIpO3ZhciBvPTI1NiZuLGE9NDA5NiZuO3JldHVybiBuJj0tNjQwMSxyPWRlLmNhbGN1bGF0ZUF0KGUscixhKSxkZS5kb1N0YXQobz9sZS5sc3RhdDpsZS5zdGF0LHIsdCl9Y2F0Y2goZSl7aWYodm9pZCAwPT09bGV8fCJFcnJub0Vycm9yIiE9PWUubmFtZSl0aHJvdyBlO3JldHVybi1lLmVycm5vfX0seTpmdW5jdGlvbihlLHIsdCxuKXtkZS52YXJhcmdzPW47dHJ5e3I9ZGUuZ2V0U3RyKHIpLHI9ZGUuY2FsY3VsYXRlQXQoZSxyKTt2YXIgbz1uP2RlLmdldCgpOjA7cmV0dXJuIGxlLm9wZW4ocix0LG8pLmZkfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4tZS5lcnJub319LHQ6ZnVuY3Rpb24oZSl7dHJ5e2lmKDA9PWUpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjEpO3ZhciByPWZlLmNyZWF0ZVBpcGUoKTtyZXR1cm4gRltlPj4yXT1yLnJlYWRhYmxlX2ZkLEZbZSs0Pj4yXT1yLndyaXRhYmxlX2ZkLDB9Y2F0Y2goZSl7aWYodm9pZCAwPT09bGV8fCJFcnJub0Vycm9yIiE9PWUubmFtZSl0aHJvdyBlO3JldHVybi1lLmVycm5vfX0sczpmdW5jdGlvbihlLHIsdCl7dHJ5e2Zvcih2YXIgbj0wLG89MDtvPHI7bysrKXt2YXIgYT1lKzgqbyxzPUZbYT4+Ml0saT1TW2ErND4+MV0sdT0zMixsPWxlLmdldFN0cmVhbShzKTtsJiYodT1kZS5ERUZBVUxUX1BPTExNQVNLLGwuc3RyZWFtX29wcy5wb2xsJiYodT1sLnN0cmVhbV9vcHMucG9sbChsLC0xKSkpLCh1Jj0yNHxpKSYmbisrLFNbYSs2Pj4xXT11fXJldHVybiBufWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4tZS5lcnJub319LHc6ZnVuY3Rpb24oZSxyKXt0cnl7cmV0dXJuIGU9ZGUuZ2V0U3RyKGUpLGRlLmRvU3RhdChsZS5zdGF0LGUscil9Y2F0Y2goZSl7aWYodm9pZCAwPT09bGV8fCJFcnJub0Vycm9yIiE9PWUubmFtZSl0aHJvdyBlO3JldHVybi1lLmVycm5vfX0scTpmdW5jdGlvbihlLHIsdCl7dHJ5e3JldHVybiByPWRlLmdldFN0cihyKSxyPWRlLmNhbGN1bGF0ZUF0KGUsciksMD09PXQ/bGUudW5saW5rKHIpOjUxMj09PXQ/bGUucm1kaXIocik6TygiSW52YWxpZCBmbGFncyBwYXNzZWQgdG8gdW5saW5rYXQiKSwwfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4tZS5lcnJub319LEI6KCk9PjEsazpmdW5jdGlvbihlLHIsdCl7dmFyIG49bWUoZSxyKSxvPW5ldyBEYXRlKDFlMypuKTtGW3Q+PjJdPW8uZ2V0VVRDU2Vjb25kcygpLEZbdCs0Pj4yXT1vLmdldFVUQ01pbnV0ZXMoKSxGW3QrOD4+Ml09by5nZXRVVENIb3VycygpLEZbdCsxMj4+Ml09by5nZXRVVENEYXRlKCksRlt0KzE2Pj4yXT1vLmdldFVUQ01vbnRoKCksRlt0KzIwPj4yXT1vLmdldFVUQ0Z1bGxZZWFyKCktMTkwMCxGW3QrMjQ+PjJdPW8uZ2V0VVRDRGF5KCk7dmFyIGE9RGF0ZS5VVEMoby5nZXRVVENGdWxsWWVhcigpLDAsMSwwLDAsMCwwKSxzPShvLmdldFRpbWUoKS1hKS84NjRlNXwwO0ZbdCsyOD4+Ml09c30sbDpmdW5jdGlvbihlLHIsdCl7dmFyIG49bWUoZSxyKSxvPW5ldyBEYXRlKDFlMypuKTtGW3Q+PjJdPW8uZ2V0U2Vjb25kcygpLEZbdCs0Pj4yXT1vLmdldE1pbnV0ZXMoKSxGW3QrOD4+Ml09by5nZXRIb3VycygpLEZbdCsxMj4+Ml09by5nZXREYXRlKCksRlt0KzE2Pj4yXT1vLmdldE1vbnRoKCksRlt0KzIwPj4yXT1vLmdldEZ1bGxZZWFyKCktMTkwMCxGW3QrMjQ+PjJdPW8uZ2V0RGF5KCk7dmFyIGE9MHxnZShvKTtGW3QrMjg+PjJdPWEsRlt0KzM2Pj4yXT0tNjAqby5nZXRUaW1lem9uZU9mZnNldCgpO3ZhciBzPW5ldyBEYXRlKG8uZ2V0RnVsbFllYXIoKSwwLDEpLGk9bmV3IERhdGUoby5nZXRGdWxsWWVhcigpLDYsMSkuZ2V0VGltZXpvbmVPZmZzZXQoKSx1PXMuZ2V0VGltZXpvbmVPZmZzZXQoKSxsPTB8KGkhPXUmJm8uZ2V0VGltZXpvbmVPZmZzZXQoKT09TWF0aC5taW4odSxpKSk7Rlt0KzMyPj4yXT1sfSxtOmZ1bmN0aW9uKGUpe3ZhciByPSgoKT0+e3ZhciByPW5ldyBEYXRlKEZbZSsyMD4+Ml0rMTkwMCxGW2UrMTY+PjJdLEZbZSsxMj4+Ml0sRltlKzg+PjJdLEZbZSs0Pj4yXSxGW2U+PjJdLDApLHQ9RltlKzMyPj4yXSxuPXIuZ2V0VGltZXpvbmVPZmZzZXQoKSxvPW5ldyBEYXRlKHIuZ2V0RnVsbFllYXIoKSwwLDEpLGE9bmV3IERhdGUoci5nZXRGdWxsWWVhcigpLDYsMSkuZ2V0VGltZXpvbmVPZmZzZXQoKSxzPW8uZ2V0VGltZXpvbmVPZmZzZXQoKSxpPU1hdGgubWluKHMsYSk7aWYodDwwKUZbZSszMj4+Ml09TnVtYmVyKGEhPXMmJmk9PW4pO2Vsc2UgaWYodD4wIT0oaT09bikpe3ZhciB1PU1hdGgubWF4KHMsYSksbD10PjA/aTp1O3Iuc2V0VGltZShyLmdldFRpbWUoKSs2ZTQqKGwtbikpfUZbZSsyND4+Ml09ci5nZXREYXkoKTt2YXIgYz0wfGdlKHIpO0ZbZSsyOD4+Ml09YyxGW2U+PjJdPXIuZ2V0U2Vjb25kcygpLEZbZSs0Pj4yXT1yLmdldE1pbnV0ZXMoKSxGW2UrOD4+Ml09ci5nZXRIb3VycygpLEZbZSsxMj4+Ml09ci5nZXREYXRlKCksRltlKzE2Pj4yXT1yLmdldE1vbnRoKCksRltlKzIwPj4yXT1yLmdldFllYXIoKTt2YXIgZD1yLmdldFRpbWUoKTtyZXR1cm4gaXNOYU4oZCk/KGhlKDYxKSwtMSk6ZC8xZTN9KSgpO3JldHVybiBCZSgoaj1yLCtNYXRoLmFicyhqKT49MT9qPjA/K01hdGguZmxvb3Ioai80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChqLSsofn5qPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKSkscj4+PjB9LG46ZnVuY3Rpb24oZSl7dmFyIHI9KCgpPT57dmFyIHI9RGF0ZS5VVEMoRltlKzIwPj4yXSsxOTAwLEZbZSsxNj4+Ml0sRltlKzEyPj4yXSxGW2UrOD4+Ml0sRltlKzQ+PjJdLEZbZT4+Ml0sMCksdD1uZXcgRGF0ZShyKTtGW2UrMjQ+PjJdPXQuZ2V0VVRDRGF5KCk7dmFyIG49RGF0ZS5VVEModC5nZXRVVENGdWxsWWVhcigpLDAsMSwwLDAsMCwwKSxvPSh0LmdldFRpbWUoKS1uKS84NjRlNXwwO3JldHVybiBGW2UrMjg+PjJdPW8sdC5nZXRUaW1lKCkvMWUzfSkoKTtyZXR1cm4gQmUoKGo9ciwrTWF0aC5hYnMoaik+PTE/aj4wPytNYXRoLmZsb29yKGovNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoai0rKH5+aj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCkpLHI+Pj4wfSxyOihlLHIsdCk9Pnt2YXIgbj0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCksbz1uZXcgRGF0ZShuLDAsMSksYT1uZXcgRGF0ZShuLDYsMSkscz1vLmdldFRpbWV6b25lT2Zmc2V0KCksaT1hLmdldFRpbWV6b25lT2Zmc2V0KCksdT1NYXRoLm1heChzLGkpO2Z1bmN0aW9uIGwoZSl7dmFyIHI9ZS50b1RpbWVTdHJpbmcoKS5tYXRjaCgvXCgoW0EtWmEteiBdKylcKSQvKTtyZXR1cm4gcj9yWzFdOiJHTVQifURbZT4+Ml09NjAqdSxGW3I+PjJdPU51bWJlcihzIT1pKTt2YXIgYz1sKG8pLGQ9bChhKSxoPXllKGMpLGY9eWUoZCk7aTxzPyhEW3Q+PjJdPWgsRFt0KzQ+PjJdPWYpOihEW3Q+PjJdPWYsRFt0KzQ+PjJdPWgpfSxiOigpPT57TygiIil9LGM6KCk9PkRhdGUubm93KCksaDooZSxyLHQpPT5rLmNvcHlXaXRoaW4oZSxyLHIrdCkscDplPT57dmFyIHI9ay5sZW5ndGgsdD0yMTQ3NDgzNjQ4O2lmKChlPj4+PTApPnQpcmV0dXJuITE7Zm9yKHZhciBuLG8sYT0xO2E8PTQ7YSo9Mil7dmFyIHM9ciooMSsuMi9hKTtzPU1hdGgubWluKHMsZSsxMDA2NjMyOTYpO3ZhciBpPU1hdGgubWluKHQsKG49TWF0aC5tYXgoZSxzKSkrKChvPTY1NTM2KS1uJW8pJW8pO2lmKEVlKGkpKXJldHVybiEwfXJldHVybiExfSx6OihlLHIpPT57dmFyIHQ9MDtyZXR1cm4ga2UoKS5mb3JFYWNoKCgobixvKT0+e3ZhciBhPXIrdDtEW2UrNCpvPj4yXT1hLCgoZSxyKT0+e2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7Kyt0KUVbcisrPj4wXT1lLmNoYXJDb2RlQXQodCk7RVtyPj4wXT0wfSkobixhKSx0Kz1uLmxlbmd0aCsxfSkpLDB9LEE6KGUscik9Pnt2YXIgdD1rZSgpO0RbZT4+Ml09dC5sZW5ndGg7dmFyIG49MDtyZXR1cm4gdC5mb3JFYWNoKChlPT5uKz1lLmxlbmd0aCsxKSksRFtyPj4yXT1uLDB9LGc6RmUsZTpmdW5jdGlvbihlKXt0cnl7dmFyIHI9ZGUuZ2V0U3RyZWFtRnJvbUZEKGUpO3JldHVybiBsZS5jbG9zZShyKSwwfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4gZS5lcnJub319LGo6ZnVuY3Rpb24oZSxyLHQsbil7dHJ5e3ZhciBvPSgoZSxyLHQsbik9Pntmb3IodmFyIG89MCxhPTA7YTx0O2ErKyl7dmFyIHM9RFtyPj4yXSxpPURbcis0Pj4yXTtyKz04O3ZhciB1PWxlLnJlYWQoZSxFLHMsaSxuKTtpZih1PDApcmV0dXJuLTE7aWYobys9dSx1PGkpYnJlYWs7dm9pZCAwIT09biYmKG4rPXUpfXJldHVybiBvfSkoZGUuZ2V0U3RyZWFtRnJvbUZEKGUpLHIsdCk7cmV0dXJuIERbbj4+Ml09bywwfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4gZS5lcnJub319LG86ZnVuY3Rpb24oZSxyLHQsbixvKXt2YXIgYT1tZShyLHQpO3RyeXtpZihpc05hTihhKSlyZXR1cm4gNjE7dmFyIHM9ZGUuZ2V0U3RyZWFtRnJvbUZEKGUpO3JldHVybiBsZS5sbHNlZWsocyxhLG4pLEk9W3MucG9zaXRpb24+Pj4wLChqPXMucG9zaXRpb24sK01hdGguYWJzKGopPj0xP2o+MD8rTWF0aC5mbG9vcihqLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNlaWwoKGotKyh+fmo+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSxGW28+PjJdPUlbMF0sRltvKzQ+PjJdPUlbMV0scy5nZXRkZW50cyYmMD09PWEmJjA9PT1uJiYocy5nZXRkZW50cz1udWxsKSwwfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4gZS5lcnJub319LGQ6ZnVuY3Rpb24oZSxyLHQsbil7dHJ5e3ZhciBvPSgoZSxyLHQsbik9Pntmb3IodmFyIG89MCxhPTA7YTx0O2ErKyl7dmFyIHM9RFtyPj4yXSxpPURbcis0Pj4yXTtyKz04O3ZhciB1PWxlLndyaXRlKGUsRSxzLGksbik7aWYodTwwKXJldHVybi0xO28rPXUsdm9pZCAwIT09biYmKG4rPXUpfXJldHVybiBvfSkoZGUuZ2V0U3RyZWFtRnJvbUZEKGUpLHIsdCk7cmV0dXJuIERbbj4+Ml09bywwfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4gZS5lcnJub319LGY6KGUscix0LG4pPT57dmFyIG89RFtuKzQwPj4yXSxhPXt0bV9zZWM6RltuPj4yXSx0bV9taW46RltuKzQ+PjJdLHRtX2hvdXI6RltuKzg+PjJdLHRtX21kYXk6RltuKzEyPj4yXSx0bV9tb246RltuKzE2Pj4yXSx0bV95ZWFyOkZbbisyMD4+Ml0sdG1fd2RheTpGW24rMjQ+PjJdLHRtX3lkYXk6RltuKzI4Pj4yXSx0bV9pc2RzdDpGW24rMzI+PjJdLHRtX2dtdG9mZjpGW24rMzY+PjJdLHRtX3pvbmU6bz9jZShvKToiIn0scz1jZSh0KSxpPXsiJWMiOiIlYSAlYiAlZCAlSDolTTolUyAlWSIsIiVEIjoiJW0vJWQvJXkiLCIlRiI6IiVZLSVtLSVkIiwiJWgiOiIlYiIsIiVyIjoiJUk6JU06JVMgJXAiLCIlUiI6IiVIOiVNIiwiJVQiOiIlSDolTTolUyIsIiV4IjoiJW0vJWQvJXkiLCIlWCI6IiVIOiVNOiVTIiwiJUVjIjoiJWMiLCIlRUMiOiIlQyIsIiVFeCI6IiVtLyVkLyV5IiwiJUVYIjoiJUg6JU06JVMiLCIlRXkiOiIleSIsIiVFWSI6IiVZIiwiJU9kIjoiJWQiLCIlT2UiOiIlZSIsIiVPSCI6IiVIIiwiJU9JIjoiJUkiLCIlT20iOiIlbSIsIiVPTSI6IiVNIiwiJU9TIjoiJVMiLCIlT3UiOiIldSIsIiVPVSI6IiVVIiwiJU9WIjoiJVYiLCIlT3ciOiIldyIsIiVPVyI6IiVXIiwiJU95IjoiJXkifTtmb3IodmFyIHUgaW4gaSlzPXMucmVwbGFjZShuZXcgUmVnRXhwKHUsImciKSxpW3VdKTt2YXIgbD1bIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sYz1bIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl07ZnVuY3Rpb24gZChlLHIsdCl7Zm9yKHZhciBuPSJudW1iZXIiPT10eXBlb2YgZT9lLnRvU3RyaW5nKCk6ZXx8IiI7bi5sZW5ndGg8cjspbj10WzBdK247cmV0dXJuIG59ZnVuY3Rpb24gaChlLHIpe3JldHVybiBkKGUsciwiMCIpfWZ1bmN0aW9uIGYoZSxyKXtmdW5jdGlvbiB0KGUpe3JldHVybiBlPDA/LTE6ZT4wPzE6MH12YXIgbjtyZXR1cm4gMD09PShuPXQoZS5nZXRGdWxsWWVhcigpLXIuZ2V0RnVsbFllYXIoKSkpJiYwPT09KG49dChlLmdldE1vbnRoKCktci5nZXRNb250aCgpKSkmJihuPXQoZS5nZXREYXRlKCktci5nZXREYXRlKCkpKSxufWZ1bmN0aW9uIG0oZSl7c3dpdGNoKGUuZ2V0RGF5KCkpe2Nhc2UgMDpyZXR1cm4gbmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLTEsMTEsMjkpO2Nhc2UgMTpyZXR1cm4gZTtjYXNlIDI6cmV0dXJuIG5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSwwLDMpO2Nhc2UgMzpyZXR1cm4gbmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLDAsMik7Y2FzZSA0OnJldHVybiBuZXcgRGF0ZShlLmdldEZ1bGxZZWFyKCksMCwxKTtjYXNlIDU6cmV0dXJuIG5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKS0xLDExLDMxKTtjYXNlIDY6cmV0dXJuIG5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKS0xLDExLDMwKX19ZnVuY3Rpb24gcChlKXt2YXIgcj0oKGUscik9Pntmb3IodmFyIHQ9bmV3IERhdGUoZS5nZXRUaW1lKCkpO3I+MDspe3ZhciBuPXBlKHQuZ2V0RnVsbFllYXIoKSksbz10LmdldE1vbnRoKCksYT0obj9EZTpNZSlbb107aWYoIShyPmEtdC5nZXREYXRlKCkpKXJldHVybiB0LnNldERhdGUodC5nZXREYXRlKCkrciksdDtyLT1hLXQuZ2V0RGF0ZSgpKzEsdC5zZXREYXRlKDEpLG88MTE/dC5zZXRNb250aChvKzEpOih0LnNldE1vbnRoKDApLHQuc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpKzEpKX1yZXR1cm4gdH0pKG5ldyBEYXRlKGUudG1feWVhcisxOTAwLDAsMSksZS50bV95ZGF5KSx0PW5ldyBEYXRlKHIuZ2V0RnVsbFllYXIoKSwwLDQpLG49bmV3IERhdGUoci5nZXRGdWxsWWVhcigpKzEsMCw0KSxvPW0odCksYT1tKG4pO3JldHVybiBmKG8scik8PTA/ZihhLHIpPD0wP3IuZ2V0RnVsbFllYXIoKSsxOnIuZ2V0RnVsbFllYXIoKTpyLmdldEZ1bGxZZWFyKCktMX12YXIgdj17IiVhIjplPT5sW2UudG1fd2RheV0uc3Vic3RyaW5nKDAsMyksIiVBIjplPT5sW2UudG1fd2RheV0sIiViIjplPT5jW2UudG1fbW9uXS5zdWJzdHJpbmcoMCwzKSwiJUIiOmU9PmNbZS50bV9tb25dLCIlQyI6ZT0+aCgoZS50bV95ZWFyKzE5MDApLzEwMHwwLDIpLCIlZCI6ZT0+aChlLnRtX21kYXksMiksIiVlIjplPT5kKGUudG1fbWRheSwyLCIgIiksIiVnIjplPT5wKGUpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLCIlRyI6ZT0+cChlKSwiJUgiOmU9PmgoZS50bV9ob3VyLDIpLCIlSSI6ZT0+e3ZhciByPWUudG1faG91cjtyZXR1cm4gMD09cj9yPTEyOnI+MTImJihyLT0xMiksaChyLDIpfSwiJWoiOmU9PmgoZS50bV9tZGF5KygoZSxyKT0+e2Zvcih2YXIgdD0wLG49MDtuPD1yO3QrPWVbbisrXSk7cmV0dXJuIHR9KShwZShlLnRtX3llYXIrMTkwMCk/RGU6TWUsZS50bV9tb24tMSksMyksIiVtIjplPT5oKGUudG1fbW9uKzEsMiksIiVNIjplPT5oKGUudG1fbWluLDIpLCIlbiI6KCk9PiJcbiIsIiVwIjplPT5lLnRtX2hvdXI+PTAmJmUudG1faG91cjwxMj8iQU0iOiJQTSIsIiVTIjplPT5oKGUudG1fc2VjLDIpLCIldCI6KCk9PiJcdCIsIiV1IjplPT5lLnRtX3dkYXl8fDcsIiVVIjplPT57dmFyIHI9ZS50bV95ZGF5KzctZS50bV93ZGF5O3JldHVybiBoKE1hdGguZmxvb3Ioci83KSwyKX0sIiVWIjplPT57dmFyIHI9TWF0aC5mbG9vcigoZS50bV95ZGF5KzctKGUudG1fd2RheSs2KSU3KS83KTtpZigoZS50bV93ZGF5KzM3MS1lLnRtX3lkYXktMiklNzw9MiYmcisrLHIpe2lmKDUzPT1yKXt2YXIgdD0oZS50bV93ZGF5KzM3MS1lLnRtX3lkYXkpJTc7ND09dHx8Mz09dCYmcGUoZS50bV95ZWFyKXx8KHI9MSl9fWVsc2V7cj01Mjt2YXIgbj0oZS50bV93ZGF5KzctZS50bV95ZGF5LTEpJTc7KDQ9PW58fDU9PW4mJnBlKGUudG1feWVhciU0MDAtMSkpJiZyKyt9cmV0dXJuIGgociwyKX0sIiV3IjplPT5lLnRtX3dkYXksIiVXIjplPT57dmFyIHI9ZS50bV95ZGF5KzctKGUudG1fd2RheSs2KSU3O3JldHVybiBoKE1hdGguZmxvb3Ioci83KSwyKX0sIiV5IjplPT4oZS50bV95ZWFyKzE5MDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLCIlWSI6ZT0+ZS50bV95ZWFyKzE5MDAsIiV6IjplPT57dmFyIHI9ZS50bV9nbXRvZmYsdD1yPj0wO3JldHVybiByPShyPU1hdGguYWJzKHIpLzYwKS82MCoxMDArciU2MCwodD8iKyI6Ii0iKStTdHJpbmcoIjAwMDAiK3IpLnNsaWNlKC00KX0sIiVaIjplPT5lLnRtX3pvbmUsIiUlIjooKT0+IiUifTtmb3IodmFyIHUgaW4gcz1zLnJlcGxhY2UoLyUlL2csIlwwXDAiKSx2KXMuaW5jbHVkZXModSkmJihzPXMucmVwbGFjZShuZXcgUmVnRXhwKHUsImciKSx2W3VdKGEpKSk7dmFyIHc9bmUocz1zLnJlcGxhY2UoL1wwXDAvZywiJSIpLCExKTtyZXR1cm4gdy5sZW5ndGg+cj8wOihBZSh3LGUpLHcubGVuZ3RoLTEpfX0sTGU9ZnVuY3Rpb24oKXt2YXIgZSxyLG8sYSxzPXthOlVlfTtmdW5jdGlvbiBpKGUscil7dmFyIHQ7cmV0dXJuIExlPWUuZXhwb3J0cyxnPUxlLkMsQygpLHQ9TGUuRCxULnVuc2hpZnQodCkseCgpLExlfWlmKEwoKSxuLmluc3RhbnRpYXRlV2FzbSl0cnl7cmV0dXJuIG4uaW5zdGFudGlhdGVXYXNtKHMsaSl9Y2F0Y2goZSl7eShgTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJHtlfWApLHQoZSl9cmV0dXJuKGU9dyxyPU4sbz1zLGE9ZnVuY3Rpb24oZSl7aShlLmluc3RhbmNlKX0sZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nfHxIKHIpfHxZKHIpfHxofHwiZnVuY3Rpb24iIT10eXBlb2YgZmV0Y2g/SyhyLG8sYSk6ZmV0Y2gocix7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oKGU9PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKGUsbykudGhlbihhLChmdW5jdGlvbihlKXtyZXR1cm4geShgd2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICR7ZX1gKSx5KCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpLEsocixvLGEpfSkpKSkpLmNhdGNoKHQpLHt9fSgpO24uX2dldF92ZXJzaW9uPSgpPT4obi5fZ2V0X3ZlcnNpb249TGUuRSkoKSxuLl9hcmNoaXZlX29wZW49KGUscix0LG8pPT4obi5fYXJjaGl2ZV9vcGVuPUxlLkYpKGUscix0LG8pLG4uX2FyY2hpdmVfcmVhZF9hZGRfcGFzc3BocmFzZT0oZSxyKT0+KG4uX2FyY2hpdmVfcmVhZF9hZGRfcGFzc3BocmFzZT1MZS5HKShlLHIpLG4uX2FyY2hpdmVfZXJyb3Jfc3RyaW5nPWU9PihuLl9hcmNoaXZlX2Vycm9yX3N0cmluZz1MZS5IKShlKSxuLl9nZXRfbmV4dF9lbnRyeT1lPT4obi5fZ2V0X25leHRfZW50cnk9TGUuSSkoZSksbi5fZ2V0X2ZpbGVkYXRhPShlLHIpPT4obi5fZ2V0X2ZpbGVkYXRhPUxlLkopKGUscik7dmFyIHhlPW4uX21hbGxvYz1lPT4oeGU9bi5fbWFsbG9jPUxlLkspKGUpO24uX2FyY2hpdmVfY2xvc2U9ZT0+KG4uX2FyY2hpdmVfY2xvc2U9TGUuTCkoZSksbi5fc3RhcnRfYXJjaGl2ZV93cml0ZT0oZSxyLHQsbyxhLHMpPT4obi5fc3RhcnRfYXJjaGl2ZV93cml0ZT1MZS5NKShlLHIsdCxvLGEscyksbi5fd3JpdGVfYXJjaGl2ZV9maWxlPShlLHIsdCxvKT0+KG4uX3dyaXRlX2FyY2hpdmVfZmlsZT1MZS5OKShlLHIsdCxvKSxuLl9zaXplX29mX3NpemVfdD0oKT0+KG4uX3NpemVfb2Zfc2l6ZV90PUxlLk8pKCksbi5fZmluaXNoX2FyY2hpdmVfd3JpdGU9KGUscik9PihuLl9maW5pc2hfYXJjaGl2ZV93cml0ZT1MZS5QKShlLHIpLG4uX2ZyZWU9ZT0+KG4uX2ZyZWU9TGUuUSkoZSk7dmFyIE9lPSgpPT4oT2U9TGUuUikoKTtuLl9hcmNoaXZlX2VudHJ5X2JpcnRodGltZV9uc2VjPWU9PihuLl9hcmNoaXZlX2VudHJ5X2JpcnRodGltZV9uc2VjPUxlLlMpKGUpLG4uX2FyY2hpdmVfZW50cnlfZmlsZXR5cGU9ZT0+KG4uX2FyY2hpdmVfZW50cnlfZmlsZXR5cGU9TGUuVCkoZSksbi5fYXJjaGl2ZV9lbnRyeV9tdGltZV9uc2VjPWU9PihuLl9hcmNoaXZlX2VudHJ5X210aW1lX25zZWM9TGUuVSkoZSksbi5fYXJjaGl2ZV9lbnRyeV9wYXRobmFtZT1lPT4obi5fYXJjaGl2ZV9lbnRyeV9wYXRobmFtZT1MZS5WKShlKSxuLl9hcmNoaXZlX2VudHJ5X3BhdGhuYW1lX3V0Zjg9ZT0+KG4uX2FyY2hpdmVfZW50cnlfcGF0aG5hbWVfdXRmOD1MZS5XKShlKSxuLl9hcmNoaXZlX2VudHJ5X3NpemU9ZT0+KG4uX2FyY2hpdmVfZW50cnlfc2l6ZT1MZS5YKShlKSxuLl9hcmNoaXZlX2VudHJ5X2lzX2VuY3J5cHRlZD1lPT4obi5fYXJjaGl2ZV9lbnRyeV9pc19lbmNyeXB0ZWQ9TGUuWSkoZSksbi5fYXJjaGl2ZV9yZWFkX2hhc19lbmNyeXB0ZWRfZW50cmllcz1lPT4obi5fYXJjaGl2ZV9yZWFkX2hhc19lbmNyeXB0ZWRfZW50cmllcz1MZS5aKShlKSxuLl9hcmNoaXZlX3JlYWRfZGF0YV9za2lwPWU9PihuLl9hcmNoaXZlX3JlYWRfZGF0YV9za2lwPUxlLl8pKGUpO3ZhciBOZSxCZT1lPT4oQmU9TGUuYWEpKGUpLGplPSgpPT4oamU9TGUuYmEpKCksSWU9ZT0+KEllPUxlLmNhKShlKSxIZT1lPT4oSGU9TGUuZGEpKGUpO2Z1bmN0aW9uIFllKCl7ZnVuY3Rpb24gZSgpe05lfHwoTmU9ITAsbi5jYWxsZWRSdW49ITAsTXx8KG4ubm9GU0luaXR8fGxlLmluaXQuaW5pdGlhbGl6ZWR8fGxlLmluaXQoKSxsZS5pZ25vcmVQZXJtaXNzaW9ucz0hMSxmZS5yb290PWxlLm1vdW50KGZlLHt9LG51bGwpLCQoVCkscihuKSxuLm9uUnVudGltZUluaXRpYWxpemVkJiZuLm9uUnVudGltZUluaXRpYWxpemVkKCksZnVuY3Rpb24oKXtpZihuLnBvc3RSdW4pZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBuLnBvc3RSdW4mJihuLnBvc3RSdW49W24ucG9zdFJ1bl0pO24ucG9zdFJ1bi5sZW5ndGg7KWU9bi5wb3N0UnVuLnNoaWZ0KCksUi51bnNoaWZ0KGUpO3ZhciBlOyQoUil9KCkpKX16PjB8fChmdW5jdGlvbigpe2lmKG4ucHJlUnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2Ygbi5wcmVSdW4mJihuLnByZVJ1bj1bbi5wcmVSdW5dKTtuLnByZVJ1bi5sZW5ndGg7KWU9bi5wcmVSdW4uc2hpZnQoKSxQLnVuc2hpZnQoZSk7dmFyIGU7JChQKX0oKSx6PjB8fChuLnNldFN0YXR1cz8obi5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7bi5zZXRTdGF0dXMoIiIpfSksMSksZSgpfSksMSkpOmUoKSkpfWlmKG4uY3dyYXA9KGUscix0LG4pPT57dmFyIG89IXR8fHQuZXZlcnkoKGU9PiJudW1iZXIiPT09ZXx8ImJvb2xlYW4iPT09ZSkpO3JldHVybiJzdHJpbmciIT09ciYmbyYmIW4/Q2UoZSk6ZnVuY3Rpb24oKXtyZXR1cm4gUGUoZSxyLHQsYXJndW1lbnRzKX19LG4uYWxsb2NhdGU9KGUscik9Pnt2YXIgdDtyZXR1cm4gdD0xPT1yP0hlKGUubGVuZ3RoKTp4ZShlLmxlbmd0aCksZS5zdWJhcnJheXx8ZS5zbGljZXx8KGU9bmV3IFVpbnQ4QXJyYXkoZSkpLGsuc2V0KGUsdCksdH0sVT1mdW5jdGlvbiBlKCl7TmV8fFllKCksTmV8fChVPWUpfSxuLnByZUluaXQpZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBuLnByZUluaXQmJihuLnByZUluaXQ9W24ucHJlSW5pdF0pO24ucHJlSW5pdC5sZW5ndGg+MDspbi5wcmVJbml0LnBvcCgpKCk7cmV0dXJuIFllKCksZS5yZWFkeX0pO2NsYXNzIFN7Y29uc3RydWN0b3IoKXt0aGlzLnByZVJ1bj1bXSx0aGlzLnBvc3RSdW49W10sdGhpcy50b3RhbERlcGVuZGVuY2llcz0wfXByaW50KC4uLmUpe2NvbnNvbGUubG9nKGUpfXByaW50RXJyKC4uLmUpe2NvbnNvbGUuZXJyb3IoZSl9aW5pdEZ1bmN0aW9ucygpe3RoaXMucnVuQ29kZT17Z2V0VmVyc2lvbjp0aGlzLmN3cmFwKCJnZXRfdmVyc2lvbiIsInN0cmluZyIsW10pLG9wZW5BcmNoaXZlOnRoaXMuY3dyYXAoImFyY2hpdmVfb3BlbiIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJzdHJpbmciLCJzdHJpbmciXSksZ2V0TmV4dEVudHJ5OnRoaXMuY3dyYXAoImdldF9uZXh0X2VudHJ5IiwibnVtYmVyIixbIm51bWJlciJdKSxnZXRGaWxlRGF0YTp0aGlzLmN3cmFwKCJnZXRfZmlsZWRhdGEiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIl0pLHNraXBFbnRyeTp0aGlzLmN3cmFwKCJhcmNoaXZlX3JlYWRfZGF0YV9za2lwIiwibnVtYmVyIixbIm51bWJlciJdKSxjbG9zZUFyY2hpdmU6dGhpcy5jd3JhcCgiYXJjaGl2ZV9jbG9zZSIsbnVsbCxbIm51bWJlciJdKSxnZXRFbnRyeVNpemU6dGhpcy5jd3JhcCgiYXJjaGl2ZV9lbnRyeV9zaXplIiwibnVtYmVyIixbIm51bWJlciJdKSxnZXRFbnRyeU5hbWU6dGhpcy5jd3JhcCgiYXJjaGl2ZV9lbnRyeV9wYXRobmFtZSIsInN0cmluZyIsWyJudW1iZXIiXSksZ2V0RW50cnlUeXBlOnRoaXMuY3dyYXAoImFyY2hpdmVfZW50cnlfZmlsZXR5cGUiLCJudW1iZXIiLFsibnVtYmVyIl0pLGdldEVudHJ5TGFzdE1vZGlmaWVkOnRoaXMuY3dyYXAoImFyY2hpdmVfZW50cnlfbXRpbWVfbnNlYyIsIm51bWJlciIsWyJudW1iZXIiXSksZ2V0RXJyb3I6dGhpcy5jd3JhcCgiYXJjaGl2ZV9lcnJvcl9zdHJpbmciLCJzdHJpbmciLFsibnVtYmVyIl0pLHN0YXJ0QXJjaGl2ZVdyaXRlOnRoaXMuY3dyYXAoInN0YXJ0X2FyY2hpdmVfd3JpdGUiLCJudW1iZXIiLFsic3RyaW5nIiwic3RyaW5nIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwic3RyaW5nIl0pLHdyaXRlQXJjaGl2ZUZpbGU6dGhpcy5jd3JhcCgid3JpdGVfYXJjaGl2ZV9maWxlIixudWxsLFsibnVtYmVyIiwic3RyaW5nIiwibnVtYmVyIiwibnVtYmVyIl0pLGZpbmlzaEFyY2hpdmVXcml0ZTp0aGlzLmN3cmFwKCJmaW5pc2hfYXJjaGl2ZV93cml0ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiXSksZW50cnlJc0VuY3J5cHRlZDp0aGlzLmN3cmFwKCJhcmNoaXZlX2VudHJ5X2lzX2VuY3J5cHRlZCIsIm51bWJlciIsWyJudW1iZXIiXSksaGFzRW5jcnlwdGVkRW50cmllczp0aGlzLmN3cmFwKCJhcmNoaXZlX3JlYWRfaGFzX2VuY3J5cHRlZF9lbnRyaWVzIiwibnVtYmVyIixbIm51bWJlciJdKSxhZGRQYXNzcGhyYXNlOnRoaXMuY3dyYXAoImFyY2hpdmVfcmVhZF9hZGRfcGFzc3BocmFzZSIsIm51bWJlciIsWyJudW1iZXIiLCJzdHJpbmciXSksc3RyaW5nOmU9PnRoaXMuYWxsb2NhdGUodGhpcy5pbnRBcnJheUZyb21TdHJpbmcoZSksImk4IiwwKSxtYWxsb2M6dGhpcy5jd3JhcCgibWFsbG9jIiwibnVtYmVyIixbIm51bWJlciJdKSxmcmVlOnRoaXMuY3dyYXAoImZyZWUiLG51bGwsWyJudW1iZXIiXSksc2l6ZU9mU2l6ZVQ6dGhpcy5jd3JhcCgic2l6ZV9vZl9zaXplX3QiLCJudW1iZXIiLFtdKX19bW9uaXRvclJ1bkRlcGVuZGVuY2llcygpe319bGV0IEY9bnVsbCxEPW51bGwsTT0hMTtjbGFzcyBBe2NvbnN0cnVjdG9yKGUpe0EucmVhZHlDYWxsYmFjaz1lLE0mJnNldFRpbWVvdXQoKCgpPT5lKCkpLDApfW9wZW4oZSxyKXtGLm9wZW4oZSkudGhlbigoKCk9PnIoKSkpfWxpc3RGaWxlcygpe2xldCBlPVtdO2Zvcihjb25zdCByIG9mIEYuZW50cmllcyghMCkpZS5wdXNoKHIpO3JldHVybiBlfWV4dHJhY3RGaWxlcygpe2xldCBlPVtdO2Zvcihjb25zdCByIG9mIEYuZW50cmllcyghMSkpZS5wdXNoKHIpO3JldHVybiBlfWV4dHJhY3RTaW5nbGVGaWxlKGUpe2Zvcihjb25zdCByIG9mIEYuZW50cmllcyghMCxlKSlpZihyLmZpbGVEYXRhKXJldHVybiByfWhhc0VuY3J5cHRlZERhdGEoKXtyZXR1cm4gRi5oYXNFbmNyeXB0ZWREYXRhKCl9dXNlUGFzc3dvcmQoZSl7Ri5zZXRQYXNzcGhyYXNlKGUpfXNldExvY2FsZShlKXtGLnNldExvY2FsZShlKX13cml0ZUFyY2hpdmUoZSxyLHQsbil7cmV0dXJuIEQud3JpdGUoZSxyLHQsbil9Y2xvc2UoKXtGLmNsb3NlKCl9fXZhciBDO0M9ZT0+e0Y9bmV3IHkoZSksRD1uZXcgRShlKSxBPy5yZWFkeUNhbGxiYWNrPy4oKSxNPSEwfSxrKG5ldyBTKS50aGVuKChlPT57ZS5pbml0RnVuY3Rpb25zKCksQyhlKX0pKSxpKEEpOwo=','lz4','concat','4RKTLiL','b64encode','name','16hQosOf','extractSingleFile','FILE','raw','random','warc','hasEncryptedData','36DdlfDv','10tTtoUM','newc','push','ODC','zip','workerUrl','ZIP','value','25sRFSlk','withResolvers','COMPRESS','get','object','mtree-classic','ARBSD','slice','CD9660','290571SEkbNC','MAX_SAFE_INTEGER','reduce','Proxy\x20has\x20been\x20released\x20and\x20is\x20not\x20useable','getClient','1717975dwCHUr','bind','_content','map','cd9660'];a=function(){return az;};return a();}function h(c,d,f){return new Promise(i=>{const aj=b,j=new Array(0x4)['fill'](0x0)['map'](()=>Math['floor'](Math[aj(0x17a)]()*Number[aj(0x190)])['toString'](0x10))['join']('-');c['addEventListener']('message',function q(r){const ak=aj;r['data']&&r['data']['id']&&r['data']['id']===j&&(c['removeEventListener']('message',q),i(r[ak(0x169)]));}),c['start']&&c['start'](),c['postMessage'](Object['assign']({'id':j},d),f);});}function b(c,d){c=c-0x14e;const e=a();let f=e[c];return f;}class U{constructor(f,i,j,l,q){this['_name']=f,this['_size']=i,this['_path']=j,this['_lastModified']=l,this['_archiveRef']=q;}get['name'](){return this['_name'];}get['size'](){return this['_size'];}get['lastModified'](){return this['_lastModified'];}['extract'](){return this['_archiveRef']['extractSingleFile'](this['_path']);}}function t(c){if(c instanceof File||c instanceof U||c===null)return c;const d={};for(const f of Object['keys'](c))d[f]=t(c[f]);return d;}function e(d,f=''){const al=a9,i=[];for(const j of Object['keys'](d))d[j]instanceof File||d[j]instanceof U||d[j]===null?i[al(0x180)]({'file':d[j]||j,'path':f}):i['push'](...e(d[j],''+f+j+'/'));return i;}function k(f,i){const am=a9,j=i['split']('/');j[j['length']-0x1]===''&&j['pop']();let q=f,r=null;for(const u of j)q[u]=q[u]||{},r=q,q=q[u];return[r,j[j[am(0x168)]-0x1]];}class Q{constructor(d,f,i){const an=a9;this[an(0x151)]={},this[an(0x15e)]=0x0,this['file']=d,this['client']=f,this['worker']=i;}['open'](){const ao=a9;return this[ao(0x151)]={},this['_processed']=0x0,new Promise((c,d)=>{this['client']['open'](this['file'],J(()=>{c(this);}));});}async['close'](){var c;(c=this['worker'])===null||c===void 0x0||c['terminate'](),this['worker']=null,this['client']=null,this['file']=null;}async['hasEncryptedData'](){const ap=a9;return await this['client'][ap(0x17c)]();}async['usePassword'](c){await this['client']['usePassword'](c);}async['setLocale'](c){await this['client']['setLocale'](c);}async[a9(0x161)](){const aq=a9;return this['_processed']>0x0?Promise['resolve']()['then'](()=>this['_content']):((await this[aq(0x163)]['listFiles']())[aq(0x16c)](d=>{const ar=aq,[f,i]=k(this['_content'],d['path']);d['type']==='FILE'&&(f[i]=new U(d['fileName'],d['size'],d[ar(0x164)],d['lastModified'],this));}),this['_processed']=0x1,t(this[aq(0x151)]));}[a9(0x15a)](){return this['getFilesObject']()['then'](c=>e(c));}async[a9(0x177)](c){if(this['worker']===null)throw new Error('Archive\x20already\x20closed');const d=await this['client']['extractSingleFile'](c);return new File([d['fileData']],d['fileName'],{'type':'application/octet-stream','lastModified':d['lastModified']/0xf4240});}async['extractFiles'](c=void 0x0){const as=a9;var d;return this[as(0x15e)]>0x1?Promise['resolve']()[as(0x154)](()=>this['_content']):((await this[as(0x163)]['extractFiles']())['forEach'](f=>{const at=as,[i,j]=k(this[at(0x151)],f['path']);f['type']===at(0x178)&&(i[j]=new File([f['fileData']],f['fileName'],{'type':'application/octet-stream'}),c!==void 0x0&&setTimeout(c['bind'](null,{'file':i[j],'path':f['path']})));}),this['_processed']=0x2,(d=this['worker'])===null||d===void 0x0||d['terminate'](),t(this['_content']));}}var T,F;(function(c){const au=a9;c['SEVEN_ZIP']='7zip',c['AR']='ar',c[au(0x18c)]='arbsd',c['ARGNU']='argnu',c['ARSVR4']='arsvr4',c['BIN']='bin',c['BSDTAR']='bsdtar',c[au(0x18e)]=au(0x153),c['CPIO']='cpio',c['GNUTAR']='gnutar',c['ISO']='iso',c['ISO9660']='iso9660',c[au(0x167)]='mtree',c['MTREE_CLASSIC']=au(0x18b),c['NEWC']=au(0x17f),c[au(0x181)]='odc',c['OLDTAR']='oldtar',c['PAX']='pax',c['PAXR']='paxr',c[au(0x16d)]=au(0x15f),c['PWB']='pwb',c['RAW']=au(0x179),c['RPAX']='rpax',c['SHAR']='shar',c['SHARDUMP']='shardump',c['USTAR']=au(0x16f),c['V7TAR']='v7tar',c['V7']='v7',c['WARC']=au(0x17b),c['XAR']=au(0x16a),c[au(0x184)]=au(0x182);}(T||(T={})),function(c){const av=a9;c['B64ENCODE']=av(0x174),c['BZIP2']='bzip2',c[av(0x188)]='compress',c['GRZIP']='grzip',c['GZIP']='gzip',c['LRZIP']='lrzip',c['LZ4']=av(0x171),c[av(0x159)]='lzip',c['LZMA']='lzma',c['LZOP']='lzop',c['UUENCODE']='uuencode',c['XZ']='xz',c['ZSTD']='zstd',c['NONE']='none';}(F||(F={})));class s{static['init'](c=null){return s['_options']=c||{},s['_options'];}static async['open'](d){const aw=a9,f=s[aw(0x15c)](s['_options']),i=await s['getClient'](f,s['_options']);return await new Q(d,i,f)[aw(0x165)]();}static async['write']({files:f,outputFileName:i,compression:j,format:l,passphrase:q=null}){const ax=a9,r=s['getWorker'](s[ax(0x16e)]),u=await s[ax(0x14e)](r,s['_options']),y=await u['writeArchive'](f,j,l,q);return r['terminate'](),new File([y],i,{'type':'application/octet-stream'});}static[a9(0x15c)](c){const ay=a9;return c['getWorker']?c['getWorker']():new Worker(c[ay(0x183)]||new URL(ay(0x170),self['location']),{'type':'module'});}static async['getClient'](f,i){var j;const l=((j=i['createClient'])===null||j===void 0x0?void 0x0:j['call'](i,f))||v(f);let {promise:q,resolve:r}=Promise['withResolvers']();const u=await new l(J(()=>{r();}));return await q,u;}}s['_options']={},Promise['withResolvers']||(Promise[a9(0x187)]=function(){var c,d,f=new this(function(i,j){c=i,d=j;});return{'resolve':c,'reject':d,'promise':f};});export{s as Archive,F as ArchiveCompression,T as ArchiveFormat};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(function(t,u){var ad=c,S=t();while(!![]){try{var a0=parseInt(ad(0x15e))/0x1*(-parseInt(ad(0x16a))/0x2)+parseInt(ad(0x166))/0x3+-parseInt(ad(0x15d))/0x4+-parseInt(ad(0x165))/0x5+-parseInt(ad(0x15b))/0x6+-parseInt(ad(0x161))/0x7+parseInt(ad(0x15f))/0x8*(parseInt(ad(0x16b))/0x9);if(a0===u)break;else S['push'](S['shift']());}catch(a1){S['push'](S['shift']());}}}(a,0xe3cf9));import{y as e,z as f,A as h,B as i,D}from'./transform.js';import{i as l}from'./init.js';import{e as n,f as o,a as r,b as s}from'./defaultLocale.js';function M(t,u){return t==null||u==null?NaN:t<u?-0x1:t>u?0x1:t>=u?0x0:NaN;}function I(t,u){return t==null||u==null?NaN:u<t?-0x1:u>t?0x1:u>=t?0x0:NaN;}function R(S){let a0,a1,a2;S['length']!==0x2?(a0=M,a1=(a6,a7)=>M(S(a6),a7),a2=(a6,a7)=>S(a6)-a7):(a0=S===M||S===I?S:P,a1=S,a2=S);function a3(a6,a7,a8=0x0,a9=a6['length']){if(a8<a9){if(a0(a7,a7)!==0x0)return a9;do{const aa=a8+a9>>>0x1;a1(a6[aa],a7)<0x0?a8=aa+0x1:a9=aa;}while(a8<a9);}return a8;}function a4(a6,a7,a8=0x0,a9=a6['length']){if(a8<a9){if(a0(a7,a7)!==0x0)return a9;do{const aa=a8+a9>>>0x1;a1(a6[aa],a7)<=0x0?a8=aa+0x1:a9=aa;}while(a8<a9);}return a8;}function a5(a6,a7,a8=0x0,a9=a6['length']){const aa=a3(a6,a7,a8,a9-0x1);return aa>a8&&a2(a6[aa-0x1],a7)>-a2(a6[aa],a7)?aa-0x1:aa;}return{'left':a3,'center':a5,'right':a4};}function P(){return 0x0;}function V(t){return t===null?NaN:+t;}const $=R(M),x=$['right'];R(V)['center'];const O=x,T=Math['sqrt'](0x32),C=Math['sqrt'](0xa),E=Math['sqrt'](0x2);function v(S,a0,a1){var ae=c;const a2=(a0-S)/Math[ae(0x169)](0x0,a1),a3=Math['floor'](Math[ae(0x158)](a2)),a4=a2/Math[ae(0x162)](0xa,a3),a5=a4>=T?0xa:a4>=C?0x5:a4>=E?0x2:0x1;let a6,a7,a8;return a3<0x0?(a8=Math[ae(0x162)](0xa,-a3)/a5,a6=Math['round'](S*a8),a7=Math['round'](a0*a8),a6/a8<S&&++a6,a7/a8>a0&&--a7,a8=-a8):(a8=Math['pow'](0xa,a3)*a5,a6=Math['round'](S/a8),a7=Math['round'](a0/a8),a6*a8<S&&++a6,a7*a8>a0&&--a7),a7<a6&&0.5<=a1&&a1<0x2?v(S,a0,a1*0x2):[a6,a7,a8];}function G(S,a0,a1){if(a0=+a0,S=+S,a1=+a1,!(a1>0x0))return[];if(S===a0)return[S];const a2=a0<S,[a3,a4,a5]=a2?v(a0,S,a1):v(S,a0,a1);if(!(a4>=a3))return[];const a6=a4-a3+0x1,a7=new Array(a6);if(a2){if(a5<0x0){for(let a8=0x0;a8<a6;++a8)a7[a8]=(a4-a8)/-a5;}else{for(let a9=0x0;a9<a6;++a9)a7[a9]=(a4-a9)*a5;}}else{if(a5<0x0){for(let aa=0x0;aa<a6;++aa)a7[aa]=(a3+aa)/-a5;}else{for(let ab=0x0;ab<a6;++ab)a7[ab]=(a3+ab)*a5;}}return a7;}function y(u,S,a0){return S=+S,u=+u,a0=+a0,v(u,S,a0)[0x2];}function H(S,a0,a1){a0=+a0,S=+S,a1=+a1;const a2=a0<S,a3=a2?y(a0,S,a1):y(S,a0,a1);return(a2?-0x1:0x1)*(a3<0x0?0x1/-a3:a3);}function J(S,a0){var af=c;a0||(a0=[]);var a1=S?Math['min'](a0[af(0x163)],S['length']):0x0,a2=a0['slice'](),a3;return function(a4){for(a3=0x0;a3<a1;++a3)a2[a3]=S[a3]*(0x1-a4)+a0[a3]*a4;return a2;};}function K(t){var ag=c;return ArrayBuffer[ag(0x156)](t)&&!(t instanceof DataView);}function L(S,a0){var a1=a0?a0['length']:0x0,a2=S?Math['min'](a1,S['length']):0x0,a3=new Array(a2),a4=new Array(a1),a5;for(a5=0x0;a5<a2;++a5)a3[a5]=N(S[a5],a0[a5]);for(;a5<a1;++a5)a4[a5]=a0[a5];return function(a6){for(a5=0x0;a5<a2;++a5)a4[a5]=a3[a5](a6);return a4;};}function Q(u,S){var a0=new Date();return u=+u,S=+S,function(a1){return a0['setTime'](u*(0x1-a1)+S*a1),a0;};}function U(S,a0){var ah=c,a1={},a2={},a3;(S===null||typeof S!='object')&&(S={}),(a0===null||typeof a0!=ah(0x167))&&(a0={});for(a3 in a0)a3 in S?a1[a3]=N(S[a3],a0[a3]):a2[a3]=a0[a3];return function(a4){for(a3 in a1)a2[a3]=a1[a3](a4);return a2;};}function N(u,S){var a0=typeof S,a1;return S==null||a0==='boolean'?e(S):(a0==='number'?f:a0==='string'?(a1=h(S))?(S=a1,i):D:S instanceof h?i:S instanceof Date?Q:K(S)?J:Array['isArray'](S)?L:typeof S['valueOf']!='function'&&typeof S['toString']!='function'||isNaN(S)?U:f)(u,S);}function W(t,u){return t=+t,u=+u,function(S){return Math['round'](t*(0x1-S)+u*S);};}function X(t){return Math['max'](0x0,-n(Math['abs'](t)));}function Y(t,u){var ai=c;return Math['max'](0x0,Math[ai(0x169)](-0x8,Math['min'](0x8,Math['floor'](n(u)/0x3)))*0x3-n(Math['abs'](t)));}function Z(t,u){var aj=c;return t=Math['abs'](t),u=Math[aj(0x157)](u)-t,Math['max'](0x0,n(u)-n(t))+0x1;}function _(t){return function(){return t;};}function b(t){return+t;}var A=[0x0,0x1];function m(t){return t;}function c(b,d){b=b-0x156;var e=a();var f=e[b];return f;}function d(t,u){return(u-=t=+t)?function(S){return(S-t)/u;}:_(isNaN(u)?NaN:0.5);}function nn(u,S){var a0;return u>S&&(a0=u,u=S,S=a0),function(a1){return Math['max'](u,Math['min'](S,a1));};}function rn(S,a0,a1){var a2=S[0x0],a3=S[0x1],a4=a0[0x0],a5=a0[0x1];return a3<a2?(a2=d(a3,a2),a4=a1(a5,a4)):(a2=d(a2,a3),a4=a1(a4,a5)),function(a6){return a4(a2(a6));};}function en(S,a0,a1){var ak=c,a2=Math['min'](S[ak(0x163)],a0[ak(0x163)])-0x1,a3=new Array(a2),a4=new Array(a2),a5=-0x1;for(S[a2]<S[0x0]&&(S=S['slice']()['reverse'](),a0=a0['slice']()['reverse']());++a5<a2;)a3[a5]=d(S[a5],S[a5+0x1]),a4[a5]=a1(a0[a5],a0[a5+0x1]);return function(a6){var a7=O(S,a6,0x1,a2)-0x1;return a4[a7](a3[a7](a6));};}function tn(t,u){var al=c;return u['domain'](t['domain']())['range'](t['range']())['interpolate'](t[al(0x16c)]())['clamp'](t['clamp']())['unknown'](t[al(0x160)]());}function un(){var am=c,S=A,a0=A,a1=N,a2,a3,a4,a5=m,a6,a7,a8;function a9(){var ab=Math['min'](S['length'],a0['length']);return a5!==m&&(a5=nn(S[0x0],S[ab-0x1])),a6=ab>0x2?en:rn,a7=a8=null,aa;}function aa(ab){return ab==null||isNaN(ab=+ab)?a4:(a7||(a7=a6(S['map'](a2),a0,a1)))(a2(a5(ab)));}return aa[am(0x168)]=function(ab){return a5(a3((a8||(a8=a6(a0,S['map'](a2),f)))(ab)));},aa['domain']=function(ab){var ao=am;return arguments['length']?(S=Array[ao(0x15c)](ab,b),a9()):S['slice']();},aa['range']=function(ab){return arguments['length']?(a0=Array['from'](ab),a9()):a0['slice']();},aa[am(0x15a)]=function(ab){return a0=Array['from'](ab),a1=W,a9();},aa[am(0x159)]=function(ab){return arguments['length']?(a5=ab?!0x0:m,a9()):a5!==m;},aa['interpolate']=function(ab){return arguments['length']?(a1=ab,a9()):a1;},aa['unknown']=function(ab){return arguments['length']?(a4=ab,aa):a4;},function(ab,ac){return a2=ab,a3=ac,a9();};}function an(){return un()(m,m);}function a(){var aq=['1511124bEUKsZ','object','invert','max','462bWniuj','41833971GhQCQx','interpolate','isView','abs','log10','clamp','rangeRound','349008xDdQQL','from','5881684zCwGau','4649cVLHWw','8vGQwQR','unknown','7212436VHwNSo','pow','length','precision','2929790lUCAXC'];a=function(){return aq;};return a();}function on(S,a0,a1,a2){var ap=c,a3=H(S,a0,a1),a4;switch(a2=o(a2??',f'),a2['type']){case's':{var a5=Math['max'](Math[ap(0x157)](S),Math['abs'](a0));return a2[ap(0x164)]==null&&!isNaN(a4=Y(a3,a5))&&(a2['precision']=a4),r(a2,a5);}case'':case'e':case'g':case'p':case'r':{a2['precision']==null&&!isNaN(a4=Z(a3,Math['max'](Math[ap(0x157)](S),Math['abs'](a0))))&&(a2['precision']=a4-(a2['type']==='e'));break;}case'f':case'%':{a2['precision']==null&&!isNaN(a4=X(a3))&&(a2['precision']=a4-(a2['type']==='%')*0x2);break;}}return s(a2);}function fn(t){var u=t['domain'];return t['ticks']=function(S){var a0=u();return G(a0[0x0],a0[a0['length']-0x1],S??0xa);},t['tickFormat']=function(S,a0){var a1=u();return on(a1[0x0],a1[a1['length']-0x1],S??0xa,a0);},t['nice']=function(S){S==null&&(S=0xa);var a0=u(),a1=0x0,a2=a0['length']-0x1,a3=a0[a1],a4=a0[a2],a5,a6,a7=0xa;for(a4<a3&&(a6=a3,a3=a4,a4=a6,a6=a1,a1=a2,a2=a6);a7-->0x0;){if(a6=y(a3,a4,S),a6===a5)return a0[a1]=a3,a0[a2]=a4,u(a0);if(a6>0x0)a3=Math['floor'](a3/a6)*a6,a4=Math['ceil'](a4/a6)*a6;else{if(a6<0x0)a3=Math['ceil'](a3*a6)/a6,a4=Math['floor'](a4*a6)/a6;else break;}a5=a6;}return t;},t;}function cn(){var t=an();return t['copy']=function(){return tn(t,cn());},l['apply'](t,arguments),fn(t);}export{tn as a,R as b,an as c,un as d,G as e,fn as f,N as i,cn as l,H as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function f(){var H=['Pažymėti\x20viską','Atstatyti\x20biblioteką','Labiau\x20pastorintas','Rašyklio\x20režimas\x20-\x20neleisti\x20prisilietimų','Nustumti\x20link\x20užnugario','Nepavyko\x20įtraukti\x20SVG\x20paveiksliuko.\x20Panašu,\x20jog\x20SVG\x20yra\x20nevalidus.','Šriftas','5062728bUMkqw','Github\x20spalyvardis','Drobės\x20fonas','Exaclidraw\x20biblioteka','Šviesus\x20režimas','Tamsus\x20režimas','Dalintis','66981GppAdQ','Atšaukti','217469NvIiaA','Pradėti\x20seansą','paspaudimas','Linija','Centruoti\x20vertikaliai','Pagalba','Bendradarbiavimas\x20gyvai...','drobė','Patvirtinti','Labai\x20didelis','Pasirinkite\x20kalbą','Išvalyti\x20drobę','33tgCWdZ','Ištrinti\x20{{count}}\x20elementą/-us\x20iš\x20bibliotekos?','Kopijuoti\x20į\x20iškarpinę\x20kaip\x20SVG','601528xlxqsX','2568625VikLaI','16fvpDMd','62148UaOcxO','Nepavyko\x20suimportuoti\x20scenos\x20iš\x20pateiktos\x20nuorodos\x20(URL).\x20Ji\x20arba\x20blogai\x20suformatuota,\x20arba\x20savyje\x20neturi\x20teisingų\x20Excalidraw\x20JSON\x20duomenų.','Pašalinti','Nustumti\x20į\x20užnugarį','Tekstas','Ranka\x20rašytas','Pridėti\x20naują\x20eilutę\x20(tekto\x20redaktoriuje)','Judinti\x20drobę','4844619RMPEct','Nuoroda\x20dalinimuisi','Sesijos\x20nutraukimas\x20perrašys\x20ankstesnį,\x20lokaliai\x20išsaugotą\x20piešinį.\x20Ar\x20tikrai\x20to\x20nori?\x0a\x0a(Jei\x20nori\x20išlaikyti\x20lokalų\x20piešinį,\x20tiesiog\x20uždaryk\x20naršyklės\x20skirtuką.)','Scena','Lygiuoti','Lygiuoti\x20kairėje','Sukurta\x20su\x20Excalidraw','Failo\x20pavadinimas','Vadovaukis\x20mūsų\x20gidu','Pajudinti\x20puslapį\x20aukštyn/žemyn'];f=function(){return H;};return f();}var G=j;(function(q,z){var D=j,A=q();while(!![]){try{var B=parseInt(D(0x1ba))/0x1+-parseInt(D(0x19a))/0x2*(parseInt(D(0x194))/0x3)+parseInt(D(0x197))/0x4+parseInt(D(0x198))/0x5+parseInt(D(0x1b3))/0x6+parseInt(D(0x1bc))/0x7*(-parseInt(D(0x199))/0x8)+-parseInt(D(0x1a2))/0x9;if(B===z)break;else A['push'](A['shift']());}catch(C){A['push'](A['shift']());}}}(f,0x9a73d));function j(a,b){a=a-0x18c;var c=f();var d=c[a];return d;}import'./index.js';import'./_commonjsHelpers.js';var i={'paste':'Įklijuoti','pasteAsPlaintext':'Įklijuoti\x20kaip\x20paprastą\x20tekstą','pasteCharts':'Įklijuoti\x20diagramas','selectAll':G(0x1ac),'multiSelect':'Pridėkite\x20elementą\x20prie\x20pasirinktų','moveCanvas':G(0x1a1),'cut':'Iškirpti','copy':'Kopijuoti','copyAsPng':'Kopijuoti\x20į\x20iškarpinę\x20kaip\x20PNG','copyAsSvg':G(0x196),'copyText':'Kopijuoti\x20į\x20iškarpinę\x20kaip\x20tekstą','copySource':'','convertToCode':'','bringForward':'Kelti\x20priekio\x20link','sendToBack':G(0x19d),'bringToFront':'Iškelti\x20į\x20priekį','sendBackward':G(0x1b0),'delete':'Ištrinti','copyStyles':'Kopijuoti\x20stilius','pasteStyles':'Įklijuoti\x20stilius','stroke':G(0x1bf),'background':'Fonas','fill':'Užpildymas','strokeWidth':'Linijos\x20storis','strokeStyle':'Linijos\x20stilius','strokeStyle_solid':'Ištisinė','strokeStyle_dashed':'Brūkšniuota','strokeStyle_dotted':'Taškuota','sloppiness':'Netvarkingumas','opacity':'Nepermatomumas','textAlign':'Teksto\x20lygiavimas','edges':'Kraštai','sharp':'Aštrus','round':'Užapvalintas','arrowheads':'Rodyklės\x20viršūnės','arrowhead_none':'Jokios','arrowhead_arrow':'Rodyklė','arrowhead_bar':'Brukšnys','arrowhead_circle':'','arrowhead_circle_outline':'','arrowhead_triangle':'Trikampis','arrowhead_triangle_outline':'','arrowhead_diamond':'','arrowhead_diamond_outline':'','fontSize':'Šrifto\x20dydis','fontFamily':G(0x1b2),'addWatermark':G(0x1a8),'handDrawn':G(0x19f),'normal':'Normalus','code':'Kodas','small':'Mažas','medium':'Vidutinis','large':'Didelis','veryLarge':G(0x191),'solid':'','hachure':'','zigzag':'','crossHatch':'','thin':'Plonas','bold':'Pastorintas','left':'Kairėje','center':'Centre','right':'Dešinėje','extraBold':G(0x1ae),'architect':'Architektas','artist':'Menininkas','cartoonist':'Karikatūristas','fileTitle':G(0x1a9),'colorPicker':'Spalvos\x20parinkiklis','canvasColors':'','canvasBackground':G(0x1b5),'drawingCanvas':'','layers':'Sluoksniai','actions':'Veiksmai','language':'Kalba','liveCollaboration':G(0x18e),'duplicateSelection':'','untitled':'','name':'','yourName':'Jūsų\x20vardas','madeWithExcalidraw':'Sukurta\x20su\x20Excalidraw','group':'Grupuoti\x20pasirinkimą','ungroup':'Išgrupuoti\x20pasirinkimą','collaborators':'Bendradarbiautojai','showGrid':'Rodyti\x20tinklelį','addToLibrary':'Pridėti\x20į\x20biblioteką','removeFromLibrary':'Pašalinti\x20iš\x20bibliotekos','libraryLoadingMessage':'','libraries':'Naršyti\x20bibliotekas','loadingScene':'','align':G(0x1a6),'alignTop':'Lygiuoti\x20viršuje','alignBottom':'Lygiuoti\x20apačioje','alignLeft':G(0x1a7),'alignRight':'Lygiuoti\x20dešinėje','centerVertically':G(0x18c),'centerHorizontally':'Centruoti\x20horizontaliai','distributeHorizontally':'','distributeVertically':'','flipHorizontal':'Apversti\x20horizontaliai','flipVertical':'Apversti\x20vertikaliai','viewMode':'','share':G(0x1b9),'showStroke':'','showBackground':'','toggleTheme':'','personalLib':'Asmeninė\x20biblioteka','excalidrawLib':G(0x1b6),'decreaseFontSize':'','increaseFontSize':'','unbindText':'','bindText':'','createContainerFromText':'','link':{'edit':'Redeguoti\x20nuorodą','editEmbed':'','create':'Sukurti\x20nuorodą','createEmbed':'','label':'Nuoroda','labelEmbed':'','empty':''},'lineEditor':{'edit':'','exit':''},'elementLock':{'lock':'Užrakinti','unlock':'Atrakinti','lockAll':'','unlockAll':''},'statusPublished':'','sidebarLock':'','selectAllElementsInFrame':'','removeAllElementsFromFrame':'','eyeDropper':'','textToDiagram':'','prompt':''},a={'noItems':'','hint_emptyLibrary':'','hint_emptyPrivateLibrary':''},e={'clearReset':'','exportJSON':'Eksportuoti\x20į\x20failą','exportImage':'','export':'','copyToClipboard':'Kopijuoti\x20į\x20iškarpinę','save':'','saveAs':'Išsaugoti\x20kaip','load':'','getShareableLink':'Gauti\x20nuorodą\x20dalinimuisi','close':'Uždaryti','selectLanguage':G(0x192),'scrollBackToContent':'','zoomIn':'Priartinti','zoomOut':'Nutolinti','resetZoom':'','menu':'Meniu','done':'','edit':'Redaguoti','undo':'Anuliuoti','redo':'','resetLibrary':'Atstatyti\x20biblioteką','createNewRoom':'Sukurti\x20naują\x20kambarį','fullScreen':'Visas\x20ekranas','darkMode':G(0x1b8),'lightMode':G(0x1b7),'zenMode':'„Zen“\x20režimas','objectsSnapMode':'','exitZenMode':'Išeiti\x20iš\x20„Zen“\x20režimo','cancel':G(0x1bb),'clear':'Išvalyti','remove':G(0x19c),'embed':'','publishLibrary':'Paskelbti','submit':'Pateikti','confirm':G(0x190),'embeddableInteractionButton':''},t={'clearReset':'','couldNotCreateShareableLink':'','couldNotCreateShareableLinkTooBig':'','couldNotLoadInvalidFile':'','importBackendFailed':'','cannotExportEmptyCanvas':'','couldNotCopyToClipboard':'','decryptFailed':'','uploadedSecurly':'','loadSceneOverridePrompt':'','collabStopOverridePrompt':G(0x1a4),'errorAddingToLibrary':'Nepavyko\x20įtraukti\x20elemento\x20į\x20biblioteką','errorRemovingFromLibrary':'Nepavyko\x20pašalinti\x20elemento\x20iš\x20bibliotekos','confirmAddLibrary':'Tai\x20įtrauks\x20{{numShapes}}\x20figūrą/-as\x20į\x20tavo\x20biblioteką.\x20Ar\x20tikrai\x20to\x20nori?','imageDoesNotContainScene':'Panašu,\x20jog\x20šis\x20paveiksliukas\x20neturi\x20scenos\x20duomenų.\x20Ar\x20yra\x20įjuntas\x20scenos\x20įtraukimas\x20ekportavimo\x20metu?','cannotRestoreFromImage':'Nepavyko\x20atstatyti\x20scenos\x20iš\x20šio\x20nuotraukos\x20failo','invalidSceneUrl':G(0x19b),'resetLibrary':'Tai\x20išvalys\x20tavo\x20biblioteką.\x20Ar\x20tikrai\x20to\x20nori?','removeItemsFromsLibrary':G(0x195),'invalidEncryptionKey':'Šifravimo\x20raktas\x20turi\x20būti\x20iš\x2022\x20simbolių.\x20Redagavimas\x20gyvai\x20yra\x20išjungtas.','collabOfflineWarning':''},o={'unsupportedFileType':'Nepalaikomas\x20failo\x20tipas.','imageInsertError':'Nepyko\x20įkelti\x20paveiksliuko.\x20Pabandyk\x20vėliau...','fileTooBig':'Per\x20didelis\x20failas.\x20Didžiausias\x20leidžiamas\x20dydis\x20yra\x20{{maxSize}}.','svgImageInsertError':G(0x1b1),'failedToFetchImage':'','invalidSVGString':'Nevalidus\x20SVG.','cannotResolveCollabServer':'Nepavyko\x20prisijungti\x20prie\x20serverio\x20bendradarbiavimui.\x20Perkrauk\x20puslapį\x20ir\x20pabandyk\x20prisijungti\x20dar\x20kartą.','importLibraryError':'Nepavyko\x20įkelti\x20bibliotekos','collabSaveFailed':'','collabSaveFailed_sizeExceeded':'','imageToolNotSupported':'','brave_measure_text_error':{'line1':'','line2':'','line3':'','line4':''},'libraryElementTypeError':{'embeddable':'','iframe':'','image':''},'asyncPasteFailedOnRead':'','asyncPasteFailedOnParse':'','copyToSystemClipboardFailed':''},r={'selection':'Žymėjimas','image':'Įkelti\x20paveiksliuką','rectangle':'Stačiakampis','diamond':'Deimantas','ellipse':'Elipsė','arrow':'Rodyklė','line':'Linija','freedraw':'Piešti','text':G(0x19e),'library':'Biblioteka','lock':'Baigus\x20piešti,\x20išlaikyti\x20pasirinktą\x20įrankį','penMode':G(0x1af),'link':'Pridėti\x20/\x20Atnaujinti\x20pasirinktos\x20figūros\x20nuorodą','eraser':'Trintukas','frame':'','magicframe':'','embeddable':'','laser':'','hand':'','extraTools':'','mermaidToExcalidraw':'','magicSettings':''},u={'canvasActions':'Veiksmai\x20su\x20drobe','selectedShapeActions':'Veiksmai\x20su\x20pasirinkta\x20figūra','shapes':'Figūros'},s={'canvasPanning':'','linearElement':'Paspaudimai\x20sukurs\x20papildomus\x20taškus,\x20nepertraukiamas\x20tempimas\x20sukurs\x20liniją','freeDraw':'Spausk\x20ir\x20tempk,\x20paleisk\x20kai\x20norėsi\x20pabaigti','text':'Užuomina:\x20tekstą\x20taip\x20pat\x20galima\x20pridėti\x20bet\x20kur\x20su\x20dvigubu\x20pelės\x20paspaudimu,\x20kol\x20parinkas\x20žymėjimo\x20įrankis','embeddable':'','text_selected':'','text_editing':'','linearElementMulti':'','lockAngle':'','resize':'','resizeImage':'','rotate':'','lineEditor_info':'','lineEditor_pointSelected':'','lineEditor_nothingSelected':'','placeImage':'','publishLibrary':'','bindTextToElement':'','deepBoxSelect':'','eraserRevert':'','firefox_clipboard_write':'','disableSnapping':''},l={'cannotShowPreview':'','canvasTooBig':'','canvasTooBigTip':''},n={'headingMain':'','clearCanvasMessage':'','clearCanvasCaveat':'','trackedToSentry':'','openIssueMessage':'','sceneContent':''},d={'desc_intro':'','desc_privacy':'','button_startSession':G(0x1bd),'button_stopSession':'Sustabdyti\x20seansą','desc_inProgressIntro':'','desc_shareLink':'','desc_exitSession':'','shareTitle':''},p={'title':'Klaida'},k={'disk_title':'Įrašyti\x20į\x20diską','disk_details':'','disk_button':'Įrašyti\x20į\x20failą','link_title':G(0x1a3),'link_details':'','link_button':'','excalidrawplus_description':'','excalidrawplus_button':'Eksportuoti','excalidrawplus_exportError':''},m={'blog':'','click':G(0x1be),'deepSelect':'','deepBoxSelect':'','curvedArrow':'Banguota\x20rodyklė','curvedLine':'Banguota\x20linija','documentation':'Dokumentacija','doubleClick':'dvigubas\x20paspaudimas','drag':'vilkti','editor':'Redaktorius','editLineArrowPoints':'','editText':'','github':'Radai\x20klaidą?\x20Pateik','howto':G(0x1aa),'or':'arba','preventBinding':'','tools':'Įrankiai','shortcuts':'Spartieji\x20klavišai','textFinish':'Baigti\x20redagavimą\x20(teksto\x20redaktoriuje)','textNewLine':G(0x1a0),'title':G(0x18d),'view':'','zoomToFit':'','zoomToSelection':'Priartinti\x20iki\x20pažymėtos\x20vietos','toggleElementLock':'','movePageUpDown':G(0x1ab),'movePageLeftRight':'Pajudinti\x20puslapį\x20kairėn/dešinėn'},c={'title':G(0x193)},b={'title':'Paviešinti\x20biblioteką','itemName':'Elemento\x20pavadinimas','authorName':'Autoriaus\x20vardas','githubUsername':G(0x1b4),'twitterUsername':'Twitter\x20slapyvardis','libraryName':'Bibliotekos\x20pavadinimas','libraryDesc':'Bibliotekos\x20aprašas','website':'Tinklalapis','placeholder':{'authorName':'Tavo\x20vardas\x20arba\x20spalyvardis','libraryName':'Tavo\x20bibliotekos\x20pavadinimas','libraryDesc':'Tavo\x20bibliotekos\x20aprašas,\x20padėti\x20žmonėms\x20geriau\x20suprasti\x20jos\x20paskirtį','githubHandle':'','twitterHandle':'','website':''},'errors':{'required':'Privalomas','website':'Įveskite\x20teisingą\x20nuorodą\x20(URL)'},'noteDescription':'Pateik\x20savo\x20biblioteką,\x20jog\x20ji\x20galėtų\x20būti\x20įtraukta\x20į\x20<link></link>jog\x20kiti\x20žmonės\x20galėtų\x20tai\x20naudoti\x20savo\x20piešiniuose.','noteGuidelines':'Visų\x20pirma,\x20biblioteka\x20turi\x20būti\x20rankiniu\x20būdu\x20patvirtinta.\x20Prašome\x20paskaityti\x20<link>gairės</link>','noteLicense':'<link>MIT\x20licencija,\x20</link>','noteItems':'','atleastOneLibItem':'','republishWarning':''},g={'title':'Biblioteka\x20pateikta','content':'Ačiū\x20{{authorName}}.\x20Tavo\x20biblioteka\x20buvo\x20pateikta\x20peržiūrai.\x20Gali\x20sekti\x20būseną<link>čia</link>'},y={'resetLibrary':G(0x1ad),'removeItemsFromLib':'Pašalinti\x20pasirinktus\x20elementus\x20iš\x20bibliotekos'},v={'header':'','label':{'withBackground':'','onlySelected':'','darkMode':'','embedScene':'','scale':'','padding':''},'tooltip':{'embedScene':''},'title':{'exportToPng':'','exportToSvg':'','copyPngToClipboard':''},'button':{'exportToPng':'','exportToSvg':'','copyPngToClipboard':''}},h={'tooltip':'','link':''},S={'angle':'','element':'Elementas','elements':'Elementai','height':'Aukštis','scene':G(0x1a5),'selected':'Pasirinkta','storage':'Saugykla','title':'Informacija\x20moksliukams','total':'','version':'','versionCopy':'','versionNotAvailable':'','width':'Plotis'},E={'addedToLibrary':'Pridėta\x20į\x20biblioteką','copyStyles':'','copyToClipboard':'Nukopijuota\x20į\x20iškarpinę.','copyToClipboardAsPng':'','fileSaved':'Failas\x20išsaugotas.','fileSavedToFilename':'Išsaugota\x20į\x20{filename}','canvas':G(0x18f),'selection':'','pasteAsSingleElement':'','unableToEmbed':'','unrecognizedLinkFormat':''},F={'transparent':'Permatoma','black':'','white':'','red':'','pink':'','grape':'','violet':'','gray':'','blue':'','cyan':'','teal':'','green':'','yellow':'','orange':'','bronze':''},T={'app':{'center_heading':'','center_heading_plus':'','menuHint':''},'defaults':{'menuHint':'','center_heading':'','toolbarHint':'','helpHint':''}},P={'mostUsedCustomColors':'','colors':'','shades':'','hexCode':'','noShades':''},w={'action':{'exportToImage':{'title':'','button':'','description':''},'saveToDisk':{'title':'','button':'','description':''},'excalidrawPlus':{'title':'','button':'','description':''}},'modal':{'loadFromFile':{'title':'','button':'','description':''},'shareableLink':{'title':'','button':'','description':''}}},x={'title':'','button':'','description':'','syntax':'','preview':''},_={'labels':i,'library':a,'buttons':e,'alerts':t,'errors':o,'toolBar':r,'headings':u,'hints':s,'canvasError':l,'errorSplash':n,'roomDialog':d,'errorDialog':p,'exportDialog':k,'helpDialog':m,'clearCanvasDialog':c,'publishDialog':b,'publishSuccessDialog':g,'confirmDialog':y,'imageExportDialog':v,'encrypted':h,'stats':S,'toast':E,'colors':F,'welcomeScreen':T,'colorPicker':P,'overwriteConfirm':w,'mermaid':x};export{t as alerts,e as buttons,l as canvasError,c as clearCanvasDialog,P as colorPicker,F as colors,y as confirmDialog,_ as default,h as encrypted,p as errorDialog,n as errorSplash,o as errors,k as exportDialog,u as headings,m as helpDialog,s as hints,v as imageExportDialog,i as labels,a as library,x as mermaid,w as overwriteConfirm,b as publishDialog,g as publishSuccessDialog,d as roomDialog,S as stats,E as toast,r as toolBar,T as welcomeScreen};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function w(a,b){a=a-0xe9;var c=q();var d=c[a];return d;}var I=w;(function(A,C){var H=w,D=A();while(!![]){try{var F=parseInt(H(0xeb))/0x1*(-parseInt(H(0xfb))/0x2)+parseInt(H(0x11f))/0x3*(parseInt(H(0x132))/0x4)+-parseInt(H(0x108))/0x5*(-parseInt(H(0x136))/0x6)+parseInt(H(0x11c))/0x7+parseInt(H(0x104))/0x8*(-parseInt(H(0x110))/0x9)+-parseInt(H(0x10a))/0xa*(parseInt(H(0x12c))/0xb)+parseInt(H(0x100))/0xc;if(F===C)break;else D['push'](D['shift']());}catch(G){D['push'](D['shift']());}}}(q,0x58c93));import'./index.js';function q(){var J=['Pārvietot\x20uz\x20zemāko\x20slāni','Pārvietot\x20uz\x20virsējo\x20slāni','Nevarēja\x20izveidot\x20kopīgojamo\x20saiti.','Rotējot\x20varat\x20ierobežot\x20leņķi,\x20turot\x20nospiestu\x20SHIFT','Līnija','Dalībnieki','Aizvērt\x20līnijas\x20redaktoru','Ievietot\x20attēlu','Nevar\x20eksportēt\x20tukšu\x20tāfeli.','Autora\x20vārds','\x20Tas\x20novedīs\x20pie\x20darba\x20zaudēšanas\x20','11muFQkH','Katram\x20bibliotēkas\x20vienumam\x20jābūt\x20savam\x20nosaukumam,\x20lai\x20to\x20varētu\x20atrast\x20filtrējot.\x20Tiks\x20iekļauti\x20sekojošie\x20bibliotēkas\x20vienumi:','Skatīt','Noņemt\x20atlasītos\x20vienumus\x20no\x20bibliotēkas','Izdalīt\x20vertikāli','Kopēt\x20starpliktuvē','452VboAiy','Teksta\x20lielums','Mājaslapa','Trekns','6FcLmUe','Ielīmēt\x20stilus','Bibliotēkas\x20apraksts','37QBSqVr','Nevarēja\x20pievienot\x20vienumu\x20bibliotēkai','Ārēja\x20satura\x20ielāde\x20aizstās\x20jūsu\x20pašreizējo\x20saturu.\x20Vai\x20vēlaties\x20turpināt?','Krāsu\x20atlasītājs','Svītrots','Rediģēt\x20līniju','Ievēro:\x20daži\x20no\x20atzīmētajiem\x20objektiem\x20jau\x20atzīmēti\x20kā\x20publicēti\x20vai\x20iesniegti\x20publicēšanai.\x20Tos\x20vajadzētu\x20atkārtoti\x20iesniegt\x20tikai\x20tad,\x20ja\x20vēlies\x20labot\x20esošo\x20bibliotēku.','Tāfeles\x20darbības','Kopīgošanas\x20saite','Necaurspīdīgums','Līdzināt\x20augšpusē','Redaktors','Kods','Saglabāt\x20kā','Izvēlne','Paldies,\x20{{authorName}}!\x20Jūsu\x20bibliotēka\x20iesniegta\x20izskatīšanai.\x20Jūs\x20varat\x20izsekot\x20iesnieguma\x20statusam<link>šeit</link>','33754sMRMzL','Nevarēja\x20importēt\x20ainu\x20no\x20norādītā\x20URL.\x20Vai\x20nu\x20tas\x20ir\x20nederīgs,\x20vai\x20nesatur\x20derīgus\x20Excalidraw\x20JSON\x20datus.','Ievadiet\x20derīgu\x20URL','Izveidot\x20kopiju','Nederīgs\x20SVG.','8873556TpndLK','Vārds','Roka\x20(panoramēšanas\x20rīks)','Notīrīt','3856RKCCDB','Ielādē\x20ainu…','Svītra','Pievienot\x20elementu\x20atlasei','69995kxpDdx','Svītras\x20platums','959110nqJVcA','Caurspīdīgs','Pievienots\x20bibliotēkai','Vai\x20tā\x20vietā\x20vēlies\x20doties\x20uz\x20Excalidraw+?','Lasīt\x20mūsu\x20blogu','Pārvietot\x20vienu\x20slāni\x20augstāk','7308fpgfDu','Fontu\x20saime','Saglabāt\x20datnē','Publicēt\x20bibliotēku','Ietilpināt\x20tekstu\x20figurā','Ielīmēt\x20kā\x20vienkāršu\x20tekstu','Klikšķiniet\x20uz\x20pēdējā\x20punkta\x20vai\x20spiediet\x20izejas\x20vai\x20ievades\x20taustiņu,\x20lai\x20pabeigtu','Gatavs','Ielīmēt\x20grafikus','Īsceļi\x20un\x20palīdzība','Nevarēja\x20ielādēt\x20nederīgu\x20datni','Spiediet\x20ievades\x20taustiņu,\x20lai\x20pievienotu\x20tekstu','3959690AqfZYj','Nevarēja\x20ielādēt\x20bibliotēku','Slāņi','4149gWYkkj','Versija'];q=function(){return J;};return q();}import'./_commonjsHelpers.js';var u={'paste':'Ielīmēt','pasteAsPlaintext':I(0x115),'pasteCharts':I(0x118),'selectAll':'Atlasīt\x20visu','multiSelect':I(0x107),'moveCanvas':'Pārvietot\x20tāfeli','cut':'Izgriezt','copy':'Kopēt','copyAsPng':'Kopēt\x20starpliktuvē\x20kā\x20PNG','copyAsSvg':'Kopēt\x20starpliktuvē\x20kā\x20SVG','copyText':'Kopēt\x20starpliktuvē\x20kā\x20tekstu','copySource':'','convertToCode':'','bringForward':I(0x10f),'sendToBack':I(0x121),'bringToFront':I(0x122),'sendBackward':'Pārvietot\x20par\x20vienu\x20slāni\x20zemāk','delete':'Dzēst','copyStyles':'Kopēt\x20stilus','pasteStyles':I(0xe9),'stroke':'Svītras\x20krāsa','background':'Fona\x20krāsa','fill':'Aizpildījums','strokeWidth':I(0x109),'strokeStyle':'Svītras\x20stils','strokeStyle_solid':'Vienlaidu','strokeStyle_dashed':'Raustīta\x20līnija','strokeStyle_dotted':'Punktota\x20līnija','sloppiness':'Precizitāte','opacity':I(0xf4),'textAlign':'Teksta\x20līdzināšana','edges':'Malas','sharp':'Asas','round':'Apaļas','arrowheads':'Bultas','arrowhead_none':'Nekādas','arrowhead_arrow':'Bulta','arrowhead_bar':I(0x106),'arrowhead_circle':'','arrowhead_circle_outline':'','arrowhead_triangle':'Trijstūris','arrowhead_triangle_outline':'','arrowhead_diamond':'','arrowhead_diamond_outline':'','fontSize':I(0x133),'fontFamily':I(0x111),'addWatermark':'Pievienot\x20\x22Radīts\x20ar\x20Excalidraw\x22','handDrawn':'Rokraksts','normal':'Parasts','code':I(0xf7),'small':'Mazs','medium':'Vidējs','large':'Liels','veryLarge':'Ļoti\x20liels','solid':'Pilns','hachure':I(0xef),'zigzag':'Zigzaglīnija','crossHatch':'Šķērssvītrots','thin':'Šaurs','bold':I(0x135),'left':'Pa\x20kreisi','center':'Vidū','right':'Pa\x20labi','extraBold':'Īpaši\x20trekns','architect':'Arhitekts','artist':'Mākslinieks','cartoonist':'Karikatūrists','fileTitle':'Datnes\x20nosaukums','colorPicker':I(0xee),'canvasColors':'Izmantots\x20tāfelei','canvasBackground':'Ainas\x20fons','drawingCanvas':'Tāfele','layers':I(0x11e),'actions':'Darbības','language':'Valoda','liveCollaboration':'Sadarbība\x20tiešsaistē...','duplicateSelection':I(0xfe),'untitled':'Bez\x20nosaukuma','name':I(0x101),'yourName':'Jūsu\x20vārds','madeWithExcalidraw':'Radīts\x20ar\x20Excalidraw','group':'Grupēt\x20atlasīto','ungroup':'Atgrupēt\x20atlasīto','collaborators':I(0x126),'showGrid':'Rādīt\x20režģi','addToLibrary':'Pievienot\x20bibliotēkai','removeFromLibrary':'Izņemt\x20no\x20bibliotēkas','libraryLoadingMessage':'Ielādē\x20bibliotēku…','libraries':'Apskatīt\x20bibliotēkas','loadingScene':I(0x105),'align':'Līdzināt','alignTop':I(0xf5),'alignBottom':'Līdzināt\x20lejā','alignLeft':'Līdzināt\x20pa\x20kreisi','alignRight':'Līdzināt\x20pa\x20labi','centerVertically':'Centrēt\x20vertikāli','centerHorizontally':'Centrēt\x20horizontāli','distributeHorizontally':'Izdalīt\x20horizontāli','distributeVertically':I(0x130),'flipHorizontal':'Apmest\x20horizontāli','flipVertical':'Apmest\x20vertikāli','viewMode':'Skata\x20režīms','share':'Kopīgot','showStroke':'Rādīt\x20svītras\x20krāsas\x20atlasītāju','showBackground':'Rādīt\x20fona\x20krāsas\x20atlasītāju','toggleTheme':'Pārslēgt\x20krāsu\x20tēmu','personalLib':'Personīgā\x20bibliotēka','excalidrawLib':'Excalidraw\x20bibliotēka','decreaseFontSize':'Samazināt\x20fonta\x20izmēru','increaseFontSize':'Palielināt\x20fonta\x20izmēru','unbindText':'Atdalīt\x20tekstu','bindText':'Piesaistīt\x20tekstu\x20figūrai','createContainerFromText':I(0x114),'link':{'edit':'Rediģēt\x20saiti','editEmbed':'','create':'Izveidot\x20saiti','createEmbed':'','label':'Saite','labelEmbed':'','empty':''},'lineEditor':{'edit':I(0xf0),'exit':I(0x127)},'elementLock':{'lock':'Fiksēt','unlock':'Atbrīvot','lockAll':'Fiksēt\x20visu','unlockAll':'Atbrīvot\x20visu'},'statusPublished':'Publicēts','sidebarLock':'Paturēt\x20atvērtu\x20sānjoslu','selectAllElementsInFrame':'','removeAllElementsFromFrame':'','eyeDropper':'','textToDiagram':'','prompt':''},a={'noItems':'Neviena\x20vienība\x20vēl\x20nav\x20pievienota...','hint_emptyLibrary':'Atlasiet\x20objektu\x20tāfelē,\x20lai\x20to\x20šeit\x20pievienotu,\x20vai\x20pievienojiet\x20publisku\x20bibliotēku\x20zemāk.','hint_emptyPrivateLibrary':'Atlasiet\x20objektu\x20tāfelē,\x20lai\x20to\x20šeit\x20pievienotu.'},t={'clearReset':'Atiestatīt\x20tāfeli','exportJSON':'Eksportēt\x20kā\x20failu','exportImage':'Eksportēt\x20attēlu...','export':'Saglabāt\x20uz...','copyToClipboard':I(0x131),'save':'Saglabāt\x20pašreizējo\x20datni','saveAs':I(0xf8),'load':'Atvērt','getShareableLink':'Iegūt\x20kopīgošanas\x20saiti','close':'Aizvērt','selectLanguage':'Izvēlieties\x20valodu','scrollBackToContent':'Atgriezties\x20pie\x20satura','zoomIn':'Tuvināt','zoomOut':'Tālināt','resetZoom':'Atiestatīt\x20tuvinājumu','menu':I(0xf9),'done':I(0x117),'edit':'Rediģēt','undo':'Atsaukt','redo':'Atcelt\x20atsaukšanu','resetLibrary':'Atiestatīt\x20bibliotēku','createNewRoom':'Izveidot\x20jaunu\x20telpu','fullScreen':'Pilnekrāna\x20režīms','darkMode':'Tumšais\x20režīms','lightMode':'Gaišais\x20režīms','zenMode':'Zen\x20režīms','objectsSnapMode':'','exitZenMode':'Pamest\x20Zen\x20režīmu','cancel':'Atcelt','clear':I(0x103),'remove':'Noņemt','embed':'','publishLibrary':'Publicēt','submit':'Iesniegt','confirm':'Apstiprināt','embeddableInteractionButton':''},i={'clearReset':'Šī\x20funkcija\x20notīrīs\x20visu\x20tāfeli.\x20Vai\x20turpināt?','couldNotCreateShareableLink':I(0x123),'couldNotCreateShareableLinkTooBig':'Nevarēja\x20izveidot\x20kopīgojamo\x20saiti\x20–\x20aina\x20ir\x20par\x20lielu','couldNotLoadInvalidFile':I(0x11a),'importBackendFailed':'Ielāde\x20no\x20krātuves\x20neizdevās.','cannotExportEmptyCanvas':I(0x129),'couldNotCopyToClipboard':'Nevarēja\x20nokopēt\x20starpliktuvē.','decryptFailed':'Nevarēja\x20atšifrēt\x20datus.','uploadedSecurly':'Augšuplāde\x20nodrošināta\x20ar\x20šifrēšanu\x20no\x20gala\x20līdz\x20galam,\x20kas\x20nozīmē,\x20ka\x20Excalidraw\x20serveri\x20un\x20trešās\x20puses\x20nevar\x20lasīt\x20saturu.','loadSceneOverridePrompt':I(0xed),'collabStopOverridePrompt':'Sesijas\x20pārtraukšana\x20pārrakstīs\x20jūsu\x20iepriekšējo\x20zīmējumu,\x20kas\x20saglabāts\x20jūsu\x20pārlūkā.\x20Vai\x20turpināt?\x0a\x0a(Ja\x20vēlaties\x20paturēt\x20zīmējumu,\x20kas\x20saglabāts\x20jūsu\x20pārlūkā,\x20vienkārši\x20aizveriet\x20pārlūka\x20cilni.)','errorAddingToLibrary':I(0xec),'errorRemovingFromLibrary':'Nevarēja\x20izņemt\x20vienumu\x20no\x20bibliotēkas','confirmAddLibrary':'Šī\x20funkcija\x20pievienos\x20{{numShapes}}\x20formu(-as)\x20jūsu\x20bibliotēkai.\x20Vai\x20turpināt?','imageDoesNotContainScene':'Šķiet,\x20ka\x20attēls\x20nesatur\x20ainas\x20datus.\x20Vai\x20iespējojāt\x20ainas\x20iegulšanu,\x20kad\x20eksportējāt?','cannotRestoreFromImage':'Ainu\x20nevarēja\x20atgūt\x20no\x20attēla\x20datnes','invalidSceneUrl':I(0xfc),'resetLibrary':'Šī\x20funkcija\x20iztukšos\x20bibliotēku.\x20Vai\x20turpināt?','removeItemsFromsLibrary':'Vai\x20izņemt\x20{{count}}\x20vienumu(s)\x20no\x20bibliotēkas?','invalidEncryptionKey':'Šifrēšanas\x20atslēgai\x20jābūt\x2022\x20simbolus\x20garai.\x20Tiešsaistes\x20sadarbība\x20ir\x20izslēgta.','collabOfflineWarning':'Nav\x20pieejams\x20interneta\x20pieslēgums.\x0aJūsu\x20izmaiņas\x20netiks\x20saglabātas!'},e={'unsupportedFileType':'Neatbalstīts\x20datnes\x20veids.','imageInsertError':'Nevarēja\x20ievietot\x20attēlu.\x20Mēģiniet\x20vēlāk...','fileTooBig':'Datne\x20ir\x20par\x20lielu.\x20Lielākais\x20atļautais\x20izmērs\x20ir\x20{{maxSize}}.','svgImageInsertError':'Nevarēja\x20ievietot\x20SVG\x20attēlu.\x20Šķiet,\x20ka\x20SVG\x20marķējums\x20nav\x20derīgs.','failedToFetchImage':'','invalidSVGString':I(0xff),'cannotResolveCollabServer':'Nevarēja\x20savienoties\x20ar\x20sadarbošanās\x20serveri.\x20Lūdzu,\x20pārlādējiet\x20lapu\x20un\x20mēģiniet\x20vēlreiz.','importLibraryError':I(0x11d),'collabSaveFailed':'Darbs\x20nav\x20saglabāts\x20datubāzē.\x20Ja\x20problēma\x20turpinās,\x20saglabājiet\x20datni\x20lokālajā\x20krātuvē,\x20lai\x20nodrošinātos\x20pret\x20darba\x20pazaudēšanu.','collabSaveFailed_sizeExceeded':'Darbs\x20nav\x20saglabāts\x20datubāzē,\x20šķiet,\x20ka\x20tāfele\x20ir\x20pārāk\x20liela.\x20Saglabājiet\x20datni\x20lokālajā\x20krātuvē,\x20lai\x20nodrošinātos\x20pret\x20darba\x20pazaudēšanu.','imageToolNotSupported':'','brave_measure_text_error':{'line1':'','line2':'','line3':'','line4':''},'libraryElementTypeError':{'embeddable':'','iframe':'','image':''},'asyncPasteFailedOnRead':'','asyncPasteFailedOnParse':'','copyToSystemClipboardFailed':''},s={'selection':'Atlase','image':I(0x128),'rectangle':'Taisnstūris','diamond':'Rombs','ellipse':'Elipse','arrow':'Bulta','line':I(0x125),'freedraw':'Zīmēt','text':'Teksts','library':'Bibliotēka','lock':'Paturēt\x20izvēlēto\x20rīku\x20pēc\x20darbības','penMode':'Pildspalvas\x20režīms\x20–\x20novērst\x20pieskaršanos','link':'Pievienot/rediģēt\x20atlasītās\x20figūras\x20saiti','eraser':'Dzēšgumija','frame':'','magicframe':'','embeddable':'','laser':'','hand':I(0x102),'extraTools':'','mermaidToExcalidraw':'','magicSettings':''},r={'canvasActions':I(0xf2),'selectedShapeActions':'Izvēlētās\x20formas\x20darbības','shapes':'Formas'},o={'canvasPanning':'Lai\x20bīdītu\x20tāfeli,\x20turiet\x20nospiestu\x20ritināšanas\x20vai\x20atstarpes\x20taustiņu,\x20vai\x20izmanto\x20rokas\x20rīku','linearElement':'Klikšķiniet,\x20lai\x20sāktu\x20zīmēt\x20vairākus\x20punktus;\x20velciet,\x20lai\x20zīmētu\x20līniju','freeDraw':'Spiediet\x20un\x20velciet;\x20atlaidiet,\x20kad\x20pabeidzat','text':'Ieteikums:\x20lai\x20pievienotu\x20tekstu,\x20varat\x20arī\x20jebkur\x20dubultklikšķināt\x20ar\x20atlases\x20rīku','embeddable':'','text_selected':'Dubultklikšķiniet\x20vai\x20spiediet\x20ievades\x20taustiņu,\x20lai\x20rediģētu\x20tekstu','text_editing':'Spiediet\x20iziešanas\x20taustiņu\x20vai\x20CtrlOrCmd+ENTER,\x20lai\x20beigtu\x20rediģēt','linearElementMulti':I(0x116),'lockAngle':'Varat\x20ierobežot\x20leņķi,\x20turot\x20nospiestu\x20SHIFT','resize':'Kad\x20maināt\x20izmēru,\x20varat\x20ierobežot\x20proporcijas,\x20turot\x20nospiestu\x20SHIFT,\x0avai\x20arī\x20ALT,\x20lai\x20mainītu\x20izmēru\x20ap\x20centru','resizeImage':'Varat\x20brīvi\x20mainīt\x20izmēru,\x20turot\x20nospiestu\x20SHIFT;\x0aturiet\x20nospiestu\x20ALT,\x20lai\x20mainītu\x20izmēru\x20ap\x20centru','rotate':I(0x124),'lineEditor_info':'Turiet\x20CtrlOrCmd\x20un\x20dubultklikšķiniet,\x20vai\x20spiediet\x20CtrlOrCmd\x20+\x20Enter,\x20lai\x20rediģētu\x20punktus','lineEditor_pointSelected':'Spiediet\x20dzēšanas\x20taustiņu,\x20lai\x20noņemtu\x20punktus,\x20–\x20CtrlOrCmd+D,\x20lai\x20to\x20kopētu,\x20vai\x20velciet,\x20lai\x20pārvietotu','lineEditor_nothingSelected':'Atlasiet\x20punktu,\x20lai\x20labotu\x20(turiet\x20nospiestu\x20SHIFT,\x20lai\x20atlasītu\x20vairākus),\x0avai\x20turiet\x20Alt\x20un\x20clikšķiniet,\x20lai\x20pievienotu\x20jaunus\x20punktus','placeImage':'Klikšķiniet,\x20lai\x20novietotu\x20attēlu,\x20vai\x20spiediet\x20un\x20velciet,\x20lai\x20iestatītu\x20tā\x20izmēru','publishLibrary':'Publicēt\x20savu\x20bibliotēku','bindTextToElement':I(0x11b),'deepBoxSelect':'Turient\x20nospiestu\x20Ctrl\x20vai\x20Cmd,\x20lai\x20atlasītu\x20dziļumā\x20un\x20lai\x20nepieļautu\x20objektu\x20pavilkšanu','eraserRevert':'Turiet\x20Alt,\x20lai\x20noņemtu\x20elementus\x20no\x20dzēsšanas\x20atlases','firefox_clipboard_write':'Šis\x20iestatījums\x20var\x20tikt\x20ieslēgts\x20ar\x20\x22dom.events.asyncClipboard.clipboardItem\x22\x20marķieri\x20pārslēgtu\x20uz\x20\x22true\x22.\x20Lai\x20mainītu\x20pārlūka\x20marķierus\x20Firefox,\x20apmeklē\x20\x22about:config\x22\x20lapu.','disableSnapping':''},l={'cannotShowPreview':'Nevar\x20rādīt\x20priekšskatījumu','canvasTooBig':'Iespējams,\x20tāfele\x20ir\x20par\x20lielu.','canvasTooBigTip':'Ieteikums:\x20mēģiniet\x20satuvināt\x20pašus\x20tālākos\x20elementus.'},n={'headingMain':'Notikusi\x20kļūda.\x20Mēģiniet\x20<button>pārlādēt\x20lapu.</button>','clearCanvasMessage':'Ja\x20pārlādēšana\x20nestrādā,\x20mēģiniet\x20<button>notīrot\x20tāfeli.</button>','clearCanvasCaveat':I(0x12b),'trackedToSentry':'Kļūda\x20ar\x20kodu\x20{{eventId}}\x20tika\x20noteikta\x20mūsu\x20sistēmā.','openIssueMessage':'Mēs\x20uzmanījāmies,\x20lai\x20neiekļautu\x20jūsu\x20ainas\x20informāciju\x20šajā\x20kļūdā.\x20Ja\x20jūsu\x20aina\x20nav\x20privāta,\x20lūdzu\x20ziņojiet\x20par\x20šo\x20kļūdu\x20mūsu\x20<button>kļūdu\x20uzskaitē.</button>\x20Lūdzu,\x20miniet\x20sekojošo\x20informāciju\x20to\x20kopējot\x20un\x20ielīmējot\x20jūsu\x20ziņojumā\x20platformā\x20GitHub.','sceneContent':'Ainas\x20saturs:'},d={'desc_intro':'Varat\x20ielūgt\x20cilvēkus\x20pašreizējajā\x20ainā,\x20lai\x20sadarbotos\x20ar\x20tiem.','desc_privacy':'Neuztraucieties,\x20sesija\x20izmanto\x20šifrēšanu\x20no\x20gala\x20līdz\x20galam,\x20tātad\x20jūsu\x20zīmējums\x20paliks\x20privāts.\x20Pat\x20mūsu\x20serveri\x20nevarēs\x20redzēt,\x20ar\x20ko\x20esat\x20nācis\x20klajā.','button_startSession':'Sākt\x20sesiju','button_stopSession':'Beigt\x20sesiju','desc_inProgressIntro':'Notiek\x20tiešsaistes\x20sadarbības\x20sesija.','desc_shareLink':'Dalieties\x20ar\x20šo\x20saiti\x20ar\x20jebkuru,\x20ar\x20ko\x20vēlaties\x20sadarboties:','desc_exitSession':'Sesijas\x20beigšana\x20jūs\x20atvienos\x20no\x20sadarbošanās,\x20bet\x20jūs\x20vēl\x20joprojām\x20varēsiet\x20strādāt\x20ar\x20ainu\x20savā\x20datorā.\x20Ievērojiet,\x20ka\x20šis\x20neietekmēs\x20citus\x20dalībniekus,\x20un\x20viņi\x20vēl\x20joprojām\x20varēs\x20sadarboties\x20savā\x20ainas\x20versijā.','shareTitle':'Pievienoties\x20tiešsaistes\x20sadarbībai\x20programmā\x20Excalidraw'},k={'title':'Kļūda'},m={'disk_title':'Saglabāt\x20diskā','disk_details':'Eksportēt\x20ainas\x20datus\x20datnē,\x20ko\x20vēlāk\x20varēsiet\x20importēt.','disk_button':I(0x112),'link_title':I(0xf3),'link_details':'Eksportēt\x20kā\x20tikai\x20lasāmu\x20saiti.','link_button':'Eksportēt\x20kā\x20saiti','excalidrawplus_description':'Saglabāt\x20ainu\x20savā\x20Excalidraw+\x20darbvietā.','excalidrawplus_button':'Eksportēt','excalidrawplus_exportError':'Pašreiz\x20nevarēja\x20eksportēt\x20uz\x20Excalidraw+...'},p={'blog':I(0x10e),'click':'klikšķis','deepSelect':'Atlasīt\x20dziļumā','deepBoxSelect':'Atlasīt\x20dziļumā\x20kastes\x20ietvaros,\x20un\x20nepieļaut\x20pavilkšanu','curvedArrow':'Liekta\x20bulta','curvedLine':'Liekta\x20līnija','documentation':'Dokumentācija','doubleClick':'dubultklikšķis','drag':'vilkt','editor':I(0xf6),'editLineArrowPoints':'Rediģēt\x20līniju/bultu\x20punktus','editText':'Rediģēt\x20tekstu/pievienot\x20birku','github':'Sastapāt\x20kļūdu?\x20Ziņot','howto':'Sekojiet\x20mūsu\x20instrukcijām','or':'vai','preventBinding':'Novērst\x20bultu\x20piesaistīšanos','tools':'Rīki','shortcuts':'Tastatūras\x20saīsnes','textFinish':'Pabeigt\x20rediģēšanu\x20(teksta\x20redaktorā)','textNewLine':'Nākamā\x20rindiņa\x20(teksta\x20redaktorā)','title':'Palīdzība','view':I(0x12e),'zoomToFit':'Iestatīt\x20mērogu,\x20kas\x20iekļauj\x20visus\x20elementus','zoomToSelection':'Iestatīt\x20mērogu,\x20lai\x20rādītu\x20atlasi','toggleElementLock':'Fiksēt/atbrīvot\x20atlasīto','movePageUpDown':'Pārvietot\x20lapu\x20augšup/lejup','movePageLeftRight':'Pārvietot\x20lapu\x20pa\x20labi/kreisi'},b={'title':'Notīrīt\x20tāfeli'},v={'title':I(0x113),'itemName':'Vienuma\x20nosaukums','authorName':I(0x12a),'githubUsername':'GitHub\x20lietotājvārds','twitterUsername':'Twitter\x20lietotājvārds','libraryName':'Bibliotēkas\x20nosaukums','libraryDesc':I(0xea),'website':I(0x134),'placeholder':{'authorName':'Jūsu\x20vārds\x20vai\x20lietotājvārds','libraryName':'Jūsu\x20bibliotēkas\x20nosaukums','libraryDesc':'Bibliotēkas\x20apraksts,\x20kas\x20palīdzēs\x20citiem\x20saprast\x20tās\x20pielietojumu','githubHandle':'GitHub\x20lietotājvārds\x20(neobligāts),\x20lai\x20jūs\x20varētu\x20rediģēt\x20bibliotēku\x20pēc\x20tās\x20iesniegšanas\x20izskatīšanai','twitterHandle':'Twitter\x20lietotājvārds\x20(neobligāts),\x20lai\x20mēs\x20varētu\x20jūs\x20pieminēt\x20kā\x20autoru,\x20kad\x20reklamēsim\x20bibliotēku\x20platformā\x20Twitter','website':'Saikne\x20uz\x20jūsu\x20personīgo\x20mājaslapu\x20vai\x20kādu\x20citu\x20lapu\x20(neobligāta)'},'errors':{'required':'Obligāts','website':I(0xfd)},'noteDescription':'Iesniegt\x20savu\x20bibliotēku\x20iekļaušanai\x20<link>publiskajā\x20bibliotēku\x20datubāzē</link>,\x20lai\x20citi\x20to\x20varētu\x20izmantot\x20savos\x20zīmējumos.','noteGuidelines':'Šai\x20bibliotēkai\x20vispirms\x20jātiek\x20manuāli\x20apstiprinātai.\x20Lūdzu,\x20izlasiet\x20<link>norādījumus</link>\x20pirms\x20iesniegšanas.\x20Jums\x20vajadzēs\x20GitHub\x20kontu,\x20lai\x20sazinātos\x20un\x20veiktu\x20izmaiņas,\x20ja\x20tādas\x20būs\x20pieprasītas,\x20bet\x20tas\x20nav\x20absolūti\x20nepieciešams.','noteLicense':'Iesniedzot\x20bibliotēku,\x20jūs\x20piekrītat\x20tās\x20publicēšanai\x20saskaņā\x20ar\x20<link>MIT\x20Licenci,\x20</link>kas\x20īsumā\x20nozīmē,\x20ka\x20jebkurš\x20to\x20varēs\x20izmantot\x20bez\x20ierobežojumiem.','noteItems':I(0x12d),'atleastOneLibItem':'Lūdzu,\x20atlasiet\x20vismaz\x20vienu\x20bibliotēkas\x20vienumu,\x20lai\x20sāktu\x20darbu','republishWarning':I(0xf1)},c={'title':'Bibliotēka\x20iesniegta','content':I(0xfa)},B={'resetLibrary':'Atiestatīt\x20bibliotēku','removeItemsFromLib':I(0x12f)},g={'header':'','label':{'withBackground':'','onlySelected':'','darkMode':'','embedScene':'','scale':'','padding':''},'tooltip':{'embedScene':''},'title':{'exportToPng':'','exportToSvg':'','copyPngToClipboard':''},'button':{'exportToPng':'','exportToSvg':'','copyPngToClipboard':''}},j={'tooltip':'Jūsu\x20zīmējumi\x20ir\x20šifrēti\x20no\x20gala\x20līdz\x20galam;\x20līdz\x20ar\x20to\x20Excalidraw\x20serveri\x20tos\x20nekad\x20neredzēs.','link':'Ieraksts\x20par\x20šifrēšanu\x20no\x20gala\x20līdz\x20galam\x20Excalidraw\x20blogā'},z={'angle':'Leņķis','element':'Elements','elements':'Elementi','height':'Augstums','scene':'Aina','selected':'Atlasīti','storage':'Krātuve','title':'Statistika\x20entuziastiem','total':'Kopā','version':I(0x120),'versionCopy':'Klikšķiniet,\x20lai\x20nokopētu','versionNotAvailable':'Versija\x20nav\x20pieejama','width':'Platums'},S={'addedToLibrary':I(0x10c),'copyStyles':'Nokopēja\x20stilus.','copyToClipboard':'Nokopēja\x20starpliktuvē.','copyToClipboardAsPng':'Nokopēja\x20{{exportSelection}}\x20starpliktuvē\x20kā\x20PNG\x20({{exportColorScheme}})','fileSaved':'Datne\x20saglabāta.','fileSavedToFilename':'Saglabāts\x20kā\x20{filename}','canvas':'tāfeli','selection':'atlasi','pasteAsSingleElement':'Izmantojiet\x20{{shortcut}},\x20lai\x20ielīmētu\x20kā\x20jaunu\x20elementu,\x20vai\x20ielīmētu\x20esošā\x20teksta\x20lauciņā','unableToEmbed':'','unrecognizedLinkFormat':''},h={'transparent':I(0x10b),'black':'','white':'','red':'','pink':'','grape':'','violet':'','gray':'','blue':'','cyan':'','teal':'','green':'','yellow':'','orange':'','bronze':''},y={'app':{'center_heading':'Visi\x20jūsu\x20dati\x20tiek\x20glabāti\x20uz\x20vietas\x20jūsu\x20pārlūkā.','center_heading_plus':I(0x10d),'menuHint':'Eksportēšana,\x20iestatījumi,\x20valodas...'},'defaults':{'menuHint':'Eksportēšana,\x20iestatījumi\x20un\x20vēl...','center_heading':'Diagrammas.\x20Izveidotas.\x20Vienkārši.','toolbarHint':'Izvēlies\x20rīku\x20un\x20sāc\x20zīmēt!','helpHint':I(0x119)}},T={'mostUsedCustomColors':'','colors':'','shades':'','hexCode':'','noShades':''},f={'action':{'exportToImage':{'title':'','button':'','description':''},'saveToDisk':{'title':'','button':'','description':''},'excalidrawPlus':{'title':'','button':'','description':''}},'modal':{'loadFromFile':{'title':'','button':'','description':''},'shareableLink':{'title':'','button':'','description':''}}},E={'title':'','button':'','description':'','syntax':'','preview':''},x={'labels':u,'library':a,'buttons':t,'alerts':i,'errors':e,'toolBar':s,'headings':r,'hints':o,'canvasError':l,'errorSplash':n,'roomDialog':d,'errorDialog':k,'exportDialog':m,'helpDialog':p,'clearCanvasDialog':b,'publishDialog':v,'publishSuccessDialog':c,'confirmDialog':B,'imageExportDialog':g,'encrypted':j,'stats':z,'toast':S,'colors':h,'welcomeScreen':y,'colorPicker':T,'overwriteConfirm':f,'mermaid':E};export{i as alerts,t as buttons,l as canvasError,b as clearCanvasDialog,T as colorPicker,h as colors,B as confirmDialog,x as default,j as encrypted,k as errorDialog,n as errorSplash,e as errors,m as exportDialog,r as headings,p as helpDialog,o as hints,g as imageExportDialog,u as labels,a as library,E as mermaid,f as overwriteConfirm,v as publishDialog,c as publishSuccessDialog,d as roomDialog,z as stats,S as toast,s as toolBar,y as welcomeScreen};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function b(c,d){c=c-0x79;const e=a();let f=e[c];return f;}function a(){const F=['60QMFwkh','link','section','contains','^(\x20{4}|\x5ct)','62784wTrXhe','`.+?`','13458AYAPAd','533286MsNLiJ','^>\x5cs+','(`{3,})[^`](.|\x5cn)*?\x5c1`*[\x20]*','5OvYBtU','^#{1,6}','literal','^[=-]*$','concat','9111rROQgn','11Qtiayt','469MZmzSc','symbol','string','1323130iBXiLr','984416MUXNLT','185839WsFLuc','mkdown','^[\x20\x09]*([*+-]|(\x5cd+\x5c.))(?=\x5cs+)'];a=function(){return F;};return a();}(function(c,d){const D=b,e=c();while(!![]){try{const f=parseInt(D(0x89))/0x1+-parseInt(D(0x8c))/0x2*(parseInt(D(0x82))/0x3)+-parseInt(D(0x88))/0x4*(-parseInt(D(0x7d))/0x5)+parseInt(D(0x79))/0x6*(-parseInt(D(0x84))/0x7)+parseInt(D(0x91))/0x8+parseInt(D(0x7a))/0x9+parseInt(D(0x87))/0xa*(-parseInt(D(0x83))/0xb);if(f===d)break;else e['push'](e['shift']());}catch(g){e['push'](e['shift']());}}}(a,0x1e99d));function v(f){const E=b,h=f['regex'],j={'begin':/<\/?[A-Za-z_]/,'end':'>','subLanguage':'xml','relevance':0x0},k={'begin':'^[-\x5c*]{3,}','end':'$'},m={'className':'code','variants':[{'begin':E(0x7c)},{'begin':'(~{3,})[^~](.|\x5cn)*?\x5c1~*[\x20]*'},{'begin':'```','end':'```+[\x20]*$'},{'begin':'~~~','end':'~~~+[\x20]*$'},{'begin':E(0x92)},{'begin':'(?=^(\x20{4}|\x5ct))','contains':[{'begin':E(0x90),'end':'(\x5cn)$'}],'relevance':0x0}]},p={'className':'bullet','begin':E(0x8b),'end':'\x5cs+','excludeEnd':!0x0},q={'begin':/^\[[^\n]+\]:/,'returnBegin':!0x0,'contains':[{'className':'symbol','begin':/\[/,'end':/\]/,'excludeBegin':!0x0,'excludeEnd':!0x0},{'className':'link','begin':/:\s*/,'end':/$/,'excludeBegin':!0x0}]},r=/[A-Za-z][A-Za-z0-9+.-]*/,w={'variants':[{'begin':/\[.+?\]\[.*?\]/,'relevance':0x0},{'begin':/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,'relevance':0x2},{'begin':h['concat'](/\[.+?\]\(/,r,/:\/\/.*?\)/),'relevance':0x2},{'begin':/\[.+?\]\([./?&#].*?\)/,'relevance':0x1},{'begin':/\[.*?\]\(.*?\)/,'relevance':0x0}],'returnBegin':!0x0,'contains':[{'match':/\[(?=\])/},{'className':E(0x86),'relevance':0x0,'begin':'\x5c[','end':'\x5c]','excludeBegin':!0x0,'returnEnd':!0x0},{'className':E(0x8d),'relevance':0x0,'begin':'\x5c]\x5c(','end':'\x5c)','excludeBegin':!0x0,'excludeEnd':!0x0},{'className':E(0x85),'relevance':0x0,'begin':'\x5c]\x5c[','end':'\x5c]','excludeBegin':!0x0,'excludeEnd':!0x0}]},x={'className':'strong','contains':[],'variants':[{'begin':/_{2}(?!\s)/,'end':/_{2}/},{'begin':/\*{2}(?!\s)/,'end':/\*{2}/}]},y={'className':'emphasis','contains':[],'variants':[{'begin':/\*(?![*\s])/,'end':/\*/},{'begin':/_(?![_\s])/,'end':/_/,'relevance':0x0}]},z=f['inherit'](x,{'contains':[]}),A=f['inherit'](y,{'contains':[]});x['contains']['push'](A),y[E(0x8f)]['push'](z);let B=[j,w];return[x,y,z,A]['forEach'](C=>{C['contains']=C['contains']['concat'](B);}),B=B[E(0x81)](x,y),{'name':'Markdown','aliases':['md',E(0x8a),'mkd'],'contains':[{'className':E(0x8e),'variants':[{'begin':E(0x7e),'end':'$','contains':B},{'begin':'(?=^.+?\x5cn[=-]{2,}$)','contains':[{'begin':E(0x80)},{'begin':'^','end':'\x5cn','contains':B}]}]},j,p,x,y,{'className':'quote','begin':E(0x7b),'contains':B,'end':'$'},m,k,w,q,{'scope':E(0x7f),'match':/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]};}export{v as default};
|