mxcad 1.0.37 → 1.0.38
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/dist/mxcad.es.js +18 -18
- package/dist/mxcad.umd.js +42 -42
- package/package.json +1 -1
package/dist/mxcad.umd.js
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
(function(J,k){typeof exports=="object"&&typeof module<"u"?k(exports,require("mxdraw")):typeof define=="function"&&define.amd?define(["exports","mxdraw"],k):(J=typeof globalThis<"u"?globalThis:J||self,k(J.mxcad={},J.Mx))})(this,function(J,k){"use strict";async function Jn(
|
|
2
|
-
\u6307\u5B9A\u63D2\u5165\u4F4D\u7F6E:`);let o=await
|
|
3
|
-
\u6307\u5B9A\u5706\u7684\u534A\u5F84:`),
|
|
4
|
-
\u6307\u5B9A\u5706\u7684\u76F4\u5F84:`),
|
|
5
|
-
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E00\u4E2A\u70B9:`),j===k.MrxDbgUiPrBaseReturn.kOk)){if(u===0&&(v.push(
|
|
6
|
-
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E8C\u4E2A\u70B9:`)),u===1&&(v.push(
|
|
7
|
-
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E09\u4E2A\u70B9:`)),u===2)return v.push(
|
|
8
|
-
\u6307\u5B9A\u5706\u76F4\u5F84\u7684\u7B2C\u4E00\u4E2A\u7AEF\u70B9:`),j===k.MrxDbgUiPrBaseReturn.kOk)){if(u===0&&(T=
|
|
9
|
-
\u6307\u5B9A\u5706\u76F4\u5F84\u7684\u7B2C\u4E8C\u4E2A\u7AEF\u70B9:`)),u===1)return L(T,
|
|
10
|
-
\u6307\u5B9A\u5BF9\u8C61\u4E0E\u5706\u7684\u7B2C\u4E00\u4E2A\u5207\u70B9:`),j===k.MrxDbgUiPrBaseReturn.kOk){if(u===0){const Q=
|
|
11
|
-
\u6307\u5B9A\u5706\u7684\u5706\u5FC3\u6216[\u4E09\u70B9(3P)/\u4E24\u70B9(2P)/\u5207\u70B9\u3001\u5207\u70B9\u3001\u534A\u5F84(T)]:`),Z.setKeyWords("3P 2P T"),Z.goWhile(j=>{if(j===k.MrxDbgUiPrBaseReturn.kKeyWord&&(Z.isKeyWordPicked("3P")?X="3P":Z.isKeyWordPicked("2P")?X="2P":Z.isKeyWordPicked("T")&&(X="T")),A(j))return{exit:!0};if(S(j))return{exit:!0};if(z(j))return{exit:!0};if(te(j))return{exit:!0}},j=>{j===k.MrxDbgUiPrBaseReturn.kCancel&&k.MxFun.getCurrentDraw().addMxEntity(o)})}k.store.events.on("MxDbEntityRegister",()=>{k.MxFun.addCommand("Mx_Circle",Qt)});var qt;(function(Z){Z[Z.kNormal=0]="kNormal",Z[Z.kRect=1]="kRect",Z[Z.kCross=2]="kCross"})(qt||(qt={}));class Sl{z="D2BBB6A18140C6DF814181428143CDF2D5C9C8FDC9CFCFC2D8A2B2BBD3EB8144D8A4B3F38145D7A8C7D2D8A7CAC08146C7F0B1FBD2B5B4D4B6ABCBBFD8A9814781488149B6AA814AC1BDD1CF814BC9A5D8AD814CB8F6D1BEE3DCD6D0814D814EB7E1814FB4AE8150C1D98151D8BC8152CDE8B5A4CEAAD6F78153C0F6BED9D8AF815481558156C4CB8157BEC38158D8B1C3B4D2E58159D6AECEDAD5A7BAF5B7A6C0D6815AC6B9C5D2C7C7815BB9D4815CB3CBD2D2815D815ED8BFBEC5C6F2D2B2CFB0CFE7815F816081618162CAE981638164D8C081658166816781688169816AC2F2C2D2816BC8E9816C816D816E816F817081718172817381748175C7AC8176817781788179817A817B817CC1CB817DD3E8D5F9817ECAC2B6FED8A1D3DABFF78180D4C6BBA5D8C1CEE5BEAE81818182D8A88183D1C7D0A9818481858186D8BDD9EFCDF6BFBA8187BDBBBAA5D2E0B2FABAE0C4B68188CFEDBEA9CDA4C1C18189818A818BC7D7D9F1818CD9F4818D818E818F8190C8CBD8E9819181928193D2DACAB2C8CAD8ECD8EAD8C6BDF6C6CDB3F08194D8EBBDF1BDE98195C8D4B4D381968197C2D88198B2D6D7D0CACBCBFBD5CCB8B6CFC98199819A819BD9DAD8F0C7AA819CD8EE819DB4FAC1EED2D4819E819FD8ED81A0D2C7D8EFC3C781A181A281A3D1F681A4D6D9D8F281A5D8F5BCFEBCDB81A681A781A8C8CE81A9B7DD81AAB7C281ABC6F381AC81AD81AE81AF81B081B181B2D8F8D2C181B381B4CEE9BCBFB7FCB7A5D0DD81B581B681B781B881B9D6DAD3C5BBEFBBE1D8F181BA81BBC9A1CEB0B4AB81BCD8F381BDC9CBD8F6C2D7D8F781BE81BFCEB1D8F981C081C181C2B2AEB9C081C3D9A381C4B0E981C5C1E681C6C9EC81C7CBC581C8CBC6D9A481C981CA81CB81CC81CDB5E881CE81CFB5AB81D081D181D281D381D481D5CEBBB5CDD7A1D7F4D3D381D6CCE581D7BACE81D8D9A2D9DCD3E0D8FDB7F0D7F7D8FED8FAD9A1C4E381D981DAD3B6D8F4D9DD81DBD8FB81DCC5E581DD81DEC0D081DF81E0D1F0B0DB81E181E2BCD1D9A681E3D9A581E481E581E681E7D9ACD9AE81E8D9ABCAB981E981EA81EBD9A9D6B681EC81ED81EEB3DED9A881EFC0FD81F0CACC81F1D9AA81F2D9A781F381F4D9B081F581F6B6B181F781F881F9B9A981FAD2C081FB81FCCFC081FD81FEC2C28240BDC4D5ECB2E0C7C8BFEBD9AD8241D9AF8242CEEABAEE82438244824582468247C7D682488249824A824B824C824D824E824F8250B1E3825182528253B4D9B6EDD9B48254825582568257BFA182588259825AD9DEC7CEC0FED9B8825B825C825D825E825FCBD7B7FD8260D9B58261D9B7B1A3D3E1D9B98262D0C58263D9B682648265D9B18266D9B2C1A9D9B382678268BCF3D0DEB8A98269BEE3826AD9BD826B826C826D826ED9BA826FB0B3827082718272D9C28273827482758276827782788279827A827B827C827D827E8280D9C4B1B68281D9BF82828283B5B98284BEF3828582868287CCC8BAF2D2D08288D9C38289828ABDE8828BB3AB828C828D828ED9C5BEEB828FD9C6D9BBC4DF8290D9BED9C1D9C0829182928293829482958296829782988299829A829BD5AE829CD6B5829DC7E3829E829F82A082A1D9C882A282A382A4BCD9D9CA82A582A682A7D9BC82A8D9CBC6AB82A982AA82AB82AC82ADD9C982AE82AF82B082B1D7F682B2CDA382B382B482B582B682B782B882B982BABDA182BB82BC82BD82BE82BF82C0D9CC82C182C282C382C482C582C682C782C882C9C5BCCDB582CA82CB82CCD9CD82CD82CED9C7B3A5BFFE82CF82D082D182D2B8B582D382D4C0FC82D582D682D782D8B0F882D982DA82DB82DC82DD82DE82DF82E082E182E282E382E482E582E682E782E882E982EA82EB82EC82EDB4F682EED9CE82EFD9CFB4A2D9D082F082F1B4DF82F282F382F482F582F6B0C182F782F882F982FA82FB82FC82FDD9D1C9B582FE8340834183428343834483458346834783488349834A834B834C834D834E834F83508351CFF1835283538354835583568357D9D283588359835AC1C5835B835C835D835E835F836083618362836383648365D9D6C9AE8366836783688369D9D5D9D4D9D7836A836B836C836DCBDB836EBDA9836F8370837183728373C6A7837483758376837783788379837A837B837C837DD9D3D9D8837E83808381D9D9838283838384838583868387C8E583888389838A838B838C838D838E838F839083918392839383948395C0DC8396839783988399839A839B839C839D839E839F83A083A183A283A383A483A583A683A783A883A983AA83AB83AC83AD83AE83AF83B083B183B2B6F9D8A3D4CA83B3D4AAD0D6B3E4D5D783B4CFC8B9E283B5BFCB83B6C3E283B783B883B9B6D283BA83BBCDC3D9EED9F083BC83BD83BEB5B383BFB6B583C083C183C283C383C4BEA483C583C6C8EB83C783C8C8AB83C983CAB0CBB9ABC1F9D9E283CBC0BCB9B283CCB9D8D0CBB1F8C6E4BEDFB5E4D7C883CDD1F8BCE6CADE83CE83CFBCBDD9E6D8E783D083D1C4DA83D283D3B8D4C8BD83D483D5B2E1D4D983D683D783D883D9C3B083DA83DBC3E1DAA2C8DF83DCD0B483DDBEFCC5A983DE83DF83E0B9DA83E1DAA383E2D4A9DAA483E383E483E583E683E7D9FBB6AC83E883E9B7EBB1F9D9FCB3E5BEF683EABFF6D2B1C0E483EB83EC83EDB6B3D9FED9FD83EE83EFBEBB83F083F183F2C6E083F3D7BCDAA183F4C1B983F5B5F2C1E883F683F7BCF583F8B4D583F983FA83FB83FC83FD83FE844084418442C1DD8443C4FD84448445BCB8B7B284468447B7EF84488449844A844B844C844DD9EC844EC6BE844FBFADBBCB84508451B5CA8452DBC9D0D78453CDB9B0BCB3F6BBF7DBCABAAF8454D4E4B5B6B5F3D8D6C8D084558456B7D6C7D0D8D78457BFAF84588459DBBBD8D8845A845BD0CCBBAE845C845D845EEBBEC1D0C1F5D4F2B8D5B4B4845FB3F584608461C9BE846284638464C5D0846584668467C5D9C0FB8468B1F08469D8D9B9CE846AB5BD846B846CD8DA846D846ED6C6CBA2C8AFC9B2B4CCBFCC846FB9F48470D8DBD8DCB6E7BCC1CCEA847184728473847484758476CFF78477D8DDC7B084788479B9D0BDA3847A847BCCDE847CC6CA847D847E848084818482D8E08483D8DE84848485D8DF848684878488B0FE8489BEE7848ACAA3BCF4848B848C848D848EB8B1848F8490B8EE849184928493849484958496849784988499849AD8E2849BBDCB849CD8E4D8E3849D849E849F84A084A1C5FC84A284A384A484A584A684A784A8D8E584A984AAD8E684AB84AC84AD84AE84AF84B084B1C1A684B2C8B0B0ECB9A6BCD3CEF1DBBDC1D384B384B484B584B6B6AFD6FAC5ACBDD9DBBEDBBF84B784B884B9C0F8BEA2C0CD84BA84BB84BC84BD84BE84BF84C084C184C284C3DBC0CAC684C484C584C6B2AA84C784C884C9D3C284CAC3E384CBD1AB84CC84CD84CE84CFDBC284D0C0D584D184D284D3DBC384D4BFB184D584D684D784D884D984DAC4BC84DB84DC84DD84DEC7DA84DF84E084E184E284E384E484E584E684E784E884E9DBC484EA84EB84EC84ED84EE84EF84F084F1D9E8C9D784F284F384F4B9B4CEF0D4C884F584F684F784F8B0FCB4D284F9D0D984FA84FB84FC84FDD9E984FEDECBD9EB8540854185428543D8B0BBAFB1B18544B3D7D8CE85458546D4D185478548BDB3BFEF8549CFBB854A854BD8D0854C854D854EB7CB854F85508551D8D185528553855485558556855785588559855A855BC6A5C7F8D2BD855C855DD8D2C4E4855ECAAE855FC7A78560D8A68561C9FDCEE7BBDCB0EB856285638564BBAAD0AD8565B1B0D7E4D7BF8566B5A5C2F4C4CF85678568B2A98569B2B7856AB1E5DFB2D5BCBFA8C2ACD8D5C2B1856BD8D4CED4856CDAE0856DCEC0856E856FD8B4C3AED3A1CEA38570BCB4C8B4C2D18571BEEDD0B68572DAE18573857485758576C7E485778578B3A78579B6F2CCFCC0FA857A857BC0F7857CD1B9D1E1D8C7857D857E85808581858285838584B2DE85858586C0E58587BAF185888589D8C8858AD4AD858B858CCFE1D8C9858DD8CACFC3858EB3F8BEC7858F859085918592D8CB8593859485958596859785988599DBCC859A859B859C859DC8A5859E859F85A0CFD885A1C8FEB2CE85A285A385A485A585A6D3D6B2E6BCB0D3D1CBABB7B485A785A885A9B7A285AA85ABCAE585ACC8A1CADCB1E4D0F085ADC5D185AE85AF85B0DBC5B5FE85B185B2BFDAB9C5BEE4C1ED85B3DFB6DFB5D6BBBDD0D5D9B0C8B6A3BFC9CCA8DFB3CAB7D3D285B4D8CFD2B6BAC5CBBECCBE85B5DFB7B5F0DFB485B685B785B8D3F585B9B3D4B8F785BADFBA85BBBACFBCAAB5F585BCCDACC3FBBAF3C0F4CDC2CFF2DFB8CFC585BDC2C0DFB9C2F085BE85BF85C0BEFD85C1C1DFCDCCD2F7B7CDDFC185C2DFC485C385C4B7F1B0C9B6D6B7D485C5BAACCCFDBFD4CBB1C6F485C6D6A8DFC585C7CEE2B3B385C885C9CEFCB4B585CACEC7BAF085CBCEE185CCD1BD85CD85CEDFC085CF85D0B4F485D1B3CA85D2B8E6DFBB85D385D485D585D6C4C585D7DFBCDFBDDFBEC5BBDFBFDFC2D4B1DFC385D8C7BACED885D985DA85DB85DC85DDC4D885DEDFCA85DFDFCF85E0D6DC85E185E285E385E485E585E685E785E8DFC9DFDACEB685E9BAC7DFCEDFC8C5DE85EA85EBC9EBBAF4C3FC85EC85EDBED785EEDFC685EFDFCD85F0C5D885F185F285F385F4D5A6BACD85F5BECCD3BDB8C085F6D6E485F7DFC7B9BEBFA785F885F9C1FCDFCBDFCC85FADFD085FB85FC85FD85FE8640DFDBDFE58641DFD7DFD6D7C9DFE3DFE4E5EBD2A7DFD28642BFA98643D4DB8644BFC8DFD4864586468647CFCC86488649DFDD864AD1CA864BDFDEB0A7C6B7DFD3864CBAE5864DB6DFCDDBB9FED4D5864E864FDFDFCFECB0A5DFE7DFD1D1C6DFD5DFD8DFD9DFDC8650BBA98651DFE0DFE18652DFE2DFE6DFE8D3B486538654865586568657B8E7C5B6DFEAC9DAC1A8C4C486588659BFDECFF8865A865B865CD5DCDFEE865D865E865F866086618662B2B88663BADFDFEC8664DBC18665D1E48666866786688669CBF4B4BD866AB0A6866B866C866D866E866FDFF1CCC6DFF286708671DFED867286738674867586768677DFE986788679867A867BDFEB867CDFEFDFF0BBBD867D867EDFF386808681DFF48682BBA38683CADBCEA8E0A7B3AA8684E0A6868586868687E0A186888689868A868BDFFE868CCDD9DFFC868DDFFA868EBFD0D7C4868FC9CC86908691DFF8B0A186928693869486958696DFFD869786988699869ADFFBE0A2869B869C869D869E869FE0A886A086A186A286A3B7C886A486A5C6A1C9B6C0B2DFF586A686A7C5BE86A8D8C4DFF9C4F686A986AA86AB86AC86AD86AEE0A3E0A4E0A5D0A586AF86B0E0B4CCE486B1E0B186B2BFA6E0AFCEB9E0ABC9C686B386B4C0AEE0AEBAEDBAB0E0A986B586B686B7DFF686B8E0B386B986BAE0B886BB86BC86BDB4ADE0B986BE86BFCFB2BAC886C0E0B086C186C286C386C486C586C686C7D0FA86C886C986CA86CB86CC86CD86CE86CF86D0E0AC86D1D4FB86D2DFF786D3C5E786D4E0AD86D5D3F786D6E0B6E0B786D786D886D986DA86DBE0C4D0E186DC86DD86DEE0BC86DF86E0E0C9E0CA86E186E286E3E0BEE0AAC9A4E0C186E4E0B286E586E686E786E886E9CAC8E0C386EAE0B586EBCECB86ECCBC3E0CDE0C6E0C286EDE0CB86EEE0BAE0BFE0C086EF86F0E0C586F186F2E0C7E0C886F3E0CC86F4E0BB86F586F686F786F886F9CBD4E0D586FAE0D6E0D286FB86FC86FD86FE87408741E0D0BCCE87428743E0D18744B8C2D8C587458746874787488749874A874B874CD0EA874D874EC2EF874F8750E0CFE0BD875187528753E0D4E0D387548755E0D78756875787588759E0DCE0D8875A875B875CD6F6B3B0875DD7EC875ECBBB875F8760E0DA8761CEFB876287638764BAD987658766876787688769876A876B876C876D876E876F8770E0E1E0DDD2AD87718772877387748775E0E287768777E0DBE0D9E0DF87788779E0E0877A877B877C877D877EE0DE8780E0E4878187828783C6F7D8ACD4EBE0E6CAC98784878587868787E0E587888789878A878BB8C1878C878D878E878FE0E7E0E887908791879287938794879587968797E0E9E0E387988799879A879B879C879D879EBABFCCE7879F87A087A1E0EA87A287A387A487A587A687A787A887A987AA87AB87AC87AD87AE87AF87B0CFF987B187B287B387B487B587B687B787B887B987BA87BBE0EB87BC87BD87BE87BF87C087C187C2C8C287C387C487C587C6BDC087C787C887C987CA87CB87CC87CD87CE87CF87D087D187D287D3C4D287D487D587D687D787D887D987DA87DB87DCE0EC87DD87DEE0ED87DF87E0C7F4CBC487E1E0EEBBD8D8B6D2F2E0EFCDC587E2B6DA87E387E487E587E687E787E8E0F187E9D4B087EA87EBC0A7B4D187EC87EDCEA7E0F087EE87EF87F0E0F2B9CC87F187F2B9FACDBCE0F387F387F487F5C6D4E0F487F6D4B287F7C8A6E0F6E0F587F887F987FA87FB87FC87FD87FE8840884188428843884488458846884788488849E0F7884A884BCDC1884C884D884ECAA5884F885088518852D4DADBD7DBD98853DBD8B9E7DBDCDBDDB5D888548855DBDA8856885788588859885ADBDBB3A1DBDF885B885CBBF8885DD6B7885EDBE0885F886088618862BEF988638864B7BB8865DBD0CCAEBFB2BBB5D7F8BFD38866886788688869886ABFE9886B886CBCE1CCB3DBDEB0D3CEEBB7D8D7B9C6C2886D886EC0A4886FCCB98870DBE7DBE1C6BADBE38871DBE88872C5F7887388748875DBEA88768877DBE9BFC088788879887ADBE6DBE5887B887C887D887E8880B4B9C0ACC2A2DBE2DBE48881888288838884D0CDDBED88858886888788888889C0DDDBF2888A888B888C888D888E888F8890B6E28891889288938894DBF3DBD2B9B8D4ABDBEC8895BFD1DBF08896DBD18897B5E68898DBEBBFE58899889A889BDBEE889CDBF1889D889E889FDBF988A088A188A288A388A488A588A688A788A8B9A1B0A388A988AA88AB88AC88AD88AE88AFC2F188B088B1B3C7DBEF88B288B3DBF888B4C6D2DBF488B588B6DBF5DBF7DBF688B788B8DBFE88B9D3F2B2BA88BA88BB88BCDBFD88BD88BE88BF88C088C188C288C388C4DCA488C5DBFB88C688C788C888C9DBFA88CA88CB88CCDBFCC5E0BBF988CD88CEDCA388CF88D0DCA588D1CCC388D288D388D4B6D1DDC088D588D688D7DCA188D8DCA288D988DA88DBC7B588DC88DD88DEB6E988DF88E088E1DCA788E288E388E488E5DCA688E6DCA9B1A488E788E8B5CC88E988EA88EB88EC88EDBFB088EE88EF88F088F188F2D1DF88F388F488F588F6B6C288F788F888F988FA88FB88FC88FD88FE894089418942894389448945DCA88946894789488949894A894B894CCBFAEBF3894D894E894FCBDC89508951CBFE895289538954CCC189558956895789588959C8FB895A895B895C895D895E895FDCAA89608961896289638964CCEEDCAB89658966896789688969896A896B896C896D896E896F897089718972897389748975DBD38976DCAFDCAC8977BEB38978CAFB8979897A897BDCAD897C897D897E89808981898289838984C9CAC4B989858986898789888989C7BDDCAE898A898B898CD4F6D0E6898D898E898F89908991899289938994C4ABB6D589958996899789988999899A899B899C899D899E899F89A089A189A289A389A489A589A6DBD489A789A889A989AAB1DA89AB89AC89ADDBD589AE89AF89B089B189B289B389B489B589B689B789B8DBD689B989BA89BBBABE89BC89BD89BE89BF89C089C189C289C389C489C589C689C789C889C9C8C089CA89CB89CC89CD89CE89CFCABFC8C989D0D7B389D1C9F989D289D3BFC789D489D5BAF889D689D7D2BC89D889D989DA89DB89DC89DD89DE89DFE2BA89E0B4A689E189E2B1B889E389E489E589E689E7B8B489E8CFC489E989EA89EB89ECD9E7CFA6CDE289ED89EED9EDB6E089EFD2B989F089F1B9BB89F289F389F489F5E2B9E2B789F6B4F389F7CCECCCABB7F289F8D8B2D1EBBABB89F9CAA789FA89FBCDB789FC89FDD2C4BFE4BCD0B6E189FEDEC58A408A418A428A43DEC6DBBC8A44D1D98A458A46C6E6C4CEB7EE8A47B7DC8A488A49BFFCD7E08A4AC6F58A4B8A4CB1BCDEC8BDB1CCD7DECA8A4DDEC98A4E8A4F8A508A518A52B5EC8A53C9DD8A548A55B0C28A568A578A588A598A5A8A5B8A5C8A5D8A5E8A5F8A608A618A62C5AEC5AB8A63C4CC8A64BCE9CBFD8A658A668A67BAC38A688A698A6AE5F9C8E7E5FACDFD8A6BD7B1B8BEC2E88A6CC8D18A6D8A6EE5FB8A6F8A708A718A72B6CABCCB8A738A74D1FDE6A18A75C3EE8A768A778A788A79E6A48A7A8A7B8A7C8A7DE5FEE6A5CDD78A7E8A80B7C1E5FCE5FDE6A38A818A82C4DDE6A88A838A84E6A78A858A868A878A888A898A8AC3C38A8BC6DE8A8C8A8DE6AA8A8E8A8F8A908A918A928A938A94C4B78A958A968A97E6A2CABC8A988A998A9A8A9BBDE3B9C3E6A6D0D5CEAF8A9C8A9DE6A9E6B08A9ED2A68A9FBDAAE6AD8AA08AA18AA28AA38AA4E6AF8AA5C0D18AA68AA7D2CC8AA88AA98AAABCA78AAB8AAC8AAD8AAE8AAF8AB08AB18AB28AB38AB48AB58AB6E6B18AB7D2F68AB88AB98ABAD7CB8ABBCDFE8ABCCDDEC2A6E6ABE6ACBDBFE6AEE6B38ABD8ABEE6B28ABF8AC08AC18AC2E6B68AC3E6B88AC48AC58AC68AC7C4EF8AC88AC98ACAC4C88ACB8ACCBEEAC9EF8ACD8ACEE6B78ACFB6F08AD08AD18AD2C3E48AD38AD48AD58AD68AD78AD88AD9D3E9E6B48ADAE6B58ADBC8A28ADC8ADD8ADE8ADF8AE0E6BD8AE18AE28AE3E6B98AE48AE58AE68AE78AE8C6C58AE98AEACDF1E6BB8AEB8AEC8AED8AEE8AEF8AF08AF18AF28AF38AF4E6BC8AF58AF68AF78AF8BBE98AF98AFA8AFB8AFC8AFD8AFE8B40E6BE8B418B428B438B44E6BA8B458B46C0B78B478B488B498B4A8B4B8B4C8B4D8B4E8B4FD3A4E6BFC9F4E6C38B508B51E6C48B528B538B548B55D0F68B568B578B588B598B5A8B5B8B5C8B5D8B5E8B5F8B608B618B628B638B648B658B668B67C3BD8B688B698B6A8B6B8B6C8B6D8B6EC3C4E6C28B6F8B708B718B728B738B748B758B768B778B788B798B7A8B7B8B7CE6C18B7D8B7E8B808B818B828B838B84E6C7CFB18B85EBF48B868B87E6CA8B888B898B8A8B8B8B8CE6C58B8D8B8EBCDEC9A98B8F8B908B918B928B938B94BCB58B958B96CFD38B978B988B998B9A8B9BE6C88B9CE6C98B9DE6CE8B9EE6D08B9F8BA08BA1E6D18BA28BA38BA4E6CBB5D58BA5E6CC8BA68BA7E6CF8BA88BA9C4DB8BAAE6C68BAB8BAC8BAD8BAE8BAFE6CD8BB08BB18BB28BB38BB48BB58BB68BB78BB88BB98BBA8BBB8BBC8BBD8BBE8BBF8BC08BC18BC28BC38BC48BC58BC6E6D28BC78BC88BC98BCA8BCB8BCC8BCD8BCE8BCF8BD08BD18BD2E6D4E6D38BD38BD48BD58BD68BD78BD88BD98BDA8BDB8BDC8BDD8BDE8BDF8BE08BE18BE28BE38BE48BE58BE68BE78BE88BE98BEA8BEB8BECE6D58BEDD9F88BEE8BEFE6D68BF08BF18BF28BF38BF48BF58BF68BF7E6D78BF88BF98BFA8BFB8BFC8BFD8BFE8C408C418C428C438C448C458C468C47D7D3E6DD8C48E6DEBFD7D4D08C49D7D6B4E6CBEFE6DAD8C3D7CED0A28C4AC3CF8C4B8C4CE6DFBCBEB9C2E6DBD1A78C4D8C4EBAA2C2CF8C4FD8AB8C508C518C52CAEBE5EE8C53E6DC8C54B7F58C558C568C578C58C8E68C598C5AC4F58C5B8C5CE5B2C4FE8C5DCBFCE5B3D5AC8C5ED3EECAD8B0B28C5FCBCECDEA8C608C61BAEA8C628C638C64E5B58C65E5B48C66D7DAB9D9D6E6B6A8CDF0D2CBB1A6CAB58C67B3E8C9F3BFCDD0FBCAD2E5B6BBC28C688C698C6ACFDCB9AC8C6B8C6C8C6D8C6ED4D78C6F8C70BAA6D1E7CFFCBCD28C71E5B7C8DD8C728C738C74BFEDB1F6CBDE8C758C76BCC58C77BCC4D2FAC3DCBFDC8C788C798C7A8C7BB8BB8C7C8C7D8C7EC3C28C80BAAED4A28C818C828C838C848C858C868C878C888C89C7DEC4AFB2EC8C8AB9D18C8B8C8CE5BBC1C88C8D8C8ED5AF8C8F8C908C918C928C93E5BC8C94E5BE8C958C968C978C988C998C9A8C9BB4E7B6D4CBC2D1B0B5BC8C9C8C9DCAD98C9EB7E28C9F8CA0C9E48CA1BDAB8CA28CA3CEBED7F08CA48CA58CA68CA7D0A18CA8C9D98CA98CAAB6FBE6D8BCE28CABB3BE8CACC9D08CADE6D9B3A28CAE8CAF8CB08CB1DECC8CB2D3C8DECD8CB3D2A28CB48CB58CB68CB7DECE8CB88CB98CBA8CBBBECD8CBC8CBDDECF8CBE8CBF8CC0CAACD2FCB3DFE5EAC4E1BEA1CEB2C4F2BED6C6A8B2E38CC18CC2BED38CC38CC4C7FCCCEBBDECCEDD8CC58CC6CABAC6C1E5ECD0BC8CC78CC88CC9D5B98CCA8CCB8CCCE5ED8CCD8CCE8CCF8CD0CAF48CD1CDC0C2C58CD2E5EF8CD3C2C4E5F08CD48CD58CD68CD78CD88CD98CDAE5F8CDCD8CDBC9BD8CDC8CDD8CDE8CDF8CE08CE18CE2D2D9E1A88CE38CE48CE58CE6D3EC8CE7CBEAC6F18CE88CE98CEA8CEB8CECE1AC8CED8CEE8CEFE1A7E1A98CF08CF1E1AAE1AF8CF28CF3B2ED8CF4E1ABB8DAE1ADE1AEE1B0B5BAE1B18CF58CF68CF78CF88CF9E1B3E1B88CFA8CFB8CFC8CFD8CFED1D28D40E1B6E1B5C1EB8D418D428D43E1B78D44D4C08D45E1B28D46E1BAB0B68D478D488D498D4AE1B48D4BBFF98D4CE1B98D4D8D4EE1BB8D4F8D508D518D528D538D54E1BE8D558D568D578D588D598D5AE1BC8D5B8D5C8D5D8D5E8D5F8D60D6C58D618D628D638D648D658D668D67CFBF8D688D69E1BDE1BFC2CD8D6AB6EB8D6BD3F88D6C8D6DC7CD8D6E8D6FB7E58D708D718D728D738D748D758D768D778D788D79BEFE8D7A8D7B8D7C8D7D8D7E8D80E1C0E1C18D818D82E1C7B3E78D838D848D858D868D878D88C6E98D898D8A8D8B8D8C8D8DB4DE8D8ED1C28D8F8D908D918D92E1C88D938D94E1C68D958D968D978D988D99E1C58D9AE1C3E1C28D9BB1C08D9C8D9D8D9ED5B8E1C48D9F8DA08DA18DA28DA3E1CB8DA48DA58DA68DA78DA88DA98DAA8DABE1CCE1CA8DAC8DAD8DAE8DAF8DB08DB18DB28DB3EFFA8DB48DB5E1D3E1D2C7B68DB68DB78DB88DB98DBA8DBB8DBC8DBD8DBE8DBF8DC0E1C98DC18DC2E1CE8DC3E1D08DC48DC58DC68DC78DC88DC98DCA8DCB8DCC8DCD8DCEE1D48DCFE1D1E1CD8DD08DD1E1CF8DD28DD38DD48DD5E1D58DD68DD78DD88DD98DDA8DDB8DDC8DDD8DDE8DDF8DE08DE18DE2E1D68DE38DE48DE58DE68DE78DE88DE98DEA8DEB8DEC8DED8DEE8DEF8DF08DF18DF28DF38DF48DF58DF68DF78DF8E1D78DF98DFA8DFBE1D88DFC8DFD8DFE8E408E418E428E438E448E458E468E478E488E498E4A8E4B8E4C8E4D8E4E8E4F8E508E518E528E538E548E55E1DA8E568E578E588E598E5A8E5B8E5C8E5D8E5E8E5F8E608E618E62E1DB8E638E648E658E668E678E688E69CEA18E6A8E6B8E6C8E6D8E6E8E6F8E708E718E728E738E748E758E76E7DD8E77B4A8D6DD8E788E79D1B2B3B28E7A8E7BB9A4D7F3C7C9BEDEB9AE8E7CCED78E7D8E7EB2EEDBCF8E80BCBAD2D1CBC8B0CD8E818E82CFEF8E838E848E858E868E87D9E3BDED8E888E89B1D2CAD0B2BC8E8ACBA7B7AB8E8BCAA68E8C8E8D8E8ECFA38E8F8E90E0F8D5CAE0FB8E918E92E0FAC5C1CCFB8E93C1B1E0F9D6E3B2AFD6C4B5DB8E948E958E968E978E988E998E9A8E9BB4F8D6A18E9C8E9D8E9E8E9F8EA0CFAFB0EF8EA18EA2E0FC8EA38EA48EA58EA68EA7E1A1B3A38EA88EA9E0FDE0FEC3B18EAA8EAB8EAC8EADC3DD8EAEE1A2B7F98EAF8EB08EB18EB28EB38EB4BBCF8EB58EB68EB78EB88EB98EBA8EBBE1A3C4BB8EBC8EBD8EBE8EBF8EC0E1A48EC18EC2E1A58EC38EC4E1A6B4B18EC58EC68EC78EC88EC98ECA8ECB8ECC8ECD8ECE8ECF8ED08ED18ED28ED3B8C9C6BDC4EA8ED4B2A28ED5D0D28ED6E7DBBBC3D3D7D3C48ED7B9E3E2CF8ED88ED98EDAD7AF8EDBC7ECB1D38EDC8EDDB4B2E2D18EDE8EDF8EE0D0F2C2AEE2D08EE1BFE2D3A6B5D7E2D2B5EA8EE2C3EDB8FD8EE3B8AE8EE4C5D3B7CFE2D48EE58EE68EE78EE8E2D3B6C8D7F98EE98EEA8EEB8EEC8EEDCDA58EEE8EEF8EF08EF18EF2E2D88EF3E2D6CAFCBFB5D3B9E2D58EF48EF58EF68EF7E2D78EF88EF98EFA8EFB8EFC8EFD8EFE8F408F418F42C1AEC0C88F438F448F458F468F478F48E2DBE2DAC0AA8F498F4AC1CE8F4B8F4C8F4D8F4EE2DC8F4F8F508F518F528F538F548F558F568F578F588F598F5AE2DD8F5BE2DE8F5C8F5D8F5E8F5F8F608F618F628F638F64DBC88F65D1D3CDA28F668F67BDA88F688F698F6ADEC3D8A5BFAADBCDD2ECC6FAC5AA8F6B8F6C8F6DDEC48F6EB1D7DFAE8F6F8F708F71CABD8F72DFB18F73B9AD8F74D2FD8F75B8A5BAEB8F768F77B3DA8F788F798F7AB5DCD5C58F7B8F7C8F7D8F7EC3D6CFD2BBA18F80E5F3E5F28F818F82E5F48F83CDE48F84C8F58F858F868F878F888F898F8A8F8BB5AFC7BF8F8CE5F68F8D8F8E8F8FECB08F908F918F928F938F948F958F968F978F988F998F9A8F9B8F9C8F9D8F9EE5E68F9FB9E9B5B18FA0C2BCE5E8E5E7E5E98FA18FA28FA38FA4D2CD8FA58FA68FA7E1EAD0CE8FA8CDAE8FA9D1E58FAA8FABB2CAB1EB8FACB1F2C5ED8FAD8FAED5C3D3B08FAFE1DC8FB08FB18FB2E1DD8FB3D2DB8FB4B3B9B1CB8FB58FB68FB7CDF9D5F7E1DE8FB8BEB6B4FD8FB9E1DFBADCE1E0BBB2C2C9E1E18FBA8FBB8FBCD0EC8FBDCDBD8FBE8FBFE1E28FC0B5C3C5C7E1E38FC18FC2E1E48FC38FC48FC58FC6D3F98FC78FC88FC98FCA8FCB8FCCE1E58FCDD1AD8FCE8FCFE1E6CEA28FD08FD18FD28FD38FD48FD5E1E78FD6B5C28FD78FD88FD98FDAE1E8BBD58FDB8FDC8FDD8FDE8FDFD0C4E2E0B1D8D2E48FE08FE1E2E18FE28FE3BCC9C8CC8FE4E2E3ECFEECFDDFAF8FE58FE68FE7E2E2D6BECDFCC3A68FE88FE98FEAE3C38FEB8FECD6D2E2E78FED8FEEE2E88FEF8FF0D3C78FF18FF2E2ECBFEC8FF3E2EDE2E58FF48FF5B3C08FF68FF78FF8C4EE8FF98FFAE2EE8FFB8FFCD0C38FFDBAF6E2E9B7DEBBB3CCACCBCBE2E4E2E6E2EAE2EB8FFE90409041E2F790429043E2F4D4F5E2F390449045C5AD9046D5FAC5C2B2C090479048E2EF9049E2F2C1AFCBBC904A904BB5A1E2F9904C904D904EBCB1E2F1D0D4D4B9E2F5B9D6E2F6904F90509051C7D390529053905490559056E2F0905790589059905A905BD7DCEDA1905C905DE2F8905EEDA5E2FECAD1905F906090619062906390649065C1B59066BBD090679068BFD69069BAE3906A906BCBA1906C906D906EEDA6EDA3906F9070EDA29071907290739074BBD6EDA7D0F490759076EDA4BADEB6F7E3A1B6B2CCF1B9A79077CFA2C7A190789079BFD2907A907BB6F1907CE2FAE2FBE2FDE2FCC4D5E3A2907DD3C1907E90809081E3A7C7C49082908390849085CFA490869087E3A9BAB790889089908A908BE3A8908CBBDA908DE3A3908E908F9090E3A4E3AA9091E3A69092CEF2D3C690939094BBBC90959096D4C39097C4FA90989099EDA8D0FCE3A5909AC3F5909BE3ADB1AF909CE3B2909D909E909FBCC290A090A1E3ACB5BF90A290A390A490A590A690A790A890A9C7E9E3B090AA90AB90ACBEAACDEF90AD90AE90AF90B090B1BBF390B290B390B4CCE890B590B6E3AF90B7E3B190B8CFA7E3AE90B9CEA9BBDD90BA90BB90BC90BD90BEB5EBBEE5B2D2B3CD90BFB1B9E3ABB2D1B5ACB9DFB6E890C090C1CFEBE3B790C2BBCC90C390C4C8C7D0CA90C590C690C790C890C9E3B8B3EE90CA90CB90CC90CDEDA990CED3FAD3E490CF90D090D1EDAAE3B9D2E290D290D390D490D590D6E3B590D790D890D990DAD3DE90DB90DC90DD90DEB8D0E3B390DF90E0E3B6B7DF90E1E3B4C0A290E290E390E4E3BA90E590E690E790E890E990EA90EB90EC90ED90EE90EF90F090F190F290F390F490F590F690F7D4B890F890F990FA90FB90FC90FD90FE9140B4C89141E3BB9142BBC59143C9F791449145C9E5914691479148C4BD9149914A914B914C914D914E914FEDAB9150915191529153C2FD9154915591569157BBDBBFAE91589159915A915B915C915D915ECEBF915F916091619162E3BC9163BFB6916491659166916791689169916A916B916C916D916E916F9170917191729173917491759176B1EF91779178D4F79179917A917B917C917DE3BE917E9180918191829183918491859186EDAD918791889189918A918B918C918D918E918FE3BFBAA9EDAC91909191E3BD91929193919491959196919791989199919A919BE3C0919C919D919E919F91A091A1BAB691A291A391A4B6AE91A591A691A791A891A9D0B891AAB0C3EDAE91AB91AC91AD91AE91AFEDAFC0C191B0E3C191B191B291B391B491B591B691B791B891B991BA91BB91BC91BD91BE91BF91C091C1C5B391C291C391C491C591C691C791C891C991CA91CB91CC91CD91CE91CFE3C291D091D191D291D391D491D591D691D791D8DCB291D991DA91DB91DC91DD91DEEDB091DFB8EA91E0CEECEAA7D0E7CAF9C8D6CFB7B3C9CED2BDE491E191E2E3DEBBF2EAA8D5BD91E3C6DDEAA991E491E591E6EAAA91E7EAACEAAB91E8EAAEEAAD91E991EA91EB91ECBDD891EDEAAF91EEC2BE91EF91F091F191F2B4C1B4F791F391F4BBA791F591F691F791F891F9ECE6ECE5B7BFCBF9B1E291FAECE791FB91FC91FDC9C8ECE8ECE991FECAD6DED0B2C5D4FA92409241C6CBB0C7B4F2C8D3924292439244CDD092459246BFB8924792489249924A924B924C924DBFDB924E924FC7A4D6B49250C0A9DED1C9A8D1EFC5A4B0E7B3B6C8C592519252B0E292539254B7F692559256C5FA92579258B6F39259D5D2B3D0BCBC925A925B925CB3AD925D925E925F9260BEF1B0D1926192629263926492659266D2D6CAE3D7A59267CDB6B6B6BFB9D5DB9268B8A7C5D79269926A926BDED2BFD9C2D5C7C0926CBBA4B1A8926D926EC5EA926F9270C5FBCCA79271927292739274B1A7927592769277B5D692789279927AC4A8927BDED3D1BAB3E9927CC3F2927D927EB7F79280D6F4B5A3B2F0C4B4C4E9C0ADDED49281B0E8C5C4C1E09282B9D59283BEDCCDD8B0CE9284CDCFDED6BED0D7BEDED5D5D0B0DD92859286C4E292879288C2A3BCF09289D3B5C0B9C5A1B2A6D4F1928A928BC0A8CAC3DED7D5FC928CB9B0928DC8ADCBA9928EDED9BFBD928F929092919292C6B4D7A7CAB0C4C39293B3D6B9D29294929592969297D6B8EAFCB0B492989299929A929BBFE6929C929DCCF4929E929F92A092A1CDDA92A292A392A4D6BFC2CE92A5CECECCA2D0AEC4D3B5B2DED8D5F5BCB7BBD392A692A7B0A492A8C5B2B4EC92A992AA92ABD5F192AC92ADEAFD92AE92AF92B092B192B292B3DEDACDA692B492B5CDEC92B692B792B892B9CEE6DEDC92BACDB1C0A692BB92BCD7BD92BDDEDBB0C6BAB4C9D3C4F3BEE892BE92BF92C092C1B2B692C292C392C492C592C692C792C892C9C0CCCBF092CABCF1BBBBB5B792CB92CC92CDC5F592CEDEE692CF92D092D1DEE3BEDD92D292D3DEDF92D492D592D692D7B4B7BDDD92D892D9DEE0C4ED92DA92DB92DC92DDCFC692DEB5E092DF92E092E192E2B6DECADAB5F4DEE592E3D5C692E4DEE1CCCDC6FE92E5C5C592E692E792E8D2B492E9BEF292EA92EB92EC92ED92EE92EF92F0C2D392F1CCBDB3B892F2BDD392F3BFD8CDC6D1DAB4EB92F4DEE4DEDDDEE792F5EAFE92F692F7C2B0DEE292F892F9D6C0B5A792FAB2F492FBDEE892FCDEF292FD92FE934093419342DEED9343DEF193449345C8E0934693479348D7E1DEEFC3E8CCE19349B2E5934A934B934CD2BE934D934E934F9350935193529353DEEE9354DEEBCED59355B4A79356935793589359935ABFABBEBE935B935CBDD2935D935E935F9360DEE99361D4AE9362DEDE9363DEEA9364936593669367C0BF9368DEECB2F3B8E9C2A79369936ABDC1936B936C936D936E936FDEF5DEF893709371B2ABB4A493729373B4EAC9A6937493759376937793789379DEF6CBD1937AB8E3937BDEF7DEFA937C937D937E9380DEF9938193829383CCC29384B0E1B4EE93859386938793889389938AE5BA938B938C938D938E938FD0AF93909391B2EB9392EBA19393DEF493949395C9E3DEF3B0DAD2A1B1F79396CCAF939793989399939A939B939C939DDEF0939ECBA4939F93A093A1D5AA93A293A393A493A593A6DEFB93A793A893A993AA93AB93AC93AD93AEB4DD93AFC4A693B093B193B2DEFD93B393B493B593B693B793B893B993BA93BB93BCC3FEC4A1DFA193BD93BE93BF93C093C193C293C3C1CC93C4DEFCBEEF93C5C6B293C693C793C893C993CA93CB93CC93CD93CEB3C5C8F693CF93D0CBBADEFE93D193D2DFA493D393D493D593D6D7B293D793D893D993DA93DBB3B793DC93DD93DE93DFC1C393E093E1C7CBB2A5B4E993E2D7AB93E393E493E593E6C4EC93E7DFA2DFA393E8DFA593E9BAB393EA93EB93ECDFA693EDC0DE93EE93EFC9C393F093F193F293F393F493F593F6B2D9C7E693F7DFA793F8C7DC93F993FA93FB93FCDFA8EBA293FD93FE944094419442CBD3944394449445DFAA9446DFA99447B2C194489449944A944B944C944D944E944F9450945194529453945494559456945794589459945A945B945C945D945E945F9460C5CA94619462946394649465946694679468DFAB9469946A946B946C946D946E946F9470D4DC94719472947394749475C8C19476947794789479947A947B947C947D947E948094819482DFAC94839484948594869487BEF094889489DFADD6A7948A948B948C948DEAB7EBB6CAD5948ED8FCB8C4948FB9A594909491B7C5D5FE94929493949494959496B9CA94979498D0A7F4CD9499949AB5D0949B949CC3F4949DBEC8949E949F94A0EBB7B0BD94A194A2BDCC94A3C1B294A4B1D6B3A894A594A694A7B8D2C9A294A894A9B6D894AA94AB94AC94ADEBB8BEB494AE94AF94B0CAFD94B1C7C394B2D5FB94B394B4B7F394B594B694B794B894B994BA94BB94BC94BD94BE94BF94C094C194C294C3CEC494C494C594C6D5ABB1F394C794C894C9ECB3B0DF94CAECB594CB94CC94CDB6B794CEC1CF94CFF5FAD0B194D094D1D5E594D2CED394D394D4BDEFB3E294D5B8AB94D6D5B694D7EDBD94D8B6CF94D9CBB9D0C294DA94DB94DC94DD94DE94DF94E094E1B7BD94E294E3ECB6CAA994E494E594E6C5D494E7ECB9ECB8C2C3ECB794E894E994EA94EBD0FDECBA94ECECBBD7E594ED94EEECBC94EF94F094F1ECBDC6EC94F294F394F494F594F694F794F894F9CEDE94FABCC894FB94FCC8D5B5A9BEC9D6BCD4E794FD94FED1AED0F1EAB8EAB9EABABAB59540954195429543CAB1BFF595449545CDFA9546954795489549954AEAC0954BB0BAEABE954C954DC0A5954E954F9550EABB9551B2FD9552C3F7BBE8955395549555D2D7CEF4EABF955695579558EABC9559955A955BEAC3955CD0C7D3B3955D955E955F9560B4BA9561C3C1D7F29562956395649565D5D19566CAC79567EAC595689569EAC4EAC7EAC6956A956B956C956D956ED6E7956FCFD495709571EACB9572BBCE9573957495759576957795789579BDFAC9CE957A957BEACC957C957DC9B9CFFEEACAD4CEEACDEACF957E9580CDED9581958295839584EAC99585EACE95869587CEEE9588BBDE9589B3BF958A958B958C958D958EC6D5BEB0CEFA958F95909591C7E79592BEA7EAD095939594D6C7959595969597C1C095989599959AD4DD959BEAD1959C959DCFBE959E959F95A095A1EAD295A295A395A495A5CAEE95A695A795A895A9C5AFB0B595AA95AB95AC95AD95AEEAD495AF95B095B195B295B395B495B595B695B7EAD3F4DF95B895B995BA95BB95BCC4BA95BD95BE95BF95C095C1B1A995C295C395C495C5E5DF95C695C795C895C9EAD595CA95CB95CC95CD95CE95CF95D095D195D295D395D495D595D695D795D895D995DA95DB95DC95DD95DE95DF95E095E195E295E3CAEF95E4EAD6EAD7C6D895E595E695E795E895E995EA95EB95ECEAD895ED95EEEAD995EF95F095F195F295F395F4D4BB95F5C7FAD2B7B8FC95F695F7EAC295F8B2DC95F995FAC2FC95FBD4F8CCE6D7EE95FC95FD95FE9640964196429643D4C2D3D0EBC3C5F39644B7FE96459646EBD4964796489649CBB7EBDE964AC0CA964B964C964DCDFB964EB3AF964FC6DA965096519652965396549655EBFC9656C4BE9657CEB4C4A9B1BED4FD9658CAF59659D6EC965A965BC6D3B6E4965C965D965E965FBBFA96609661D0E096629663C9B19664D4D3C8A896659666B8CB9667E8BEC9BC96689669E8BB966AC0EED0D3B2C4B4E5966BE8BC966C966DD5C8966E966F967096719672B6C59673E8BDCAF8B8DCCCF5967496759676C0B496779678D1EEE8BFE8C29679967ABABC967BB1ADBDDC967CEABDE8C3967DE8C6967EE8CB9680968196829683E8CC9684CBC9B0E59685BCAB96869687B9B996889689E8C1968ACDF7968BE8CA968C968D968E968FCEF69690969196929693D5ED9694C1D6E8C49695C3B69696B9FBD6A6E8C8969796989699CAE0D4E6969AE8C0969BE8C5E8C7969CC7B9B7E3969DE8C9969EBFDDE8D2969F96A0E8D796A1E8D5BCDCBCCFE8DB96A296A396A496A596A696A796A896A9E8DE96AAE8DAB1FA96AB96AC96AD96AE96AF96B096B196B296B396B4B0D8C4B3B8CCC6E2C8BEC8E196B596B696B7E8CFE8D4E8D696B8B9F1E8D8D7F596B9C4FB96BAE8DC96BB96BCB2E996BD96BE96BFE8D196C096C1BCED96C296C3BFC2E8CDD6F996C4C1F8B2F196C596C696C796C896C996CA96CB96CCE8DF96CDCAC1E8D996CE96CF96D096D1D5A496D2B1EAD5BBE8CEE8D0B6B0E8D396D3E8DDC0B896D4CAF796D5CBA896D696D7C6DCC0F596D896D996DA96DB96DCE8E996DD96DE96DFD0A396E096E196E296E396E496E596E6E8F2D6EA96E796E896E996EA96EB96EC96EDE8E0E8E196EE96EF96F0D1F9BACBB8F996F196F2B8F1D4D4E8EF96F3E8EEE8ECB9F0CCD2E8E6CEA6BFF296F4B0B8E8F1E8F096F5D7C096F6E8E496F7CDA9C9A396F8BBB8BDDBE8EA96F996FA96FB96FC96FD96FE9740974197429743E8E2E8E3E8E5B5B5E8E7C7C5E8EBE8EDBDB0D7AE9744E8F897459746974797489749974A974B974CE8F5974DCDB0E8F6974E974F9750975197529753975497559756C1BA9757E8E89758C3B7B0F09759975A975B975C975D975E975F9760E8F4976197629763E8F7976497659766B9A3976797689769976A976B976C976D976E976F9770C9D2977197729773C3CECEE0C0E69774977597769777CBF39778CCDDD0B59779977ACAE1977BE8F3977C977D977E9780978197829783978497859786BCEC9787E8F997889789978A978B978C978DC3DE978EC6E5978FB9F79790979197929793B0F497949795D7D897969797BCAC9798C5EF9799979A979B979C979DCCC4979E979FE9A697A097A197A297A397A497A597A697A797A897A9C9AD97AAE9A2C0E297AB97AC97ADBFC397AE97AF97B0E8FEB9D797B1E8FB97B297B397B497B5E9A497B697B797B8D2CE97B997BA97BB97BC97BDE9A397BED6B2D7B597BFE9A797C0BDB797C197C297C397C497C597C697C797C897C997CA97CB97CCE8FCE8FD97CD97CE97CFE9A197D097D197D297D397D497D597D697D7CDD697D897D9D2AC97DA97DB97DCE9B297DD97DE97DF97E0E9A997E197E297E3B4AA97E4B4BB97E597E6E9AB97E797E897E997EA97EB97EC97ED97EE97EF97F097F197F297F397F497F597F697F7D0A897F897F9E9A597FA97FBB3FE97FC97FDE9ACC0E397FEE9AA98409841E9B998429843E9B89844984598469847E9AE98489849E8FA984A984BE9A8984C984D984E984F9850BFACE9B1E9BA98519852C2A5985398549855E9AF9856B8C59857E9AD9858D3DCE9B4E9B5E9B79859985A985BE9C7985C985D985E985F98609861C0C6E9C598629863E9B098649865E9BBB0F19866986798689869986A986B986C986D986E986FE9BCD5A598709871E9BE9872E9BF987398749875E9C198769877C1F198789879C8B6987A987B987CE9BD987D987E988098819882E9C29883988498859886988798889889988AE9C3988BE9B3988CE9B6988DBBB1988E988F9890E9C0989198929893989498959896BCF7989798989899E9C4E9C6989A989B989C989D989E989F98A098A198A298A398A498A5E9CA98A698A798A898A9E9CE98AA98AB98AC98AD98AE98AF98B098B198B298B3B2DB98B4E9C898B598B698B798B898B998BA98BB98BC98BD98BEB7AE98BF98C098C198C298C398C498C598C698C798C898C998CAE9CBE9CC98CB98CC98CD98CE98CF98D0D5C198D1C4A398D298D398D498D598D698D7E9D898D8BAE198D998DA98DB98DCE9C998DDD3A398DE98DF98E0E9D498E198E298E398E498E598E698E7E9D7E9D098E898E998EA98EB98ECE9CF98ED98EEC7C198EF98F098F198F298F398F498F598F6E9D298F798F898F998FA98FB98FC98FDE9D9B3C898FEE9D399409941994299439944CFF0994599469947E9CD99489949994A994B994C994D994E994F995099519952B3F79953995499559956995799589959E9D6995A995BE9DA995C995D995ECCB4995F99609961CFAD99629963996499659966996799689969996AE9D5996BE9DCE9DB996C996D996E996F9970E9DE99719972997399749975997699779978E9D19979997A997B997C997D997E99809981E9DD9982E9DFC3CA9983998499859986998799889989998A998B998C998D998E998F9990999199929993999499959996999799989999999A999B999C999D999E999F99A099A199A299A399A499A599A699A799A899A999AA99AB99AC99AD99AE99AF99B099B199B299B399B499B599B699B799B899B999BA99BB99BC99BD99BE99BF99C099C199C299C399C499C599C699C799C899C999CA99CB99CC99CD99CE99CF99D099D199D299D399D499D599D699D799D899D999DA99DB99DC99DD99DE99DF99E099E199E299E399E499E599E699E799E899E999EA99EB99EC99ED99EE99EF99F099F199F299F399F499F5C7B7B4CEBBB6D0C0ECA399F699F7C5B799F899F999FA99FB99FC99FD99FE9A409A419A42D3FB9A439A449A459A46ECA49A47ECA5C6DB9A489A499A4ABFEE9A4B9A4C9A4D9A4EECA69A4F9A50ECA7D0AA9A51C7B89A529A53B8E89A549A559A569A579A589A599A5A9A5B9A5C9A5D9A5E9A5FECA89A609A619A629A639A649A659A669A67D6B9D5FDB4CBB2BDCEE4C6E79A689A69CDE19A6A9A6B9A6C9A6D9A6E9A6F9A709A719A729A739A749A759A769A77B4F59A78CBC0BCDF9A799A7A9A7B9A7CE9E2E9E3D1EAE9E59A7DB4F9E9E49A7ED1B3CAE2B2D09A80E9E89A819A829A839A84E9E6E9E79A859A86D6B39A879A889A89E9E9E9EA9A8A9A8B9A8C9A8D9A8EE9EB9A8F9A909A919A929A939A949A959A96E9EC9A979A989A999A9A9A9B9A9C9A9D9A9EECAFC5B9B6CE9A9FD2F39AA09AA19AA29AA39AA49AA59AA6B5EE9AA7BBD9ECB19AA89AA9D2E39AAA9AAB9AAC9AAD9AAECEE39AAFC4B89AB0C3BF9AB19AB2B6BED8B9B1C8B1CFB1D1C5FE9AB3B1D09AB4C3AB9AB59AB69AB79AB89AB9D5B19ABA9ABB9ABC9ABD9ABE9ABF9AC09AC1EBA4BAC19AC29AC39AC4CCBA9AC59AC69AC7EBA59AC8EBA79AC99ACA9ACBEBA89ACC9ACD9ACEEBA69ACF9AD09AD19AD29AD39AD49AD5EBA9EBABEBAA9AD69AD79AD89AD99ADAEBAC9ADBCACFD8B5C3F19ADCC3A5C6F8EBADC4CA9ADDEBAEEBAFEBB0B7D59ADE9ADF9AE0B7FA9AE1EBB1C7E29AE2EBB39AE3BAA4D1F5B0B1EBB2EBB49AE49AE59AE6B5AAC2C8C7E89AE7EBB59AE8CBAEE3DF9AE99AEAD3C09AEB9AEC9AED9AEED9DB9AEF9AF0CDA1D6ADC7F39AF19AF29AF3D9E0BBE39AF4BABAE3E29AF59AF69AF79AF89AF9CFAB9AFA9AFB9AFCE3E0C9C79AFDBAB99AFE9B409B41D1B4E3E1C8EAB9AFBDADB3D8CEDB9B429B43CCC09B449B459B46E3E8E3E9CDF49B479B489B499B4A9B4BCCAD9B4CBCB39B4DE3EA9B4EE3EB9B4F9B50D0DA9B519B529B53C6FBB7DA9B549B55C7DFD2CACED69B56E3E4E3EC9B57C9F2B3C19B589B59E3E79B5A9B5BC6E3E3E59B5C9B5DEDB3E3E69B5E9B5F9B609B61C9B39B62C5E69B639B649B65B9B59B66C3BB9B67E3E3C5BDC1A4C2D9B2D79B68E3EDBBA6C4AD9B69E3F0BEDA9B6A9B6BE3FBE3F5BAD39B6C9B6D9B6E9B6FB7D0D3CD9B70D6CED5D3B9C1D5B4D1D89B719B729B739B74D0B9C7F69B759B769B77C8AAB2B49B78C3DA9B799B7A9B7BE3EE9B7C9B7DE3FCE3EFB7A8E3F7E3F49B7E9B809B81B7BA9B829B83C5A29B84E3F6C5DDB2A8C6FC9B85C4E09B869B87D7A29B88C0E1E3F99B899B8AE3FAE3FDCCA9E3F39B8BD3BE9B8CB1C3EDB4E3F1E3F29B8DE3F8D0BAC6C3D4F3E3FE9B8E9B8FBDE09B909B91E4A79B929B93E4A69B949B959B96D1F3E4A39B97E4A99B989B999B9AC8F79B9B9B9C9B9D9B9ECFB49B9FE4A8E4AEC2E59BA09BA1B6B49BA29BA39BA49BA59BA69BA7BDF29BA8E4A29BA99BAABAE9E4AA9BAB9BACE4AC9BAD9BAEB6FDD6DEE4B29BAFE4AD9BB09BB19BB2E4A19BB3BBEECDDDC7A2C5C99BB49BB5C1F79BB6E4A49BB7C7B3BDACBDBDE4A59BB8D7C7B2E29BB9E4ABBCC3E4AF9BBABBEBE4B0C5A8E4B19BBB9BBC9BBD9BBED5E3BFA39BBFE4BA9BC0E4B79BC1E4BB9BC29BC3E4BD9BC49BC5C6D69BC69BC7BAC6C0CB9BC89BC99BCAB8A1E4B49BCB9BCC9BCD9BCED4A19BCF9BD0BAA3BDFE9BD19BD29BD3E4BC9BD49BD59BD69BD79BD8CDBF9BD99BDAC4F99BDB9BDCCFFBC9E69BDD9BDED3BF9BDFCFD19BE09BE1E4B39BE2E4B8E4B9CCE99BE39BE49BE59BE69BE7CCCE9BE8C0D4E4B5C1B0E4B6CED09BE9BBC1B5D39BEAC8F3BDA7D5C7C9ACB8A2E4CA9BEB9BECE4CCD1C49BED9BEED2BA9BEF9BF0BAAD9BF19BF2BAD49BF39BF49BF59BF69BF79BF8E4C3B5ED9BF99BFA9BFBD7CDE4C0CFFDE4BF9BFC9BFD9BFEC1DCCCCA9C409C419C429C43CAE79C449C459C469C47C4D79C48CCD4E4C89C499C4A9C4BE4C7E4C19C4CE4C4B5AD9C4D9C4ED3D99C4FE4C69C509C519C529C53D2F9B4E39C54BBB49C559C56C9EE9C57B4BE9C589C599C5ABBEC9C5BD1CD9C5CCCEDEDB59C5D9C5E9C5F9C609C619C629C639C64C7E59C659C669C679C68D4A89C69E4CBD7D5E4C29C6ABDA5E4C59C6B9C6CD3E69C6DE4C9C9F89C6E9C6FE4BE9C709C71D3E59C729C73C7FEB6C99C74D4FCB2B3E4D79C759C769C77CEC29C78E4CD9C79CEBC9C7AB8DB9C7B9C7CE4D69C7DBFCA9C7E9C809C81D3CE9C82C3EC9C839C849C859C869C879C889C899C8AC5C8E4D89C8B9C8C9C8D9C8E9C8F9C909C919C92CDC4E4CF9C939C949C959C96E4D4E4D59C97BAFE9C98CFE69C999C9AD5BF9C9B9C9C9C9DE4D29C9E9C9F9CA09CA19CA29CA39CA49CA59CA69CA79CA8E4D09CA99CAAE4CE9CAB9CAC9CAD9CAE9CAF9CB09CB19CB29CB39CB49CB59CB69CB79CB89CB9CDE5CAAA9CBA9CBB9CBCC0A39CBDBDA6E4D39CBE9CBFB8C89CC09CC19CC29CC39CC4E4E7D4B49CC59CC69CC79CC89CC99CCA9CCBE4DB9CCC9CCD9CCEC1EF9CCF9CD0E4E99CD19CD2D2E79CD39CD4E4DF9CD5E4E09CD69CD7CFAA9CD89CD99CDA9CDBCBDD9CDCE4DAE4D19CDDE4E59CDEC8DCE4E39CDF9CE0C4E7E4E29CE1E4E19CE29CE39CE4B3FCE4E89CE59CE69CE79CE8B5E19CE99CEA9CEBD7CC9CEC9CED9CEEE4E69CEFBBAC9CF0D7D2CCCFEBF89CF1E4E49CF29CF3B9F69CF49CF59CF6D6CDE4D9E4DCC2FAE4DE9CF7C2CBC0C4C2D09CF8B1F5CCB29CF99CFA9CFB9CFC9CFD9CFE9D409D419D429D43B5CE9D449D459D469D47E4EF9D489D499D4A9D4B9D4C9D4D9D4E9D4FC6AF9D509D519D52C6E19D539D54E4F59D559D569D579D589D59C2A99D5A9D5B9D5CC0ECD1DDE4EE9D5D9D5E9D5F9D609D619D629D639D649D659D66C4AE9D679D689D69E4ED9D6A9D6B9D6C9D6DE4F6E4F4C2FE9D6EE4DD9D6FE4F09D70CAFE9D71D5C49D729D73E4F19D749D759D769D779D789D799D7AD1FA9D7B9D7C9D7D9D7E9D809D819D82E4EBE4EC9D839D849D85E4F29D86CEAB9D879D889D899D8A9D8B9D8C9D8D9D8E9D8F9D90C5CB9D919D929D93C7B19D94C2BA9D959D969D97E4EA9D989D999D9AC1CA9D9B9D9C9D9D9D9E9D9F9DA0CCB6B3B19DA19DA29DA3E4FB9DA4E4F39DA59DA69DA7E4FA9DA8E4FD9DA9E4FC9DAA9DAB9DAC9DAD9DAE9DAF9DB0B3CE9DB19DB29DB3B3BAE4F79DB49DB5E4F9E4F8C5EC9DB69DB79DB89DB99DBA9DBB9DBC9DBD9DBE9DBF9DC09DC19DC2C0BD9DC39DC49DC59DC6D4E89DC79DC89DC99DCA9DCBE5A29DCC9DCD9DCE9DCF9DD09DD19DD29DD39DD49DD59DD6B0C49DD79DD8E5A49DD99DDAE5A39DDB9DDC9DDD9DDE9DDF9DE0BCA49DE1E5A59DE29DE39DE49DE59DE69DE7E5A19DE89DE99DEA9DEB9DEC9DED9DEEE4FEB1F49DEF9DF09DF19DF29DF39DF49DF59DF69DF79DF89DF9E5A89DFAE5A9E5A69DFB9DFC9DFD9DFE9E409E419E429E439E449E459E469E47E5A7E5AA9E489E499E4A9E4B9E4C9E4D9E4E9E4F9E509E519E529E539E549E559E569E579E589E599E5A9E5B9E5C9E5D9E5E9E5F9E609E619E629E639E649E659E669E679E68C6D99E699E6A9E6B9E6C9E6D9E6E9E6F9E70E5ABE5AD9E719E729E739E749E759E769E77E5AC9E789E799E7A9E7B9E7C9E7D9E7E9E809E819E829E839E849E859E869E879E889E89E5AF9E8A9E8B9E8CE5AE9E8D9E8E9E8F9E909E919E929E939E949E959E969E979E989E999E9A9E9B9E9C9E9D9E9EB9E09E9F9EA0E5B09EA19EA29EA39EA49EA59EA69EA79EA89EA99EAA9EAB9EAC9EAD9EAEE5B19EAF9EB09EB19EB29EB39EB49EB59EB69EB79EB89EB99EBABBF0ECE1C3F09EBBB5C6BBD29EBC9EBD9EBE9EBFC1E9D4EE9EC0BEC49EC19EC29EC3D7C69EC4D4D6B2D3ECBE9EC59EC69EC79EC8EAC19EC99ECA9ECBC2AFB4B69ECC9ECD9ECED1D79ECF9ED09ED1B3B49ED2C8B2BFBBECC09ED39ED4D6CB9ED59ED6ECBFECC19ED79ED89ED99EDA9EDB9EDC9EDD9EDE9EDF9EE09EE19EE29EE3ECC5BEE6CCBFC5DABEBC9EE4ECC69EE5B1FE9EE69EE79EE8ECC4D5A8B5E39EE9ECC2C1B6B3E39EEA9EEBECC3CBB8C0C3CCFE9EEC9EED9EEE9EEFC1D29EF0ECC89EF19EF29EF39EF49EF59EF69EF79EF89EF99EFA9EFB9EFC9EFDBAE6C0D39EFED6F29F409F419F42D1CC9F439F449F459F46BFBE9F47B7B3C9D5ECC7BBE29F48CCCCBDFDC8C89F49CFA99F4A9F4B9F4C9F4D9F4E9F4F9F50CDE99F51C5EB9F529F539F54B7E99F559F569F579F589F599F5A9F5B9F5C9F5D9F5E9F5FD1C9BAB89F609F619F629F639F64ECC99F659F66ECCA9F67BBC0ECCB9F68ECE2B1BAB7D99F699F6A9F6B9F6C9F6D9F6E9F6F9F709F719F729F73BDB99F749F759F769F779F789F799F7A9F7BECCCD1E6ECCD9F7C9F7D9F7E9F80C8BB9F819F829F839F849F859F869F879F889F899F8A9F8B9F8C9F8D9F8EECD19F8F9F909F919F92ECD39F93BBCD9F94BCE59F959F969F979F989F999F9A9F9B9F9C9F9D9F9E9F9F9FA09FA1ECCF9FA2C9B79FA39FA49FA59FA69FA7C3BA9FA8ECE3D5D5ECD09FA99FAA9FAB9FAC9FADD6F39FAE9FAF9FB0ECD2ECCE9FB19FB29FB39FB4ECD49FB5ECD59FB69FB7C9BF9FB89FB99FBA9FBB9FBC9FBDCFA89FBE9FBF9FC09FC19FC2D0DC9FC39FC49FC59FC6D1AC9FC79FC89FC99FCAC8DB9FCB9FCC9FCDECD6CEF59FCE9FCF9FD09FD19FD2CAECECDA9FD39FD49FD59FD69FD79FD89FD9ECD99FDA9FDB9FDCB0BE9FDD9FDE9FDF9FE09FE19FE2ECD79FE3ECD89FE49FE59FE6ECE49FE79FE89FE99FEA9FEB9FEC9FED9FEE9FEFC8BC9FF09FF19FF29FF39FF49FF59FF69FF79FF89FF9C1C79FFA9FFB9FFC9FFD9FFEECDCD1E0A040A041A042A043A044A045A046A047A048A049ECDBA04AA04BA04CA04DD4EFA04EECDDA04FA050A051A052A053A054DBC6A055A056A057A058A059A05AA05BA05CA05DA05EECDEA05FA060A061A062A063A064A065A066A067A068A069A06AB1ACA06BA06CA06DA06EA06FA070A071A072A073A074A075A076A077A078A079A07AA07BA07CA07DA07EA080A081ECDFA082A083A084A085A086A087A088A089A08AA08BECE0A08CD7A6A08DC5C0A08EA08FA090EBBCB0AEA091A092A093BEF4B8B8D2AFB0D6B5F9A094D8B3A095CBACA096E3DDA097A098A099A09AA09BA09CA09DC6ACB0E6A09EA09FA0A0C5C6EBB9A0A1A0A2A0A3A0A4EBBAA0A5A0A6A0A7EBBBA0A8A0A9D1C0A0AAC5A3A0ABEAF2A0ACC4B2A0ADC4B5C0CEA0AEA0AFA0B0EAF3C4C1A0B1CEEFA0B2A0B3A0B4A0B5EAF0EAF4A0B6A0B7C9FCA0B8A0B9C7A3A0BAA0BBA0BCCCD8CEFEA0BDA0BEA0BFEAF5EAF6CFACC0E7A0C0A0C1EAF7A0C2A0C3A0C4A0C5A0C6B6BFEAF8A0C7EAF9A0C8EAFAA0C9A0CAEAFBA0CBA0CCA0CDA0CEA0CFA0D0A0D1A0D2A0D3A0D4A0D5A0D6EAF1A0D7A0D8A0D9A0DAA0DBA0DCA0DDA0DEA0DFA0E0A0E1A0E2C8AEE1EBA0E3B7B8E1ECA0E4A0E5A0E6E1EDA0E7D7B4E1EEE1EFD3CCA0E8A0E9A0EAA0EBA0ECA0EDA0EEE1F1BFF1E1F0B5D2A0EFA0F0A0F1B1B7A0F2A0F3A0F4A0F5E1F3E1F2A0F6BAFCA0F7E1F4A0F8A0F9A0FAA0FBB9B7A0FCBED1A0FDA0FEAA40AA41C4FCAA42BADDBDC6AA43AA44AA45AA46AA47AA48E1F5E1F7AA49AA4AB6C0CFC1CAA8E1F6D5F8D3FCE1F8E1FCE1F9AA4BAA4CE1FAC0EAAA4DE1FEE2A1C0C7AA4EAA4FAA50AA51E1FBAA52E1FDAA53AA54AA55AA56AA57AA58E2A5AA59AA5AAA5BC1D4AA5CAA5DAA5EAA5FE2A3AA60E2A8B2FEE2A2AA61AA62AA63C3CDB2C2E2A7E2A6AA64AA65E2A4E2A9AA66AA67E2ABAA68AA69AA6AD0C9D6EDC3A8E2ACAA6BCFD7AA6CAA6DE2AEAA6EAA6FBAEFAA70AA71E9E0E2ADE2AAAA72AA73AA74AA75BBABD4B3AA76AA77AA78AA79AA7AAA7BAA7CAA7DAA7EAA80AA81AA82AA83E2B0AA84AA85E2AFAA86E9E1AA87AA88AA89AA8AE2B1AA8BAA8CAA8DAA8EAA8FAA90AA91AA92E2B2AA93AA94AA95AA96AA97AA98AA99AA9AAA9BAA9CAA9DE2B3CCA1AA9EE2B4AA9FAAA0AB40AB41AB42AB43AB44AB45AB46AB47AB48AB49AB4AAB4BE2B5AB4CAB4DAB4EAB4FAB50D0FEAB51AB52C2CAAB53D3F1AB54CDF5AB55AB56E7E0AB57AB58E7E1AB59AB5AAB5BAB5CBEC1AB5DAB5EAB5FAB60C2EAAB61AB62AB63E7E4AB64AB65E7E3AB66AB67AB68AB69AB6AAB6BCDE6AB6CC3B5AB6DAB6EE7E2BBB7CFD6AB6FC1E1E7E9AB70AB71AB72E7E8AB73AB74E7F4B2A3AB75AB76AB77AB78E7EAAB79E7E6AB7AAB7BAB7CAB7DAB7EE7ECE7EBC9BAAB80AB81D5E4AB82E7E5B7A9E7E7AB83AB84AB85AB86AB87AB88AB89E7EEAB8AAB8BAB8CAB8DE7F3AB8ED6E9AB8FAB90AB91AB92E7EDAB93E7F2AB94E7F1AB95AB96AB97B0E0AB98AB99AB9AAB9BE7F5AB9CAB9DAB9EAB9FABA0AC40AC41AC42AC43AC44AC45AC46AC47AC48AC49AC4AC7F2AC4BC0C5C0EDAC4CAC4DC1F0E7F0AC4EAC4FAC50AC51E7F6CBF6AC52AC53AC54AC55AC56AC57AC58AC59AC5AE8A2E8A1AC5BAC5CAC5DAC5EAC5FAC60D7C1AC61AC62E7FAE7F9AC63E7FBAC64E7F7AC65E7FEAC66E7FDAC67E7FCAC68AC69C1D5C7D9C5FDC5C3AC6AAC6BAC6CAC6DAC6EC7EDAC6FAC70AC71AC72E8A3AC73AC74AC75AC76AC77AC78AC79AC7AAC7BAC7CAC7DAC7EAC80AC81AC82AC83AC84AC85AC86E8A6AC87E8A5AC88E8A7BAF7E7F8E8A4AC89C8F0C9AAAC8AAC8BAC8CAC8DAC8EAC8FAC90AC91AC92AC93AC94AC95AC96E8A9AC97AC98B9E5AC99AC9AAC9BAC9CAC9DD1FEE8A8AC9EAC9FACA0AD40AD41AD42E8AAAD43E8ADE8AEAD44C1A7AD45AD46AD47E8AFAD48AD49AD4AE8B0AD4BAD4CE8ACAD4DE8B4AD4EAD4FAD50AD51AD52AD53AD54AD55AD56AD57AD58E8ABAD59E8B1AD5AAD5BAD5CAD5DAD5EAD5FAD60AD61E8B5E8B2E8B3AD62AD63AD64AD65AD66AD67AD68AD69AD6AAD6BAD6CAD6DAD6EAD6FAD70AD71E8B7AD72AD73AD74AD75AD76AD77AD78AD79AD7AAD7BAD7CAD7DAD7EAD80AD81AD82AD83AD84AD85AD86AD87AD88AD89E8B6AD8AAD8BAD8CAD8DAD8EAD8FAD90AD91AD92B9CFAD93F0ACAD94F0ADAD95C6B0B0EAC8BFAD96CDDFAD97AD98AD99AD9AAD9BAD9CAD9DCECDEAB1AD9EAD9FADA0AE40EAB2AE41C6BFB4C9AE42AE43AE44AE45AE46AE47AE48EAB3AE49AE4AAE4BAE4CD5E7AE4DAE4EAE4FAE50AE51AE52AE53AE54DDF9AE55EAB4AE56EAB5AE57EAB6AE58AE59AE5AAE5BB8CADFB0C9F5AE5CCCF0AE5DAE5EC9FAAE5FAE60AE61AE62AE63C9FBAE64AE65D3C3CBA6AE66B8A6F0AEB1C2AE67E5B8CCEFD3C9BCD7C9EAAE68B5E7AE69C4D0B5E9AE6AEEAEBBADAE6BAE6CE7DEAE6DEEAFAE6EAE6FAE70AE71B3A9AE72AE73EEB2AE74AE75EEB1BDE7AE76EEB0CEB7AE77AE78AE79AE7AC5CFAE7BAE7CAE7DAE7EC1F4DBCEEEB3D0F3AE80AE81AE82AE83AE84AE85AE86AE87C2D4C6E8AE88AE89AE8AB7ACAE8BAE8CAE8DAE8EAE8FAE90AE91EEB4AE92B3EBAE93AE94AE95BBFBEEB5AE96AE97AE98AE99AE9AE7DCAE9BAE9CAE9DEEB6AE9EAE9FBDAEAEA0AF40AF41AF42F1E2AF43AF44AF45CAE8AF46D2C9F0DAAF47F0DBAF48F0DCC1C6AF49B8EDBECEAF4AAF4BF0DEAF4CC5B1F0DDD1F1AF4DF0E0B0CCBDEAAF4EAF4FAF50AF51AF52D2DFF0DFAF53B4AFB7E8F0E6F0E5C6A3F0E1F0E2B4C3AF54AF55F0E3D5EEAF56AF57CCDBBED2BCB2AF58AF59AF5AF0E8F0E7F0E4B2A1AF5BD6A2D3B8BEB7C8ACAF5CAF5DF0EAAF5EAF5FAF60AF61D1F7AF62D6CCBADBF0E9AF63B6BBAF64AF65CDB4AF66AF67C6A6AF68AF69AF6AC1A1F0EBF0EEAF6BF0EDF0F0F0ECAF6CBBBEF0EFAF6DAF6EAF6FAF70CCB5F0F2AF71AF72B3D5AF73AF74AF75AF76B1D4AF77AF78F0F3AF79AF7AF0F4F0F6B4E1AF7BF0F1AF7CF0F7AF7DAF7EAF80AF81F0FAAF82F0F8AF83AF84AF85F0F5AF86AF87AF88AF89F0FDAF8AF0F9F0FCF0FEAF8BF1A1AF8CAF8DAF8ECEC1F1A4AF8FF1A3AF90C1F6F0FBCADDAF91AF92B4F1B1F1CCB1AF93F1A6AF94AF95F1A7AF96AF97F1ACD5CEF1A9AF98AF99C8B3AF9AAF9BAF9CF1A2AF9DF1ABF1A8F1A5AF9EAF9FF1AAAFA0B040B041B042B043B044B045B046B0A9F1ADB047B048B049B04AB04BB04CF1AFB04DF1B1B04EB04FB050B051B052F1B0B053F1AEB054B055B056B057D1A2B058B059B05AB05BB05CB05DB05EF1B2B05FB060B061F1B3B062B063B064B065B066B067B068B069B9EFB06AB06BB5C7B06CB0D7B0D9B06DB06EB06FD4EDB070B5C4B071BDD4BBCAF0A7B072B073B8DEB074B075F0A8B076B077B0A8B078F0A9B079B07ACDEEB07BB07CF0AAB07DB07EB080B081B082B083B084B085B086B087F0ABB088B089B08AB08BB08CB08DB08EB08FB090C6A4B091B092D6E5F1E4B093F1E5B094B095B096B097B098B099B09AB09BB09CB09DC3F3B09EB09FD3DBB0A0B140D6D1C5E8B141D3AFB142D2E6B143B144EEC1B0BBD5B5D1CEBCE0BAD0B145BFF8B146B8C7B5C1C5CCB147B148CAA2B149B14AB14BC3CBB14CB14DB14EB14FB150EEC2B151B152B153B154B155B156B157B158C4BFB6A2B159EDECC3A4B15AD6B1B15BB15CB15DCFE0EDEFB15EB15FC5CEB160B6DCB161B162CAA1B163B164EDEDB165B166EDF0EDF1C3BCB167BFB4B168EDEEB169B16AB16BB16CB16DB16EB16FB170B171B172B173EDF4EDF2B174B175B176B177D5E6C3DFB178EDF3B179B17AB17BEDF6B17CD5A3D1A3B17DB17EB180EDF5B181C3D0B182B183B184B185B186EDF7BFF4BEECEDF8B187CCF7B188D1DBB189B18AB18BD7C5D5F6B18CEDFCB18DB18EB18FEDFBB190B191B192B193B194B195B196B197EDF9EDFAB198B199B19AB19BB19CB19DB19EB19FEDFDBEA6B1A0B240B241B242B243CBAFEEA1B6BDB244EEA2C4C0B245EDFEB246B247BDDEB2C7B248B249B24AB24BB24CB24DB24EB24FB250B251B252B253B6C3B254B255B256EEA5D8BAEEA3EEA6B257B258B259C3E9B3F2B25AB25BB25CB25DB25EB25FEEA7EEA4CFB9B260B261EEA8C2F7B262B263B264B265B266B267B268B269B26AB26BB26CB26DEEA9EEAAB26EDEABB26FB270C6B3B271C7C6B272D6F5B5C9B273CBB2B274B275B276EEABB277B278CDABB279EEACB27AB27BB27CB27DB27ED5B0B280EEADB281F6C4B282B283B284B285B286B287B288B289B28AB28BB28CB28DB28EDBC7B28FB290B291B292B293B294B295B296B297B4A3B298B299B29AC3ACF1E6B29BB29CB29DB29EB29FCAB8D2D3B2A0D6AAB340EFF2B341BED8B342BDC3EFF3B6CCB0ABB343B344B345B346CAAFB347B348EDB6B349EDB7B34AB34BB34CB34DCEF9B7AFBFF3EDB8C2EBC9B0B34EB34FB350B351B352B353EDB9B354B355C6F6BFB3B356B357B358EDBCC5F8B359D1D0B35AD7A9EDBAEDBBB35BD1E2B35CEDBFEDC0B35DEDC4B35EB35FB360EDC8B361EDC6EDCED5E8B362EDC9B363B364EDC7EDBEB365B366C5E9B367B368B369C6C6B36AB36BC9E9D4D2EDC1EDC2EDC3EDC5B36CC0F9B36DB4A1B36EB36FB370B371B9E8B372EDD0B373B374B375B376EDD1B377EDCAB378EDCFB379CEF8B37AB37BCBB6EDCCEDCDB37CB37DB37EB380B381CFF5B382B383B384B385B386B387B388B389B38AB38BB38CB38DEDD2C1F2D3B2EDCBC8B7B38EB38FB390B391B392B393B394B395BCEFB396B397B398B399C5F0B39AB39BB39CB39DB39EB39FB3A0B440B441B442EDD6B443B5EFB444B445C2B5B0ADCBE9B446B447B1AEB448EDD4B449B44AB44BCDEBB5E2B44CEDD5EDD3EDD7B44DB44EB5FAB44FEDD8B450EDD9B451EDDCB452B1CCB453B454B455B456B457B458B459B45AC5F6BCEEEDDACCBCB2EAB45BB45CB45DB45EEDDBB45FB460B461B462C4EBB463B464B4C5B465B466B467B0F5B468B469B46AEDDFC0DAB4E8B46BB46CB46DB46EC5CDB46FB470B471EDDDBFC4B472B473B474EDDEB475B476B477B478B479B47AB47BB47CB47DB47EB480B481B482B483C4A5B484B485B486EDE0B487B488B489B48AB48BEDE1B48CEDE3B48DB48EC1D7B48FB490BBC7B491B492B493B494B495B496BDB8B497B498B499EDE2B49AB49BB49CB49DB49EB49FB4A0B540B541B542B543B544B545EDE4B546B547B548B549B54AB54BB54CB54DB54EB54FEDE6B550B551B552B553B554EDE5B555B556B557B558B559B55AB55BB55CB55DB55EB55FB560B561B562B563EDE7B564B565B566B567B568CABEECEAC0F1B569C9E7B56AECEBC6EEB56BB56CB56DB56EECECB56FC6EDECEDB570B571B572B573B574B575B576B577B578ECF0B579B57AD7E6ECF3B57BB57CECF1ECEEECEFD7A3C9F1CBEEECF4B57DECF2B57EB580CFE9B581ECF6C6B1B582B583B584B585BCC0B586ECF5B587B588B589B58AB58BB58CB58DB5BBBBF6B58EECF7B58FB590B591B592B593D9F7BDFBB594B595C2BBECF8B596B597B598B599ECF9B59AB59BB59CB59DB8A3B59EB59FB5A0B640B641B642B643B644B645B646ECFAB647B648B649B64AB64BB64CB64DB64EB64FB650B651B652ECFBB653B654B655B656B657B658B659B65AB65BB65CB65DECFCB65EB65FB660B661B662D3EDD8AEC0EBB663C7DDBACCB664D0E3CBBDB665CDBAB666B667B8D1B668B669B1FCB66AC7EFB66BD6D6B66CB66DB66EBFC6C3EBB66FB670EFF5B671B672C3D8B673B674B675B676B677B678D7E2B679B67AB67BEFF7B3D3B67CC7D8D1EDB67DD6C8B67EEFF8B680EFF6B681BBFDB3C6B682B683B684B685B686B687B688BDD5B689B68AD2C6B68BBBE0B68CB68DCFA1B68EEFFCEFFBB68FB690EFF9B691B692B693B694B3CCB695C9D4CBB0B696B697B698B699B69AEFFEB69BB69CB0DEB69DB69ED6C9B69FB6A0B740EFFDB741B3EDB742B743F6D5B744B745B746B747B748B749B74AB74BB74CB74DB74EB74FB750B751B752CEC8B753B754B755F0A2B756F0A1B757B5BEBCDABBFCB758B8E5B759B75AB75BB75CB75DB75EC4C2B75FB760B761B762B763B764B765B766B767B768F0A3B769B76AB76BB76CB76DCBEBB76EB76FB770B771B772B773B774B775B776B777B778B779B77AB77BB77CB77DB77EB780B781B782B783B784B785B786F0A6B787B788B789D1A8B78ABEBFC7EEF1B6F1B7BFD5B78BB78CB78DB78EB4A9F1B8CDBBB78FC7D4D5ADB790F1B9B791F1BAB792B793B794B795C7CFB796B797B798D2A4D6CFB799B79AF1BBBDD1B4B0BEBDB79BB79CB79DB4DCCED1B79EBFDFF1BDB79FB7A0B840B841BFFAF1BCB842F1BFB843B844B845F1BEF1C0B846B847B848B849B84AF1C1B84BB84CB84DB84EB84FB850B851B852B853B854B855C1FEB856B857B858B859B85AB85BB85CB85DB85EB85FB860C1A2B861B862B863B864B865B866B867B868B869B86ACAFAB86BB86CD5BEB86DB86EB86FB870BEBABEB9D5C2B871B872BFA2B873CDAFF1B5B874B875B876B877B878B879BDDFB87AB6CBB87BB87CB87DB87EB880B881B882B883B884D6F1F3C3B885B886F3C4B887B8CDB888B889B88AF3C6F3C7B88BB0CAB88CF3C5B88DF3C9CBF1B88EB88FB890F3CBB891D0A6B892B893B1CAF3C8B894B895B896F3CFB897B5D1B898B899F3D7B89AF3D2B89BB89CB89DF3D4F3D3B7FBB89EB1BFB89FF3CEF3CAB5DAB8A0F3D0B940B941F3D1B942F3D5B943B944B945B946F3CDB947BCE3B948C1FDB949F3D6B94AB94BB94CB94DB94EB94FF3DAB950F3CCB951B5C8B952BDEEF3DCB953B954B7A4BFF0D6FECDB2B955B4F0B956B2DFB957F3D8B958F3D9C9B8B959F3DDB95AB95BF3DEB95CF3E1B95DB95EB95FB960B961B962B963B964B965B966B967F3DFB968B969F3E3F3E2B96AB96BF3DBB96CBFEAB96DB3EFB96EF3E0B96FB970C7A9B971BCF2B972B973B974B975F3EBB976B977B978B979B97AB97BB97CB9BFB97DB97EF3E4B980B981B982B2ADBBFEB983CBE3B984B985B986B987F3EDF3E9B988B989B98AB9DCF3EEB98BB98CB98DF3E5F3E6F3EAC2E1F3ECF3EFF3E8BCFDB98EB98FB990CFE4B991B992F3F0B993B994B995F3E7B996B997B998B999B99AB99BB99CB99DF3F2B99EB99FB9A0BA40D7ADC6AABA41BA42BA43BA44F3F3BA45BA46BA47BA48F3F1BA49C2A8BA4ABA4BBA4CBA4DBA4EB8DDF3F5BA4FBA50F3F4BA51BA52BA53B4DBBA54BA55BA56F3F6F3F7BA57BA58BA59F3F8BA5ABA5BBA5CC0BABA5DBA5EC0E9BA5FBA60BA61BA62BA63C5F1BA64BA65BA66BA67F3FBBA68F3FABA69BA6ABA6BBA6CBA6DBA6EBA6FBA70B4D8BA71BA72BA73F3FEF3F9BA74BA75F3FCBA76BA77BA78BA79BA7ABA7BF3FDBA7CBA7DBA7EBA80BA81BA82BA83BA84F4A1BA85BA86BA87BA88BA89BA8AF4A3BBC9BA8BBA8CF4A2BA8DBA8EBA8FBA90BA91BA92BA93BA94BA95BA96BA97BA98BA99F4A4BA9ABA9BBA9CBA9DBA9EBA9FB2BEF4A6F4A5BAA0BB40BB41BB42BB43BB44BB45BB46BB47BB48BB49BCAEBB4ABB4BBB4CBB4DBB4EBB4FBB50BB51BB52BB53BB54BB55BB56BB57BB58BB59BB5ABB5BBB5CBB5DBB5EBB5FBB60BB61BB62BB63BB64BB65BB66BB67BB68BB69BB6ABB6BBB6CBB6DBB6EC3D7D9E1BB6FBB70BB71BB72BB73BB74C0E0F4CCD7D1BB75BB76BB77BB78BB79BB7ABB7BBB7CBB7DBB7EBB80B7DBBB81BB82BB83BB84BB85BB86BB87F4CEC1A3BB88BB89C6C9BB8AB4D6D5B3BB8BBB8CBB8DF4D0F4CFF4D1CBDABB8EBB8FF4D2BB90D4C1D6E0BB91BB92BB93BB94B7E0BB95BB96BB97C1B8BB98BB99C1BBF4D3BEACBB9ABB9BBB9CBB9DBB9EB4E2BB9FBBA0F4D4F4D5BEABBC40BC41F4D6BC42BC43BC44F4DBBC45F4D7F4DABC46BAFDBC47F4D8F4D9BC48BC49BC4ABC4BBC4CBC4DBC4EB8E2CCC7F4DCBC4FB2DABC50BC51C3D3BC52BC53D4E3BFB7BC54BC55BC56BC57BC58BC59BC5AF4DDBC5BBC5CBC5DBC5EBC5FBC60C5B4BC61BC62BC63BC64BC65BC66BC67BC68F4E9BC69BC6ACFB5BC6BBC6CBC6DBC6EBC6FBC70BC71BC72BC73BC74BC75BC76BC77BC78CEC9BC79BC7ABC7BBC7CBC7DBC7EBC80BC81BC82BC83BC84BC85BC86BC87BC88BC89BC8ABC8BBC8CBC8DBC8ECBD8BC8FCBF7BC90BC91BC92BC93BDF4BC94BC95BC96D7CFBC97BC98BC99C0DBBC9ABC9BBC9CBC9DBC9EBC9FBCA0BD40BD41BD42BD43BD44BD45BD46BD47BD48BD49BD4ABD4BBD4CBD4DBD4EBD4FBD50BD51BD52BD53BD54BD55BD56BD57BD58BD59BD5ABD5BBD5CBD5DBD5EBD5FBD60BD61BD62BD63BD64BD65BD66BD67BD68BD69BD6ABD6BBD6CBD6DBD6EBD6FBD70BD71BD72BD73BD74BD75BD76D0F5BD77BD78BD79BD7ABD7BBD7CBD7DBD7EF4EABD80BD81BD82BD83BD84BD85BD86BD87BD88BD89BD8ABD8BBD8CBD8DBD8EBD8FBD90BD91BD92BD93BD94BD95BD96BD97BD98BD99BD9ABD9BBD9CBD9DBD9EBD9FBDA0BE40BE41BE42BE43BE44BE45BE46BE47BE48BE49BE4ABE4BBE4CF4EBBE4DBE4EBE4FBE50BE51BE52BE53F4ECBE54BE55BE56BE57BE58BE59BE5ABE5BBE5CBE5DBE5EBE5FBE60BE61BE62BE63BE64BE65BE66BE67BE68BE69BE6ABE6BBE6CBE6DBE6EBE6FBE70BE71BE72BE73BE74BE75BE76BE77BE78BE79BE7ABE7BBE7CBE7DBE7EBE80BE81BE82BE83BE84BE85BE86BE87BE88BE89BE8ABE8BBE8CBE8DBE8EBE8FBE90BE91BE92BE93BE94BE95BE96BE97BE98BE99BE9ABE9BBE9CBE9DBE9EBE9FBEA0BF40BF41BF42BF43BF44BF45BF46BF47BF48BF49BF4ABF4BBF4CBF4DBF4EBF4FBF50BF51BF52BF53BF54BF55BF56BF57BF58BF59BF5ABF5BBF5CBF5DBF5EBF5FBF60BF61BF62BF63BF64BF65BF66BF67BF68BF69BF6ABF6BBF6CBF6DBF6EBF6FBF70BF71BF72BF73BF74BF75BF76BF77BF78BF79BF7ABF7BBF7CBF7DBF7EBF80F7E3BF81BF82BF83BF84BF85B7B1BF86BF87BF88BF89BF8AF4EDBF8BBF8CBF8DBF8EBF8FBF90BF91BF92BF93BF94BF95BF96BF97BF98BF99BF9ABF9BBF9CBF9DBF9EBF9FBFA0C040C041C042C043C044C045C046C047C048C049C04AC04BC04CC04DC04EC04FC050C051C052C053C054C055C056C057C058C059C05AC05BC05CC05DC05EC05FC060C061C062C063D7EBC064C065C066C067C068C069C06AC06BC06CC06DC06EC06FC070C071C072C073C074C075C076C077C078C079C07AC07BF4EEC07CC07DC07EE6F9BEC0E6FABAECE6FBCFCBE6FCD4BCBCB6E6FDE6FEBCCDC8D2CEB3E7A1C080B4BFE7A2C9B4B8D9C4C9C081D7DDC2DAB7D7D6BDCEC6B7C4C082C083C5A6E7A3CFDFE7A4E7A5E7A6C1B7D7E9C9F0CFB8D6AFD6D5E7A7B0EDE7A8E7A9C9DCD2EFBEADE7AAB0F3C8DEBDE1E7ABC8C6C084E7ACBBE6B8F8D1A4E7ADC2E7BEF8BDCACDB3E7AEE7AFBEEED0E5C085CBE7CCD0BCCCE7B0BCA8D0F7E7B1C086D0F8E7B2E7B3B4C2E7B4E7B5C9FECEACC3E0E7B7B1C1B3F1C087E7B8E7B9D7DBD5C0E7BAC2CCD7BAE7BBE7BCE7BDBCEAC3E5C0C2E7BEE7BFBCA9C088E7C0E7C1E7B6B6D0E7C2C089E7C3E7C4BBBAB5DEC2C6B1E0E7C5D4B5E7C6B8BFE7C8E7C7B7ECC08AE7C9B2F8E7CAE7CBE7CCE7CDE7CEE7CFE7D0D3A7CBF5E7D1E7D2E7D3E7D4C9C9E7D5E7D6E7D7E7D8E7D9BDC9E7DAF3BEC08BB8D7C08CC8B1C08DC08EC08FC090C091C092C093F3BFC094F3C0F3C1C095C096C097C098C099C09AC09BC09CC09DC09EB9DECDF8C09FC0A0D8E8BAB1C140C2DEEEB7C141B7A3C142C143C144C145EEB9C146EEB8B0D5C147C148C149C14AC14BEEBBD5D6D7EFC14CC14DC14ED6C3C14FC150EEBDCAF0C151EEBCC152C153C154C155EEBEC156C157C158C159EEC0C15AC15BEEBFC15CC15DC15EC15FC160C161C162C163D1F2C164C7BCC165C3C0C166C167C168C169C16AB8E1C16BC16CC16DC16EC16FC1E7C170C171F4C6D0DFF4C7C172CFDBC173C174C8BAC175C176F4C8C177C178C179C17AC17BC17CC17DF4C9F4CAC17EF4CBC180C181C182C183C184D9FAB8FEC185C186E5F1D3F0C187F4E0C188CECCC189C18AC18BB3E1C18CC18DC18EC18FF1B4C190D2EEC191F4E1C192C193C194C195C196CFE8F4E2C197C198C7CCC199C19AC19BC19CC19DC19EB5D4B4E4F4E4C19FC1A0C240F4E3F4E5C241C242F4E6C243C244C245C246F4E7C247BAB2B0BFC248F4E8C249C24AC24BC24CC24DC24EC24FB7ADD2EDC250C251C252D2ABC0CFC253BFBCEBA3D5DFEAC8C254C255C256C257F1F3B6F8CBA3C258C259C4CDC25AF1E7C25BF1E8B8FBF1E9BAC4D4C5B0D2C25CC25DF1EAC25EC25FC260F1EBC261F1ECC262C263F1EDF1EEF1EFF1F1F1F0C5D5C264C265C266C267C268C269F1F2C26AB6FAC26BF1F4D2AEDEC7CBCAC26CC26DB3DCC26EB5A2C26FB9A2C270C271C4F4F1F5C272C273F1F6C274C275C276C1C4C1FBD6B0F1F7C277C278C279C27AF1F8C27BC1AAC27CC27DC27EC6B8C280BEDBC281C282C283C284C285C286C287C288C289C28AC28BC28CC28DC28EF1F9B4CFC28FC290C291C292C293C294F1FAC295C296C297C298C299C29AC29BC29CC29DC29EC29FC2A0C340EDB2EDB1C341C342CBE0D2DEC343CBC1D5D8C344C8E2C345C0DFBCA1C346C347C348C349C34AC34BEBC1C34CC34DD0A4C34ED6E2C34FB6C7B8D8EBC0B8CEC350EBBFB3A6B9C9D6ABC351B7F4B7CAC352C353C354BCE7B7BEEBC6C355EBC7B0B9BFCFC356EBC5D3FDC357EBC8C358C359EBC9C35AC35BB7CEC35CEBC2EBC4C9F6D6D7D5CDD0B2EBCFCEB8EBD0C35DB5A8C35EC35FC360C361C362B1B3EBD2CCA5C363C364C365C366C367C368C369C5D6EBD3C36AEBD1C5DFEBCECAA4EBD5B0FBC36BC36CBAFAC36DC36ED8B7F1E3C36FEBCAEBCBEBCCEBCDEBD6E6C0EBD9C370BFE8D2C8EBD7EBDCB8ECEBD8C371BDBAC372D0D8C373B0B7C374EBDDC4DCC375C376C377C378D6ACC379C37AC37BB4E0C37CC37DC2F6BCB9C37EC380EBDAEBDBD4E0C6EAC4D4EBDFC5A7D9F5C381B2B1C382EBE4C383BDC5C384C385C386EBE2C387C388C389C38AC38BC38CC38DC38EC38FC390C391C392C393EBE3C394C395B8ACC396CDD1EBE5C397C398C399EBE1C39AC1B3C39BC39CC39DC39EC39FC6A2C3A0C440C441C442C443C444C445CCF3C446EBE6C447C0B0D2B8EBE7C448C449C44AB8AFB8ADC44BEBE8C7BBCDF3C44CC44DC44EEBEAEBEBC44FC450C451C452C453EBEDC454C455C456C457D0C8C458EBF2C459EBEEC45AC45BC45CEBF1C8F9C45DD1FCEBECC45EC45FEBE9C460C461C462C463B8B9CFD9C4E5EBEFEBF0CCDACDC8B0F2C464EBF6C465C466C467C468C469EBF5C46AB2B2C46BC46CC46DC46EB8E0C46FEBF7C470C471C472C473C474C475B1ECC476C477CCC5C4A4CFA5C478C479C47AC47BC47CEBF9C47DC47EECA2C480C5F2C481EBFAC482C483C484C485C486C487C488C489C9C5C48AC48BC48CC48DC48EC48FE2DFEBFEC490C491C492C493CDCEECA1B1DBD3B7C494C495D2DCC496C497C498EBFDC499EBFBC49AC49BC49CC49DC49EC49FC4A0C540C541C542C543C544C545C546C547C548C549C54AC54BC54CC54DC54EB3BCC54FC550C551EAB0C552C553D7D4C554F4ABB3F4C555C556C557C558C559D6C1D6C2C55AC55BC55CC55DC55EC55FD5E9BECAC560F4A7C561D2A8F4A8F4A9C562F4AABECBD3DFC563C564C565C566C567C9E0C9E1C568C569F3C2C56ACAE6C56BCCF2C56CC56DC56EC56FC570C571E2B6CBB4C572CEE8D6DBC573F4ADF4AEF4AFC574C575C576C577F4B2C578BABDF4B3B0E3F4B0C579F4B1BDA2B2D5C57AF4B6F4B7B6E6B2B0CFCFF4B4B4ACC57BF4B5C57CC57DF4B8C57EC580C581C582C583F4B9C584C585CDA7C586F4BAC587F4BBC588C589C58AF4BCC58BC58CC58DC58EC58FC590C591C592CBD2C593F4BDC594C595C596C597F4BEC598C599C59AC59BC59CC59DC59EC59FF4BFC5A0C640C641C642C643F4DEC1BCBCE8C644C9ABD1DEE5F5C645C646C647C648DCB3D2D5C649C64ADCB4B0ACDCB5C64BC64CBDDAC64DDCB9C64EC64FC650D8C2C651DCB7D3F3C652C9D6DCBADCB6C653DCBBC3A2C654C655C656C657DCBCDCC5DCBDC658C659CEDFD6A5C65ADCCFC65BDCCDC65CC65DDCD2BDE6C2ABC65EDCB8DCCBDCCEDCBEB7D2B0C5DCC7D0BEDCC1BBA8C65FB7BCDCCCC660C661DCC6DCBFC7DBC662C663C664D1BFDCC0C665C666DCCAC667C668DCD0C669C66ACEADDCC2C66BDCC3DCC8DCC9B2D4DCD1CBD5C66CD4B7DCDBDCDFCCA6DCE6C66DC3E7DCDCC66EC66FBFC1DCD9C670B0FAB9B6DCE5DCD3C671DCC4DCD6C8F4BFE0C672C673C674C675C9BBC676C677C678B1BDC679D3A2C67AC67BDCDAC67CC67DDCD5C67EC6BBC680DCDEC681C682C683C684C685D7C2C3AFB7B6C7D1C3A9DCE2DCD8DCEBDCD4C686C687DCDDC688BEA5DCD7C689DCE0C68AC68BDCE3DCE4C68CDCF8C68DC68EDCE1DDA2DCE7C68FC690C691C692C693C694C695C696C697C698BCEBB4C4C699C69AC3A3B2E7DCFAC69BDCF2C69CDCEFC69DDCFCDCEED2F0B2E8C69EC8D7C8E3DCFBC69FDCEDC6A0C740C741DCF7C742C743DCF5C744C745BEA3DCF4C746B2DDC747C748C749C74AC74BDCF3BCF6DCE8BBC4C74CC0F3C74DC74EC74FC750C751BCD4DCE9DCEAC752DCF1DCF6DCF9B5B4C753C8D9BBE7DCFEDCFDD3ABDDA1DDA3DDA5D2F1DDA4DDA6DDA7D2A9C754C755C756C757C758C759C75ABAC9DDA9C75BC75CDDB6DDB1DDB4C75DC75EC75FC760C761C762C763DDB0C6CEC764C765C0F2C766C767C768C769C9AFC76AC76BC76CDCECDDAEC76DC76EC76FC770DDB7C771C772DCF0DDAFC773DDB8C774DDACC775C776C777C778C779C77AC77BDDB9DDB3DDADC4AAC77CC77DC77EC780DDA8C0B3C1ABDDAADDABC781DDB2BBF1DDB5D3A8DDBAC782DDBBC3A7C783C784DDD2DDBCC785C786C787DDD1C788B9BDC789C78ABED5C78BBEFAC78CC78DBACAC78EC78FC790C791DDCAC792DDC5C793DDBFC794C795C796B2CBDDC3C797DDCBB2A4DDD5C798C799C79ADDBEC79BC79CC79DC6D0DDD0C79EC79FC7A0C840C841DDD4C1E2B7C6C842C843C844C845C846DDCEDDCFC847C848C849DDC4C84AC84BC84CDDBDC84DDDCDCCD1C84EDDC9C84FC850C851C852DDC2C3C8C6BCCEAEDDCCC853DDC8C854C855C856C857C858C859DDC1C85AC85BC85CDDC6C2DCC85DC85EC85FC860C861C862D3A9D3AADDD3CFF4C8F8C863C864C865C866C867C868C869C86ADDE6C86BC86CC86DC86EC86FC870DDC7C871C872C873DDE0C2E4C874C875C876C877C878C879C87AC87BDDE1C87CC87DC87EC880C881C882C883C884C885C886DDD7C887C888C889C88AC88BD6F8C88CDDD9DDD8B8F0DDD6C88DC88EC88FC890C6CFC891B6ADC892C893C894C895C896DDE2C897BAF9D4E1DDE7C898C899C89AB4D0C89BDDDAC89CBFFBDDE3C89DDDDFC89EDDDDC89FC8A0C940C941C942C943C944B5D9C945C946C947C948DDDBDDDCDDDEC949BDAFDDE4C94ADDE5C94BC94CC94DC94EC94FC950C951C952DDF5C953C3C9C954C955CBE2C956C957C958C959DDF2C95AC95BC95CC95DC95EC95FC960C961C962C963C964C965C966D8E1C967C968C6D1C969DDF4C96AC96BC96CD5F4DDF3DDF0C96DC96EDDECC96FDDEFC970DDE8C971C972D0EEC973C974C975C976C8D8DDEEC977C978DDE9C979C97ADDEACBF2C97BDDEDC97CC97DB1CDC97EC980C981C982C983C984C0B6C985BCBBDDF1C986C987DDF7C988DDF6DDEBC989C98AC98BC98CC98DC5EEC98EC98FC990DDFBC991C992C993C994C995C996C997C998C999C99AC99BDEA4C99CC99DDEA3C99EC99FC9A0CA40CA41CA42CA43CA44CA45CA46CA47CA48DDF8CA49CA4ACA4BCA4CC3EFCA4DC2FBCA4ECA4FCA50D5E1CA51CA52CEB5CA53CA54CA55CA56DDFDCA57B2CCCA58CA59CA5ACA5BCA5CCA5DCA5ECA5FCA60C4E8CADFCA61CA62CA63CA64CA65CA66CA67CA68CA69CA6AC7BEDDFADDFCDDFEDEA2B0AAB1CECA6BCA6CCA6DCA6ECA6FDEACCA70CA71CA72CA73DEA6BDB6C8EFCA74CA75CA76CA77CA78CA79CA7ACA7BCA7CCA7DCA7EDEA1CA80CA81DEA5CA82CA83CA84CA85DEA9CA86CA87CA88CA89CA8ADEA8CA8BCA8CCA8DDEA7CA8ECA8FCA90CA91CA92CA93CA94CA95CA96DEADCA97D4CCCA98CA99CA9ACA9BDEB3DEAADEAECA9CCA9DC0D9CA9ECA9FCAA0CB40CB41B1A1DEB6CB42DEB1CB43CB44CB45CB46CB47CB48CB49DEB2CB4ACB4BCB4CCB4DCB4ECB4FCB50CB51CB52CB53CB54D1A6DEB5CB55CB56CB57CB58CB59CB5ACB5BDEAFCB5CCB5DCB5EDEB0CB5FD0BDCB60CB61CB62DEB4CAEDDEB9CB63CB64CB65CB66CB67CB68DEB8CB69DEB7CB6ACB6BCB6CCB6DCB6ECB6FCB70DEBBCB71CB72CB73CB74CB75CB76CB77BDE5CB78CB79CB7ACB7BCB7CB2D8C3EACB7DCB7EDEBACB80C5BACB81CB82CB83CB84CB85CB86DEBCCB87CB88CB89CB8ACB8BCB8CCB8DCCD9CB8ECB8FCB90CB91B7AACB92CB93CB94CB95CB96CB97CB98CB99CB9ACB9BCB9CCB9DCB9ECB9FCBA0CC40CC41D4E5CC42CC43CC44DEBDCC45CC46CC47CC48CC49DEBFCC4ACC4BCC4CCC4DCC4ECC4FCC50CC51CC52CC53CC54C4A2CC55CC56CC57CC58DEC1CC59CC5ACC5BCC5CCC5DCC5ECC5FCC60CC61CC62CC63CC64CC65CC66CC67CC68DEBECC69DEC0CC6ACC6BCC6CCC6DCC6ECC6FCC70CC71CC72CC73CC74CC75CC76CC77D5BACC78CC79CC7ADEC2CC7BCC7CCC7DCC7ECC80CC81CC82CC83CC84CC85CC86CC87CC88CC89CC8ACC8BF2AEBBA2C2B2C5B0C2C7CC8CCC8DF2AFCC8ECC8FCC90CC91CC92D0E9CC93CC94CC95D3DDCC96CC97CC98EBBDCC99CC9ACC9BCC9CCC9DCC9ECC9FCCA0B3E6F2B0CD40F2B1CD41CD42CAADCD43CD44CD45CD46CD47CD48CD49BAE7F2B3F2B5F2B4CBE4CFBAF2B2CAB4D2CFC2ECCD4ACD4BCD4CCD4DCD4ECD4FCD50CEC3F2B8B0F6F2B7CD51CD52CD53CD54CD55F2BECD56B2CFCD57CD58CD59CD5ACD5BCD5CD1C1F2BACD5DCD5ECD5FCD60CD61F2BCD4E9CD62CD63F2BBF2B6F2BFF2BDCD64F2B9CD65CD66F2C7F2C4F2C6CD67CD68F2CAF2C2F2C0CD69CD6ACD6BF2C5CD6CCD6DCD6ECD6FCD70D6FBCD71CD72CD73F2C1CD74C7F9C9DFCD75F2C8B9C6B5B0CD76CD77F2C3F2C9F2D0F2D6CD78CD79BBD7CD7ACD7BCD7CF2D5CDDCCD7DD6EBCD7ECD80F2D2F2D4CD81CD82CD83CD84B8F2CD85CD86CD87CD88F2CBCD89CD8ACD8BF2CEC2F9CD8CD5DDF2CCF2CDF2CFF2D3CD8DCD8ECD8FF2D9D3BCCD90CD91CD92CD93B6EACD94CAF1CD95B7E4F2D7CD96CD97CD98F2D8F2DAF2DDF2DBCD99CD9AF2DCCD9BCD9CCD9DCD9ED1D1F2D1CD9FCDC9CDA0CECFD6A9CE40F2E3CE41C3DBCE42F2E0CE43CE44C0AFF2ECF2DECE45F2E1CE46CE47CE48F2E8CE49CE4ACE4BCE4CF2E2CE4DCE4EF2E7CE4FCE50F2E6CE51CE52F2E9CE53CE54CE55F2DFCE56CE57F2E4F2EACE58CE59CE5ACE5BCE5CCE5DCE5ED3ACF2E5B2F5CE5FCE60F2F2CE61D0ABCE62CE63CE64CE65F2F5CE66CE67CE68BBC8CE69F2F9CE6ACE6BCE6CCE6DCE6ECE6FF2F0CE70CE71F2F6F2F8F2FACE72CE73CE74CE75CE76CE77CE78CE79F2F3CE7AF2F1CE7BCE7CCE7DBAFBCE7EB5FBCE80CE81CE82CE83F2EFF2F7F2EDF2EECE84CE85CE86F2EBF3A6CE87F3A3CE88CE89F3A2CE8ACE8BF2F4CE8CC8DACE8DCE8ECE8FCE90CE91F2FBCE92CE93CE94F3A5CE95CE96CE97CE98CE99CE9ACE9BC3F8CE9CCE9DCE9ECE9FCEA0CF40CF41CF42F2FDCF43CF44F3A7F3A9F3A4CF45F2FCCF46CF47CF48F3ABCF49F3AACF4ACF4BCF4CCF4DC2DDCF4ECF4FF3AECF50CF51F3B0CF52CF53CF54CF55CF56F3A1CF57CF58CF59F3B1F3ACCF5ACF5BCF5CCF5DCF5EF3AFF2FEF3ADCF5FCF60CF61CF62CF63CF64CF65F3B2CF66CF67CF68CF69F3B4CF6ACF6BCF6CCF6DF3A8CF6ECF6FCF70CF71F3B3CF72CF73CF74F3B5CF75CF76CF77CF78CF79CF7ACF7BCF7CCF7DCF7ED0B7CF80CF81CF82CF83F3B8CF84CF85CF86CF87D9F9CF88CF89CF8ACF8BCF8CCF8DF3B9CF8ECF8FCF90CF91CF92CF93CF94CF95F3B7CF96C8E4F3B6CF97CF98CF99CF9AF3BACF9BCF9CCF9DCF9ECF9FF3BBB4C0CFA0D040D041D042D043D044D045D046D047D048D049D04AD04BD04CD04DEEC3D04ED04FD050D051D052D053F3BCD054D055F3BDD056D057D058D1AAD059D05AD05BF4ACD0C6D05CD05DD05ED05FD060D061D0D0D1DCD062D063D064D065D066D067CFCED068D069BDD6D06AD1C3D06BD06CD06DD06ED06FD070D071BAE2E1E9D2C2F1C2B2B9D072D073B1EDF1C3D074C9C0B3C4D075D9F2D076CBA5D077F1C4D078D079D07AD07BD6D4D07CD07DD07ED080D081F1C5F4C0F1C6D082D4ACF1C7D083B0C0F4C1D084D085F4C2D086D087B4FCD088C5DBD089D08AD08BD08CCCBBD08DD08ED08FD0E4D090D091D092D093D094CDE0D095D096D097D098D099F1C8D09AD9F3D09BD09CD09DD09ED09FD0A0B1BBD140CFAED141D142D143B8A4D144D145D146D147D148F1CAD149D14AD14BD14CF1CBD14DD14ED14FD150B2C3C1D1D151D152D7B0F1C9D153D154F1CCD155D156D157D158F1CED159D15AD15BD9F6D15CD2E1D4A3D15DD15EF4C3C8B9D15FD160D161D162D163F4C4D164D165F1CDF1CFBFE3F1D0D166D167F1D4D168D169D16AD16BD16CD16DD16EF1D6F1D1D16FC9D1C5E1D170D171D172C2E3B9FCD173D174F1D3D175F1D5D176D177D178B9D3D179D17AD17BD17CD17DD17ED180F1DBD181D182D183D184D185BAD6D186B0FDF1D9D187D188D189D18AD18BF1D8F1D2F1DAD18CD18DD18ED18FD190F1D7D191D192D193C8ECD194D195D196D197CDCAF1DDD198D199D19AD19BE5BDD19CD19DD19EF1DCD19FF1DED1A0D240D241D242D243D244D245D246D247D248F1DFD249D24ACFE5D24BD24CD24DD24ED24FD250D251D252D253D254D255D256D257D258D259D25AD25BD25CD25DD25ED25FD260D261D262D263F4C5BDF3D264D265D266D267D268D269F1E0D26AD26BD26CD26DD26ED26FD270D271D272D273D274D275D276D277D278D279D27AD27BD27CD27DF1E1D27ED280D281CEF7D282D2AAD283F1FBD284D285B8B2D286D287D288D289D28AD28BD28CD28DD28ED28FD290D291D292D293D294D295D296D297D298D299D29AD29BD29CD29DD29ED29FD2A0D340D341D342D343D344D345D346D347D348D349D34AD34BD34CD34DD34ED34FD350D351D352D353D354D355D356D357D358D359D35AD35BD35CD35DD35EBCFBB9DBD35FB9E6C3D9CAD3EAE8C0C0BEF5EAE9EAEAEAEBD360EAECEAEDEAEEEAEFBDC7D361D362D363F5FBD364D365D366F5FDD367F5FED368F5FCD369D36AD36BD36CBDE2D36DF6A1B4A5D36ED36FD370D371F6A2D372D373D374F6A3D375D376D377ECB2D378D379D37AD37BD37CD37DD37ED380D381D382D383D384D1D4D385D386D387D388D389D38AD9EAD38BD38CD38DD38ED38FD390D391D392D393D394D395D396D397D398D399D39AD39BD39CD39DD39ED39FD3A0D440D441D442D443D444D445D446D447D448D449D44AD44BD44CD44DD44ED44FD450D451D452D453D454D455D456D457D458D459D45AD45BD45CD45DD45ED45FF6A4D460D461D462D463D464D465D466D467D468EEBAD469D46AD46BD46CD46DD46ED46FD470D471D472D473D474D475D476D477D478D479D47AD47BD47CD47DD47ED480D481D482D483D484D485D486D487D488D489D48AD48BD48CD48DD48ED48FD490D491D492D493D494D495D496D497D498D499D5B2D49AD49BD49CD49DD49ED49FD4A0D540D541D542D543D544D545D546D547D3FECCDCD548D549D54AD54BD54CD54DD54ED54FCAC4D550D551D552D553D554D555D556D557D558D559D55AD55BD55CD55DD55ED55FD560D561D562D563D564D565D566D567D568D569D56AD56BD56CD56DD56ED56FD570D571D572D573D574D575D576D577D578D579D57AD57BD57CD57DD57ED580D581D582D583D584D585D586D587D588D589D58AD58BD58CD58DD58ED58FD590D591D592D593D594D595D596D597D598D599D59AD59BD59CD59DD59ED59FD5A0D640D641D642D643D644D645D646D647D648D649D64AD64BD64CD64DD64ED64FD650D651D652D653D654D655D656D657D658D659D65AD65BD65CD65DD65ED65FD660D661D662E5C0D663D664D665D666D667D668D669D66AD66BD66CD66DD66ED66FD670D671D672D673D674D675D676D677D678D679D67AD67BD67CD67DD67ED680D681F6A5D682D683D684D685D686D687D688D689D68AD68BD68CD68DD68ED68FD690D691D692D693D694D695D696D697D698D699D69AD69BD69CD69DD69ED69FD6A0D740D741D742D743D744D745D746D747D748D749D74AD74BD74CD74DD74ED74FD750D751D752D753D754D755D756D757D758D759D75AD75BD75CD75DD75ED75FBEAFD760D761D762D763D764C6A9D765D766D767D768D769D76AD76BD76CD76DD76ED76FD770D771D772D773D774D775D776D777D778D779D77AD77BD77CD77DD77ED780D781D782D783D784D785D786D787D788D789D78AD78BD78CD78DD78ED78FD790D791D792D793D794D795D796D797D798DAA5BCC6B6A9B8BCC8CFBCA5DAA6DAA7CCD6C8C3DAA8C6FDD799D1B5D2E9D1B6BCC7D79ABDB2BBE4DAA9DAAAD1C8DAABD0EDB6EFC2DBD79BCBCFB7EDC9E8B7C3BEF7D6A4DAACDAADC6C0D7E7CAB6D79CD5A9CBDFD5EFDAAED6DFB4CADAB0DAAFD79DD2EBDAB1DAB2DAB3CAD4DAB4CAABDAB5DAB6B3CFD6EFDAB7BBB0B5AEDAB8DAB9B9EED1AFD2E8DABAB8C3CFEAB2EFDABBDABCD79EBDEBCEDCD3EFDABDCEF3DABED3D5BBE5DABFCBB5CBD0DAC0C7EBD6EEDAC1C5B5B6C1DAC2B7CCBFCEDAC3DAC4CBADDAC5B5F7DAC6C1C2D7BBDAC7CCB8D79FD2EAC4B1DAC8B5FDBBD1DAC9D0B3DACADACBCEBDDACCDACDDACEB2F7DAD1DACFD1E8DAD0C3D5DAD2D7A0DAD3DAD4DAD5D0BBD2A5B0F9DAD6C7ABDAD7BDF7C3A1DAD8DAD9C3FDCCB7DADADADBC0BEC6D7DADCDADDC7B4DADEDADFB9C8D840D841D842D843D844D845D846D847D848BBEDD849D84AD84BD84CB6B9F4F8D84DF4F9D84ED84FCDE3D850D851D852D853D854D855D856D857F5B9D858D859D85AD85BEBE0D85CD85DD85ED85FD860D861CFF3BBBFD862D863D864D865D866D867D868BAC0D4A5D869D86AD86BD86CD86DD86ED86FE1D9D870D871D872D873F5F4B1AAB2F2D874D875D876D877D878D879D87AF5F5D87BD87CF5F7D87DD87ED880BAD1F5F6D881C3B2D882D883D884D885D886D887D888F5F9D889D88AD88BF5F8D88CD88DD88ED88FD890D891D892D893D894D895D896D897D898D899D89AD89BD89CD89DD89ED89FD8A0D940D941D942D943D944D945D946D947D948D949D94AD94BD94CD94DD94ED94FD950D951D952D953D954D955D956D957D958D959D95AD95BD95CD95DD95ED95FD960D961D962D963D964D965D966D967D968D969D96AD96BD96CD96DD96ED96FD970D971D972D973D974D975D976D977D978D979D97AD97BD97CD97DD97ED980D981D982D983D984D985D986D987D988D989D98AD98BD98CD98DD98ED98FD990D991D992D993D994D995D996D997D998D999D99AD99BD99CD99DD99ED99FD9A0DA40DA41DA42DA43DA44DA45DA46DA47DA48DA49DA4ADA4BDA4CDA4DDA4EB1B4D5EAB8BADA4FB9B1B2C6D4F0CFCDB0DCD5CBBBF5D6CAB7B7CCB0C6B6B1E1B9BAD6FCB9E1B7A1BCFAEADAEADBCCF9B9F3EADCB4FBC3B3B7D1BAD8EADDD4F4EADEBCD6BBDFEADFC1DEC2B8D4DFD7CAEAE0EAE1EAE4EAE2EAE3C9DEB8B3B6C4EAE5CAEAC9CDB4CDDA50DA51E2D9C5E2EAE6C0B5DA52D7B8EAE7D7ACC8FCD8D3D8CDD4DEDA53D4F9C9C4D3AEB8D3B3E0DA54C9E2F4F6DA55DA56DA57BAD5DA58F4F7DA59DA5AD7DFDA5BDA5CF4F1B8B0D5D4B8CFC6F0DA5DDA5EDA5FDA60DA61DA62DA63DA64DA65B3C3DA66DA67F4F2B3ACDA68DA69DA6ADA6BD4BDC7F7DA6CDA6DDA6EDA6FDA70F4F4DA71DA72F4F3DA73DA74DA75DA76DA77DA78DA79DA7ADA7BDA7CCCCBDA7DDA7EDA80C8A4DA81DA82DA83DA84DA85DA86DA87DA88DA89DA8ADA8BDA8CDA8DF4F5DA8ED7E3C5BFF5C0DA8FDA90F5BBDA91F5C3DA92F5C2DA93D6BAF5C1DA94DA95DA96D4BEF5C4DA97F5CCDA98DA99DA9ADA9BB0CFB5F8DA9CF5C9F5CADA9DC5DCDA9EDA9FDAA0DB40F5C5F5C6DB41DB42F5C7F5CBDB43BEE0F5C8B8FADB44DB45DB46F5D0F5D3DB47DB48DB49BFE7DB4AB9F2F5BCF5CDDB4BDB4CC2B7DB4DDB4EDB4FCCF8DB50BCF9DB51F5CEF5CFF5D1B6E5F5D2DB52F5D5DB53DB54DB55DB56DB57DB58DB59F5BDDB5ADB5BDB5CF5D4D3BBDB5DB3ECDB5EDB5FCCA4DB60DB61DB62DB63F5D6DB64DB65DB66DB67DB68DB69DB6ADB6BF5D7BEE1F5D8DB6CDB6DCCDFF5DBDB6EDB6FDB70DB71DB72B2C8D7D9DB73F5D9DB74F5DAF5DCDB75F5E2DB76DB77DB78F5E0DB79DB7ADB7BF5DFF5DDDB7CDB7DF5E1DB7EDB80F5DEF5E4F5E5DB81CCE3DB82DB83E5BFB5B8F5E3F5E8CCA3DB84DB85DB86DB87DB88F5E6F5E7DB89DB8ADB8BDB8CDB8DDB8EF5BEDB8FDB90DB91DB92DB93DB94DB95DB96DB97DB98DB99DB9AB1C4DB9BDB9CF5BFDB9DDB9EB5C5B2E4DB9FF5ECF5E9DBA0B6D7DC40F5EDDC41F5EADC42DC43DC44DC45DC46F5EBDC47DC48B4DADC49D4EADC4ADC4BDC4CF5EEDC4DB3F9DC4EDC4FDC50DC51DC52DC53DC54F5EFF5F1DC55DC56DC57F5F0DC58DC59DC5ADC5BDC5CDC5DDC5EF5F2DC5FF5F3DC60DC61DC62DC63DC64DC65DC66DC67DC68DC69DC6ADC6BC9EDB9AADC6CDC6DC7FBDC6EDC6FB6E3DC70DC71DC72DC73DC74DC75DC76CCC9DC77DC78DC79DC7ADC7BDC7CDC7DDC7EDC80DC81DC82DC83DC84DC85DC86DC87DC88DC89DC8AEAA6DC8BDC8CDC8DDC8EDC8FDC90DC91DC92DC93DC94DC95DC96DC97DC98DC99DC9ADC9BDC9CDC9DDC9EDC9FDCA0DD40DD41DD42DD43DD44DD45DD46DD47DD48DD49DD4ADD4BDD4CDD4DDD4EDD4FDD50DD51DD52DD53DD54DD55DD56DD57DD58DD59DD5ADD5BDD5CDD5DDD5EDD5FDD60DD61DD62DD63DD64DD65DD66DD67DD68DD69DD6ADD6BDD6CDD6DDD6EDD6FDD70DD71DD72DD73DD74DD75DD76DD77DD78DD79DD7ADD7BDD7CDD7DDD7EDD80DD81DD82DD83DD84DD85DD86DD87DD88DD89DD8ADD8BDD8CDD8DDD8EDD8FDD90DD91DD92DD93DD94DD95DD96DD97DD98DD99DD9ADD9BDD9CDD9DDD9EDD9FDDA0DE40DE41DE42DE43DE44DE45DE46DE47DE48DE49DE4ADE4BDE4CDE4DDE4EDE4FDE50DE51DE52DE53DE54DE55DE56DE57DE58DE59DE5ADE5BDE5CDE5DDE5EDE5FDE60B3B5D4FEB9ECD0F9DE61E9EDD7AAE9EEC2D6C8EDBAE4E9EFE9F0E9F1D6E1E9F2E9F3E9F5E9F4E9F6E9F7C7E1E9F8D4D8E9F9BDCEDE62E9FAE9FBBDCFE9FCB8A8C1BEE9FDB1B2BBD4B9F5E9FEDE63EAA1EAA2EAA3B7F8BCADDE64CAE4E0CED4AFCFBDD5B7EAA4D5DEEAA5D0C1B9BCDE65B4C7B1D9DE66DE67DE68C0B1DE69DE6ADE6BDE6CB1E6B1E7DE6DB1E8DE6EDE6FDE70DE71B3BDC8E8DE72DE73DE74DE75E5C1DE76DE77B1DFDE78DE79DE7AC1C9B4EFDE7BDE7CC7A8D3D8DE7DC6F9D1B8DE7EB9FDC2F5DE80DE81DE82DE83DE84D3ADDE85D4CBBDFCDE86E5C2B7B5E5C3DE87DE88BBB9D5E2DE89BDF8D4B6CEA5C1ACB3D9DE8ADE8BCCF6DE8CE5C6E5C4E5C8DE8DE5CAE5C7B5CFC6C8DE8EB5FCE5C5DE8FCAF6DE90DE91E5C9DE92DE93DE94C3D4B1C5BCA3DE95DE96DE97D7B7DE98DE99CDCBCBCDCACACCD3E5CCE5CBC4E6DE9ADE9BD1A1D1B7E5CDDE9CE5D0DE9DCDB8D6F0E5CFB5DDDE9ECDBEDE9FE5D1B6BADEA0DF40CDA8B9E4DF41CAC5B3D1CBD9D4ECE5D2B7EADF42DF43DF44E5CEDF45DF46DF47DF48DF49DF4AE5D5B4FEE5D6DF4BDF4CDF4DDF4EDF4FE5D3E5D4DF50D2DDDF51DF52C2DFB1C6DF53D3E2DF54DF55B6DDCBECDF56E5D7DF57DF58D3F6DF59DF5ADF5BDF5CDF5DB1E9DF5EB6F4E5DAE5D8E5D9B5C0DF5FDF60DF61D2C5E5DCDF62DF63E5DEDF64DF65DF66DF67DF68DF69E5DDC7B2DF6AD2A3DF6BDF6CE5DBDF6DDF6EDF6FDF70D4E2D5DADF71DF72DF73DF74DF75E5E0D7F1DF76DF77DF78DF79DF7ADF7BDF7CE5E1DF7DB1DCD1FBDF7EE5E2E5E4DF80DF81DF82DF83E5E3DF84DF85E5E5DF86DF87DF88DF89DF8AD2D8DF8BB5CBDF8CE7DFDF8DDAF5DF8EDAF8DF8FDAF6DF90DAF7DF91DF92DF93DAFAD0CFC4C7DF94DF95B0EEDF96DF97DF98D0B0DF99DAF9DF9AD3CABAAADBA2C7F1DF9BDAFCDAFBC9DBDAFDDF9CDBA1D7DEDAFEC1DADF9DDF9EDBA5DF9FDFA0D3F4E040E041DBA7DBA4E042DBA8E043E044BDBCE045E046E047C0C9DBA3DBA6D6A3E048DBA9E049E04AE04BDBADE04CE04DE04EDBAEDBACBAC2E04FE050E051BFA4DBABE052E053E054DBAAD4C7B2BFE055E056DBAFE057B9F9E058DBB0E059E05AE05BE05CB3BBE05DE05EE05FB5A6E060E061E062E063B6BCDBB1E064E065E066B6F5E067DBB2E068E069E06AE06BE06CE06DE06EE06FE070E071E072E073E074E075E076E077E078E079E07AE07BB1C9E07CE07DE07EE080DBB4E081E082E083DBB3DBB5E084E085E086E087E088E089E08AE08BE08CE08DE08EDBB7E08FDBB6E090E091E092E093E094E095E096DBB8E097E098E099E09AE09BE09CE09DE09EE09FDBB9E0A0E140DBBAE141E142D3CFF4FAC7F5D7C3C5E4F4FCF4FDF4FBE143BEC6E144E145E146E147D0EFE148E149B7D3E14AE14BD4CDCCAAE14CE14DF5A2F5A1BAA8F4FECBD6E14EE14FE150F5A4C0D2E151B3EAE152CDAAF5A5F5A3BDB4F5A8E153F5A9BDCDC3B8BFE1CBE1F5AAE154E155E156F5A6F5A7C4F0E157E158E159E15AE15BF5ACE15CB4BCE15DD7EDE15EB4D7F5ABF5AEE15FE160F5ADF5AFD0D1E161E162E163E164E165E166E167C3D1C8A9E168E169E16AE16BE16CE16DF5B0F5B1E16EE16FE170E171E172E173F5B2E174E175F5B3F5B4F5B5E176E177E178E179F5B7F5B6E17AE17BE17CE17DF5B8E17EE180E181E182E183E184E185E186E187E188E189E18AB2C9E18BD3D4CACDE18CC0EFD6D8D2B0C1BFE18DBDF0E18EE18FE190E191E192E193E194E195E196E197B8AAE198E199E19AE19BE19CE19DE19EE19FE1A0E240E241E242E243E244E245E246E247E248E249E24AE24BE24CE24DE24EE24FE250E251E252E253E254E255E256E257E258E259E25AE25BE25CE25DE25EE25FE260E261E262E263E264E265E266E267E268E269E26AE26BE26CE26DE26EE26FE270E271E272E273E274E275E276E277E278E279E27AE27BE27CE27DE27EE280E281E282E283E284E285E286E287E288E289E28AE28BE28CE28DE28EE28FE290E291E292E293E294E295E296E297E298E299E29AE29BE29CE29DE29EE29FE2A0E340E341E342E343E344E345E346E347E348E349E34AE34BE34CE34DE34EE34FE350E351E352E353E354E355E356E357E358E359E35AE35BE35CE35DE35EE35FE360E361E362E363E364E365E366E367E368E369E36AE36BE36CE36DBCF8E36EE36FE370E371E372E373E374E375E376E377E378E379E37AE37BE37CE37DE37EE380E381E382E383E384E385E386E387F6C6E388E389E38AE38BE38CE38DE38EE38FE390E391E392E393E394E395E396E397E398E399E39AE39BE39CE39DE39EE39FE3A0E440E441E442E443E444E445F6C7E446E447E448E449E44AE44BE44CE44DE44EE44FE450E451E452E453E454E455E456E457E458E459E45AE45BE45CE45DE45EF6C8E45FE460E461E462E463E464E465E466E467E468E469E46AE46BE46CE46DE46EE46FE470E471E472E473E474E475E476E477E478E479E47AE47BE47CE47DE47EE480E481E482E483E484E485E486E487E488E489E48AE48BE48CE48DE48EE48FE490E491E492E493E494E495E496E497E498E499E49AE49BE49CE49DE49EE49FE4A0E540E541E542E543E544E545E546E547E548E549E54AE54BE54CE54DE54EE54FE550E551E552E553E554E555E556E557E558E559E55AE55BE55CE55DE55EE55FE560E561E562E563E564E565E566E567E568E569E56AE56BE56CE56DE56EE56FE570E571E572E573F6C9E574E575E576E577E578E579E57AE57BE57CE57DE57EE580E581E582E583E584E585E586E587E588E589E58AE58BE58CE58DE58EE58FE590E591E592E593E594E595E596E597E598E599E59AE59BE59CE59DE59EE59FF6CAE5A0E640E641E642E643E644E645E646E647E648E649E64AE64BE64CE64DE64EE64FE650E651E652E653E654E655E656E657E658E659E65AE65BE65CE65DE65EE65FE660E661E662F6CCE663E664E665E666E667E668E669E66AE66BE66CE66DE66EE66FE670E671E672E673E674E675E676E677E678E679E67AE67BE67CE67DE67EE680E681E682E683E684E685E686E687E688E689E68AE68BE68CE68DE68EE68FE690E691E692E693E694E695E696E697E698E699E69AE69BE69CE69DF6CBE69EE69FE6A0E740E741E742E743E744E745E746E747F7E9E748E749E74AE74BE74CE74DE74EE74FE750E751E752E753E754E755E756E757E758E759E75AE75BE75CE75DE75EE75FE760E761E762E763E764E765E766E767E768E769E76AE76BE76CE76DE76EE76FE770E771E772E773E774E775E776E777E778E779E77AE77BE77CE77DE77EE780E781E782E783E784E785E786E787E788E789E78AE78BE78CE78DE78EE78FE790E791E792E793E794E795E796E797E798E799E79AE79BE79CE79DE79EE79FE7A0E840E841E842E843E844E845E846E847E848E849E84AE84BE84CE84DE84EF6CDE84FE850E851E852E853E854E855E856E857E858E859E85AE85BE85CE85DE85EE85FE860E861E862E863E864E865E866E867E868E869E86AE86BE86CE86DE86EE86FE870E871E872E873E874E875E876E877E878E879E87AF6CEE87BE87CE87DE87EE880E881E882E883E884E885E886E887E888E889E88AE88BE88CE88DE88EE88FE890E891E892E893E894EEC4EEC5EEC6D5EBB6A4EEC8EEC7EEC9EECAC7A5EECBEECCE895B7B0B5F6EECDEECFE896EECEE897B8C6EED0EED1EED2B6DBB3AED6D3C4C6B1B5B8D6EED3EED4D4BFC7D5BEFBCED9B9B3EED6EED5EED8EED7C5A5EED9EEDAC7AEEEDBC7AFEEDCB2A7EEDDEEDEEEDFEEE0EEE1D7EAEEE2EEE3BCD8EEE4D3CBCCFAB2ACC1E5EEE5C7A6C3ADE898EEE6EEE7EEE8EEE9EEEAEEEBEEECE899EEEDEEEEEEEFE89AE89BEEF0EEF1EEF2EEF4EEF3E89CEEF5CDADC2C1EEF6EEF7EEF8D5A1EEF9CFB3EEFAEEFBE89DEEFCEEFDEFA1EEFEEFA2B8F5C3FAEFA3EFA4BDC2D2BFB2F9EFA5EFA6EFA7D2F8EFA8D6FDEFA9C6CCE89EEFAAEFABC1B4EFACCFFACBF8EFAEEFADB3FAB9F8EFAFEFB0D0E2EFB1EFB2B7E6D0BFEFB3EFB4EFB5C8F1CCE0EFB6EFB7EFB8EFB9EFBAD5E0EFBBB4EDC3AAEFBCE89FEFBDEFBEEFBFE8A0CEFDEFC0C2E0B4B8D7B6BDF5E940CFC7EFC3EFC1EFC2EFC4B6A7BCFCBEE2C3CCEFC5EFC6E941EFC7EFCFEFC8EFC9EFCAC7C2EFF1B6CDEFCBE942EFCCEFCDB6C6C3BEEFCEE943EFD0EFD1EFD2D5F2E944EFD3C4F7E945EFD4C4F8EFD5EFD6B8E4B0F7EFD7EFD8EFD9E946EFDAEFDBEFDCEFDDE947EFDEBEB5EFE1EFDFEFE0E948EFE2EFE3C1CDEFE4EFE5EFE6EFE7EFE8EFE9EFEAEFEBEFECC0D8E949EFEDC1ADEFEEEFEFEFF0E94AE94BCFE2E94CE94DE94EE94FE950E951E952E953B3A4E954E955E956E957E958E959E95AE95BE95CE95DE95EE95FE960E961E962E963E964E965E966E967E968E969E96AE96BE96CE96DE96EE96FE970E971E972E973E974E975E976E977E978E979E97AE97BE97CE97DE97EE980E981E982E983E984E985E986E987E988E989E98AE98BE98CE98DE98EE98FE990E991E992E993E994E995E996E997E998E999E99AE99BE99CE99DE99EE99FE9A0EA40EA41EA42EA43EA44EA45EA46EA47EA48EA49EA4AEA4BEA4CEA4DEA4EEA4FEA50EA51EA52EA53EA54EA55EA56EA57EA58EA59EA5AEA5BC3C5E3C5C9C1E3C6EA5CB1D5CECAB4B3C8F2E3C7CFD0E3C8BCE4E3C9E3CAC3C6D5A2C4D6B9EBCEC5E3CBC3F6E3CCEA5DB7A7B8F3BAD2E3CDE3CED4C4E3CFEA5EE3D0D1CBE3D1E3D2E3D3E3D4D1D6E3D5B2FBC0BBE3D6EA5FC0ABE3D7E3D8E3D9EA60E3DAE3DBEA61B8B7DAE2EA62B6D3EA63DAE4DAE3EA64EA65EA66EA67EA68EA69EA6ADAE6EA6BEA6CEA6DC8EEEA6EEA6FDAE5B7C0D1F4D2F5D5F3BDD7EA70EA71EA72EA73D7E8DAE8DAE7EA74B0A2CDD3EA75DAE9EA76B8BDBCCAC2BDC2A4B3C2DAEAEA77C2AAC4B0BDB5EA78EA79CFDEEA7AEA7BEA7CDAEBC9C2EA7DEA7EEA80EA81EA82B1DDEA83EA84EA85DAECEA86B6B8D4BAEA87B3FDEA88EA89DAEDD4C9CFD5C5E3EA8ADAEEEA8BEA8CEA8DEA8EEA8FDAEFEA90DAF0C1EACCD5CFDDEA91EA92EA93EA94EA95EA96EA97EA98EA99EA9AEA9BEA9CEA9DD3E7C2A1EA9EDAF1EA9FEAA0CBE5EB40DAF2EB41CBE6D2FEEB42EB43EB44B8F4EB45EB46DAF3B0AFCFB6EB47EB48D5CFEB49EB4AEB4BEB4CEB4DEB4EEB4FEB50EB51EB52CBEDEB53EB54EB55EB56EB57EB58EB59EB5ADAF4EB5BEB5CE3C4EB5DEB5EC1A5EB5FEB60F6BFEB61EB62F6C0F6C1C4D1EB63C8B8D1E3EB64EB65D0DBD1C5BCAFB9CDEB66EFF4EB67EB68B4C6D3BAF6C2B3FBEB69EB6AF6C3EB6BEB6CB5F1EB6DEB6EEB6FEB70EB71EB72EB73EB74EB75EB76F6C5EB77EB78EB79EB7AEB7BEB7CEB7DD3EAF6A7D1A9EB7EEB80EB81EB82F6A9EB83EB84EB85F6A8EB86EB87C1E3C0D7EB88B1A2EB89EB8AEB8BEB8CCEEDEB8DD0E8F6ABEB8EEB8FCFF6EB90F6AAD5F0F6ACC3B9EB91EB92EB93BBF4F6AEF6ADEB94EB95EB96C4DEEB97EB98C1D8EB99EB9AEB9BEB9CEB9DCBAAEB9ECFBCEB9FEBA0EC40EC41EC42EC43EC44EC45EC46EC47EC48F6AFEC49EC4AF6B0EC4BEC4CF6B1EC4DC2B6EC4EEC4FEC50EC51EC52B0D4C5F9EC53EC54EC55EC56F6B2EC57EC58EC59EC5AEC5BEC5CEC5DEC5EEC5FEC60EC61EC62EC63EC64EC65EC66EC67EC68EC69C7E0F6A6EC6AEC6BBEB8EC6CEC6DBEB2EC6EB5E5EC6FEC70B7C7EC71BFBFC3D2C3E6EC72EC73D8CCEC74EC75EC76B8EFEC77EC78EC79EC7AEC7BEC7CEC7DEC7EEC80BDF9D1A5EC81B0D0EC82EC83EC84EC85EC86F7B0EC87EC88EC89EC8AEC8BEC8CEC8DEC8EF7B1EC8FEC90EC91EC92EC93D0ACEC94B0B0EC95EC96EC97F7B2F7B3EC98F7B4EC99EC9AEC9BC7CAEC9CEC9DEC9EEC9FECA0ED40ED41BECFED42ED43F7B7ED44ED45ED46ED47ED48ED49ED4AF7B6ED4BB1DEED4CF7B5ED4DED4EF7B8ED4FF7B9ED50ED51ED52ED53ED54ED55ED56ED57ED58ED59ED5AED5BED5CED5DED5EED5FED60ED61ED62ED63ED64ED65ED66ED67ED68ED69ED6AED6BED6CED6DED6EED6FED70ED71ED72ED73ED74ED75ED76ED77ED78ED79ED7AED7BED7CED7DED7EED80ED81CEA4C8CDED82BAABE8B8E8B9E8BABEC2ED83ED84ED85ED86ED87D2F4ED88D4CFC9D8ED89ED8AED8BED8CED8DED8EED8FED90ED91ED92ED93ED94ED95ED96ED97ED98ED99ED9AED9BED9CED9DED9EED9FEDA0EE40EE41EE42EE43EE44EE45EE46EE47EE48EE49EE4AEE4BEE4CEE4DEE4EEE4FEE50EE51EE52EE53EE54EE55EE56EE57EE58EE59EE5AEE5BEE5CEE5DEE5EEE5FEE60EE61EE62EE63EE64EE65EE66EE67EE68EE69EE6AEE6BEE6CEE6DEE6EEE6FEE70EE71EE72EE73EE74EE75EE76EE77EE78EE79EE7AEE7BEE7CEE7DEE7EEE80EE81EE82EE83EE84EE85EE86EE87EE88EE89EE8AEE8BEE8CEE8DEE8EEE8FEE90EE91EE92EE93EE94EE95EE96EE97EE98EE99EE9AEE9BEE9CEE9DEE9EEE9FEEA0EF40EF41EF42EF43EF44EF45D2B3B6A5C7EAF1FCCFEECBB3D0EBE7EFCDE7B9CBB6D9F1FDB0E4CBCCF1FED4A4C2ADC1ECC6C4BEB1F2A1BCD5EF46F2A2F2A3EF47F2A4D2C3C6B5EF48CDC7F2A5EF49D3B1BFC5CCE2EF4AF2A6F2A7D1D5B6EEF2A8F2A9B5DFF2AAF2ABEF4BB2FCF2ACF2ADC8A7EF4CEF4DEF4EEF4FEF50EF51EF52EF53EF54EF55EF56EF57EF58EF59EF5AEF5BEF5CEF5DEF5EEF5FEF60EF61EF62EF63EF64EF65EF66EF67EF68EF69EF6AEF6BEF6CEF6DEF6EEF6FEF70EF71B7E7EF72EF73ECA9ECAAECABEF74ECACEF75EF76C6AEECADECAEEF77EF78EF79B7C9CAB3EF7AEF7BEF7CEF7DEF7EEF80EF81E2B8F7CFEF82EF83EF84EF85EF86EF87EF88EF89EF8AEF8BEF8CEF8DEF8EEF8FEF90EF91EF92EF93EF94EF95EF96EF97EF98EF99EF9AEF9BEF9CEF9DEF9EEF9FEFA0F040F041F042F043F044F7D0F045F046B2CDF047F048F049F04AF04BF04CF04DF04EF04FF050F051F052F053F054F055F056F057F058F059F05AF05BF05CF05DF05EF05FF060F061F062F063F7D1F064F065F066F067F068F069F06AF06BF06CF06DF06EF06FF070F071F072F073F074F075F076F077F078F079F07AF07BF07CF07DF07EF080F081F082F083F084F085F086F087F088F089F7D3F7D2F08AF08BF08CF08DF08EF08FF090F091F092F093F094F095F096E2BBF097BCA2F098E2BCE2BDE2BEE2BFE2C0E2C1B7B9D2FBBDA4CACEB1A5CBC7F099E2C2B6FCC8C4E2C3F09AF09BBDC8F09CB1FDE2C4F09DB6F6E2C5C4D9F09EF09FE2C6CFDAB9DDE2C7C0A1F0A0E2C8B2F6F140E2C9F141C1F3E2CAE2CBC2F8E2CCE2CDE2CECAD7D8B8D9E5CFE3F142F143F144F145F146F147F148F149F14AF14BF14CF0A5F14DF14EDCB0F14FF150F151F152F153F154F155F156F157F158F159F15AF15BF15CF15DF15EF15FF160F161F162F163F164F165F166F167F168F169F16AF16BF16CF16DF16EF16FF170F171F172F173F174F175F176F177F178F179F17AF17BF17CF17DF17EF180F181F182F183F184F185F186F187F188F189F18AF18BF18CF18DF18EF18FF190F191F192F193F194F195F196F197F198F199F19AF19BF19CF19DF19EF19FF1A0F240F241F242F243F244F245F246F247F248F249F24AF24BF24CF24DF24EF24FF250F251F252F253F254F255F256F257F258F259F25AF25BF25CF25DF25EF25FF260F261F262F263F264F265F266F267F268F269F26AF26BF26CF26DF26EF26FF270F271F272F273F274F275F276F277F278F279F27AF27BF27CF27DF27EF280F281F282F283F284F285F286F287F288F289F28AF28BF28CF28DF28EF28FF290F291F292F293F294F295F296F297F298F299F29AF29BF29CF29DF29EF29FF2A0F340F341F342F343F344F345F346F347F348F349F34AF34BF34CF34DF34EF34FF350F351C2EDD4A6CDD4D1B1B3DBC7FDF352B2B5C2BFE6E0CABBE6E1E6E2BED4E6E3D7A4CDD5E6E5BCDDE6E4E6E6E6E7C2EEF353BDBEE6E8C2E6BAA7E6E9F354E6EAB3D2D1E9F355F356BFA5E6EBC6EFE6ECE6EDF357F358E6EEC6ADE6EFF359C9A7E6F0E6F1E6F2E5B9E6F3E6F4C2E2E6F5E6F6D6E8E6F7F35AE6F8B9C7F35BF35CF35DF35EF35FF360F361F7BBF7BAF362F363F364F365F7BEF7BCBAA1F366F7BFF367F7C0F368F369F36AF7C2F7C1F7C4F36BF36CF7C3F36DF36EF36FF370F371F7C5F7C6F372F373F374F375F7C7F376CBE8F377F378F379F37AB8DFF37BF37CF37DF37EF380F381F7D4F382F7D5F383F384F385F386F7D6F387F388F389F38AF7D8F38BF7DAF38CF7D7F38DF38EF38FF390F391F392F393F394F395F7DBF396F7D9F397F398F399F39AF39BF39CF39DD7D7F39EF39FF3A0F440F7DCF441F442F443F444F445F446F7DDF447F448F449F7DEF44AF44BF44CF44DF44EF44FF450F451F452F453F454F7DFF455F456F457F7E0F458F459F45AF45BF45CF45DF45EF45FF460F461F462DBCBF463F464D8AAF465F466F467F468F469F46AF46BF46CE5F7B9EDF46DF46EF46FF470BFFDBBEAF7C9C6C7F7C8F471F7CAF7CCF7CBF472F473F474F7CDF475CEBAF476F7CEF477F478C4A7F479F47AF47BF47CF47DF47EF480F481F482F483F484F485F486F487F488F489F48AF48BF48CF48DF48EF48FF490F491F492F493F494F495F496F497F498F499F49AF49BF49CF49DF49EF49FF4A0F540F541F542F543F544F545F546F547F548F549F54AF54BF54CF54DF54EF54FF550F551F552F553F554F555F556F557F558F559F55AF55BF55CF55DF55EF55FF560F561F562F563F564F565F566F567F568F569F56AF56BF56CF56DF56EF56FF570F571F572F573F574F575F576F577F578F579F57AF57BF57CF57DF57EF580F581F582F583F584F585F586F587F588F589F58AF58BF58CF58DF58EF58FF590F591F592F593F594F595F596F597F598F599F59AF59BF59CF59DF59EF59FF5A0F640F641F642F643F644F645F646F647F648F649F64AF64BF64CF64DF64EF64FF650F651F652F653F654F655F656F657F658F659F65AF65BF65CF65DF65EF65FF660F661F662F663F664F665F666F667F668F669F66AF66BF66CF66DF66EF66FF670F671F672F673F674F675F676F677F678F679F67AF67BF67CF67DF67EF680F681F682F683F684F685F686F687F688F689F68AF68BF68CF68DF68EF68FF690F691F692F693F694F695F696F697F698F699F69AF69BF69CF69DF69EF69FF6A0F740F741F742F743F744F745F746F747F748F749F74AF74BF74CF74DF74EF74FF750F751F752F753F754F755F756F757F758F759F75AF75BF75CF75DF75EF75FF760F761F762F763F764F765F766F767F768F769F76AF76BF76CF76DF76EF76FF770F771F772F773F774F775F776F777F778F779F77AF77BF77CF77DF77EF780D3E3F781F782F6CFF783C2B3F6D0F784F785F6D1F6D2F6D3F6D4F786F787F6D6F788B1ABF6D7F789F6D8F6D9F6DAF78AF6DBF6DCF78BF78CF78DF78EF6DDF6DECFCAF78FF6DFF6E0F6E1F6E2F6E3F6E4C0F0F6E5F6E6F6E7F6E8F6E9F790F6EAF791F6EBF6ECF792F6EDF6EEF6EFF6F0F6F1F6F2F6F3F6F4BEA8F793F6F5F6F6F6F7F6F8F794F795F796F797F798C8FAF6F9F6FAF6FBF6FCF799F79AF6FDF6FEF7A1F7A2F7A3F7A4F7A5F79BF79CF7A6F7A7F7A8B1EEF7A9F7AAF7ABF79DF79EF7ACF7ADC1DBF7AEF79FF7A0F7AFF840F841F842F843F844F845F846F847F848F849F84AF84BF84CF84DF84EF84FF850F851F852F853F854F855F856F857F858F859F85AF85BF85CF85DF85EF85FF860F861F862F863F864F865F866F867F868F869F86AF86BF86CF86DF86EF86FF870F871F872F873F874F875F876F877F878F879F87AF87BF87CF87DF87EF880F881F882F883F884F885F886F887F888F889F88AF88BF88CF88DF88EF88FF890F891F892F893F894F895F896F897F898F899F89AF89BF89CF89DF89EF89FF8A0F940F941F942F943F944F945F946F947F948F949F94AF94BF94CF94DF94EF94FF950F951F952F953F954F955F956F957F958F959F95AF95BF95CF95DF95EF95FF960F961F962F963F964F965F966F967F968F969F96AF96BF96CF96DF96EF96FF970F971F972F973F974F975F976F977F978F979F97AF97BF97CF97DF97EF980F981F982F983F984F985F986F987F988F989F98AF98BF98CF98DF98EF98FF990F991F992F993F994F995F996F997F998F999F99AF99BF99CF99DF99EF99FF9A0FA40FA41FA42FA43FA44FA45FA46FA47FA48FA49FA4AFA4BFA4CFA4DFA4EFA4FFA50FA51FA52FA53FA54FA55FA56FA57FA58FA59FA5AFA5BFA5CFA5DFA5EFA5FFA60FA61FA62FA63FA64FA65FA66FA67FA68FA69FA6AFA6BFA6CFA6DFA6EFA6FFA70FA71FA72FA73FA74FA75FA76FA77FA78FA79FA7AFA7BFA7CFA7DFA7EFA80FA81FA82FA83FA84FA85FA86FA87FA88FA89FA8AFA8BFA8CFA8DFA8EFA8FFA90FA91FA92FA93FA94FA95FA96FA97FA98FA99FA9AFA9BFA9CFA9DFA9EFA9FFAA0FB40FB41FB42FB43FB44FB45FB46FB47FB48FB49FB4AFB4BFB4CFB4DFB4EFB4FFB50FB51FB52FB53FB54FB55FB56FB57FB58FB59FB5AFB5BC4F1F0AFBCA6F0B0C3F9FB5CC5B8D1BBFB5DF0B1F0B2F0B3F0B4F0B5D1BCFB5ED1ECFB5FF0B7F0B6D4A7FB60CDD2F0B8F0BAF0B9F0BBF0BCFB61FB62B8EBF0BDBAE8FB63F0BEF0BFBEE9F0C0B6ECF0C1F0C2F0C3F0C4C8B5F0C5F0C6FB64F0C7C5F4FB65F0C8FB66FB67FB68F0C9FB69F0CAF7BDFB6AF0CBF0CCF0CDFB6BF0CEFB6CFB6DFB6EFB6FF0CFBAD7FB70F0D0F0D1F0D2F0D3F0D4F0D5F0D6F0D8FB71FB72D3A5F0D7FB73F0D9FB74FB75FB76FB77FB78FB79FB7AFB7BFB7CFB7DF5BAC2B9FB7EFB80F7E4FB81FB82FB83FB84F7E5F7E6FB85FB86F7E7FB87FB88FB89FB8AFB8BFB8CF7E8C2B4FB8DFB8EFB8FFB90FB91FB92FB93FB94FB95F7EAFB96F7EBFB97FB98FB99FB9AFB9BFB9CC2F3FB9DFB9EFB9FFBA0FC40FC41FC42FC43FC44FC45FC46FC47FC48F4F0FC49FC4AFC4BF4EFFC4CFC4DC2E9FC4EF7E1F7E2FC4FFC50FC51FC52FC53BBC6FC54FC55FC56FC57D9E4FC58FC59FC5ACAF2C0E8F0A4FC5BBADAFC5CFC5DC7ADFC5EFC5FFC60C4ACFC61FC62F7ECF7EDF7EEFC63F7F0F7EFFC64F7F1FC65FC66F7F4FC67F7F3FC68F7F2F7F5FC69FC6AFC6BFC6CF7F6FC6DFC6EFC6FFC70FC71FC72FC73FC74FC75EDE9FC76EDEAEDEBFC77F6BCFC78FC79FC7AFC7BFC7CFC7DFC7EFC80FC81FC82FC83FC84F6BDFC85F6BEB6A6FC86D8BEFC87FC88B9C4FC89FC8AFC8BD8BBFC8CDCB1FC8DFC8EFC8FFC90FC91FC92CAF3FC93F7F7FC94FC95FC96FC97FC98FC99FC9AFC9BFC9CF7F8FC9DFC9EF7F9FC9FFCA0FD40FD41FD42FD43FD44F7FBFD45F7FAFD46B1C7FD47F7FCF7FDFD48FD49FD4AFD4BFD4CF7FEFD4DFD4EFD4FFD50FD51FD52FD53FD54FD55FD56FD57C6EBECB4FD58FD59FD5AFD5BFD5CFD5DFD5EFD5FFD60FD61FD62FD63FD64FD65FD66FD67FD68FD69FD6AFD6BFD6CFD6DFD6EFD6FFD70FD71FD72FD73FD74FD75FD76FD77FD78FD79FD7AFD7BFD7CFD7DFD7EFD80FD81FD82FD83FD84FD85B3DDF6B3FD86FD87F6B4C1E4F6B5F6B6F6B7F6B8F6B9F6BAC8A3F6BBFD88FD89FD8AFD8BFD8CFD8DFD8EFD8FFD90FD91FD92FD93C1FAB9A8EDE8FD94FD95FD96B9EAD9DFFD97FD98FD99FD9AFD9";encodeToGb2312(o){for(var u="",X=0;X<o.length;X++){var h=o.charAt(X),R=o.charCodeAt(X);if(h==" ")u+="+";else if(R>=19968&&R<=40869){let A=R-19968;u+="%"+this.z.substr(A*4,2)+"%"+this.z.substr(A*4+2,2)}else u+="%"+o.charCodeAt(X).toString(16)}return u}decodeFromGb2312(o){for(var u="",X=0;X<o.length;X++){var h=o.charAt(X);if(h=="+")u+=" ";else if(h!="%")u+=h;else{X++;var R=o.charAt(X);if(!isNaN(parseInt(R)))X++,u+=decodeURIComponent(h+R+o.charAt(X));else try{var A=o.substr(X,2)+o.substr(X+3,2);X=X+4;for(var v=-1;(v=this.z.indexOf(A,v+1))!=-1;)if(v%4==0){u+=String.fromCharCode(v/4+19968);break}}catch{}}}return u}}let Be=new Sl;const xl=new FinalizationRegistry(Z=>{J.MxCpp.App.DestroyObject(Z)}),Kl={};J.McDb=void 0,(Z=>{(o=>{o[o.kTextLeft=0]="kTextLeft",o[o.kTextCenter=1]="kTextCenter",o[o.kTextRight=2]="kTextRight",o[o.kTextAlign=3]="kTextAlign",o[o.kTextMid=4]="kTextMid",o[o.kTextFit=5]="kTextFit"})(Z.TextHorzMode||(Z.TextHorzMode={})),(o=>{o[o.kTextBase=0]="kTextBase",o[o.kTextBottom=1]="kTextBottom",o[o.kTextVertMid=2]="kTextVertMid",o[o.kTextTop=3]="kTextTop"})(Z.TextVertMode||(Z.TextVertMode={})),(o=>{o[o.kTopLeft=1]="kTopLeft",o[o.kTopCenter=2]="kTopCenter",o[o.kTopRight=3]="kTopRight",o[o.kMiddleLeft=4]="kMiddleLeft",o[o.kMiddleCenter=5]="kMiddleCenter",o[o.kMiddleRight=6]="kMiddleRight",o[o.kBottomLeft=7]="kBottomLeft",o[o.kBottomCenter=8]="kBottomCenter",o[o.kBottomRight=9]="kBottomRight",o[o.kBaseLeft=10]="kBaseLeft",o[o.kBaseCenter=11]="kBaseCenter",o[o.kBaseRight=12]="kBaseRight",o[o.kBaseAlign=13]="kBaseAlign",o[o.kBottomAlign=14]="kBottomAlign",o[o.kMiddleAlign=15]="kMiddleAlign",o[o.kTopAlign=16]="kTopAlign",o[o.kBaseFit=17]="kBaseFit",o[o.kBottomFit=18]="kBottomFit",o[o.kMiddleFit=19]="kMiddleFit",o[o.kTopFit=20]="kTopFit",o[o.kBaseMid=21]="kBaseMid",o[o.kBottomMid=22]="kBottomMid",o[o.kMiddleMid=23]="kMiddleMid",o[o.kTopMid=24]="kTopMid"})(Z.AttachmentPoint||(Z.AttachmentPoint={})),(o=>{o[o.kLnWt000=0]="kLnWt000",o[o.kLnWt005=5]="kLnWt005",o[o.kLnWt009=9]="kLnWt009",o[o.kLnWt013=13]="kLnWt013",o[o.kLnWt015=15]="kLnWt015",o[o.kLnWt018=18]="kLnWt018",o[o.kLnWt020=20]="kLnWt020",o[o.kLnWt025=25]="kLnWt025",o[o.kLnWt030=30]="kLnWt030",o[o.kLnWt035=35]="kLnWt035",o[o.kLnWt040=40]="kLnWt040",o[o.kLnWt050=50]="kLnWt050",o[o.kLnWt053=53]="kLnWt053",o[o.kLnWt060=60]="kLnWt060",o[o.kLnWt070=70]="kLnWt070",o[o.kLnWt080=80]="kLnWt080",o[o.kLnWt090=90]="kLnWt090",o[o.kLnWt100=100]="kLnWt100",o[o.kLnWt106=106]="kLnWt106",o[o.kLnWt120=120]="kLnWt120",o[o.kLnWt140=140]="kLnWt140",o[o.kLnWt158=158]="kLnWt158",o[o.kLnWt200=200]="kLnWt200",o[o.kLnWt211=211]="kLnWt211",o[o.kLnWtByLayer=-1]="kLnWtByLayer",o[o.kLnWtByBlock=-2]="kLnWtByBlock",o[o.kLnWtByLwDefault=-3]="kLnWtByLwDefault"})(Z.LineWeight||(Z.LineWeight={}))})(J.McDb||(J.McDb={}));class at{imp=0;constructor(o){this.imp=o,this.imp&&xl.register(this,o,Kl)}getImp(){return this.imp}initTempObject(o){this.imp=o}get ObjectName(){return this.imp.getObjectName()}get Dxf0(){return this.imp.getDxf0()}getJson(){let o=this.imp.getJson();return Be.decodeFromGb2312(o)}setJson(o){let u=Be.encodeToGb2312(o);return this.imp.setJson(u)}}class dt extends at{constructor(o){super(o)}getObjectID(){return this.imp.getObjectID()}Erase(){return this.imp.Erase()}Clone(){let o=this.imp.Clone();return J.MxCpp.App.CreateCloneObject(o)}}class $t extends dt{constructor(o){super(o)}}class Ll extends dt{constructor(o){super(o)}}class Pl extends dt{constructor(o){super(o)}}class Se extends dt{constructor(o){super(o)}moveGripPointsAt(o,u,X,h){return this.imp.moveGripPointsAt(o,u,X,h)}}class ot extends Se{constructor(o){super(o)}getStartParam(){return{val:this.imp.getStartParam(),ret:J.MxCpp.getCallResult()}}getEndParam(){return{val:this.imp.getEndParam(),ret:J.MxCpp.getCallResult()}}getDistAtParam(o){return{val:this.imp.getDistAtParam(o),ret:J.MxCpp.getCallResult()}}getParamAtDist(o){return{val:this.imp.getParamAtDist(o),ret:J.MxCpp.getCallResult()}}getDistAtPoint(o){return{val:this.imp.getDistAtPoint(o),ret:J.MxCpp.getCallResult()}}getPointAtDist(o){return{val:this.imp.getPointAtDist(o),ret:J.MxCpp.getCallResult()}}}class en extends at{constructor(o){super(o)}GetLayerTable(){return new $t(this.imp.GetLayerTable())}GetLinetypeTable(){return new Ll(this.imp.GetLinetypeTable())}GetTextStyleTable(){return new Pl(this.imp.GetTextStyleTable())}GetCurrentlyLineTypeScale(){return this.imp.GetCurrentlyLineTypeScale()}SetCurrentlyLineTypeScale(o){return this.imp.SetCurrentlyLineTypeScale(o)}GetCurrentlyLineTypeName(){let o=this.imp.GetCurrentlyLineTypeName();return Be.decodeFromGb2312(o)}SetCurrentlyLineTypeName(o){let u=Be.encodeToGb2312(o);this.imp.SetCurrentlyLineTypeName(u)}GetCurrentlyLayerName(){let o=this.imp.GetCurrentlyLayerName();return Be.decodeFromGb2312(o)}SetCurrentlyLayerName(o){let u=Be.encodeToGb2312(o);this.imp.SetCurrentlyLayerName(u)}GetCurrentlyTrueColor(){return this.imp.GetCurrentlyTrueColor()}SetCurrentlyTrueColor(o){return this.imp.SetCurrentlyTrueColor(o)}GetCurrentlyColorIndex(){return this.imp.GetCurrentlyColorIndex()}SetCurrentlyColorIndex(o){return this.imp.SetCurrentlyColorIndex(o)}GetCurrentlyTextStyleName(){let o=this.imp.GetCurrentlyTextStyleName();return Be.decodeFromGb2312(o)}SetCurrentlyTextStyle(o){let u=Be.encodeToGb2312(o);this.imp.SetCurrentlyTextStyle(u)}}class xe{imp;mxObject;static currentFileName;constructor(o){this.imp=o}initMxObject(o){this.mxObject=o}getImp(){return this.imp}getMxCppImp(){return J.MxCpp.mxcadassemblyimp}updateDisplay(o,u){this.imp.updateDisplay(o,u)}test(){this.imp.test()}openWebFile(o,u,X=!0){let h=Math.round(Math.random()*1e7);if(u){let R=this,A=(v,S)=>{R.mxObject.removeEventFuction("openFileComplete",A),h==S&&u(v)};this.mxObject.addEvent("openFileComplete",A)}return xe.currentFileName=o,this.imp.openWebFile(o,X,h)}getCurrentFileName(){return xe.currentFileName}saveFileToUrl(o){return this.imp.saveFileToUrl(o)}saveFile(o,u,X=!0,h=!0){o||(o=this.getCurrentFileName());const R=window;return R.mx_saveFile_call=A=>{if(u&&u(A),!!A){if(X){let v;/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?v=new Blob([A.buffer],{type:"application/octet-stream"}):v=new Blob([A.buffer],{type:"application/octet-binary"}),h?Oe.saveAsFileDialog({blob:v,filename:o,types:[{description:"mxweb File",accept:{"application/octet-stream":[".mxweb"]}}]}):Oe.downloadFile(v,o)}R.mx_saveFile_call=null}},this.imp.saveFile(o)}GetDatabase(){return new en(this.imp.GetDatabase())}GetSysVarString(o){return this.imp.GetSysVarString(o)}SetSysVarString(o,u){return this.imp.SetSysVarString(o,u)}GetSysVarDouble(o){return this.imp.GetSysVarDouble(o)}SetSysVarDouble(o,u){return this.imp.SetSysVarDouble(o,u)}GetSysVarLong(o){return this.imp.GetSysVarLong(o)}SetSysVarLong(o,u){return this.imp.SetSysVarLong(o,u)}get DrawColor(){return this.imp.GetDrawColor()}set DrawColor(o){this.imp.SetDrawColor(o)}get DrawLineWeight(){return this.imp.GetDrawLineWeight()}set DrawLineWeight(o){this.imp.SetDrawLineWeight(o)}get DrawLineTypeScale(){return this.imp.GetDrawLineTypeScale()}set DrawLineTypeScale(o){this.imp.SetDrawLineTypeScale(o)}get DrawLinetype(){return this.imp.GetDrawLinetype()}set DrawLinetype(o){this.imp.SetDrawLinetype(o)}get DrawTextStyle(){return this.imp.GetDrawTextStyle()}set DrawTextStyle(o){this.imp.SetDrawTextStyle(o)}get DrawLayer(){return this.imp.GetDrawLayer()}set DrawLayer(o){this.imp.SetDrawLayer(o)}AddLayer(o){this.imp.AddLayer(o)}AddTextStyle(o,u,X,h){this.imp.AddTextStyle(o,u,X,h)}AddLinetype(o,u){this.imp.AddLinetype(o,u)}AddLinetypeEx(o,u,X){this.imp.AddLinetypeEx(o,u,X)}DrawLine(o,u,X,h,R,A){return this.imp.DrawLine(o,u,X,h,R,A)}AddDimStyle(o,u,X,h,R){return this.imp.AddDimStyle(o,u,X,h,R)}get DrawDimStyle(){return this.imp.GetDrawDimStyle()}set DrawDimStyle(o){this.imp.SetDrawDimStyle(o)}get DrawPatternDefinition(){return this.imp.GetPatternDefinition()}set DrawPatternDefinition(o){this.imp.SetPatternDefinition(o)}get DrawLineWidth(){return this.imp.GetDrawLineWidth()}set DrawLineWidth(o){this.imp.SetDrawLineWidth(o)}DrawArc(o,u,X,h,R){return this.imp.DrawArc(o,u,X,h,R)}DrawArc2(o,u,X,h,R,A){return this.imp.DrawArc2(o,u,X,h,R,A)}DrawCircle(o,u,X){return this.imp.DrawCircle(o,u,X)}DrawEllipse(o,u,X,h,R){return this.imp.DrawEllipse(o,u,X,h,R)}DrawEllipseArc(o,u,X,h,R,A,v){return this.imp.DrawEllipseArc(o,u,X,h,R,A,v)}DrawPoint(o,u){return this.imp.DrawPoint(o,u)}DrawSolid(o,u,X,h,R,A,v,S){return this.imp.DrawSolid(o,u,X,h,R,A,v,S)}DrawMText(o,u,X,h,R,A,v){return this.imp.DrawMText(o,u,X,h,R,A,v)}DrawText(o,u,X,h,R,A,v){return this.imp.DrawTextDrawText(o,u,X,h,R,A,v)}DrawBlockReference(o,u,X,h,R){return this.imp.DrawBlockReference(o,u,X,h,R)}DrawDimAligned(o,u,X,h,R,A){return this.imp.DrawDimAligned(o,u,X,h,R,A)}DrawDimAngular(o,u,X,h,R,A,v,S){return this.imp.DrawDimAngular(o,u,X,h,R,A,v,S)}DrawDimDiametric(o,u,X,h,R){return this.imp.DrawDimDiametric(o,u,X,h,R)}DrawDimRotated(o,u,X,h,R,A,v){return this.imp.DrawDimRotated(o,u,X,h,R,A,v)}DrawDimOrdinate(o,u,X,h,R){return this.imp.DrawDimOrdinate(o,u,X,h,R)}DrawDimRadial(o,u,X,h,R){return this.imp.DrawDimRadial(o,u,X,h,R)}PathMoveTo(o,u){this.imp.PathMoveTo(o,u)}PathMoveToEx(o,u,X,h,R){this.imp.PathMoveToEx(o,u,X,h,R)}PathLineTo(o,u){this.imp.PathLineTo(o,u)}PathLineToEx(o,u,X,h,R){this.imp.PathLineToEx(o,u,X,h,R)}DrawPathToPolyline(){return this.imp.DrawPathToPolyline()}DrawPathToSpline(){return this.imp.DrawPathToSpline()}PathMakeClosed(){this.imp.PathMakeClosed()}DrawPathToHatch(o){return this.imp.DrawPathToHatch(o)}DrawEntity(o){return this.imp.DrawEntity(o.getImp())}ObjectIdToObject(o){return J.MxCpp.App.ObjectIdToObject(o)}CloneMdDbObject(o){let u=this.imp.CloneMdDbObject(o);return J.MxCpp.App.CreateCloneObject(u)}ObjectIdToMdObjectImp(o){return J.MxCpp.App.getImp().ObjectIdToMdObject(o)}DestroyObject(o){!o||J.MxCpp.App.getImp().DestroyObject(o)}}class Hl{imp;init(o){this.imp=o}getImp(){return this.imp}getLastCallResult(){return this.imp.getLastCallResult()}CreateMxCAD(o,u,X,h,R){let A=this.imp.CreateMxDraw(o,u,X,h,R);return new xe(A)}DestroyObject(o){this.imp.DestroyObject(o)}GetCurrentMxCAD(){return new xe(this.imp.GetCurrentMxDraw())}mcedRGB2Index(o,u,X,h=!0){return this.imp.mcedRGB2Index(o,u,X,h)}ObjectIdToObject(o){if(!o)return null;let u=this.imp.ObjectIdToObjectName(o);if(u=="McDbLine"){let X=this.imp.ObjectIdToMdDbLine(o);return new mt(X)}else if(u=="McDbText"){let X=this.imp.ObjectIdToMdDbText(o);return new ut(X)}else if(u=="McDbPolyline"){let X=this.imp.ObjectIdToMdDbPolyline(o);return new tn(X)}else if(u=="McDbCircle"){let X=this.imp.ObjectIdToMdDbCircle(o);return new yt(X)}else if(u=="McDbBlockReference"){let X=this.imp.ObjectIdToMdDbBlockReference(o);return new Ul(X)}else if(u=="McDbAlignedDimension"){let X=this.imp.ObjectIdToMdDbAlignedDimension(o);return new Ql(X)}else if(u=="McDbMText"){let X=this.imp.ObjectIdToMdDbMText(o);return new zl(X)}return console.log("Mx: ObjectIdToObject error type"),null}CreateCloneObject(o){let u=o.getObjectName();if(u=="McDbLine"){let X=new mt;return X.getImp().ConnectionTempObject(o),J.MxCpp.App.DestroyObject(o),X}else if(u=="McDbText"){let X=new ut;return X.getImp().ConnectionTempObject(o),J.MxCpp.App.DestroyObject(o),X}return console.log("Mx: Clone error type"),new dt(o)}}class Il{mxcadassemblyimp;App=new Hl;NewMdCmColor(){return new this.mxcadassemblyimp.MdCmColor}getCallResult(){return this.App.getLastCallResult()}NewMdGePoint3d(o,u){if(u&&o&&o.x&&o.y){let h=o.z||0;o=k.MxFun.getCurrentDraw().docCoord2Cad(o.x,o.y,h)}let X=new this.mxcadassemblyimp.MdGePoint3d;return o&&o.x&&o.y&&(X.x=o.x,X.y=o.y,o.z&&(X.y=o.z)),X}NewMdGePoint3d2(o,u,X){let h=new this.mxcadassemblyimp.MdGePoint3d;return h.x=o,h.y=u,X&&(h.y=X),h}}class mt extends ot{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbLine)}get startPoint(){return this.imp.startPoint()}set startPoint(o){this.imp.setStartPoint(o)}get endPoint(){return this.imp.endPoint()}set endPoint(o){this.imp.setEndPoint(o)}}class ut extends Se{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbText)}get position(){return this.imp.position()}set position(o){this.imp.setPosition(o)}get alignmentPoint(){return this.imp.position()}set alignmentPoint(o){this.imp.setAlignmentPoint(o)}get oblique(){return this.imp.oblique()}set oblique(o){this.imp.setOblique(o)}get rotation(){return this.imp.rotation()}set rotation(o){this.imp.setRotation(o)}get height(){return this.imp.height()}set height(o){this.imp.setHeight(o)}get widthFactor(){return this.imp.widthFactor()}set widthFactor(o){this.imp.setWidthFactor(o)}get textString(){return Be.decodeFromGb2312(this.imp.textString())}set textString(o){this.imp.setTextString(Be.encodeToGb2312(o))}get horizontalMode(){return this.imp.horizontalMode()}set horizontalMode(o){this.imp.setHorizontalMode(o)}get verticalMode(){return this.imp.verticalMode()}set verticalMode(o){this.imp.setVerticalMode(o)}}class zl extends Se{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbMText)}get location(){return this.imp.location()}set location(o){this.imp.setLocation(o)}get rotation(){return this.imp.rotation()}set rotation(o){this.imp.setRotation(o)}get width(){return this.imp.width()}set width(o){this.imp.setWidth(o)}get textHeight(){return this.imp.textHeight()}set textHeight(o){this.imp.setTextHeight(o)}get attachment(){return this.imp.attachment()}set attachment(o){this.imp.setAttachment(o)}get contents(){return Be.decodeFromGb2312(this.imp.contents())}set contents(o){this.imp.setContents(Be.encodeToGb2312(o))}}class yt extends ot{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbCircle)}setCenter(o,u,X){this.imp.setCenter(o,u,X)}get center(){return this.imp.center()}set center(o){this.imp.setCenter(o)}get radius(){return this.imp.radius()}set radius(o){this.imp.setRadius(o)}}class tn extends ot{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbPolyline)}get isClosed(){return this.imp.isClosed()}set isClosed(o){this.imp.setClosed(o)}get constantWidth(){return this.imp.getConstantWidth()}set constantWidth(o){this.imp.setConstantWidth(o)}addVertexAt(o,u,X,h,R){return this.imp.addVertexAt(o,u,X,h,R)}removeVertexAt(o){return this.imp.removeVertexAt(o)}numVerts(){return this.imp.numVerts()}getPointAt(o){return{val:this.imp.getPointAt(o),ret:J.MxCpp.getCallResult()}}getBulgeAt(o){return this.imp.getBulgeAt(o)}getWidthsAt(o){return{val1:this.imp.getStartWidthsAt(o),val2:this.imp.getEndWidthsAt(o),ret:J.MxCpp.getCallResult()}}setPointAt(o,u){return this.imp.setPointAt(o,u)}setBulgeAt(o,u){return this.imp.setBulgeAt(o,u)}}class Ul extends Se{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbBlockReference)}get blockTableRecordId(){return this.imp.blockTableRecord()}set blockTableRecordId(o){this.imp.setBlockTableRecordId(o)}get position(){return this.imp.position()}set position(o){this.imp.setPosition(o)}get scaleFactors(){return this.imp.scaleFactors()}set scaleFactors(o){this.imp.setScaleFactors(o)}get rotation(){return this.imp.rotation()}set rotation(o){this.imp.setRotation(o)}get blockTransform(){return this.imp.blockTransform()}set blockTransform(o){this.imp.setBlockTransform(o)}}class Ol extends Se{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbDimension)}get textPosition(){return this.imp.textPosition()}set textPosition(o){this.imp.setTextPosition(o)}isUsingDefaultTextPosition(){return this.imp.isUsingDefaultTextPosition()}useSetTextPosition(){return this.imp.useSetTextPosition()}useDefaultTextPosition(){return this.imp.useDefaultTextPosition()}get elevation(){return this.imp.elevation()}set elevation(o){this.imp.setElevation(o)}get dimensionText(){return this.imp.dimensionText()}set dimensionText(o){this.imp.setDimensionText(o)}get textRotation(){return this.imp.textRotation()}set textRotation(o){this.imp.setTextRotation(o)}get dimensionStyle(){return this.imp.dimensionStyle()}set dimensionStyle(o){this.imp.setDimensionStyle(o)}get textAttachment(){return this.imp.textAttachment()}set textAttachment(o){this.imp.setTextAttachment(o)}get horizontalRotation(){return this.imp.horizontalRotation()}set horizontalRotation(o){this.imp.setHorizontalRotation(o)}recomputeDimBlock(){this.imp.recomputeDimBlock(!0)}getDimVarInt(o){return this.imp.GetDimVarInt(o)}setDimVarInt(o,u){this.imp.SetDimVarInt(o,u)}getDimVarDouble(o){return this.imp.GetDimVarDouble(o)}setDimVarDouble(o,u){this.imp.SetDimVarDouble(o,u)}getDimVarString(o){return this.imp.GetDimVarString(o)}setDimVarString(o,u){this.imp.SetDimVarString(o,u)}getDimVarObjectId(o){return this.imp.GetDimVarObjectId(o)}setDimVarObjectId(o,u){this.imp.SetDimVarObjectId(o,u)}}class Ql extends Ol{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbAlignedDimension)}get xLine1Point(){return this.imp.xLine1Point()}set xLine1Point(o){this.imp.setXLine1Point(o)}get xLine2Point(){return this.imp.xLine2Point()}set xLine2Point(o){this.imp.setXLine2Point(o)}get dimLinePoint(){return this.imp.dimLinePoint()}set dimLinePoint(o){this.imp.setDimLinePoint(o)}get oblique(){return this.imp.oblique()}set oblique(o){this.imp.setOblique(o)}}class Mn extends at{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.McDrawResbuf)}Clear(){this.imp.Clear()}GetCount(){return this.imp.GetCount()}AtDouble(o){return{val:this.imp.AtDouble(o),ret:J.MxCpp.getCallResult()}}Atlong(o){return{val:this.imp.Atlong(o),ret:J.MxCpp.getCallResult()}}AtObjectId(o){return{val:this.imp.AtObjectId(o),ret:J.MxCpp.getCallResult()}}AtString(o){return{val:Be.decodeFromGb2312(this.imp.AtString(o)),ret:J.MxCpp.getCallResult()}}AtPoint(o){return{val:this.imp.AtPoint(o),ret:J.MxCpp.getCallResult()}}ItemDataType(){return this.imp.ItemDataType()}AddDouble(o,u=-10){return this.imp.AddDouble(o,u)}Addlong(o,u=-10){return this.imp.Addlong(o,u)}AddObjectId(o,u=-10){return this.imp.AddObjectId(o,u)}AddString(o,u=-10){return this.imp.AddString(o,u)}AddPoint(o,u=-10){return this.imp.AddPoint(o,u)}RemoveAll(){this.imp.RemoveAll()}Remove(o){this.imp.Remove(o)}}class ht{id;type;constructor(o,u){this.id=o,this.type=u}getType(){return this.type}getId(){return this.id}erase(){this.type==1?k.MxFun.getCurrentDraw().eraseMxEntity(this.id):this.type==0&&Gt.eraseEntity(this.id)}}class ql{imp;constructor(){}init(){this.imp||(this.imp=new J.MxCpp.mxcadassemblyimp.McDrawUtility)}eraseEntity(o){return this.init(),this.imp.eraseEntity(o)}highlightEntity(o,u=!0){return this.init(),this.imp.highlightEntity(o,u)}findEntAtPoint(o,u,X,h=-1,R=null){this.init();let A;return R==null?A=new J.MxCpp.mxcadassemblyimp.McDrawResbuf:A=R.getImp(),this.imp.findEntAtPoint(o,u,X,h,A)}selectEnt(o,u=null){return this.init(),new Promise(async X=>{const h=new k.MrxDbgUiPrPoint;o&&h.setMessage(o),h.setCursorType(qt.kRect);let R=await h.go();if(!R){X([]);return}k.MrxDbgUtils.findEntAtPoint(R).then(A=>{let v=[];A.forEach(T=>{v.push(new ht(T,1))});let S=this.findEntAtPoint(R.x,R.y,R.z,-1,u);S!=0&&v.push(new ht(S,0)),X(v)})})}}let Gt=new ql;const wn=()=>k.store.state.MxFun.stopRunCommand();function nn(Z,o,u,X){const h=Z-u,R=o-X;let A=0;return h==0?A=Math.PI/2:A=Math.atan(Math.abs(R/h)),h<0&&R>=0?A=Math.PI-A:h<0&&R<0?A=Math.PI+A:h>=0&&R<0&&(A=Math.PI*2-A),A}async function rn(){const Z=new k.MrxDbgUiPrPoint;let o=new k.MxDbLine,u=[];Z.setMessage(`
|
|
12
|
-
\u6307\u5B9A\u7B2C\u4E00\u70B9:`);let
|
|
13
|
-
\u6307\u5B9A\u4E0B\u4E00\u4E2A\u70B9:`),u.length>1?
|
|
14
|
-
\u6307\u5B9A\u4E00\u70B9:`);let o=await
|
|
15
|
-
\u6307\u5B9A\u4E8C\u70B9:`),await
|
|
16
|
-
\u6307\u5B9A\u63D2\u5165\u4F4D\u7F6E:`);let o=await
|
|
17
|
-
\u6D4B\u8BD5`;if(u.length<=0)return;let
|
|
18
|
-
\u6307\u5B9A\u8D77\u70B9:`);let u;
|
|
19
|
-
\u6307\u5B9A\u4E0B\u4E00\u4E2A\u70B9:`),
|
|
20
|
-
\u6307\u5B9A\u4E00\u70B9:`);let o=await
|
|
21
|
-
\u6307\u5B9A\u4E8C\u70B9:`),await
|
|
22
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u8D77\u70B9:`),
|
|
23
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u7B2C\u4E8C\u4E2A\u70B9:`),
|
|
24
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3:`),
|
|
25
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u8D77\u70B9:`),
|
|
26
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u89D2\u5EA6(A)/\u5F26\u957F(L)/\u4FEE\u6539\u534A\u5F84(R)]:`),
|
|
27
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u5939\u89D2(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u4FEE\u6539\u534A\u5F84(R)]:`),
|
|
28
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u5939\u89D2(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u4FEE\u6539\u534A\u5F84(R)]:`),
|
|
29
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u534A\u5F84${h.radius?"<"+h.radius+">":""}:`),
|
|
30
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9:`),
|
|
31
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3`),
|
|
32
|
-
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3`),
|
|
33
|
-
\u6307\u5B9A\u692D\u5706\u7684\u8F74\u7AEF\u70B9`),
|
|
34
|
-
\u6307\u5B9A\u692D\u5706\u5F27\u8F74\u7684\u53E6\u4E00\u4E2A\u7AEF\u70B9:`),
|
|
35
|
-
\u6307\u5B9A\u53E6\u4E00\u6761\u534A\u8F74\u957F\u5EA6`),
|
|
36
|
-
\u6307\u5B9A\u8D77\u59CB\u89D2\u5EA6`),
|
|
37
|
-
\u6307\u5B9A\u7EC8\u6B62\u89D2\u5EA6`),
|
|
38
|
-
\u9009\u62E9\u5220\u9664\u5BF9\u8C61`)).forEach(o=>{o.erase()})}k.store.events.on("MxDbEntityRegister",()=>{k.MxFun.addCommand("Mx_Erase",un)});function ia(
|
|
1
|
+
(function(J,k){typeof exports=="object"&&typeof module<"u"?k(exports,require("mxdraw")):typeof define=="function"&&define.amd?define(["exports","mxdraw"],k):(J=typeof globalThis<"u"?globalThis:J||self,k(J.mxcad={},J.Mx))})(this,function(J,k){"use strict";async function Jn(X,o){const Z=await(await fetch(X)).arrayBuffer();return await WebAssembly.instantiate(Z,o)}function It(X){return btoa(unescape(encodeURIComponent(X)))}function zt(X){return decodeURIComponent(escape(atob(X)))}async function Ut({blob:X,filename:o="",types:u=[{description:"mxweb File",accept:{"application/octet-stream":[".mxweb"]}}]}){try{if(window.showSaveFilePicker)if(window.navigator?.userActivation?.isActive)try{if(!window.showSaveFilePicker)return;const R=await(await window.showSaveFilePicker({suggestedName:o,types:u})).createWritable();await R.write(X),await R.close();return}catch(h){if(h?.name==="AbortError")return;console.error(h)}else console.warn("\u975E\u7528\u6237\u4EA4\u4E92 \u65E0\u6CD5\u8C03\u7528showSaveFilePicker \u5DF2\u9009\u62E9\u517C\u5BB9\u65B9\u6848");if(window.navigator?.msSaveOrOpenBlob){window.navigator.msSaveOrOpenBlob(X,o);return}const Z=document.createElement("a");Z.href=window.URL.createObjectURL(X),Z.download=o,Z.style.display="none",document.body.appendChild(Z),Z.click(),document.body.removeChild(Z),typeof window.URL.revokeObjectURL=="function"?window.URL.revokeObjectURL(Z.href):typeof window.webkitURL<"u"&&typeof window.webkitURL.revokeObjectURL=="function"?window.webkitURL.revokeObjectURL(Z.href):window.URL.revokeObjectURL(Z.href)}catch(Z){console.error(Z.name,Z.message)}}function Ot(X,o){const u=document.createElement("a");u.href=window.URL.createObjectURL(X),u.download=o,u.click()}const Oe={b64Encode:It,b64Decode:zt,saveAsFileDialog:Ut,downloadFile:Ot};async function kn(){const X=new k.MrxDbgUiPrPoint;X.setMessage(`
|
|
2
|
+
\u6307\u5B9A\u63D2\u5165\u4F4D\u7F6E:`);let o=await X.go();if(o==null)return;let u="\u6D4B\u8BD5";if(u.length<=0)return;let Z=k.MxFun.screenCoordLong2Doc(50);u=Oe.b64Encode(u);const h={postx:o.x,posty:o.y,text:u,height:Z};k.MxFun.call("Mx_Text",h)}class jl extends k.MxDbCircleShape{getGripPoints(){const{x:o,y:u,z:Z}=this.center;let h=new THREE.Vector3(o,u+this.radius,Z),R=new THREE.Vector3(o,u-this.radius,Z),A=new THREE.Vector3(o-this.radius,u,Z),v=new THREE.Vector3(o+this.radius,u,Z);return[this.center,h,R,A,v]}moveGripPointsAt(o,u){const[Z,h,R,A,v]=this.getGripPoints();return o===0&&(this.center=Z.add(u)),o===1&&(this.radius=h.add(u).distanceTo(this.center)),o===2&&(this.radius=R.add(u).distanceTo(this.center)),o===3&&(this.radius=A.add(u).distanceTo(this.center)),o===4&&(this.radius=v.add(u).distanceTo(this.center)),!0}}const Nn=X=>{const[o,u,Z]=X,{x:h,y:R,z:A}=o,{x:v,y:S,z:T}=u,{x:L,y:z,z:te}=Z,j=R*T-S*A-R*te+z*A+S*te-z*T,Q=-(h*T-v*A-h*te+L*A+v*te-L*T),de=h*S-v*R-h*z+L*R+v*z-L*S,ne=-(h*S*te-h*z*T-v*R*te+v*z*A+L*R*T-L*S*A),$=2*(v-h),se=2*(S-R),ee=2*(T-A),Fe=h*h+R*R+A*A-v*v-S*S-T*T,Ze=2*(L-h),fe=2*(z-R),pe=2*(te-A),Xe=h*h+R*R+A*A-L*L-z*z-te*te,Qe=-(Q*ee*Xe-Q*pe*Fe-se*de*Xe+se*pe*ne+fe*de*Fe-fe*ee*ne)/(j*se*pe-j*fe*ee-$*Q*pe+$*fe*de+Ze*Q*ee-Ze*se*de),ue=(j*ee*Xe-j*pe*Fe-$*de*Xe+$*pe*ne+Ze*de*Fe-Ze*ee*ne)/(j*se*pe-j*fe*ee-$*Q*pe+$*fe*de+Ze*Q*ee-Ze*se*de),ie=-(j*se*Xe-j*fe*Fe-$*Q*Xe+$*fe*ne+Ze*Q*Fe-Ze*se*ne)/(j*se*pe-j*fe*ee-$*Q*pe+$*fe*de+Ze*Q*ee-Ze*se*de);return new THREE.Vector3(Qe,ue,ie)};function Qt(){const X=new k.MrxDbgUiPrPoint;let o=new jl;k.MxPaintBrush.use(o),o.closed=!1;let u=0,Z="default",h=!0;const R=()=>{X.setUserDraw((j,Q)=>{o.radius=h?o.center.distanceTo(j):o.center.distanceTo(j)/2,Q.drawCustomEntity(o),Q.drawLine(o.center,j)})},A=j=>{if(Z==="default"){if(j===k.MrxDbgUiPrBaseReturn.kOk){if(u===0)X.setMessage(`
|
|
3
|
+
\u6307\u5B9A\u5706\u7684\u534A\u5F84:`),X.setKeyWords("[\u76F4\u5F84(D)]"),o.center=X.value(),R();else if(u===1)return k.MxFun.getCurrentDraw().addMxEntity(o),!0;u++}j===k.MrxDbgUiPrBaseReturn.kKeyWord&&X.isKeyWordPicked("D")&&(h=!1,R(),X.setMessage(`
|
|
4
|
+
\u6307\u5B9A\u5706\u7684\u76F4\u5F84:`),X.setKeyWords(""))}};let v=[];const S=j=>{if(Z==="3P"&&(X.setMessage(`
|
|
5
|
+
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E00\u4E2A\u70B9:`),j===k.MrxDbgUiPrBaseReturn.kOk)){if(u===0&&(v.push(X.value()),X.setUserDraw((Q,de)=>{de.drawLine(v[0],Q)}),X.setMessage(`
|
|
6
|
+
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E8C\u4E2A\u70B9:`)),u===1&&(v.push(X.value()),X.setUserDraw((Q,de)=>{const[ne,$]=v,se=Q;o.center=Nn([ne,$,se]),o.radius=o.center.distanceTo(ne),de.drawCustomEntity(o)}),X.setMessage(`
|
|
7
|
+
\u6307\u5B9A\u5706\u4E0A\u7684\u7B2C\u4E09\u4E2A\u70B9:`)),u===2)return v.push(X.value()),o.center=Nn(v),o.radius=o.center.distanceTo(v[0]),k.MxFun.getCurrentDraw().addMxEntity(o),!0;u++}};let T;const L=(j,Q)=>{new THREE.Line3(j,Q).getCenter(o.center),o.radius=Q.distanceTo(j)/2},z=j=>{if(Z==="2P"&&(X.setMessage(`
|
|
8
|
+
\u6307\u5B9A\u5706\u76F4\u5F84\u7684\u7B2C\u4E00\u4E2A\u7AEF\u70B9:`),j===k.MrxDbgUiPrBaseReturn.kOk)){if(u===0&&(T=X.value(),X.setUserDraw((Q,de)=>{L(T,Q),de.drawCustomEntity(o),de.drawLine(T,Q)}),X.setMessage(`
|
|
9
|
+
\u6307\u5B9A\u5706\u76F4\u5F84\u7684\u7B2C\u4E8C\u4E2A\u7AEF\u70B9:`)),u===1)return L(T,X.value()),k.MxFun.getCurrentDraw().addMxEntity(o),!0;u++}},te=j=>{if(Z==="T"){if(X.setMessage(`
|
|
10
|
+
\u6307\u5B9A\u5BF9\u8C61\u4E0E\u5706\u7684\u7B2C\u4E00\u4E2A\u5207\u70B9:`),j===k.MrxDbgUiPrBaseReturn.kOk){if(u===0){const Q=X.value();console.log(Q),k.MxFun.getCurrentDraw()}u++}return!0}};X.setMessage(`
|
|
11
|
+
\u6307\u5B9A\u5706\u7684\u5706\u5FC3\u6216[\u4E09\u70B9(3P)/\u4E24\u70B9(2P)/\u5207\u70B9\u3001\u5207\u70B9\u3001\u534A\u5F84(T)]:`),X.setKeyWords("3P 2P T"),X.goWhile(j=>{if(j===k.MrxDbgUiPrBaseReturn.kKeyWord&&(X.isKeyWordPicked("3P")?Z="3P":X.isKeyWordPicked("2P")?Z="2P":X.isKeyWordPicked("T")&&(Z="T")),A(j))return{exit:!0};if(S(j))return{exit:!0};if(z(j))return{exit:!0};if(te(j))return{exit:!0}},j=>{j===k.MrxDbgUiPrBaseReturn.kCancel&&k.MxFun.getCurrentDraw().addMxEntity(o)})}k.store.events.on("MxDbEntityRegister",()=>{k.MxFun.addCommand("Mx_Circle",Qt)});var qt;(function(X){X[X.kNormal=0]="kNormal",X[X.kRect=1]="kRect",X[X.kCross=2]="kCross"})(qt||(qt={}));class Sl{z="D2BBB6A18140C6DF814181428143CDF2D5C9C8FDC9CFCFC2D8A2B2BBD3EB8144D8A4B3F38145D7A8C7D2D8A7CAC08146C7F0B1FBD2B5B4D4B6ABCBBFD8A9814781488149B6AA814AC1BDD1CF814BC9A5D8AD814CB8F6D1BEE3DCD6D0814D814EB7E1814FB4AE8150C1D98151D8BC8152CDE8B5A4CEAAD6F78153C0F6BED9D8AF815481558156C4CB8157BEC38158D8B1C3B4D2E58159D6AECEDAD5A7BAF5B7A6C0D6815AC6B9C5D2C7C7815BB9D4815CB3CBD2D2815D815ED8BFBEC5C6F2D2B2CFB0CFE7815F816081618162CAE981638164D8C081658166816781688169816AC2F2C2D2816BC8E9816C816D816E816F817081718172817381748175C7AC8176817781788179817A817B817CC1CB817DD3E8D5F9817ECAC2B6FED8A1D3DABFF78180D4C6BBA5D8C1CEE5BEAE81818182D8A88183D1C7D0A9818481858186D8BDD9EFCDF6BFBA8187BDBBBAA5D2E0B2FABAE0C4B68188CFEDBEA9CDA4C1C18189818A818BC7D7D9F1818CD9F4818D818E818F8190C8CBD8E9819181928193D2DACAB2C8CAD8ECD8EAD8C6BDF6C6CDB3F08194D8EBBDF1BDE98195C8D4B4D381968197C2D88198B2D6D7D0CACBCBFBD5CCB8B6CFC98199819A819BD9DAD8F0C7AA819CD8EE819DB4FAC1EED2D4819E819FD8ED81A0D2C7D8EFC3C781A181A281A3D1F681A4D6D9D8F281A5D8F5BCFEBCDB81A681A781A8C8CE81A9B7DD81AAB7C281ABC6F381AC81AD81AE81AF81B081B181B2D8F8D2C181B381B4CEE9BCBFB7FCB7A5D0DD81B581B681B781B881B9D6DAD3C5BBEFBBE1D8F181BA81BBC9A1CEB0B4AB81BCD8F381BDC9CBD8F6C2D7D8F781BE81BFCEB1D8F981C081C181C2B2AEB9C081C3D9A381C4B0E981C5C1E681C6C9EC81C7CBC581C8CBC6D9A481C981CA81CB81CC81CDB5E881CE81CFB5AB81D081D181D281D381D481D5CEBBB5CDD7A1D7F4D3D381D6CCE581D7BACE81D8D9A2D9DCD3E0D8FDB7F0D7F7D8FED8FAD9A1C4E381D981DAD3B6D8F4D9DD81DBD8FB81DCC5E581DD81DEC0D081DF81E0D1F0B0DB81E181E2BCD1D9A681E3D9A581E481E581E681E7D9ACD9AE81E8D9ABCAB981E981EA81EBD9A9D6B681EC81ED81EEB3DED9A881EFC0FD81F0CACC81F1D9AA81F2D9A781F381F4D9B081F581F6B6B181F781F881F9B9A981FAD2C081FB81FCCFC081FD81FEC2C28240BDC4D5ECB2E0C7C8BFEBD9AD8241D9AF8242CEEABAEE82438244824582468247C7D682488249824A824B824C824D824E824F8250B1E3825182528253B4D9B6EDD9B48254825582568257BFA182588259825AD9DEC7CEC0FED9B8825B825C825D825E825FCBD7B7FD8260D9B58261D9B7B1A3D3E1D9B98262D0C58263D9B682648265D9B18266D9B2C1A9D9B382678268BCF3D0DEB8A98269BEE3826AD9BD826B826C826D826ED9BA826FB0B3827082718272D9C28273827482758276827782788279827A827B827C827D827E8280D9C4B1B68281D9BF82828283B5B98284BEF3828582868287CCC8BAF2D2D08288D9C38289828ABDE8828BB3AB828C828D828ED9C5BEEB828FD9C6D9BBC4DF8290D9BED9C1D9C0829182928293829482958296829782988299829A829BD5AE829CD6B5829DC7E3829E829F82A082A1D9C882A282A382A4BCD9D9CA82A582A682A7D9BC82A8D9CBC6AB82A982AA82AB82AC82ADD9C982AE82AF82B082B1D7F682B2CDA382B382B482B582B682B782B882B982BABDA182BB82BC82BD82BE82BF82C0D9CC82C182C282C382C482C582C682C782C882C9C5BCCDB582CA82CB82CCD9CD82CD82CED9C7B3A5BFFE82CF82D082D182D2B8B582D382D4C0FC82D582D682D782D8B0F882D982DA82DB82DC82DD82DE82DF82E082E182E282E382E482E582E682E782E882E982EA82EB82EC82EDB4F682EED9CE82EFD9CFB4A2D9D082F082F1B4DF82F282F382F482F582F6B0C182F782F882F982FA82FB82FC82FDD9D1C9B582FE8340834183428343834483458346834783488349834A834B834C834D834E834F83508351CFF1835283538354835583568357D9D283588359835AC1C5835B835C835D835E835F836083618362836383648365D9D6C9AE8366836783688369D9D5D9D4D9D7836A836B836C836DCBDB836EBDA9836F8370837183728373C6A7837483758376837783788379837A837B837C837DD9D3D9D8837E83808381D9D9838283838384838583868387C8E583888389838A838B838C838D838E838F839083918392839383948395C0DC8396839783988399839A839B839C839D839E839F83A083A183A283A383A483A583A683A783A883A983AA83AB83AC83AD83AE83AF83B083B183B2B6F9D8A3D4CA83B3D4AAD0D6B3E4D5D783B4CFC8B9E283B5BFCB83B6C3E283B783B883B9B6D283BA83BBCDC3D9EED9F083BC83BD83BEB5B383BFB6B583C083C183C283C383C4BEA483C583C6C8EB83C783C8C8AB83C983CAB0CBB9ABC1F9D9E283CBC0BCB9B283CCB9D8D0CBB1F8C6E4BEDFB5E4D7C883CDD1F8BCE6CADE83CE83CFBCBDD9E6D8E783D083D1C4DA83D283D3B8D4C8BD83D483D5B2E1D4D983D683D783D883D9C3B083DA83DBC3E1DAA2C8DF83DCD0B483DDBEFCC5A983DE83DF83E0B9DA83E1DAA383E2D4A9DAA483E383E483E583E683E7D9FBB6AC83E883E9B7EBB1F9D9FCB3E5BEF683EABFF6D2B1C0E483EB83EC83EDB6B3D9FED9FD83EE83EFBEBB83F083F183F2C6E083F3D7BCDAA183F4C1B983F5B5F2C1E883F683F7BCF583F8B4D583F983FA83FB83FC83FD83FE844084418442C1DD8443C4FD84448445BCB8B7B284468447B7EF84488449844A844B844C844DD9EC844EC6BE844FBFADBBCB84508451B5CA8452DBC9D0D78453CDB9B0BCB3F6BBF7DBCABAAF8454D4E4B5B6B5F3D8D6C8D084558456B7D6C7D0D8D78457BFAF84588459DBBBD8D8845A845BD0CCBBAE845C845D845EEBBEC1D0C1F5D4F2B8D5B4B4845FB3F584608461C9BE846284638464C5D0846584668467C5D9C0FB8468B1F08469D8D9B9CE846AB5BD846B846CD8DA846D846ED6C6CBA2C8AFC9B2B4CCBFCC846FB9F48470D8DBD8DCB6E7BCC1CCEA847184728473847484758476CFF78477D8DDC7B084788479B9D0BDA3847A847BCCDE847CC6CA847D847E848084818482D8E08483D8DE84848485D8DF848684878488B0FE8489BEE7848ACAA3BCF4848B848C848D848EB8B1848F8490B8EE849184928493849484958496849784988499849AD8E2849BBDCB849CD8E4D8E3849D849E849F84A084A1C5FC84A284A384A484A584A684A784A8D8E584A984AAD8E684AB84AC84AD84AE84AF84B084B1C1A684B2C8B0B0ECB9A6BCD3CEF1DBBDC1D384B384B484B584B6B6AFD6FAC5ACBDD9DBBEDBBF84B784B884B9C0F8BEA2C0CD84BA84BB84BC84BD84BE84BF84C084C184C284C3DBC0CAC684C484C584C6B2AA84C784C884C9D3C284CAC3E384CBD1AB84CC84CD84CE84CFDBC284D0C0D584D184D284D3DBC384D4BFB184D584D684D784D884D984DAC4BC84DB84DC84DD84DEC7DA84DF84E084E184E284E384E484E584E684E784E884E9DBC484EA84EB84EC84ED84EE84EF84F084F1D9E8C9D784F284F384F4B9B4CEF0D4C884F584F684F784F8B0FCB4D284F9D0D984FA84FB84FC84FDD9E984FEDECBD9EB8540854185428543D8B0BBAFB1B18544B3D7D8CE85458546D4D185478548BDB3BFEF8549CFBB854A854BD8D0854C854D854EB7CB854F85508551D8D185528553855485558556855785588559855A855BC6A5C7F8D2BD855C855DD8D2C4E4855ECAAE855FC7A78560D8A68561C9FDCEE7BBDCB0EB856285638564BBAAD0AD8565B1B0D7E4D7BF8566B5A5C2F4C4CF85678568B2A98569B2B7856AB1E5DFB2D5BCBFA8C2ACD8D5C2B1856BD8D4CED4856CDAE0856DCEC0856E856FD8B4C3AED3A1CEA38570BCB4C8B4C2D18571BEEDD0B68572DAE18573857485758576C7E485778578B3A78579B6F2CCFCC0FA857A857BC0F7857CD1B9D1E1D8C7857D857E85808581858285838584B2DE85858586C0E58587BAF185888589D8C8858AD4AD858B858CCFE1D8C9858DD8CACFC3858EB3F8BEC7858F859085918592D8CB8593859485958596859785988599DBCC859A859B859C859DC8A5859E859F85A0CFD885A1C8FEB2CE85A285A385A485A585A6D3D6B2E6BCB0D3D1CBABB7B485A785A885A9B7A285AA85ABCAE585ACC8A1CADCB1E4D0F085ADC5D185AE85AF85B0DBC5B5FE85B185B2BFDAB9C5BEE4C1ED85B3DFB6DFB5D6BBBDD0D5D9B0C8B6A3BFC9CCA8DFB3CAB7D3D285B4D8CFD2B6BAC5CBBECCBE85B5DFB7B5F0DFB485B685B785B8D3F585B9B3D4B8F785BADFBA85BBBACFBCAAB5F585BCCDACC3FBBAF3C0F4CDC2CFF2DFB8CFC585BDC2C0DFB9C2F085BE85BF85C0BEFD85C1C1DFCDCCD2F7B7CDDFC185C2DFC485C385C4B7F1B0C9B6D6B7D485C5BAACCCFDBFD4CBB1C6F485C6D6A8DFC585C7CEE2B3B385C885C9CEFCB4B585CACEC7BAF085CBCEE185CCD1BD85CD85CEDFC085CF85D0B4F485D1B3CA85D2B8E6DFBB85D385D485D585D6C4C585D7DFBCDFBDDFBEC5BBDFBFDFC2D4B1DFC385D8C7BACED885D985DA85DB85DC85DDC4D885DEDFCA85DFDFCF85E0D6DC85E185E285E385E485E585E685E785E8DFC9DFDACEB685E9BAC7DFCEDFC8C5DE85EA85EBC9EBBAF4C3FC85EC85EDBED785EEDFC685EFDFCD85F0C5D885F185F285F385F4D5A6BACD85F5BECCD3BDB8C085F6D6E485F7DFC7B9BEBFA785F885F9C1FCDFCBDFCC85FADFD085FB85FC85FD85FE8640DFDBDFE58641DFD7DFD6D7C9DFE3DFE4E5EBD2A7DFD28642BFA98643D4DB8644BFC8DFD4864586468647CFCC86488649DFDD864AD1CA864BDFDEB0A7C6B7DFD3864CBAE5864DB6DFCDDBB9FED4D5864E864FDFDFCFECB0A5DFE7DFD1D1C6DFD5DFD8DFD9DFDC8650BBA98651DFE0DFE18652DFE2DFE6DFE8D3B486538654865586568657B8E7C5B6DFEAC9DAC1A8C4C486588659BFDECFF8865A865B865CD5DCDFEE865D865E865F866086618662B2B88663BADFDFEC8664DBC18665D1E48666866786688669CBF4B4BD866AB0A6866B866C866D866E866FDFF1CCC6DFF286708671DFED867286738674867586768677DFE986788679867A867BDFEB867CDFEFDFF0BBBD867D867EDFF386808681DFF48682BBA38683CADBCEA8E0A7B3AA8684E0A6868586868687E0A186888689868A868BDFFE868CCDD9DFFC868DDFFA868EBFD0D7C4868FC9CC86908691DFF8B0A186928693869486958696DFFD869786988699869ADFFBE0A2869B869C869D869E869FE0A886A086A186A286A3B7C886A486A5C6A1C9B6C0B2DFF586A686A7C5BE86A8D8C4DFF9C4F686A986AA86AB86AC86AD86AEE0A3E0A4E0A5D0A586AF86B0E0B4CCE486B1E0B186B2BFA6E0AFCEB9E0ABC9C686B386B4C0AEE0AEBAEDBAB0E0A986B586B686B7DFF686B8E0B386B986BAE0B886BB86BC86BDB4ADE0B986BE86BFCFB2BAC886C0E0B086C186C286C386C486C586C686C7D0FA86C886C986CA86CB86CC86CD86CE86CF86D0E0AC86D1D4FB86D2DFF786D3C5E786D4E0AD86D5D3F786D6E0B6E0B786D786D886D986DA86DBE0C4D0E186DC86DD86DEE0BC86DF86E0E0C9E0CA86E186E286E3E0BEE0AAC9A4E0C186E4E0B286E586E686E786E886E9CAC8E0C386EAE0B586EBCECB86ECCBC3E0CDE0C6E0C286EDE0CB86EEE0BAE0BFE0C086EF86F0E0C586F186F2E0C7E0C886F3E0CC86F4E0BB86F586F686F786F886F9CBD4E0D586FAE0D6E0D286FB86FC86FD86FE87408741E0D0BCCE87428743E0D18744B8C2D8C587458746874787488749874A874B874CD0EA874D874EC2EF874F8750E0CFE0BD875187528753E0D4E0D387548755E0D78756875787588759E0DCE0D8875A875B875CD6F6B3B0875DD7EC875ECBBB875F8760E0DA8761CEFB876287638764BAD987658766876787688769876A876B876C876D876E876F8770E0E1E0DDD2AD87718772877387748775E0E287768777E0DBE0D9E0DF87788779E0E0877A877B877C877D877EE0DE8780E0E4878187828783C6F7D8ACD4EBE0E6CAC98784878587868787E0E587888789878A878BB8C1878C878D878E878FE0E7E0E887908791879287938794879587968797E0E9E0E387988799879A879B879C879D879EBABFCCE7879F87A087A1E0EA87A287A387A487A587A687A787A887A987AA87AB87AC87AD87AE87AF87B0CFF987B187B287B387B487B587B687B787B887B987BA87BBE0EB87BC87BD87BE87BF87C087C187C2C8C287C387C487C587C6BDC087C787C887C987CA87CB87CC87CD87CE87CF87D087D187D287D3C4D287D487D587D687D787D887D987DA87DB87DCE0EC87DD87DEE0ED87DF87E0C7F4CBC487E1E0EEBBD8D8B6D2F2E0EFCDC587E2B6DA87E387E487E587E687E787E8E0F187E9D4B087EA87EBC0A7B4D187EC87EDCEA7E0F087EE87EF87F0E0F2B9CC87F187F2B9FACDBCE0F387F387F487F5C6D4E0F487F6D4B287F7C8A6E0F6E0F587F887F987FA87FB87FC87FD87FE8840884188428843884488458846884788488849E0F7884A884BCDC1884C884D884ECAA5884F885088518852D4DADBD7DBD98853DBD8B9E7DBDCDBDDB5D888548855DBDA8856885788588859885ADBDBB3A1DBDF885B885CBBF8885DD6B7885EDBE0885F886088618862BEF988638864B7BB8865DBD0CCAEBFB2BBB5D7F8BFD38866886788688869886ABFE9886B886CBCE1CCB3DBDEB0D3CEEBB7D8D7B9C6C2886D886EC0A4886FCCB98870DBE7DBE1C6BADBE38871DBE88872C5F7887388748875DBEA88768877DBE9BFC088788879887ADBE6DBE5887B887C887D887E8880B4B9C0ACC2A2DBE2DBE48881888288838884D0CDDBED88858886888788888889C0DDDBF2888A888B888C888D888E888F8890B6E28891889288938894DBF3DBD2B9B8D4ABDBEC8895BFD1DBF08896DBD18897B5E68898DBEBBFE58899889A889BDBEE889CDBF1889D889E889FDBF988A088A188A288A388A488A588A688A788A8B9A1B0A388A988AA88AB88AC88AD88AE88AFC2F188B088B1B3C7DBEF88B288B3DBF888B4C6D2DBF488B588B6DBF5DBF7DBF688B788B8DBFE88B9D3F2B2BA88BA88BB88BCDBFD88BD88BE88BF88C088C188C288C388C4DCA488C5DBFB88C688C788C888C9DBFA88CA88CB88CCDBFCC5E0BBF988CD88CEDCA388CF88D0DCA588D1CCC388D288D388D4B6D1DDC088D588D688D7DCA188D8DCA288D988DA88DBC7B588DC88DD88DEB6E988DF88E088E1DCA788E288E388E488E5DCA688E6DCA9B1A488E788E8B5CC88E988EA88EB88EC88EDBFB088EE88EF88F088F188F2D1DF88F388F488F588F6B6C288F788F888F988FA88FB88FC88FD88FE894089418942894389448945DCA88946894789488949894A894B894CCBFAEBF3894D894E894FCBDC89508951CBFE895289538954CCC189558956895789588959C8FB895A895B895C895D895E895FDCAA89608961896289638964CCEEDCAB89658966896789688969896A896B896C896D896E896F897089718972897389748975DBD38976DCAFDCAC8977BEB38978CAFB8979897A897BDCAD897C897D897E89808981898289838984C9CAC4B989858986898789888989C7BDDCAE898A898B898CD4F6D0E6898D898E898F89908991899289938994C4ABB6D589958996899789988999899A899B899C899D899E899F89A089A189A289A389A489A589A6DBD489A789A889A989AAB1DA89AB89AC89ADDBD589AE89AF89B089B189B289B389B489B589B689B789B8DBD689B989BA89BBBABE89BC89BD89BE89BF89C089C189C289C389C489C589C689C789C889C9C8C089CA89CB89CC89CD89CE89CFCABFC8C989D0D7B389D1C9F989D289D3BFC789D489D5BAF889D689D7D2BC89D889D989DA89DB89DC89DD89DE89DFE2BA89E0B4A689E189E2B1B889E389E489E589E689E7B8B489E8CFC489E989EA89EB89ECD9E7CFA6CDE289ED89EED9EDB6E089EFD2B989F089F1B9BB89F289F389F489F5E2B9E2B789F6B4F389F7CCECCCABB7F289F8D8B2D1EBBABB89F9CAA789FA89FBCDB789FC89FDD2C4BFE4BCD0B6E189FEDEC58A408A418A428A43DEC6DBBC8A44D1D98A458A46C6E6C4CEB7EE8A47B7DC8A488A49BFFCD7E08A4AC6F58A4B8A4CB1BCDEC8BDB1CCD7DECA8A4DDEC98A4E8A4F8A508A518A52B5EC8A53C9DD8A548A55B0C28A568A578A588A598A5A8A5B8A5C8A5D8A5E8A5F8A608A618A62C5AEC5AB8A63C4CC8A64BCE9CBFD8A658A668A67BAC38A688A698A6AE5F9C8E7E5FACDFD8A6BD7B1B8BEC2E88A6CC8D18A6D8A6EE5FB8A6F8A708A718A72B6CABCCB8A738A74D1FDE6A18A75C3EE8A768A778A788A79E6A48A7A8A7B8A7C8A7DE5FEE6A5CDD78A7E8A80B7C1E5FCE5FDE6A38A818A82C4DDE6A88A838A84E6A78A858A868A878A888A898A8AC3C38A8BC6DE8A8C8A8DE6AA8A8E8A8F8A908A918A928A938A94C4B78A958A968A97E6A2CABC8A988A998A9A8A9BBDE3B9C3E6A6D0D5CEAF8A9C8A9DE6A9E6B08A9ED2A68A9FBDAAE6AD8AA08AA18AA28AA38AA4E6AF8AA5C0D18AA68AA7D2CC8AA88AA98AAABCA78AAB8AAC8AAD8AAE8AAF8AB08AB18AB28AB38AB48AB58AB6E6B18AB7D2F68AB88AB98ABAD7CB8ABBCDFE8ABCCDDEC2A6E6ABE6ACBDBFE6AEE6B38ABD8ABEE6B28ABF8AC08AC18AC2E6B68AC3E6B88AC48AC58AC68AC7C4EF8AC88AC98ACAC4C88ACB8ACCBEEAC9EF8ACD8ACEE6B78ACFB6F08AD08AD18AD2C3E48AD38AD48AD58AD68AD78AD88AD9D3E9E6B48ADAE6B58ADBC8A28ADC8ADD8ADE8ADF8AE0E6BD8AE18AE28AE3E6B98AE48AE58AE68AE78AE8C6C58AE98AEACDF1E6BB8AEB8AEC8AED8AEE8AEF8AF08AF18AF28AF38AF4E6BC8AF58AF68AF78AF8BBE98AF98AFA8AFB8AFC8AFD8AFE8B40E6BE8B418B428B438B44E6BA8B458B46C0B78B478B488B498B4A8B4B8B4C8B4D8B4E8B4FD3A4E6BFC9F4E6C38B508B51E6C48B528B538B548B55D0F68B568B578B588B598B5A8B5B8B5C8B5D8B5E8B5F8B608B618B628B638B648B658B668B67C3BD8B688B698B6A8B6B8B6C8B6D8B6EC3C4E6C28B6F8B708B718B728B738B748B758B768B778B788B798B7A8B7B8B7CE6C18B7D8B7E8B808B818B828B838B84E6C7CFB18B85EBF48B868B87E6CA8B888B898B8A8B8B8B8CE6C58B8D8B8EBCDEC9A98B8F8B908B918B928B938B94BCB58B958B96CFD38B978B988B998B9A8B9BE6C88B9CE6C98B9DE6CE8B9EE6D08B9F8BA08BA1E6D18BA28BA38BA4E6CBB5D58BA5E6CC8BA68BA7E6CF8BA88BA9C4DB8BAAE6C68BAB8BAC8BAD8BAE8BAFE6CD8BB08BB18BB28BB38BB48BB58BB68BB78BB88BB98BBA8BBB8BBC8BBD8BBE8BBF8BC08BC18BC28BC38BC48BC58BC6E6D28BC78BC88BC98BCA8BCB8BCC8BCD8BCE8BCF8BD08BD18BD2E6D4E6D38BD38BD48BD58BD68BD78BD88BD98BDA8BDB8BDC8BDD8BDE8BDF8BE08BE18BE28BE38BE48BE58BE68BE78BE88BE98BEA8BEB8BECE6D58BEDD9F88BEE8BEFE6D68BF08BF18BF28BF38BF48BF58BF68BF7E6D78BF88BF98BFA8BFB8BFC8BFD8BFE8C408C418C428C438C448C458C468C47D7D3E6DD8C48E6DEBFD7D4D08C49D7D6B4E6CBEFE6DAD8C3D7CED0A28C4AC3CF8C4B8C4CE6DFBCBEB9C2E6DBD1A78C4D8C4EBAA2C2CF8C4FD8AB8C508C518C52CAEBE5EE8C53E6DC8C54B7F58C558C568C578C58C8E68C598C5AC4F58C5B8C5CE5B2C4FE8C5DCBFCE5B3D5AC8C5ED3EECAD8B0B28C5FCBCECDEA8C608C61BAEA8C628C638C64E5B58C65E5B48C66D7DAB9D9D6E6B6A8CDF0D2CBB1A6CAB58C67B3E8C9F3BFCDD0FBCAD2E5B6BBC28C688C698C6ACFDCB9AC8C6B8C6C8C6D8C6ED4D78C6F8C70BAA6D1E7CFFCBCD28C71E5B7C8DD8C728C738C74BFEDB1F6CBDE8C758C76BCC58C77BCC4D2FAC3DCBFDC8C788C798C7A8C7BB8BB8C7C8C7D8C7EC3C28C80BAAED4A28C818C828C838C848C858C868C878C888C89C7DEC4AFB2EC8C8AB9D18C8B8C8CE5BBC1C88C8D8C8ED5AF8C8F8C908C918C928C93E5BC8C94E5BE8C958C968C978C988C998C9A8C9BB4E7B6D4CBC2D1B0B5BC8C9C8C9DCAD98C9EB7E28C9F8CA0C9E48CA1BDAB8CA28CA3CEBED7F08CA48CA58CA68CA7D0A18CA8C9D98CA98CAAB6FBE6D8BCE28CABB3BE8CACC9D08CADE6D9B3A28CAE8CAF8CB08CB1DECC8CB2D3C8DECD8CB3D2A28CB48CB58CB68CB7DECE8CB88CB98CBA8CBBBECD8CBC8CBDDECF8CBE8CBF8CC0CAACD2FCB3DFE5EAC4E1BEA1CEB2C4F2BED6C6A8B2E38CC18CC2BED38CC38CC4C7FCCCEBBDECCEDD8CC58CC6CABAC6C1E5ECD0BC8CC78CC88CC9D5B98CCA8CCB8CCCE5ED8CCD8CCE8CCF8CD0CAF48CD1CDC0C2C58CD2E5EF8CD3C2C4E5F08CD48CD58CD68CD78CD88CD98CDAE5F8CDCD8CDBC9BD8CDC8CDD8CDE8CDF8CE08CE18CE2D2D9E1A88CE38CE48CE58CE6D3EC8CE7CBEAC6F18CE88CE98CEA8CEB8CECE1AC8CED8CEE8CEFE1A7E1A98CF08CF1E1AAE1AF8CF28CF3B2ED8CF4E1ABB8DAE1ADE1AEE1B0B5BAE1B18CF58CF68CF78CF88CF9E1B3E1B88CFA8CFB8CFC8CFD8CFED1D28D40E1B6E1B5C1EB8D418D428D43E1B78D44D4C08D45E1B28D46E1BAB0B68D478D488D498D4AE1B48D4BBFF98D4CE1B98D4D8D4EE1BB8D4F8D508D518D528D538D54E1BE8D558D568D578D588D598D5AE1BC8D5B8D5C8D5D8D5E8D5F8D60D6C58D618D628D638D648D658D668D67CFBF8D688D69E1BDE1BFC2CD8D6AB6EB8D6BD3F88D6C8D6DC7CD8D6E8D6FB7E58D708D718D728D738D748D758D768D778D788D79BEFE8D7A8D7B8D7C8D7D8D7E8D80E1C0E1C18D818D82E1C7B3E78D838D848D858D868D878D88C6E98D898D8A8D8B8D8C8D8DB4DE8D8ED1C28D8F8D908D918D92E1C88D938D94E1C68D958D968D978D988D99E1C58D9AE1C3E1C28D9BB1C08D9C8D9D8D9ED5B8E1C48D9F8DA08DA18DA28DA3E1CB8DA48DA58DA68DA78DA88DA98DAA8DABE1CCE1CA8DAC8DAD8DAE8DAF8DB08DB18DB28DB3EFFA8DB48DB5E1D3E1D2C7B68DB68DB78DB88DB98DBA8DBB8DBC8DBD8DBE8DBF8DC0E1C98DC18DC2E1CE8DC3E1D08DC48DC58DC68DC78DC88DC98DCA8DCB8DCC8DCD8DCEE1D48DCFE1D1E1CD8DD08DD1E1CF8DD28DD38DD48DD5E1D58DD68DD78DD88DD98DDA8DDB8DDC8DDD8DDE8DDF8DE08DE18DE2E1D68DE38DE48DE58DE68DE78DE88DE98DEA8DEB8DEC8DED8DEE8DEF8DF08DF18DF28DF38DF48DF58DF68DF78DF8E1D78DF98DFA8DFBE1D88DFC8DFD8DFE8E408E418E428E438E448E458E468E478E488E498E4A8E4B8E4C8E4D8E4E8E4F8E508E518E528E538E548E55E1DA8E568E578E588E598E5A8E5B8E5C8E5D8E5E8E5F8E608E618E62E1DB8E638E648E658E668E678E688E69CEA18E6A8E6B8E6C8E6D8E6E8E6F8E708E718E728E738E748E758E76E7DD8E77B4A8D6DD8E788E79D1B2B3B28E7A8E7BB9A4D7F3C7C9BEDEB9AE8E7CCED78E7D8E7EB2EEDBCF8E80BCBAD2D1CBC8B0CD8E818E82CFEF8E838E848E858E868E87D9E3BDED8E888E89B1D2CAD0B2BC8E8ACBA7B7AB8E8BCAA68E8C8E8D8E8ECFA38E8F8E90E0F8D5CAE0FB8E918E92E0FAC5C1CCFB8E93C1B1E0F9D6E3B2AFD6C4B5DB8E948E958E968E978E988E998E9A8E9BB4F8D6A18E9C8E9D8E9E8E9F8EA0CFAFB0EF8EA18EA2E0FC8EA38EA48EA58EA68EA7E1A1B3A38EA88EA9E0FDE0FEC3B18EAA8EAB8EAC8EADC3DD8EAEE1A2B7F98EAF8EB08EB18EB28EB38EB4BBCF8EB58EB68EB78EB88EB98EBA8EBBE1A3C4BB8EBC8EBD8EBE8EBF8EC0E1A48EC18EC2E1A58EC38EC4E1A6B4B18EC58EC68EC78EC88EC98ECA8ECB8ECC8ECD8ECE8ECF8ED08ED18ED28ED3B8C9C6BDC4EA8ED4B2A28ED5D0D28ED6E7DBBBC3D3D7D3C48ED7B9E3E2CF8ED88ED98EDAD7AF8EDBC7ECB1D38EDC8EDDB4B2E2D18EDE8EDF8EE0D0F2C2AEE2D08EE1BFE2D3A6B5D7E2D2B5EA8EE2C3EDB8FD8EE3B8AE8EE4C5D3B7CFE2D48EE58EE68EE78EE8E2D3B6C8D7F98EE98EEA8EEB8EEC8EEDCDA58EEE8EEF8EF08EF18EF2E2D88EF3E2D6CAFCBFB5D3B9E2D58EF48EF58EF68EF7E2D78EF88EF98EFA8EFB8EFC8EFD8EFE8F408F418F42C1AEC0C88F438F448F458F468F478F48E2DBE2DAC0AA8F498F4AC1CE8F4B8F4C8F4D8F4EE2DC8F4F8F508F518F528F538F548F558F568F578F588F598F5AE2DD8F5BE2DE8F5C8F5D8F5E8F5F8F608F618F628F638F64DBC88F65D1D3CDA28F668F67BDA88F688F698F6ADEC3D8A5BFAADBCDD2ECC6FAC5AA8F6B8F6C8F6DDEC48F6EB1D7DFAE8F6F8F708F71CABD8F72DFB18F73B9AD8F74D2FD8F75B8A5BAEB8F768F77B3DA8F788F798F7AB5DCD5C58F7B8F7C8F7D8F7EC3D6CFD2BBA18F80E5F3E5F28F818F82E5F48F83CDE48F84C8F58F858F868F878F888F898F8A8F8BB5AFC7BF8F8CE5F68F8D8F8E8F8FECB08F908F918F928F938F948F958F968F978F988F998F9A8F9B8F9C8F9D8F9EE5E68F9FB9E9B5B18FA0C2BCE5E8E5E7E5E98FA18FA28FA38FA4D2CD8FA58FA68FA7E1EAD0CE8FA8CDAE8FA9D1E58FAA8FABB2CAB1EB8FACB1F2C5ED8FAD8FAED5C3D3B08FAFE1DC8FB08FB18FB2E1DD8FB3D2DB8FB4B3B9B1CB8FB58FB68FB7CDF9D5F7E1DE8FB8BEB6B4FD8FB9E1DFBADCE1E0BBB2C2C9E1E18FBA8FBB8FBCD0EC8FBDCDBD8FBE8FBFE1E28FC0B5C3C5C7E1E38FC18FC2E1E48FC38FC48FC58FC6D3F98FC78FC88FC98FCA8FCB8FCCE1E58FCDD1AD8FCE8FCFE1E6CEA28FD08FD18FD28FD38FD48FD5E1E78FD6B5C28FD78FD88FD98FDAE1E8BBD58FDB8FDC8FDD8FDE8FDFD0C4E2E0B1D8D2E48FE08FE1E2E18FE28FE3BCC9C8CC8FE4E2E3ECFEECFDDFAF8FE58FE68FE7E2E2D6BECDFCC3A68FE88FE98FEAE3C38FEB8FECD6D2E2E78FED8FEEE2E88FEF8FF0D3C78FF18FF2E2ECBFEC8FF3E2EDE2E58FF48FF5B3C08FF68FF78FF8C4EE8FF98FFAE2EE8FFB8FFCD0C38FFDBAF6E2E9B7DEBBB3CCACCBCBE2E4E2E6E2EAE2EB8FFE90409041E2F790429043E2F4D4F5E2F390449045C5AD9046D5FAC5C2B2C090479048E2EF9049E2F2C1AFCBBC904A904BB5A1E2F9904C904D904EBCB1E2F1D0D4D4B9E2F5B9D6E2F6904F90509051C7D390529053905490559056E2F0905790589059905A905BD7DCEDA1905C905DE2F8905EEDA5E2FECAD1905F906090619062906390649065C1B59066BBD090679068BFD69069BAE3906A906BCBA1906C906D906EEDA6EDA3906F9070EDA29071907290739074BBD6EDA7D0F490759076EDA4BADEB6F7E3A1B6B2CCF1B9A79077CFA2C7A190789079BFD2907A907BB6F1907CE2FAE2FBE2FDE2FCC4D5E3A2907DD3C1907E90809081E3A7C7C49082908390849085CFA490869087E3A9BAB790889089908A908BE3A8908CBBDA908DE3A3908E908F9090E3A4E3AA9091E3A69092CEF2D3C690939094BBBC90959096D4C39097C4FA90989099EDA8D0FCE3A5909AC3F5909BE3ADB1AF909CE3B2909D909E909FBCC290A090A1E3ACB5BF90A290A390A490A590A690A790A890A9C7E9E3B090AA90AB90ACBEAACDEF90AD90AE90AF90B090B1BBF390B290B390B4CCE890B590B6E3AF90B7E3B190B8CFA7E3AE90B9CEA9BBDD90BA90BB90BC90BD90BEB5EBBEE5B2D2B3CD90BFB1B9E3ABB2D1B5ACB9DFB6E890C090C1CFEBE3B790C2BBCC90C390C4C8C7D0CA90C590C690C790C890C9E3B8B3EE90CA90CB90CC90CDEDA990CED3FAD3E490CF90D090D1EDAAE3B9D2E290D290D390D490D590D6E3B590D790D890D990DAD3DE90DB90DC90DD90DEB8D0E3B390DF90E0E3B6B7DF90E1E3B4C0A290E290E390E4E3BA90E590E690E790E890E990EA90EB90EC90ED90EE90EF90F090F190F290F390F490F590F690F7D4B890F890F990FA90FB90FC90FD90FE9140B4C89141E3BB9142BBC59143C9F791449145C9E5914691479148C4BD9149914A914B914C914D914E914FEDAB9150915191529153C2FD9154915591569157BBDBBFAE91589159915A915B915C915D915ECEBF915F916091619162E3BC9163BFB6916491659166916791689169916A916B916C916D916E916F9170917191729173917491759176B1EF91779178D4F79179917A917B917C917DE3BE917E9180918191829183918491859186EDAD918791889189918A918B918C918D918E918FE3BFBAA9EDAC91909191E3BD91929193919491959196919791989199919A919BE3C0919C919D919E919F91A091A1BAB691A291A391A4B6AE91A591A691A791A891A9D0B891AAB0C3EDAE91AB91AC91AD91AE91AFEDAFC0C191B0E3C191B191B291B391B491B591B691B791B891B991BA91BB91BC91BD91BE91BF91C091C1C5B391C291C391C491C591C691C791C891C991CA91CB91CC91CD91CE91CFE3C291D091D191D291D391D491D591D691D791D8DCB291D991DA91DB91DC91DD91DEEDB091DFB8EA91E0CEECEAA7D0E7CAF9C8D6CFB7B3C9CED2BDE491E191E2E3DEBBF2EAA8D5BD91E3C6DDEAA991E491E591E6EAAA91E7EAACEAAB91E8EAAEEAAD91E991EA91EB91ECBDD891EDEAAF91EEC2BE91EF91F091F191F2B4C1B4F791F391F4BBA791F591F691F791F891F9ECE6ECE5B7BFCBF9B1E291FAECE791FB91FC91FDC9C8ECE8ECE991FECAD6DED0B2C5D4FA92409241C6CBB0C7B4F2C8D3924292439244CDD092459246BFB8924792489249924A924B924C924DBFDB924E924FC7A4D6B49250C0A9DED1C9A8D1EFC5A4B0E7B3B6C8C592519252B0E292539254B7F692559256C5FA92579258B6F39259D5D2B3D0BCBC925A925B925CB3AD925D925E925F9260BEF1B0D1926192629263926492659266D2D6CAE3D7A59267CDB6B6B6BFB9D5DB9268B8A7C5D79269926A926BDED2BFD9C2D5C7C0926CBBA4B1A8926D926EC5EA926F9270C5FBCCA79271927292739274B1A7927592769277B5D692789279927AC4A8927BDED3D1BAB3E9927CC3F2927D927EB7F79280D6F4B5A3B2F0C4B4C4E9C0ADDED49281B0E8C5C4C1E09282B9D59283BEDCCDD8B0CE9284CDCFDED6BED0D7BEDED5D5D0B0DD92859286C4E292879288C2A3BCF09289D3B5C0B9C5A1B2A6D4F1928A928BC0A8CAC3DED7D5FC928CB9B0928DC8ADCBA9928EDED9BFBD928F929092919292C6B4D7A7CAB0C4C39293B3D6B9D29294929592969297D6B8EAFCB0B492989299929A929BBFE6929C929DCCF4929E929F92A092A1CDDA92A292A392A4D6BFC2CE92A5CECECCA2D0AEC4D3B5B2DED8D5F5BCB7BBD392A692A7B0A492A8C5B2B4EC92A992AA92ABD5F192AC92ADEAFD92AE92AF92B092B192B292B3DEDACDA692B492B5CDEC92B692B792B892B9CEE6DEDC92BACDB1C0A692BB92BCD7BD92BDDEDBB0C6BAB4C9D3C4F3BEE892BE92BF92C092C1B2B692C292C392C492C592C692C792C892C9C0CCCBF092CABCF1BBBBB5B792CB92CC92CDC5F592CEDEE692CF92D092D1DEE3BEDD92D292D3DEDF92D492D592D692D7B4B7BDDD92D892D9DEE0C4ED92DA92DB92DC92DDCFC692DEB5E092DF92E092E192E2B6DECADAB5F4DEE592E3D5C692E4DEE1CCCDC6FE92E5C5C592E692E792E8D2B492E9BEF292EA92EB92EC92ED92EE92EF92F0C2D392F1CCBDB3B892F2BDD392F3BFD8CDC6D1DAB4EB92F4DEE4DEDDDEE792F5EAFE92F692F7C2B0DEE292F892F9D6C0B5A792FAB2F492FBDEE892FCDEF292FD92FE934093419342DEED9343DEF193449345C8E0934693479348D7E1DEEFC3E8CCE19349B2E5934A934B934CD2BE934D934E934F9350935193529353DEEE9354DEEBCED59355B4A79356935793589359935ABFABBEBE935B935CBDD2935D935E935F9360DEE99361D4AE9362DEDE9363DEEA9364936593669367C0BF9368DEECB2F3B8E9C2A79369936ABDC1936B936C936D936E936FDEF5DEF893709371B2ABB4A493729373B4EAC9A6937493759376937793789379DEF6CBD1937AB8E3937BDEF7DEFA937C937D937E9380DEF9938193829383CCC29384B0E1B4EE93859386938793889389938AE5BA938B938C938D938E938FD0AF93909391B2EB9392EBA19393DEF493949395C9E3DEF3B0DAD2A1B1F79396CCAF939793989399939A939B939C939DDEF0939ECBA4939F93A093A1D5AA93A293A393A493A593A6DEFB93A793A893A993AA93AB93AC93AD93AEB4DD93AFC4A693B093B193B2DEFD93B393B493B593B693B793B893B993BA93BB93BCC3FEC4A1DFA193BD93BE93BF93C093C193C293C3C1CC93C4DEFCBEEF93C5C6B293C693C793C893C993CA93CB93CC93CD93CEB3C5C8F693CF93D0CBBADEFE93D193D2DFA493D393D493D593D6D7B293D793D893D993DA93DBB3B793DC93DD93DE93DFC1C393E093E1C7CBB2A5B4E993E2D7AB93E393E493E593E6C4EC93E7DFA2DFA393E8DFA593E9BAB393EA93EB93ECDFA693EDC0DE93EE93EFC9C393F093F193F293F393F493F593F6B2D9C7E693F7DFA793F8C7DC93F993FA93FB93FCDFA8EBA293FD93FE944094419442CBD3944394449445DFAA9446DFA99447B2C194489449944A944B944C944D944E944F9450945194529453945494559456945794589459945A945B945C945D945E945F9460C5CA94619462946394649465946694679468DFAB9469946A946B946C946D946E946F9470D4DC94719472947394749475C8C19476947794789479947A947B947C947D947E948094819482DFAC94839484948594869487BEF094889489DFADD6A7948A948B948C948DEAB7EBB6CAD5948ED8FCB8C4948FB9A594909491B7C5D5FE94929493949494959496B9CA94979498D0A7F4CD9499949AB5D0949B949CC3F4949DBEC8949E949F94A0EBB7B0BD94A194A2BDCC94A3C1B294A4B1D6B3A894A594A694A7B8D2C9A294A894A9B6D894AA94AB94AC94ADEBB8BEB494AE94AF94B0CAFD94B1C7C394B2D5FB94B394B4B7F394B594B694B794B894B994BA94BB94BC94BD94BE94BF94C094C194C294C3CEC494C494C594C6D5ABB1F394C794C894C9ECB3B0DF94CAECB594CB94CC94CDB6B794CEC1CF94CFF5FAD0B194D094D1D5E594D2CED394D394D4BDEFB3E294D5B8AB94D6D5B694D7EDBD94D8B6CF94D9CBB9D0C294DA94DB94DC94DD94DE94DF94E094E1B7BD94E294E3ECB6CAA994E494E594E6C5D494E7ECB9ECB8C2C3ECB794E894E994EA94EBD0FDECBA94ECECBBD7E594ED94EEECBC94EF94F094F1ECBDC6EC94F294F394F494F594F694F794F894F9CEDE94FABCC894FB94FCC8D5B5A9BEC9D6BCD4E794FD94FED1AED0F1EAB8EAB9EABABAB59540954195429543CAB1BFF595449545CDFA9546954795489549954AEAC0954BB0BAEABE954C954DC0A5954E954F9550EABB9551B2FD9552C3F7BBE8955395549555D2D7CEF4EABF955695579558EABC9559955A955BEAC3955CD0C7D3B3955D955E955F9560B4BA9561C3C1D7F29562956395649565D5D19566CAC79567EAC595689569EAC4EAC7EAC6956A956B956C956D956ED6E7956FCFD495709571EACB9572BBCE9573957495759576957795789579BDFAC9CE957A957BEACC957C957DC9B9CFFEEACAD4CEEACDEACF957E9580CDED9581958295839584EAC99585EACE95869587CEEE9588BBDE9589B3BF958A958B958C958D958EC6D5BEB0CEFA958F95909591C7E79592BEA7EAD095939594D6C7959595969597C1C095989599959AD4DD959BEAD1959C959DCFBE959E959F95A095A1EAD295A295A395A495A5CAEE95A695A795A895A9C5AFB0B595AA95AB95AC95AD95AEEAD495AF95B095B195B295B395B495B595B695B7EAD3F4DF95B895B995BA95BB95BCC4BA95BD95BE95BF95C095C1B1A995C295C395C495C5E5DF95C695C795C895C9EAD595CA95CB95CC95CD95CE95CF95D095D195D295D395D495D595D695D795D895D995DA95DB95DC95DD95DE95DF95E095E195E295E3CAEF95E4EAD6EAD7C6D895E595E695E795E895E995EA95EB95ECEAD895ED95EEEAD995EF95F095F195F295F395F4D4BB95F5C7FAD2B7B8FC95F695F7EAC295F8B2DC95F995FAC2FC95FBD4F8CCE6D7EE95FC95FD95FE9640964196429643D4C2D3D0EBC3C5F39644B7FE96459646EBD4964796489649CBB7EBDE964AC0CA964B964C964DCDFB964EB3AF964FC6DA965096519652965396549655EBFC9656C4BE9657CEB4C4A9B1BED4FD9658CAF59659D6EC965A965BC6D3B6E4965C965D965E965FBBFA96609661D0E096629663C9B19664D4D3C8A896659666B8CB9667E8BEC9BC96689669E8BB966AC0EED0D3B2C4B4E5966BE8BC966C966DD5C8966E966F967096719672B6C59673E8BDCAF8B8DCCCF5967496759676C0B496779678D1EEE8BFE8C29679967ABABC967BB1ADBDDC967CEABDE8C3967DE8C6967EE8CB9680968196829683E8CC9684CBC9B0E59685BCAB96869687B9B996889689E8C1968ACDF7968BE8CA968C968D968E968FCEF69690969196929693D5ED9694C1D6E8C49695C3B69696B9FBD6A6E8C8969796989699CAE0D4E6969AE8C0969BE8C5E8C7969CC7B9B7E3969DE8C9969EBFDDE8D2969F96A0E8D796A1E8D5BCDCBCCFE8DB96A296A396A496A596A696A796A896A9E8DE96AAE8DAB1FA96AB96AC96AD96AE96AF96B096B196B296B396B4B0D8C4B3B8CCC6E2C8BEC8E196B596B696B7E8CFE8D4E8D696B8B9F1E8D8D7F596B9C4FB96BAE8DC96BB96BCB2E996BD96BE96BFE8D196C096C1BCED96C296C3BFC2E8CDD6F996C4C1F8B2F196C596C696C796C896C996CA96CB96CCE8DF96CDCAC1E8D996CE96CF96D096D1D5A496D2B1EAD5BBE8CEE8D0B6B0E8D396D3E8DDC0B896D4CAF796D5CBA896D696D7C6DCC0F596D896D996DA96DB96DCE8E996DD96DE96DFD0A396E096E196E296E396E496E596E6E8F2D6EA96E796E896E996EA96EB96EC96EDE8E0E8E196EE96EF96F0D1F9BACBB8F996F196F2B8F1D4D4E8EF96F3E8EEE8ECB9F0CCD2E8E6CEA6BFF296F4B0B8E8F1E8F096F5D7C096F6E8E496F7CDA9C9A396F8BBB8BDDBE8EA96F996FA96FB96FC96FD96FE9740974197429743E8E2E8E3E8E5B5B5E8E7C7C5E8EBE8EDBDB0D7AE9744E8F897459746974797489749974A974B974CE8F5974DCDB0E8F6974E974F9750975197529753975497559756C1BA9757E8E89758C3B7B0F09759975A975B975C975D975E975F9760E8F4976197629763E8F7976497659766B9A3976797689769976A976B976C976D976E976F9770C9D2977197729773C3CECEE0C0E69774977597769777CBF39778CCDDD0B59779977ACAE1977BE8F3977C977D977E9780978197829783978497859786BCEC9787E8F997889789978A978B978C978DC3DE978EC6E5978FB9F79790979197929793B0F497949795D7D897969797BCAC9798C5EF9799979A979B979C979DCCC4979E979FE9A697A097A197A297A397A497A597A697A797A897A9C9AD97AAE9A2C0E297AB97AC97ADBFC397AE97AF97B0E8FEB9D797B1E8FB97B297B397B497B5E9A497B697B797B8D2CE97B997BA97BB97BC97BDE9A397BED6B2D7B597BFE9A797C0BDB797C197C297C397C497C597C697C797C897C997CA97CB97CCE8FCE8FD97CD97CE97CFE9A197D097D197D297D397D497D597D697D7CDD697D897D9D2AC97DA97DB97DCE9B297DD97DE97DF97E0E9A997E197E297E3B4AA97E4B4BB97E597E6E9AB97E797E897E997EA97EB97EC97ED97EE97EF97F097F197F297F397F497F597F697F7D0A897F897F9E9A597FA97FBB3FE97FC97FDE9ACC0E397FEE9AA98409841E9B998429843E9B89844984598469847E9AE98489849E8FA984A984BE9A8984C984D984E984F9850BFACE9B1E9BA98519852C2A5985398549855E9AF9856B8C59857E9AD9858D3DCE9B4E9B5E9B79859985A985BE9C7985C985D985E985F98609861C0C6E9C598629863E9B098649865E9BBB0F19866986798689869986A986B986C986D986E986FE9BCD5A598709871E9BE9872E9BF987398749875E9C198769877C1F198789879C8B6987A987B987CE9BD987D987E988098819882E9C29883988498859886988798889889988AE9C3988BE9B3988CE9B6988DBBB1988E988F9890E9C0989198929893989498959896BCF7989798989899E9C4E9C6989A989B989C989D989E989F98A098A198A298A398A498A5E9CA98A698A798A898A9E9CE98AA98AB98AC98AD98AE98AF98B098B198B298B3B2DB98B4E9C898B598B698B798B898B998BA98BB98BC98BD98BEB7AE98BF98C098C198C298C398C498C598C698C798C898C998CAE9CBE9CC98CB98CC98CD98CE98CF98D0D5C198D1C4A398D298D398D498D598D698D7E9D898D8BAE198D998DA98DB98DCE9C998DDD3A398DE98DF98E0E9D498E198E298E398E498E598E698E7E9D7E9D098E898E998EA98EB98ECE9CF98ED98EEC7C198EF98F098F198F298F398F498F598F6E9D298F798F898F998FA98FB98FC98FDE9D9B3C898FEE9D399409941994299439944CFF0994599469947E9CD99489949994A994B994C994D994E994F995099519952B3F79953995499559956995799589959E9D6995A995BE9DA995C995D995ECCB4995F99609961CFAD99629963996499659966996799689969996AE9D5996BE9DCE9DB996C996D996E996F9970E9DE99719972997399749975997699779978E9D19979997A997B997C997D997E99809981E9DD9982E9DFC3CA9983998499859986998799889989998A998B998C998D998E998F9990999199929993999499959996999799989999999A999B999C999D999E999F99A099A199A299A399A499A599A699A799A899A999AA99AB99AC99AD99AE99AF99B099B199B299B399B499B599B699B799B899B999BA99BB99BC99BD99BE99BF99C099C199C299C399C499C599C699C799C899C999CA99CB99CC99CD99CE99CF99D099D199D299D399D499D599D699D799D899D999DA99DB99DC99DD99DE99DF99E099E199E299E399E499E599E699E799E899E999EA99EB99EC99ED99EE99EF99F099F199F299F399F499F5C7B7B4CEBBB6D0C0ECA399F699F7C5B799F899F999FA99FB99FC99FD99FE9A409A419A42D3FB9A439A449A459A46ECA49A47ECA5C6DB9A489A499A4ABFEE9A4B9A4C9A4D9A4EECA69A4F9A50ECA7D0AA9A51C7B89A529A53B8E89A549A559A569A579A589A599A5A9A5B9A5C9A5D9A5E9A5FECA89A609A619A629A639A649A659A669A67D6B9D5FDB4CBB2BDCEE4C6E79A689A69CDE19A6A9A6B9A6C9A6D9A6E9A6F9A709A719A729A739A749A759A769A77B4F59A78CBC0BCDF9A799A7A9A7B9A7CE9E2E9E3D1EAE9E59A7DB4F9E9E49A7ED1B3CAE2B2D09A80E9E89A819A829A839A84E9E6E9E79A859A86D6B39A879A889A89E9E9E9EA9A8A9A8B9A8C9A8D9A8EE9EB9A8F9A909A919A929A939A949A959A96E9EC9A979A989A999A9A9A9B9A9C9A9D9A9EECAFC5B9B6CE9A9FD2F39AA09AA19AA29AA39AA49AA59AA6B5EE9AA7BBD9ECB19AA89AA9D2E39AAA9AAB9AAC9AAD9AAECEE39AAFC4B89AB0C3BF9AB19AB2B6BED8B9B1C8B1CFB1D1C5FE9AB3B1D09AB4C3AB9AB59AB69AB79AB89AB9D5B19ABA9ABB9ABC9ABD9ABE9ABF9AC09AC1EBA4BAC19AC29AC39AC4CCBA9AC59AC69AC7EBA59AC8EBA79AC99ACA9ACBEBA89ACC9ACD9ACEEBA69ACF9AD09AD19AD29AD39AD49AD5EBA9EBABEBAA9AD69AD79AD89AD99ADAEBAC9ADBCACFD8B5C3F19ADCC3A5C6F8EBADC4CA9ADDEBAEEBAFEBB0B7D59ADE9ADF9AE0B7FA9AE1EBB1C7E29AE2EBB39AE3BAA4D1F5B0B1EBB2EBB49AE49AE59AE6B5AAC2C8C7E89AE7EBB59AE8CBAEE3DF9AE99AEAD3C09AEB9AEC9AED9AEED9DB9AEF9AF0CDA1D6ADC7F39AF19AF29AF3D9E0BBE39AF4BABAE3E29AF59AF69AF79AF89AF9CFAB9AFA9AFB9AFCE3E0C9C79AFDBAB99AFE9B409B41D1B4E3E1C8EAB9AFBDADB3D8CEDB9B429B43CCC09B449B459B46E3E8E3E9CDF49B479B489B499B4A9B4BCCAD9B4CBCB39B4DE3EA9B4EE3EB9B4F9B50D0DA9B519B529B53C6FBB7DA9B549B55C7DFD2CACED69B56E3E4E3EC9B57C9F2B3C19B589B59E3E79B5A9B5BC6E3E3E59B5C9B5DEDB3E3E69B5E9B5F9B609B61C9B39B62C5E69B639B649B65B9B59B66C3BB9B67E3E3C5BDC1A4C2D9B2D79B68E3EDBBA6C4AD9B69E3F0BEDA9B6A9B6BE3FBE3F5BAD39B6C9B6D9B6E9B6FB7D0D3CD9B70D6CED5D3B9C1D5B4D1D89B719B729B739B74D0B9C7F69B759B769B77C8AAB2B49B78C3DA9B799B7A9B7BE3EE9B7C9B7DE3FCE3EFB7A8E3F7E3F49B7E9B809B81B7BA9B829B83C5A29B84E3F6C5DDB2A8C6FC9B85C4E09B869B87D7A29B88C0E1E3F99B899B8AE3FAE3FDCCA9E3F39B8BD3BE9B8CB1C3EDB4E3F1E3F29B8DE3F8D0BAC6C3D4F3E3FE9B8E9B8FBDE09B909B91E4A79B929B93E4A69B949B959B96D1F3E4A39B97E4A99B989B999B9AC8F79B9B9B9C9B9D9B9ECFB49B9FE4A8E4AEC2E59BA09BA1B6B49BA29BA39BA49BA59BA69BA7BDF29BA8E4A29BA99BAABAE9E4AA9BAB9BACE4AC9BAD9BAEB6FDD6DEE4B29BAFE4AD9BB09BB19BB2E4A19BB3BBEECDDDC7A2C5C99BB49BB5C1F79BB6E4A49BB7C7B3BDACBDBDE4A59BB8D7C7B2E29BB9E4ABBCC3E4AF9BBABBEBE4B0C5A8E4B19BBB9BBC9BBD9BBED5E3BFA39BBFE4BA9BC0E4B79BC1E4BB9BC29BC3E4BD9BC49BC5C6D69BC69BC7BAC6C0CB9BC89BC99BCAB8A1E4B49BCB9BCC9BCD9BCED4A19BCF9BD0BAA3BDFE9BD19BD29BD3E4BC9BD49BD59BD69BD79BD8CDBF9BD99BDAC4F99BDB9BDCCFFBC9E69BDD9BDED3BF9BDFCFD19BE09BE1E4B39BE2E4B8E4B9CCE99BE39BE49BE59BE69BE7CCCE9BE8C0D4E4B5C1B0E4B6CED09BE9BBC1B5D39BEAC8F3BDA7D5C7C9ACB8A2E4CA9BEB9BECE4CCD1C49BED9BEED2BA9BEF9BF0BAAD9BF19BF2BAD49BF39BF49BF59BF69BF79BF8E4C3B5ED9BF99BFA9BFBD7CDE4C0CFFDE4BF9BFC9BFD9BFEC1DCCCCA9C409C419C429C43CAE79C449C459C469C47C4D79C48CCD4E4C89C499C4A9C4BE4C7E4C19C4CE4C4B5AD9C4D9C4ED3D99C4FE4C69C509C519C529C53D2F9B4E39C54BBB49C559C56C9EE9C57B4BE9C589C599C5ABBEC9C5BD1CD9C5CCCEDEDB59C5D9C5E9C5F9C609C619C629C639C64C7E59C659C669C679C68D4A89C69E4CBD7D5E4C29C6ABDA5E4C59C6B9C6CD3E69C6DE4C9C9F89C6E9C6FE4BE9C709C71D3E59C729C73C7FEB6C99C74D4FCB2B3E4D79C759C769C77CEC29C78E4CD9C79CEBC9C7AB8DB9C7B9C7CE4D69C7DBFCA9C7E9C809C81D3CE9C82C3EC9C839C849C859C869C879C889C899C8AC5C8E4D89C8B9C8C9C8D9C8E9C8F9C909C919C92CDC4E4CF9C939C949C959C96E4D4E4D59C97BAFE9C98CFE69C999C9AD5BF9C9B9C9C9C9DE4D29C9E9C9F9CA09CA19CA29CA39CA49CA59CA69CA79CA8E4D09CA99CAAE4CE9CAB9CAC9CAD9CAE9CAF9CB09CB19CB29CB39CB49CB59CB69CB79CB89CB9CDE5CAAA9CBA9CBB9CBCC0A39CBDBDA6E4D39CBE9CBFB8C89CC09CC19CC29CC39CC4E4E7D4B49CC59CC69CC79CC89CC99CCA9CCBE4DB9CCC9CCD9CCEC1EF9CCF9CD0E4E99CD19CD2D2E79CD39CD4E4DF9CD5E4E09CD69CD7CFAA9CD89CD99CDA9CDBCBDD9CDCE4DAE4D19CDDE4E59CDEC8DCE4E39CDF9CE0C4E7E4E29CE1E4E19CE29CE39CE4B3FCE4E89CE59CE69CE79CE8B5E19CE99CEA9CEBD7CC9CEC9CED9CEEE4E69CEFBBAC9CF0D7D2CCCFEBF89CF1E4E49CF29CF3B9F69CF49CF59CF6D6CDE4D9E4DCC2FAE4DE9CF7C2CBC0C4C2D09CF8B1F5CCB29CF99CFA9CFB9CFC9CFD9CFE9D409D419D429D43B5CE9D449D459D469D47E4EF9D489D499D4A9D4B9D4C9D4D9D4E9D4FC6AF9D509D519D52C6E19D539D54E4F59D559D569D579D589D59C2A99D5A9D5B9D5CC0ECD1DDE4EE9D5D9D5E9D5F9D609D619D629D639D649D659D66C4AE9D679D689D69E4ED9D6A9D6B9D6C9D6DE4F6E4F4C2FE9D6EE4DD9D6FE4F09D70CAFE9D71D5C49D729D73E4F19D749D759D769D779D789D799D7AD1FA9D7B9D7C9D7D9D7E9D809D819D82E4EBE4EC9D839D849D85E4F29D86CEAB9D879D889D899D8A9D8B9D8C9D8D9D8E9D8F9D90C5CB9D919D929D93C7B19D94C2BA9D959D969D97E4EA9D989D999D9AC1CA9D9B9D9C9D9D9D9E9D9F9DA0CCB6B3B19DA19DA29DA3E4FB9DA4E4F39DA59DA69DA7E4FA9DA8E4FD9DA9E4FC9DAA9DAB9DAC9DAD9DAE9DAF9DB0B3CE9DB19DB29DB3B3BAE4F79DB49DB5E4F9E4F8C5EC9DB69DB79DB89DB99DBA9DBB9DBC9DBD9DBE9DBF9DC09DC19DC2C0BD9DC39DC49DC59DC6D4E89DC79DC89DC99DCA9DCBE5A29DCC9DCD9DCE9DCF9DD09DD19DD29DD39DD49DD59DD6B0C49DD79DD8E5A49DD99DDAE5A39DDB9DDC9DDD9DDE9DDF9DE0BCA49DE1E5A59DE29DE39DE49DE59DE69DE7E5A19DE89DE99DEA9DEB9DEC9DED9DEEE4FEB1F49DEF9DF09DF19DF29DF39DF49DF59DF69DF79DF89DF9E5A89DFAE5A9E5A69DFB9DFC9DFD9DFE9E409E419E429E439E449E459E469E47E5A7E5AA9E489E499E4A9E4B9E4C9E4D9E4E9E4F9E509E519E529E539E549E559E569E579E589E599E5A9E5B9E5C9E5D9E5E9E5F9E609E619E629E639E649E659E669E679E68C6D99E699E6A9E6B9E6C9E6D9E6E9E6F9E70E5ABE5AD9E719E729E739E749E759E769E77E5AC9E789E799E7A9E7B9E7C9E7D9E7E9E809E819E829E839E849E859E869E879E889E89E5AF9E8A9E8B9E8CE5AE9E8D9E8E9E8F9E909E919E929E939E949E959E969E979E989E999E9A9E9B9E9C9E9D9E9EB9E09E9F9EA0E5B09EA19EA29EA39EA49EA59EA69EA79EA89EA99EAA9EAB9EAC9EAD9EAEE5B19EAF9EB09EB19EB29EB39EB49EB59EB69EB79EB89EB99EBABBF0ECE1C3F09EBBB5C6BBD29EBC9EBD9EBE9EBFC1E9D4EE9EC0BEC49EC19EC29EC3D7C69EC4D4D6B2D3ECBE9EC59EC69EC79EC8EAC19EC99ECA9ECBC2AFB4B69ECC9ECD9ECED1D79ECF9ED09ED1B3B49ED2C8B2BFBBECC09ED39ED4D6CB9ED59ED6ECBFECC19ED79ED89ED99EDA9EDB9EDC9EDD9EDE9EDF9EE09EE19EE29EE3ECC5BEE6CCBFC5DABEBC9EE4ECC69EE5B1FE9EE69EE79EE8ECC4D5A8B5E39EE9ECC2C1B6B3E39EEA9EEBECC3CBB8C0C3CCFE9EEC9EED9EEE9EEFC1D29EF0ECC89EF19EF29EF39EF49EF59EF69EF79EF89EF99EFA9EFB9EFC9EFDBAE6C0D39EFED6F29F409F419F42D1CC9F439F449F459F46BFBE9F47B7B3C9D5ECC7BBE29F48CCCCBDFDC8C89F49CFA99F4A9F4B9F4C9F4D9F4E9F4F9F50CDE99F51C5EB9F529F539F54B7E99F559F569F579F589F599F5A9F5B9F5C9F5D9F5E9F5FD1C9BAB89F609F619F629F639F64ECC99F659F66ECCA9F67BBC0ECCB9F68ECE2B1BAB7D99F699F6A9F6B9F6C9F6D9F6E9F6F9F709F719F729F73BDB99F749F759F769F779F789F799F7A9F7BECCCD1E6ECCD9F7C9F7D9F7E9F80C8BB9F819F829F839F849F859F869F879F889F899F8A9F8B9F8C9F8D9F8EECD19F8F9F909F919F92ECD39F93BBCD9F94BCE59F959F969F979F989F999F9A9F9B9F9C9F9D9F9E9F9F9FA09FA1ECCF9FA2C9B79FA39FA49FA59FA69FA7C3BA9FA8ECE3D5D5ECD09FA99FAA9FAB9FAC9FADD6F39FAE9FAF9FB0ECD2ECCE9FB19FB29FB39FB4ECD49FB5ECD59FB69FB7C9BF9FB89FB99FBA9FBB9FBC9FBDCFA89FBE9FBF9FC09FC19FC2D0DC9FC39FC49FC59FC6D1AC9FC79FC89FC99FCAC8DB9FCB9FCC9FCDECD6CEF59FCE9FCF9FD09FD19FD2CAECECDA9FD39FD49FD59FD69FD79FD89FD9ECD99FDA9FDB9FDCB0BE9FDD9FDE9FDF9FE09FE19FE2ECD79FE3ECD89FE49FE59FE6ECE49FE79FE89FE99FEA9FEB9FEC9FED9FEE9FEFC8BC9FF09FF19FF29FF39FF49FF59FF69FF79FF89FF9C1C79FFA9FFB9FFC9FFD9FFEECDCD1E0A040A041A042A043A044A045A046A047A048A049ECDBA04AA04BA04CA04DD4EFA04EECDDA04FA050A051A052A053A054DBC6A055A056A057A058A059A05AA05BA05CA05DA05EECDEA05FA060A061A062A063A064A065A066A067A068A069A06AB1ACA06BA06CA06DA06EA06FA070A071A072A073A074A075A076A077A078A079A07AA07BA07CA07DA07EA080A081ECDFA082A083A084A085A086A087A088A089A08AA08BECE0A08CD7A6A08DC5C0A08EA08FA090EBBCB0AEA091A092A093BEF4B8B8D2AFB0D6B5F9A094D8B3A095CBACA096E3DDA097A098A099A09AA09BA09CA09DC6ACB0E6A09EA09FA0A0C5C6EBB9A0A1A0A2A0A3A0A4EBBAA0A5A0A6A0A7EBBBA0A8A0A9D1C0A0AAC5A3A0ABEAF2A0ACC4B2A0ADC4B5C0CEA0AEA0AFA0B0EAF3C4C1A0B1CEEFA0B2A0B3A0B4A0B5EAF0EAF4A0B6A0B7C9FCA0B8A0B9C7A3A0BAA0BBA0BCCCD8CEFEA0BDA0BEA0BFEAF5EAF6CFACC0E7A0C0A0C1EAF7A0C2A0C3A0C4A0C5A0C6B6BFEAF8A0C7EAF9A0C8EAFAA0C9A0CAEAFBA0CBA0CCA0CDA0CEA0CFA0D0A0D1A0D2A0D3A0D4A0D5A0D6EAF1A0D7A0D8A0D9A0DAA0DBA0DCA0DDA0DEA0DFA0E0A0E1A0E2C8AEE1EBA0E3B7B8E1ECA0E4A0E5A0E6E1EDA0E7D7B4E1EEE1EFD3CCA0E8A0E9A0EAA0EBA0ECA0EDA0EEE1F1BFF1E1F0B5D2A0EFA0F0A0F1B1B7A0F2A0F3A0F4A0F5E1F3E1F2A0F6BAFCA0F7E1F4A0F8A0F9A0FAA0FBB9B7A0FCBED1A0FDA0FEAA40AA41C4FCAA42BADDBDC6AA43AA44AA45AA46AA47AA48E1F5E1F7AA49AA4AB6C0CFC1CAA8E1F6D5F8D3FCE1F8E1FCE1F9AA4BAA4CE1FAC0EAAA4DE1FEE2A1C0C7AA4EAA4FAA50AA51E1FBAA52E1FDAA53AA54AA55AA56AA57AA58E2A5AA59AA5AAA5BC1D4AA5CAA5DAA5EAA5FE2A3AA60E2A8B2FEE2A2AA61AA62AA63C3CDB2C2E2A7E2A6AA64AA65E2A4E2A9AA66AA67E2ABAA68AA69AA6AD0C9D6EDC3A8E2ACAA6BCFD7AA6CAA6DE2AEAA6EAA6FBAEFAA70AA71E9E0E2ADE2AAAA72AA73AA74AA75BBABD4B3AA76AA77AA78AA79AA7AAA7BAA7CAA7DAA7EAA80AA81AA82AA83E2B0AA84AA85E2AFAA86E9E1AA87AA88AA89AA8AE2B1AA8BAA8CAA8DAA8EAA8FAA90AA91AA92E2B2AA93AA94AA95AA96AA97AA98AA99AA9AAA9BAA9CAA9DE2B3CCA1AA9EE2B4AA9FAAA0AB40AB41AB42AB43AB44AB45AB46AB47AB48AB49AB4AAB4BE2B5AB4CAB4DAB4EAB4FAB50D0FEAB51AB52C2CAAB53D3F1AB54CDF5AB55AB56E7E0AB57AB58E7E1AB59AB5AAB5BAB5CBEC1AB5DAB5EAB5FAB60C2EAAB61AB62AB63E7E4AB64AB65E7E3AB66AB67AB68AB69AB6AAB6BCDE6AB6CC3B5AB6DAB6EE7E2BBB7CFD6AB6FC1E1E7E9AB70AB71AB72E7E8AB73AB74E7F4B2A3AB75AB76AB77AB78E7EAAB79E7E6AB7AAB7BAB7CAB7DAB7EE7ECE7EBC9BAAB80AB81D5E4AB82E7E5B7A9E7E7AB83AB84AB85AB86AB87AB88AB89E7EEAB8AAB8BAB8CAB8DE7F3AB8ED6E9AB8FAB90AB91AB92E7EDAB93E7F2AB94E7F1AB95AB96AB97B0E0AB98AB99AB9AAB9BE7F5AB9CAB9DAB9EAB9FABA0AC40AC41AC42AC43AC44AC45AC46AC47AC48AC49AC4AC7F2AC4BC0C5C0EDAC4CAC4DC1F0E7F0AC4EAC4FAC50AC51E7F6CBF6AC52AC53AC54AC55AC56AC57AC58AC59AC5AE8A2E8A1AC5BAC5CAC5DAC5EAC5FAC60D7C1AC61AC62E7FAE7F9AC63E7FBAC64E7F7AC65E7FEAC66E7FDAC67E7FCAC68AC69C1D5C7D9C5FDC5C3AC6AAC6BAC6CAC6DAC6EC7EDAC6FAC70AC71AC72E8A3AC73AC74AC75AC76AC77AC78AC79AC7AAC7BAC7CAC7DAC7EAC80AC81AC82AC83AC84AC85AC86E8A6AC87E8A5AC88E8A7BAF7E7F8E8A4AC89C8F0C9AAAC8AAC8BAC8CAC8DAC8EAC8FAC90AC91AC92AC93AC94AC95AC96E8A9AC97AC98B9E5AC99AC9AAC9BAC9CAC9DD1FEE8A8AC9EAC9FACA0AD40AD41AD42E8AAAD43E8ADE8AEAD44C1A7AD45AD46AD47E8AFAD48AD49AD4AE8B0AD4BAD4CE8ACAD4DE8B4AD4EAD4FAD50AD51AD52AD53AD54AD55AD56AD57AD58E8ABAD59E8B1AD5AAD5BAD5CAD5DAD5EAD5FAD60AD61E8B5E8B2E8B3AD62AD63AD64AD65AD66AD67AD68AD69AD6AAD6BAD6CAD6DAD6EAD6FAD70AD71E8B7AD72AD73AD74AD75AD76AD77AD78AD79AD7AAD7BAD7CAD7DAD7EAD80AD81AD82AD83AD84AD85AD86AD87AD88AD89E8B6AD8AAD8BAD8CAD8DAD8EAD8FAD90AD91AD92B9CFAD93F0ACAD94F0ADAD95C6B0B0EAC8BFAD96CDDFAD97AD98AD99AD9AAD9BAD9CAD9DCECDEAB1AD9EAD9FADA0AE40EAB2AE41C6BFB4C9AE42AE43AE44AE45AE46AE47AE48EAB3AE49AE4AAE4BAE4CD5E7AE4DAE4EAE4FAE50AE51AE52AE53AE54DDF9AE55EAB4AE56EAB5AE57EAB6AE58AE59AE5AAE5BB8CADFB0C9F5AE5CCCF0AE5DAE5EC9FAAE5FAE60AE61AE62AE63C9FBAE64AE65D3C3CBA6AE66B8A6F0AEB1C2AE67E5B8CCEFD3C9BCD7C9EAAE68B5E7AE69C4D0B5E9AE6AEEAEBBADAE6BAE6CE7DEAE6DEEAFAE6EAE6FAE70AE71B3A9AE72AE73EEB2AE74AE75EEB1BDE7AE76EEB0CEB7AE77AE78AE79AE7AC5CFAE7BAE7CAE7DAE7EC1F4DBCEEEB3D0F3AE80AE81AE82AE83AE84AE85AE86AE87C2D4C6E8AE88AE89AE8AB7ACAE8BAE8CAE8DAE8EAE8FAE90AE91EEB4AE92B3EBAE93AE94AE95BBFBEEB5AE96AE97AE98AE99AE9AE7DCAE9BAE9CAE9DEEB6AE9EAE9FBDAEAEA0AF40AF41AF42F1E2AF43AF44AF45CAE8AF46D2C9F0DAAF47F0DBAF48F0DCC1C6AF49B8EDBECEAF4AAF4BF0DEAF4CC5B1F0DDD1F1AF4DF0E0B0CCBDEAAF4EAF4FAF50AF51AF52D2DFF0DFAF53B4AFB7E8F0E6F0E5C6A3F0E1F0E2B4C3AF54AF55F0E3D5EEAF56AF57CCDBBED2BCB2AF58AF59AF5AF0E8F0E7F0E4B2A1AF5BD6A2D3B8BEB7C8ACAF5CAF5DF0EAAF5EAF5FAF60AF61D1F7AF62D6CCBADBF0E9AF63B6BBAF64AF65CDB4AF66AF67C6A6AF68AF69AF6AC1A1F0EBF0EEAF6BF0EDF0F0F0ECAF6CBBBEF0EFAF6DAF6EAF6FAF70CCB5F0F2AF71AF72B3D5AF73AF74AF75AF76B1D4AF77AF78F0F3AF79AF7AF0F4F0F6B4E1AF7BF0F1AF7CF0F7AF7DAF7EAF80AF81F0FAAF82F0F8AF83AF84AF85F0F5AF86AF87AF88AF89F0FDAF8AF0F9F0FCF0FEAF8BF1A1AF8CAF8DAF8ECEC1F1A4AF8FF1A3AF90C1F6F0FBCADDAF91AF92B4F1B1F1CCB1AF93F1A6AF94AF95F1A7AF96AF97F1ACD5CEF1A9AF98AF99C8B3AF9AAF9BAF9CF1A2AF9DF1ABF1A8F1A5AF9EAF9FF1AAAFA0B040B041B042B043B044B045B046B0A9F1ADB047B048B049B04AB04BB04CF1AFB04DF1B1B04EB04FB050B051B052F1B0B053F1AEB054B055B056B057D1A2B058B059B05AB05BB05CB05DB05EF1B2B05FB060B061F1B3B062B063B064B065B066B067B068B069B9EFB06AB06BB5C7B06CB0D7B0D9B06DB06EB06FD4EDB070B5C4B071BDD4BBCAF0A7B072B073B8DEB074B075F0A8B076B077B0A8B078F0A9B079B07ACDEEB07BB07CF0AAB07DB07EB080B081B082B083B084B085B086B087F0ABB088B089B08AB08BB08CB08DB08EB08FB090C6A4B091B092D6E5F1E4B093F1E5B094B095B096B097B098B099B09AB09BB09CB09DC3F3B09EB09FD3DBB0A0B140D6D1C5E8B141D3AFB142D2E6B143B144EEC1B0BBD5B5D1CEBCE0BAD0B145BFF8B146B8C7B5C1C5CCB147B148CAA2B149B14AB14BC3CBB14CB14DB14EB14FB150EEC2B151B152B153B154B155B156B157B158C4BFB6A2B159EDECC3A4B15AD6B1B15BB15CB15DCFE0EDEFB15EB15FC5CEB160B6DCB161B162CAA1B163B164EDEDB165B166EDF0EDF1C3BCB167BFB4B168EDEEB169B16AB16BB16CB16DB16EB16FB170B171B172B173EDF4EDF2B174B175B176B177D5E6C3DFB178EDF3B179B17AB17BEDF6B17CD5A3D1A3B17DB17EB180EDF5B181C3D0B182B183B184B185B186EDF7BFF4BEECEDF8B187CCF7B188D1DBB189B18AB18BD7C5D5F6B18CEDFCB18DB18EB18FEDFBB190B191B192B193B194B195B196B197EDF9EDFAB198B199B19AB19BB19CB19DB19EB19FEDFDBEA6B1A0B240B241B242B243CBAFEEA1B6BDB244EEA2C4C0B245EDFEB246B247BDDEB2C7B248B249B24AB24BB24CB24DB24EB24FB250B251B252B253B6C3B254B255B256EEA5D8BAEEA3EEA6B257B258B259C3E9B3F2B25AB25BB25CB25DB25EB25FEEA7EEA4CFB9B260B261EEA8C2F7B262B263B264B265B266B267B268B269B26AB26BB26CB26DEEA9EEAAB26EDEABB26FB270C6B3B271C7C6B272D6F5B5C9B273CBB2B274B275B276EEABB277B278CDABB279EEACB27AB27BB27CB27DB27ED5B0B280EEADB281F6C4B282B283B284B285B286B287B288B289B28AB28BB28CB28DB28EDBC7B28FB290B291B292B293B294B295B296B297B4A3B298B299B29AC3ACF1E6B29BB29CB29DB29EB29FCAB8D2D3B2A0D6AAB340EFF2B341BED8B342BDC3EFF3B6CCB0ABB343B344B345B346CAAFB347B348EDB6B349EDB7B34AB34BB34CB34DCEF9B7AFBFF3EDB8C2EBC9B0B34EB34FB350B351B352B353EDB9B354B355C6F6BFB3B356B357B358EDBCC5F8B359D1D0B35AD7A9EDBAEDBBB35BD1E2B35CEDBFEDC0B35DEDC4B35EB35FB360EDC8B361EDC6EDCED5E8B362EDC9B363B364EDC7EDBEB365B366C5E9B367B368B369C6C6B36AB36BC9E9D4D2EDC1EDC2EDC3EDC5B36CC0F9B36DB4A1B36EB36FB370B371B9E8B372EDD0B373B374B375B376EDD1B377EDCAB378EDCFB379CEF8B37AB37BCBB6EDCCEDCDB37CB37DB37EB380B381CFF5B382B383B384B385B386B387B388B389B38AB38BB38CB38DEDD2C1F2D3B2EDCBC8B7B38EB38FB390B391B392B393B394B395BCEFB396B397B398B399C5F0B39AB39BB39CB39DB39EB39FB3A0B440B441B442EDD6B443B5EFB444B445C2B5B0ADCBE9B446B447B1AEB448EDD4B449B44AB44BCDEBB5E2B44CEDD5EDD3EDD7B44DB44EB5FAB44FEDD8B450EDD9B451EDDCB452B1CCB453B454B455B456B457B458B459B45AC5F6BCEEEDDACCBCB2EAB45BB45CB45DB45EEDDBB45FB460B461B462C4EBB463B464B4C5B465B466B467B0F5B468B469B46AEDDFC0DAB4E8B46BB46CB46DB46EC5CDB46FB470B471EDDDBFC4B472B473B474EDDEB475B476B477B478B479B47AB47BB47CB47DB47EB480B481B482B483C4A5B484B485B486EDE0B487B488B489B48AB48BEDE1B48CEDE3B48DB48EC1D7B48FB490BBC7B491B492B493B494B495B496BDB8B497B498B499EDE2B49AB49BB49CB49DB49EB49FB4A0B540B541B542B543B544B545EDE4B546B547B548B549B54AB54BB54CB54DB54EB54FEDE6B550B551B552B553B554EDE5B555B556B557B558B559B55AB55BB55CB55DB55EB55FB560B561B562B563EDE7B564B565B566B567B568CABEECEAC0F1B569C9E7B56AECEBC6EEB56BB56CB56DB56EECECB56FC6EDECEDB570B571B572B573B574B575B576B577B578ECF0B579B57AD7E6ECF3B57BB57CECF1ECEEECEFD7A3C9F1CBEEECF4B57DECF2B57EB580CFE9B581ECF6C6B1B582B583B584B585BCC0B586ECF5B587B588B589B58AB58BB58CB58DB5BBBBF6B58EECF7B58FB590B591B592B593D9F7BDFBB594B595C2BBECF8B596B597B598B599ECF9B59AB59BB59CB59DB8A3B59EB59FB5A0B640B641B642B643B644B645B646ECFAB647B648B649B64AB64BB64CB64DB64EB64FB650B651B652ECFBB653B654B655B656B657B658B659B65AB65BB65CB65DECFCB65EB65FB660B661B662D3EDD8AEC0EBB663C7DDBACCB664D0E3CBBDB665CDBAB666B667B8D1B668B669B1FCB66AC7EFB66BD6D6B66CB66DB66EBFC6C3EBB66FB670EFF5B671B672C3D8B673B674B675B676B677B678D7E2B679B67AB67BEFF7B3D3B67CC7D8D1EDB67DD6C8B67EEFF8B680EFF6B681BBFDB3C6B682B683B684B685B686B687B688BDD5B689B68AD2C6B68BBBE0B68CB68DCFA1B68EEFFCEFFBB68FB690EFF9B691B692B693B694B3CCB695C9D4CBB0B696B697B698B699B69AEFFEB69BB69CB0DEB69DB69ED6C9B69FB6A0B740EFFDB741B3EDB742B743F6D5B744B745B746B747B748B749B74AB74BB74CB74DB74EB74FB750B751B752CEC8B753B754B755F0A2B756F0A1B757B5BEBCDABBFCB758B8E5B759B75AB75BB75CB75DB75EC4C2B75FB760B761B762B763B764B765B766B767B768F0A3B769B76AB76BB76CB76DCBEBB76EB76FB770B771B772B773B774B775B776B777B778B779B77AB77BB77CB77DB77EB780B781B782B783B784B785B786F0A6B787B788B789D1A8B78ABEBFC7EEF1B6F1B7BFD5B78BB78CB78DB78EB4A9F1B8CDBBB78FC7D4D5ADB790F1B9B791F1BAB792B793B794B795C7CFB796B797B798D2A4D6CFB799B79AF1BBBDD1B4B0BEBDB79BB79CB79DB4DCCED1B79EBFDFF1BDB79FB7A0B840B841BFFAF1BCB842F1BFB843B844B845F1BEF1C0B846B847B848B849B84AF1C1B84BB84CB84DB84EB84FB850B851B852B853B854B855C1FEB856B857B858B859B85AB85BB85CB85DB85EB85FB860C1A2B861B862B863B864B865B866B867B868B869B86ACAFAB86BB86CD5BEB86DB86EB86FB870BEBABEB9D5C2B871B872BFA2B873CDAFF1B5B874B875B876B877B878B879BDDFB87AB6CBB87BB87CB87DB87EB880B881B882B883B884D6F1F3C3B885B886F3C4B887B8CDB888B889B88AF3C6F3C7B88BB0CAB88CF3C5B88DF3C9CBF1B88EB88FB890F3CBB891D0A6B892B893B1CAF3C8B894B895B896F3CFB897B5D1B898B899F3D7B89AF3D2B89BB89CB89DF3D4F3D3B7FBB89EB1BFB89FF3CEF3CAB5DAB8A0F3D0B940B941F3D1B942F3D5B943B944B945B946F3CDB947BCE3B948C1FDB949F3D6B94AB94BB94CB94DB94EB94FF3DAB950F3CCB951B5C8B952BDEEF3DCB953B954B7A4BFF0D6FECDB2B955B4F0B956B2DFB957F3D8B958F3D9C9B8B959F3DDB95AB95BF3DEB95CF3E1B95DB95EB95FB960B961B962B963B964B965B966B967F3DFB968B969F3E3F3E2B96AB96BF3DBB96CBFEAB96DB3EFB96EF3E0B96FB970C7A9B971BCF2B972B973B974B975F3EBB976B977B978B979B97AB97BB97CB9BFB97DB97EF3E4B980B981B982B2ADBBFEB983CBE3B984B985B986B987F3EDF3E9B988B989B98AB9DCF3EEB98BB98CB98DF3E5F3E6F3EAC2E1F3ECF3EFF3E8BCFDB98EB98FB990CFE4B991B992F3F0B993B994B995F3E7B996B997B998B999B99AB99BB99CB99DF3F2B99EB99FB9A0BA40D7ADC6AABA41BA42BA43BA44F3F3BA45BA46BA47BA48F3F1BA49C2A8BA4ABA4BBA4CBA4DBA4EB8DDF3F5BA4FBA50F3F4BA51BA52BA53B4DBBA54BA55BA56F3F6F3F7BA57BA58BA59F3F8BA5ABA5BBA5CC0BABA5DBA5EC0E9BA5FBA60BA61BA62BA63C5F1BA64BA65BA66BA67F3FBBA68F3FABA69BA6ABA6BBA6CBA6DBA6EBA6FBA70B4D8BA71BA72BA73F3FEF3F9BA74BA75F3FCBA76BA77BA78BA79BA7ABA7BF3FDBA7CBA7DBA7EBA80BA81BA82BA83BA84F4A1BA85BA86BA87BA88BA89BA8AF4A3BBC9BA8BBA8CF4A2BA8DBA8EBA8FBA90BA91BA92BA93BA94BA95BA96BA97BA98BA99F4A4BA9ABA9BBA9CBA9DBA9EBA9FB2BEF4A6F4A5BAA0BB40BB41BB42BB43BB44BB45BB46BB47BB48BB49BCAEBB4ABB4BBB4CBB4DBB4EBB4FBB50BB51BB52BB53BB54BB55BB56BB57BB58BB59BB5ABB5BBB5CBB5DBB5EBB5FBB60BB61BB62BB63BB64BB65BB66BB67BB68BB69BB6ABB6BBB6CBB6DBB6EC3D7D9E1BB6FBB70BB71BB72BB73BB74C0E0F4CCD7D1BB75BB76BB77BB78BB79BB7ABB7BBB7CBB7DBB7EBB80B7DBBB81BB82BB83BB84BB85BB86BB87F4CEC1A3BB88BB89C6C9BB8AB4D6D5B3BB8BBB8CBB8DF4D0F4CFF4D1CBDABB8EBB8FF4D2BB90D4C1D6E0BB91BB92BB93BB94B7E0BB95BB96BB97C1B8BB98BB99C1BBF4D3BEACBB9ABB9BBB9CBB9DBB9EB4E2BB9FBBA0F4D4F4D5BEABBC40BC41F4D6BC42BC43BC44F4DBBC45F4D7F4DABC46BAFDBC47F4D8F4D9BC48BC49BC4ABC4BBC4CBC4DBC4EB8E2CCC7F4DCBC4FB2DABC50BC51C3D3BC52BC53D4E3BFB7BC54BC55BC56BC57BC58BC59BC5AF4DDBC5BBC5CBC5DBC5EBC5FBC60C5B4BC61BC62BC63BC64BC65BC66BC67BC68F4E9BC69BC6ACFB5BC6BBC6CBC6DBC6EBC6FBC70BC71BC72BC73BC74BC75BC76BC77BC78CEC9BC79BC7ABC7BBC7CBC7DBC7EBC80BC81BC82BC83BC84BC85BC86BC87BC88BC89BC8ABC8BBC8CBC8DBC8ECBD8BC8FCBF7BC90BC91BC92BC93BDF4BC94BC95BC96D7CFBC97BC98BC99C0DBBC9ABC9BBC9CBC9DBC9EBC9FBCA0BD40BD41BD42BD43BD44BD45BD46BD47BD48BD49BD4ABD4BBD4CBD4DBD4EBD4FBD50BD51BD52BD53BD54BD55BD56BD57BD58BD59BD5ABD5BBD5CBD5DBD5EBD5FBD60BD61BD62BD63BD64BD65BD66BD67BD68BD69BD6ABD6BBD6CBD6DBD6EBD6FBD70BD71BD72BD73BD74BD75BD76D0F5BD77BD78BD79BD7ABD7BBD7CBD7DBD7EF4EABD80BD81BD82BD83BD84BD85BD86BD87BD88BD89BD8ABD8BBD8CBD8DBD8EBD8FBD90BD91BD92BD93BD94BD95BD96BD97BD98BD99BD9ABD9BBD9CBD9DBD9EBD9FBDA0BE40BE41BE42BE43BE44BE45BE46BE47BE48BE49BE4ABE4BBE4CF4EBBE4DBE4EBE4FBE50BE51BE52BE53F4ECBE54BE55BE56BE57BE58BE59BE5ABE5BBE5CBE5DBE5EBE5FBE60BE61BE62BE63BE64BE65BE66BE67BE68BE69BE6ABE6BBE6CBE6DBE6EBE6FBE70BE71BE72BE73BE74BE75BE76BE77BE78BE79BE7ABE7BBE7CBE7DBE7EBE80BE81BE82BE83BE84BE85BE86BE87BE88BE89BE8ABE8BBE8CBE8DBE8EBE8FBE90BE91BE92BE93BE94BE95BE96BE97BE98BE99BE9ABE9BBE9CBE9DBE9EBE9FBEA0BF40BF41BF42BF43BF44BF45BF46BF47BF48BF49BF4ABF4BBF4CBF4DBF4EBF4FBF50BF51BF52BF53BF54BF55BF56BF57BF58BF59BF5ABF5BBF5CBF5DBF5EBF5FBF60BF61BF62BF63BF64BF65BF66BF67BF68BF69BF6ABF6BBF6CBF6DBF6EBF6FBF70BF71BF72BF73BF74BF75BF76BF77BF78BF79BF7ABF7BBF7CBF7DBF7EBF80F7E3BF81BF82BF83BF84BF85B7B1BF86BF87BF88BF89BF8AF4EDBF8BBF8CBF8DBF8EBF8FBF90BF91BF92BF93BF94BF95BF96BF97BF98BF99BF9ABF9BBF9CBF9DBF9EBF9FBFA0C040C041C042C043C044C045C046C047C048C049C04AC04BC04CC04DC04EC04FC050C051C052C053C054C055C056C057C058C059C05AC05BC05CC05DC05EC05FC060C061C062C063D7EBC064C065C066C067C068C069C06AC06BC06CC06DC06EC06FC070C071C072C073C074C075C076C077C078C079C07AC07BF4EEC07CC07DC07EE6F9BEC0E6FABAECE6FBCFCBE6FCD4BCBCB6E6FDE6FEBCCDC8D2CEB3E7A1C080B4BFE7A2C9B4B8D9C4C9C081D7DDC2DAB7D7D6BDCEC6B7C4C082C083C5A6E7A3CFDFE7A4E7A5E7A6C1B7D7E9C9F0CFB8D6AFD6D5E7A7B0EDE7A8E7A9C9DCD2EFBEADE7AAB0F3C8DEBDE1E7ABC8C6C084E7ACBBE6B8F8D1A4E7ADC2E7BEF8BDCACDB3E7AEE7AFBEEED0E5C085CBE7CCD0BCCCE7B0BCA8D0F7E7B1C086D0F8E7B2E7B3B4C2E7B4E7B5C9FECEACC3E0E7B7B1C1B3F1C087E7B8E7B9D7DBD5C0E7BAC2CCD7BAE7BBE7BCE7BDBCEAC3E5C0C2E7BEE7BFBCA9C088E7C0E7C1E7B6B6D0E7C2C089E7C3E7C4BBBAB5DEC2C6B1E0E7C5D4B5E7C6B8BFE7C8E7C7B7ECC08AE7C9B2F8E7CAE7CBE7CCE7CDE7CEE7CFE7D0D3A7CBF5E7D1E7D2E7D3E7D4C9C9E7D5E7D6E7D7E7D8E7D9BDC9E7DAF3BEC08BB8D7C08CC8B1C08DC08EC08FC090C091C092C093F3BFC094F3C0F3C1C095C096C097C098C099C09AC09BC09CC09DC09EB9DECDF8C09FC0A0D8E8BAB1C140C2DEEEB7C141B7A3C142C143C144C145EEB9C146EEB8B0D5C147C148C149C14AC14BEEBBD5D6D7EFC14CC14DC14ED6C3C14FC150EEBDCAF0C151EEBCC152C153C154C155EEBEC156C157C158C159EEC0C15AC15BEEBFC15CC15DC15EC15FC160C161C162C163D1F2C164C7BCC165C3C0C166C167C168C169C16AB8E1C16BC16CC16DC16EC16FC1E7C170C171F4C6D0DFF4C7C172CFDBC173C174C8BAC175C176F4C8C177C178C179C17AC17BC17CC17DF4C9F4CAC17EF4CBC180C181C182C183C184D9FAB8FEC185C186E5F1D3F0C187F4E0C188CECCC189C18AC18BB3E1C18CC18DC18EC18FF1B4C190D2EEC191F4E1C192C193C194C195C196CFE8F4E2C197C198C7CCC199C19AC19BC19CC19DC19EB5D4B4E4F4E4C19FC1A0C240F4E3F4E5C241C242F4E6C243C244C245C246F4E7C247BAB2B0BFC248F4E8C249C24AC24BC24CC24DC24EC24FB7ADD2EDC250C251C252D2ABC0CFC253BFBCEBA3D5DFEAC8C254C255C256C257F1F3B6F8CBA3C258C259C4CDC25AF1E7C25BF1E8B8FBF1E9BAC4D4C5B0D2C25CC25DF1EAC25EC25FC260F1EBC261F1ECC262C263F1EDF1EEF1EFF1F1F1F0C5D5C264C265C266C267C268C269F1F2C26AB6FAC26BF1F4D2AEDEC7CBCAC26CC26DB3DCC26EB5A2C26FB9A2C270C271C4F4F1F5C272C273F1F6C274C275C276C1C4C1FBD6B0F1F7C277C278C279C27AF1F8C27BC1AAC27CC27DC27EC6B8C280BEDBC281C282C283C284C285C286C287C288C289C28AC28BC28CC28DC28EF1F9B4CFC28FC290C291C292C293C294F1FAC295C296C297C298C299C29AC29BC29CC29DC29EC29FC2A0C340EDB2EDB1C341C342CBE0D2DEC343CBC1D5D8C344C8E2C345C0DFBCA1C346C347C348C349C34AC34BEBC1C34CC34DD0A4C34ED6E2C34FB6C7B8D8EBC0B8CEC350EBBFB3A6B9C9D6ABC351B7F4B7CAC352C353C354BCE7B7BEEBC6C355EBC7B0B9BFCFC356EBC5D3FDC357EBC8C358C359EBC9C35AC35BB7CEC35CEBC2EBC4C9F6D6D7D5CDD0B2EBCFCEB8EBD0C35DB5A8C35EC35FC360C361C362B1B3EBD2CCA5C363C364C365C366C367C368C369C5D6EBD3C36AEBD1C5DFEBCECAA4EBD5B0FBC36BC36CBAFAC36DC36ED8B7F1E3C36FEBCAEBCBEBCCEBCDEBD6E6C0EBD9C370BFE8D2C8EBD7EBDCB8ECEBD8C371BDBAC372D0D8C373B0B7C374EBDDC4DCC375C376C377C378D6ACC379C37AC37BB4E0C37CC37DC2F6BCB9C37EC380EBDAEBDBD4E0C6EAC4D4EBDFC5A7D9F5C381B2B1C382EBE4C383BDC5C384C385C386EBE2C387C388C389C38AC38BC38CC38DC38EC38FC390C391C392C393EBE3C394C395B8ACC396CDD1EBE5C397C398C399EBE1C39AC1B3C39BC39CC39DC39EC39FC6A2C3A0C440C441C442C443C444C445CCF3C446EBE6C447C0B0D2B8EBE7C448C449C44AB8AFB8ADC44BEBE8C7BBCDF3C44CC44DC44EEBEAEBEBC44FC450C451C452C453EBEDC454C455C456C457D0C8C458EBF2C459EBEEC45AC45BC45CEBF1C8F9C45DD1FCEBECC45EC45FEBE9C460C461C462C463B8B9CFD9C4E5EBEFEBF0CCDACDC8B0F2C464EBF6C465C466C467C468C469EBF5C46AB2B2C46BC46CC46DC46EB8E0C46FEBF7C470C471C472C473C474C475B1ECC476C477CCC5C4A4CFA5C478C479C47AC47BC47CEBF9C47DC47EECA2C480C5F2C481EBFAC482C483C484C485C486C487C488C489C9C5C48AC48BC48CC48DC48EC48FE2DFEBFEC490C491C492C493CDCEECA1B1DBD3B7C494C495D2DCC496C497C498EBFDC499EBFBC49AC49BC49CC49DC49EC49FC4A0C540C541C542C543C544C545C546C547C548C549C54AC54BC54CC54DC54EB3BCC54FC550C551EAB0C552C553D7D4C554F4ABB3F4C555C556C557C558C559D6C1D6C2C55AC55BC55CC55DC55EC55FD5E9BECAC560F4A7C561D2A8F4A8F4A9C562F4AABECBD3DFC563C564C565C566C567C9E0C9E1C568C569F3C2C56ACAE6C56BCCF2C56CC56DC56EC56FC570C571E2B6CBB4C572CEE8D6DBC573F4ADF4AEF4AFC574C575C576C577F4B2C578BABDF4B3B0E3F4B0C579F4B1BDA2B2D5C57AF4B6F4B7B6E6B2B0CFCFF4B4B4ACC57BF4B5C57CC57DF4B8C57EC580C581C582C583F4B9C584C585CDA7C586F4BAC587F4BBC588C589C58AF4BCC58BC58CC58DC58EC58FC590C591C592CBD2C593F4BDC594C595C596C597F4BEC598C599C59AC59BC59CC59DC59EC59FF4BFC5A0C640C641C642C643F4DEC1BCBCE8C644C9ABD1DEE5F5C645C646C647C648DCB3D2D5C649C64ADCB4B0ACDCB5C64BC64CBDDAC64DDCB9C64EC64FC650D8C2C651DCB7D3F3C652C9D6DCBADCB6C653DCBBC3A2C654C655C656C657DCBCDCC5DCBDC658C659CEDFD6A5C65ADCCFC65BDCCDC65CC65DDCD2BDE6C2ABC65EDCB8DCCBDCCEDCBEB7D2B0C5DCC7D0BEDCC1BBA8C65FB7BCDCCCC660C661DCC6DCBFC7DBC662C663C664D1BFDCC0C665C666DCCAC667C668DCD0C669C66ACEADDCC2C66BDCC3DCC8DCC9B2D4DCD1CBD5C66CD4B7DCDBDCDFCCA6DCE6C66DC3E7DCDCC66EC66FBFC1DCD9C670B0FAB9B6DCE5DCD3C671DCC4DCD6C8F4BFE0C672C673C674C675C9BBC676C677C678B1BDC679D3A2C67AC67BDCDAC67CC67DDCD5C67EC6BBC680DCDEC681C682C683C684C685D7C2C3AFB7B6C7D1C3A9DCE2DCD8DCEBDCD4C686C687DCDDC688BEA5DCD7C689DCE0C68AC68BDCE3DCE4C68CDCF8C68DC68EDCE1DDA2DCE7C68FC690C691C692C693C694C695C696C697C698BCEBB4C4C699C69AC3A3B2E7DCFAC69BDCF2C69CDCEFC69DDCFCDCEED2F0B2E8C69EC8D7C8E3DCFBC69FDCEDC6A0C740C741DCF7C742C743DCF5C744C745BEA3DCF4C746B2DDC747C748C749C74AC74BDCF3BCF6DCE8BBC4C74CC0F3C74DC74EC74FC750C751BCD4DCE9DCEAC752DCF1DCF6DCF9B5B4C753C8D9BBE7DCFEDCFDD3ABDDA1DDA3DDA5D2F1DDA4DDA6DDA7D2A9C754C755C756C757C758C759C75ABAC9DDA9C75BC75CDDB6DDB1DDB4C75DC75EC75FC760C761C762C763DDB0C6CEC764C765C0F2C766C767C768C769C9AFC76AC76BC76CDCECDDAEC76DC76EC76FC770DDB7C771C772DCF0DDAFC773DDB8C774DDACC775C776C777C778C779C77AC77BDDB9DDB3DDADC4AAC77CC77DC77EC780DDA8C0B3C1ABDDAADDABC781DDB2BBF1DDB5D3A8DDBAC782DDBBC3A7C783C784DDD2DDBCC785C786C787DDD1C788B9BDC789C78ABED5C78BBEFAC78CC78DBACAC78EC78FC790C791DDCAC792DDC5C793DDBFC794C795C796B2CBDDC3C797DDCBB2A4DDD5C798C799C79ADDBEC79BC79CC79DC6D0DDD0C79EC79FC7A0C840C841DDD4C1E2B7C6C842C843C844C845C846DDCEDDCFC847C848C849DDC4C84AC84BC84CDDBDC84DDDCDCCD1C84EDDC9C84FC850C851C852DDC2C3C8C6BCCEAEDDCCC853DDC8C854C855C856C857C858C859DDC1C85AC85BC85CDDC6C2DCC85DC85EC85FC860C861C862D3A9D3AADDD3CFF4C8F8C863C864C865C866C867C868C869C86ADDE6C86BC86CC86DC86EC86FC870DDC7C871C872C873DDE0C2E4C874C875C876C877C878C879C87AC87BDDE1C87CC87DC87EC880C881C882C883C884C885C886DDD7C887C888C889C88AC88BD6F8C88CDDD9DDD8B8F0DDD6C88DC88EC88FC890C6CFC891B6ADC892C893C894C895C896DDE2C897BAF9D4E1DDE7C898C899C89AB4D0C89BDDDAC89CBFFBDDE3C89DDDDFC89EDDDDC89FC8A0C940C941C942C943C944B5D9C945C946C947C948DDDBDDDCDDDEC949BDAFDDE4C94ADDE5C94BC94CC94DC94EC94FC950C951C952DDF5C953C3C9C954C955CBE2C956C957C958C959DDF2C95AC95BC95CC95DC95EC95FC960C961C962C963C964C965C966D8E1C967C968C6D1C969DDF4C96AC96BC96CD5F4DDF3DDF0C96DC96EDDECC96FDDEFC970DDE8C971C972D0EEC973C974C975C976C8D8DDEEC977C978DDE9C979C97ADDEACBF2C97BDDEDC97CC97DB1CDC97EC980C981C982C983C984C0B6C985BCBBDDF1C986C987DDF7C988DDF6DDEBC989C98AC98BC98CC98DC5EEC98EC98FC990DDFBC991C992C993C994C995C996C997C998C999C99AC99BDEA4C99CC99DDEA3C99EC99FC9A0CA40CA41CA42CA43CA44CA45CA46CA47CA48DDF8CA49CA4ACA4BCA4CC3EFCA4DC2FBCA4ECA4FCA50D5E1CA51CA52CEB5CA53CA54CA55CA56DDFDCA57B2CCCA58CA59CA5ACA5BCA5CCA5DCA5ECA5FCA60C4E8CADFCA61CA62CA63CA64CA65CA66CA67CA68CA69CA6AC7BEDDFADDFCDDFEDEA2B0AAB1CECA6BCA6CCA6DCA6ECA6FDEACCA70CA71CA72CA73DEA6BDB6C8EFCA74CA75CA76CA77CA78CA79CA7ACA7BCA7CCA7DCA7EDEA1CA80CA81DEA5CA82CA83CA84CA85DEA9CA86CA87CA88CA89CA8ADEA8CA8BCA8CCA8DDEA7CA8ECA8FCA90CA91CA92CA93CA94CA95CA96DEADCA97D4CCCA98CA99CA9ACA9BDEB3DEAADEAECA9CCA9DC0D9CA9ECA9FCAA0CB40CB41B1A1DEB6CB42DEB1CB43CB44CB45CB46CB47CB48CB49DEB2CB4ACB4BCB4CCB4DCB4ECB4FCB50CB51CB52CB53CB54D1A6DEB5CB55CB56CB57CB58CB59CB5ACB5BDEAFCB5CCB5DCB5EDEB0CB5FD0BDCB60CB61CB62DEB4CAEDDEB9CB63CB64CB65CB66CB67CB68DEB8CB69DEB7CB6ACB6BCB6CCB6DCB6ECB6FCB70DEBBCB71CB72CB73CB74CB75CB76CB77BDE5CB78CB79CB7ACB7BCB7CB2D8C3EACB7DCB7EDEBACB80C5BACB81CB82CB83CB84CB85CB86DEBCCB87CB88CB89CB8ACB8BCB8CCB8DCCD9CB8ECB8FCB90CB91B7AACB92CB93CB94CB95CB96CB97CB98CB99CB9ACB9BCB9CCB9DCB9ECB9FCBA0CC40CC41D4E5CC42CC43CC44DEBDCC45CC46CC47CC48CC49DEBFCC4ACC4BCC4CCC4DCC4ECC4FCC50CC51CC52CC53CC54C4A2CC55CC56CC57CC58DEC1CC59CC5ACC5BCC5CCC5DCC5ECC5FCC60CC61CC62CC63CC64CC65CC66CC67CC68DEBECC69DEC0CC6ACC6BCC6CCC6DCC6ECC6FCC70CC71CC72CC73CC74CC75CC76CC77D5BACC78CC79CC7ADEC2CC7BCC7CCC7DCC7ECC80CC81CC82CC83CC84CC85CC86CC87CC88CC89CC8ACC8BF2AEBBA2C2B2C5B0C2C7CC8CCC8DF2AFCC8ECC8FCC90CC91CC92D0E9CC93CC94CC95D3DDCC96CC97CC98EBBDCC99CC9ACC9BCC9CCC9DCC9ECC9FCCA0B3E6F2B0CD40F2B1CD41CD42CAADCD43CD44CD45CD46CD47CD48CD49BAE7F2B3F2B5F2B4CBE4CFBAF2B2CAB4D2CFC2ECCD4ACD4BCD4CCD4DCD4ECD4FCD50CEC3F2B8B0F6F2B7CD51CD52CD53CD54CD55F2BECD56B2CFCD57CD58CD59CD5ACD5BCD5CD1C1F2BACD5DCD5ECD5FCD60CD61F2BCD4E9CD62CD63F2BBF2B6F2BFF2BDCD64F2B9CD65CD66F2C7F2C4F2C6CD67CD68F2CAF2C2F2C0CD69CD6ACD6BF2C5CD6CCD6DCD6ECD6FCD70D6FBCD71CD72CD73F2C1CD74C7F9C9DFCD75F2C8B9C6B5B0CD76CD77F2C3F2C9F2D0F2D6CD78CD79BBD7CD7ACD7BCD7CF2D5CDDCCD7DD6EBCD7ECD80F2D2F2D4CD81CD82CD83CD84B8F2CD85CD86CD87CD88F2CBCD89CD8ACD8BF2CEC2F9CD8CD5DDF2CCF2CDF2CFF2D3CD8DCD8ECD8FF2D9D3BCCD90CD91CD92CD93B6EACD94CAF1CD95B7E4F2D7CD96CD97CD98F2D8F2DAF2DDF2DBCD99CD9AF2DCCD9BCD9CCD9DCD9ED1D1F2D1CD9FCDC9CDA0CECFD6A9CE40F2E3CE41C3DBCE42F2E0CE43CE44C0AFF2ECF2DECE45F2E1CE46CE47CE48F2E8CE49CE4ACE4BCE4CF2E2CE4DCE4EF2E7CE4FCE50F2E6CE51CE52F2E9CE53CE54CE55F2DFCE56CE57F2E4F2EACE58CE59CE5ACE5BCE5CCE5DCE5ED3ACF2E5B2F5CE5FCE60F2F2CE61D0ABCE62CE63CE64CE65F2F5CE66CE67CE68BBC8CE69F2F9CE6ACE6BCE6CCE6DCE6ECE6FF2F0CE70CE71F2F6F2F8F2FACE72CE73CE74CE75CE76CE77CE78CE79F2F3CE7AF2F1CE7BCE7CCE7DBAFBCE7EB5FBCE80CE81CE82CE83F2EFF2F7F2EDF2EECE84CE85CE86F2EBF3A6CE87F3A3CE88CE89F3A2CE8ACE8BF2F4CE8CC8DACE8DCE8ECE8FCE90CE91F2FBCE92CE93CE94F3A5CE95CE96CE97CE98CE99CE9ACE9BC3F8CE9CCE9DCE9ECE9FCEA0CF40CF41CF42F2FDCF43CF44F3A7F3A9F3A4CF45F2FCCF46CF47CF48F3ABCF49F3AACF4ACF4BCF4CCF4DC2DDCF4ECF4FF3AECF50CF51F3B0CF52CF53CF54CF55CF56F3A1CF57CF58CF59F3B1F3ACCF5ACF5BCF5CCF5DCF5EF3AFF2FEF3ADCF5FCF60CF61CF62CF63CF64CF65F3B2CF66CF67CF68CF69F3B4CF6ACF6BCF6CCF6DF3A8CF6ECF6FCF70CF71F3B3CF72CF73CF74F3B5CF75CF76CF77CF78CF79CF7ACF7BCF7CCF7DCF7ED0B7CF80CF81CF82CF83F3B8CF84CF85CF86CF87D9F9CF88CF89CF8ACF8BCF8CCF8DF3B9CF8ECF8FCF90CF91CF92CF93CF94CF95F3B7CF96C8E4F3B6CF97CF98CF99CF9AF3BACF9BCF9CCF9DCF9ECF9FF3BBB4C0CFA0D040D041D042D043D044D045D046D047D048D049D04AD04BD04CD04DEEC3D04ED04FD050D051D052D053F3BCD054D055F3BDD056D057D058D1AAD059D05AD05BF4ACD0C6D05CD05DD05ED05FD060D061D0D0D1DCD062D063D064D065D066D067CFCED068D069BDD6D06AD1C3D06BD06CD06DD06ED06FD070D071BAE2E1E9D2C2F1C2B2B9D072D073B1EDF1C3D074C9C0B3C4D075D9F2D076CBA5D077F1C4D078D079D07AD07BD6D4D07CD07DD07ED080D081F1C5F4C0F1C6D082D4ACF1C7D083B0C0F4C1D084D085F4C2D086D087B4FCD088C5DBD089D08AD08BD08CCCBBD08DD08ED08FD0E4D090D091D092D093D094CDE0D095D096D097D098D099F1C8D09AD9F3D09BD09CD09DD09ED09FD0A0B1BBD140CFAED141D142D143B8A4D144D145D146D147D148F1CAD149D14AD14BD14CF1CBD14DD14ED14FD150B2C3C1D1D151D152D7B0F1C9D153D154F1CCD155D156D157D158F1CED159D15AD15BD9F6D15CD2E1D4A3D15DD15EF4C3C8B9D15FD160D161D162D163F4C4D164D165F1CDF1CFBFE3F1D0D166D167F1D4D168D169D16AD16BD16CD16DD16EF1D6F1D1D16FC9D1C5E1D170D171D172C2E3B9FCD173D174F1D3D175F1D5D176D177D178B9D3D179D17AD17BD17CD17DD17ED180F1DBD181D182D183D184D185BAD6D186B0FDF1D9D187D188D189D18AD18BF1D8F1D2F1DAD18CD18DD18ED18FD190F1D7D191D192D193C8ECD194D195D196D197CDCAF1DDD198D199D19AD19BE5BDD19CD19DD19EF1DCD19FF1DED1A0D240D241D242D243D244D245D246D247D248F1DFD249D24ACFE5D24BD24CD24DD24ED24FD250D251D252D253D254D255D256D257D258D259D25AD25BD25CD25DD25ED25FD260D261D262D263F4C5BDF3D264D265D266D267D268D269F1E0D26AD26BD26CD26DD26ED26FD270D271D272D273D274D275D276D277D278D279D27AD27BD27CD27DF1E1D27ED280D281CEF7D282D2AAD283F1FBD284D285B8B2D286D287D288D289D28AD28BD28CD28DD28ED28FD290D291D292D293D294D295D296D297D298D299D29AD29BD29CD29DD29ED29FD2A0D340D341D342D343D344D345D346D347D348D349D34AD34BD34CD34DD34ED34FD350D351D352D353D354D355D356D357D358D359D35AD35BD35CD35DD35EBCFBB9DBD35FB9E6C3D9CAD3EAE8C0C0BEF5EAE9EAEAEAEBD360EAECEAEDEAEEEAEFBDC7D361D362D363F5FBD364D365D366F5FDD367F5FED368F5FCD369D36AD36BD36CBDE2D36DF6A1B4A5D36ED36FD370D371F6A2D372D373D374F6A3D375D376D377ECB2D378D379D37AD37BD37CD37DD37ED380D381D382D383D384D1D4D385D386D387D388D389D38AD9EAD38BD38CD38DD38ED38FD390D391D392D393D394D395D396D397D398D399D39AD39BD39CD39DD39ED39FD3A0D440D441D442D443D444D445D446D447D448D449D44AD44BD44CD44DD44ED44FD450D451D452D453D454D455D456D457D458D459D45AD45BD45CD45DD45ED45FF6A4D460D461D462D463D464D465D466D467D468EEBAD469D46AD46BD46CD46DD46ED46FD470D471D472D473D474D475D476D477D478D479D47AD47BD47CD47DD47ED480D481D482D483D484D485D486D487D488D489D48AD48BD48CD48DD48ED48FD490D491D492D493D494D495D496D497D498D499D5B2D49AD49BD49CD49DD49ED49FD4A0D540D541D542D543D544D545D546D547D3FECCDCD548D549D54AD54BD54CD54DD54ED54FCAC4D550D551D552D553D554D555D556D557D558D559D55AD55BD55CD55DD55ED55FD560D561D562D563D564D565D566D567D568D569D56AD56BD56CD56DD56ED56FD570D571D572D573D574D575D576D577D578D579D57AD57BD57CD57DD57ED580D581D582D583D584D585D586D587D588D589D58AD58BD58CD58DD58ED58FD590D591D592D593D594D595D596D597D598D599D59AD59BD59CD59DD59ED59FD5A0D640D641D642D643D644D645D646D647D648D649D64AD64BD64CD64DD64ED64FD650D651D652D653D654D655D656D657D658D659D65AD65BD65CD65DD65ED65FD660D661D662E5C0D663D664D665D666D667D668D669D66AD66BD66CD66DD66ED66FD670D671D672D673D674D675D676D677D678D679D67AD67BD67CD67DD67ED680D681F6A5D682D683D684D685D686D687D688D689D68AD68BD68CD68DD68ED68FD690D691D692D693D694D695D696D697D698D699D69AD69BD69CD69DD69ED69FD6A0D740D741D742D743D744D745D746D747D748D749D74AD74BD74CD74DD74ED74FD750D751D752D753D754D755D756D757D758D759D75AD75BD75CD75DD75ED75FBEAFD760D761D762D763D764C6A9D765D766D767D768D769D76AD76BD76CD76DD76ED76FD770D771D772D773D774D775D776D777D778D779D77AD77BD77CD77DD77ED780D781D782D783D784D785D786D787D788D789D78AD78BD78CD78DD78ED78FD790D791D792D793D794D795D796D797D798DAA5BCC6B6A9B8BCC8CFBCA5DAA6DAA7CCD6C8C3DAA8C6FDD799D1B5D2E9D1B6BCC7D79ABDB2BBE4DAA9DAAAD1C8DAABD0EDB6EFC2DBD79BCBCFB7EDC9E8B7C3BEF7D6A4DAACDAADC6C0D7E7CAB6D79CD5A9CBDFD5EFDAAED6DFB4CADAB0DAAFD79DD2EBDAB1DAB2DAB3CAD4DAB4CAABDAB5DAB6B3CFD6EFDAB7BBB0B5AEDAB8DAB9B9EED1AFD2E8DABAB8C3CFEAB2EFDABBDABCD79EBDEBCEDCD3EFDABDCEF3DABED3D5BBE5DABFCBB5CBD0DAC0C7EBD6EEDAC1C5B5B6C1DAC2B7CCBFCEDAC3DAC4CBADDAC5B5F7DAC6C1C2D7BBDAC7CCB8D79FD2EAC4B1DAC8B5FDBBD1DAC9D0B3DACADACBCEBDDACCDACDDACEB2F7DAD1DACFD1E8DAD0C3D5DAD2D7A0DAD3DAD4DAD5D0BBD2A5B0F9DAD6C7ABDAD7BDF7C3A1DAD8DAD9C3FDCCB7DADADADBC0BEC6D7DADCDADDC7B4DADEDADFB9C8D840D841D842D843D844D845D846D847D848BBEDD849D84AD84BD84CB6B9F4F8D84DF4F9D84ED84FCDE3D850D851D852D853D854D855D856D857F5B9D858D859D85AD85BEBE0D85CD85DD85ED85FD860D861CFF3BBBFD862D863D864D865D866D867D868BAC0D4A5D869D86AD86BD86CD86DD86ED86FE1D9D870D871D872D873F5F4B1AAB2F2D874D875D876D877D878D879D87AF5F5D87BD87CF5F7D87DD87ED880BAD1F5F6D881C3B2D882D883D884D885D886D887D888F5F9D889D88AD88BF5F8D88CD88DD88ED88FD890D891D892D893D894D895D896D897D898D899D89AD89BD89CD89DD89ED89FD8A0D940D941D942D943D944D945D946D947D948D949D94AD94BD94CD94DD94ED94FD950D951D952D953D954D955D956D957D958D959D95AD95BD95CD95DD95ED95FD960D961D962D963D964D965D966D967D968D969D96AD96BD96CD96DD96ED96FD970D971D972D973D974D975D976D977D978D979D97AD97BD97CD97DD97ED980D981D982D983D984D985D986D987D988D989D98AD98BD98CD98DD98ED98FD990D991D992D993D994D995D996D997D998D999D99AD99BD99CD99DD99ED99FD9A0DA40DA41DA42DA43DA44DA45DA46DA47DA48DA49DA4ADA4BDA4CDA4DDA4EB1B4D5EAB8BADA4FB9B1B2C6D4F0CFCDB0DCD5CBBBF5D6CAB7B7CCB0C6B6B1E1B9BAD6FCB9E1B7A1BCFAEADAEADBCCF9B9F3EADCB4FBC3B3B7D1BAD8EADDD4F4EADEBCD6BBDFEADFC1DEC2B8D4DFD7CAEAE0EAE1EAE4EAE2EAE3C9DEB8B3B6C4EAE5CAEAC9CDB4CDDA50DA51E2D9C5E2EAE6C0B5DA52D7B8EAE7D7ACC8FCD8D3D8CDD4DEDA53D4F9C9C4D3AEB8D3B3E0DA54C9E2F4F6DA55DA56DA57BAD5DA58F4F7DA59DA5AD7DFDA5BDA5CF4F1B8B0D5D4B8CFC6F0DA5DDA5EDA5FDA60DA61DA62DA63DA64DA65B3C3DA66DA67F4F2B3ACDA68DA69DA6ADA6BD4BDC7F7DA6CDA6DDA6EDA6FDA70F4F4DA71DA72F4F3DA73DA74DA75DA76DA77DA78DA79DA7ADA7BDA7CCCCBDA7DDA7EDA80C8A4DA81DA82DA83DA84DA85DA86DA87DA88DA89DA8ADA8BDA8CDA8DF4F5DA8ED7E3C5BFF5C0DA8FDA90F5BBDA91F5C3DA92F5C2DA93D6BAF5C1DA94DA95DA96D4BEF5C4DA97F5CCDA98DA99DA9ADA9BB0CFB5F8DA9CF5C9F5CADA9DC5DCDA9EDA9FDAA0DB40F5C5F5C6DB41DB42F5C7F5CBDB43BEE0F5C8B8FADB44DB45DB46F5D0F5D3DB47DB48DB49BFE7DB4AB9F2F5BCF5CDDB4BDB4CC2B7DB4DDB4EDB4FCCF8DB50BCF9DB51F5CEF5CFF5D1B6E5F5D2DB52F5D5DB53DB54DB55DB56DB57DB58DB59F5BDDB5ADB5BDB5CF5D4D3BBDB5DB3ECDB5EDB5FCCA4DB60DB61DB62DB63F5D6DB64DB65DB66DB67DB68DB69DB6ADB6BF5D7BEE1F5D8DB6CDB6DCCDFF5DBDB6EDB6FDB70DB71DB72B2C8D7D9DB73F5D9DB74F5DAF5DCDB75F5E2DB76DB77DB78F5E0DB79DB7ADB7BF5DFF5DDDB7CDB7DF5E1DB7EDB80F5DEF5E4F5E5DB81CCE3DB82DB83E5BFB5B8F5E3F5E8CCA3DB84DB85DB86DB87DB88F5E6F5E7DB89DB8ADB8BDB8CDB8DDB8EF5BEDB8FDB90DB91DB92DB93DB94DB95DB96DB97DB98DB99DB9AB1C4DB9BDB9CF5BFDB9DDB9EB5C5B2E4DB9FF5ECF5E9DBA0B6D7DC40F5EDDC41F5EADC42DC43DC44DC45DC46F5EBDC47DC48B4DADC49D4EADC4ADC4BDC4CF5EEDC4DB3F9DC4EDC4FDC50DC51DC52DC53DC54F5EFF5F1DC55DC56DC57F5F0DC58DC59DC5ADC5BDC5CDC5DDC5EF5F2DC5FF5F3DC60DC61DC62DC63DC64DC65DC66DC67DC68DC69DC6ADC6BC9EDB9AADC6CDC6DC7FBDC6EDC6FB6E3DC70DC71DC72DC73DC74DC75DC76CCC9DC77DC78DC79DC7ADC7BDC7CDC7DDC7EDC80DC81DC82DC83DC84DC85DC86DC87DC88DC89DC8AEAA6DC8BDC8CDC8DDC8EDC8FDC90DC91DC92DC93DC94DC95DC96DC97DC98DC99DC9ADC9BDC9CDC9DDC9EDC9FDCA0DD40DD41DD42DD43DD44DD45DD46DD47DD48DD49DD4ADD4BDD4CDD4DDD4EDD4FDD50DD51DD52DD53DD54DD55DD56DD57DD58DD59DD5ADD5BDD5CDD5DDD5EDD5FDD60DD61DD62DD63DD64DD65DD66DD67DD68DD69DD6ADD6BDD6CDD6DDD6EDD6FDD70DD71DD72DD73DD74DD75DD76DD77DD78DD79DD7ADD7BDD7CDD7DDD7EDD80DD81DD82DD83DD84DD85DD86DD87DD88DD89DD8ADD8BDD8CDD8DDD8EDD8FDD90DD91DD92DD93DD94DD95DD96DD97DD98DD99DD9ADD9BDD9CDD9DDD9EDD9FDDA0DE40DE41DE42DE43DE44DE45DE46DE47DE48DE49DE4ADE4BDE4CDE4DDE4EDE4FDE50DE51DE52DE53DE54DE55DE56DE57DE58DE59DE5ADE5BDE5CDE5DDE5EDE5FDE60B3B5D4FEB9ECD0F9DE61E9EDD7AAE9EEC2D6C8EDBAE4E9EFE9F0E9F1D6E1E9F2E9F3E9F5E9F4E9F6E9F7C7E1E9F8D4D8E9F9BDCEDE62E9FAE9FBBDCFE9FCB8A8C1BEE9FDB1B2BBD4B9F5E9FEDE63EAA1EAA2EAA3B7F8BCADDE64CAE4E0CED4AFCFBDD5B7EAA4D5DEEAA5D0C1B9BCDE65B4C7B1D9DE66DE67DE68C0B1DE69DE6ADE6BDE6CB1E6B1E7DE6DB1E8DE6EDE6FDE70DE71B3BDC8E8DE72DE73DE74DE75E5C1DE76DE77B1DFDE78DE79DE7AC1C9B4EFDE7BDE7CC7A8D3D8DE7DC6F9D1B8DE7EB9FDC2F5DE80DE81DE82DE83DE84D3ADDE85D4CBBDFCDE86E5C2B7B5E5C3DE87DE88BBB9D5E2DE89BDF8D4B6CEA5C1ACB3D9DE8ADE8BCCF6DE8CE5C6E5C4E5C8DE8DE5CAE5C7B5CFC6C8DE8EB5FCE5C5DE8FCAF6DE90DE91E5C9DE92DE93DE94C3D4B1C5BCA3DE95DE96DE97D7B7DE98DE99CDCBCBCDCACACCD3E5CCE5CBC4E6DE9ADE9BD1A1D1B7E5CDDE9CE5D0DE9DCDB8D6F0E5CFB5DDDE9ECDBEDE9FE5D1B6BADEA0DF40CDA8B9E4DF41CAC5B3D1CBD9D4ECE5D2B7EADF42DF43DF44E5CEDF45DF46DF47DF48DF49DF4AE5D5B4FEE5D6DF4BDF4CDF4DDF4EDF4FE5D3E5D4DF50D2DDDF51DF52C2DFB1C6DF53D3E2DF54DF55B6DDCBECDF56E5D7DF57DF58D3F6DF59DF5ADF5BDF5CDF5DB1E9DF5EB6F4E5DAE5D8E5D9B5C0DF5FDF60DF61D2C5E5DCDF62DF63E5DEDF64DF65DF66DF67DF68DF69E5DDC7B2DF6AD2A3DF6BDF6CE5DBDF6DDF6EDF6FDF70D4E2D5DADF71DF72DF73DF74DF75E5E0D7F1DF76DF77DF78DF79DF7ADF7BDF7CE5E1DF7DB1DCD1FBDF7EE5E2E5E4DF80DF81DF82DF83E5E3DF84DF85E5E5DF86DF87DF88DF89DF8AD2D8DF8BB5CBDF8CE7DFDF8DDAF5DF8EDAF8DF8FDAF6DF90DAF7DF91DF92DF93DAFAD0CFC4C7DF94DF95B0EEDF96DF97DF98D0B0DF99DAF9DF9AD3CABAAADBA2C7F1DF9BDAFCDAFBC9DBDAFDDF9CDBA1D7DEDAFEC1DADF9DDF9EDBA5DF9FDFA0D3F4E040E041DBA7DBA4E042DBA8E043E044BDBCE045E046E047C0C9DBA3DBA6D6A3E048DBA9E049E04AE04BDBADE04CE04DE04EDBAEDBACBAC2E04FE050E051BFA4DBABE052E053E054DBAAD4C7B2BFE055E056DBAFE057B9F9E058DBB0E059E05AE05BE05CB3BBE05DE05EE05FB5A6E060E061E062E063B6BCDBB1E064E065E066B6F5E067DBB2E068E069E06AE06BE06CE06DE06EE06FE070E071E072E073E074E075E076E077E078E079E07AE07BB1C9E07CE07DE07EE080DBB4E081E082E083DBB3DBB5E084E085E086E087E088E089E08AE08BE08CE08DE08EDBB7E08FDBB6E090E091E092E093E094E095E096DBB8E097E098E099E09AE09BE09CE09DE09EE09FDBB9E0A0E140DBBAE141E142D3CFF4FAC7F5D7C3C5E4F4FCF4FDF4FBE143BEC6E144E145E146E147D0EFE148E149B7D3E14AE14BD4CDCCAAE14CE14DF5A2F5A1BAA8F4FECBD6E14EE14FE150F5A4C0D2E151B3EAE152CDAAF5A5F5A3BDB4F5A8E153F5A9BDCDC3B8BFE1CBE1F5AAE154E155E156F5A6F5A7C4F0E157E158E159E15AE15BF5ACE15CB4BCE15DD7EDE15EB4D7F5ABF5AEE15FE160F5ADF5AFD0D1E161E162E163E164E165E166E167C3D1C8A9E168E169E16AE16BE16CE16DF5B0F5B1E16EE16FE170E171E172E173F5B2E174E175F5B3F5B4F5B5E176E177E178E179F5B7F5B6E17AE17BE17CE17DF5B8E17EE180E181E182E183E184E185E186E187E188E189E18AB2C9E18BD3D4CACDE18CC0EFD6D8D2B0C1BFE18DBDF0E18EE18FE190E191E192E193E194E195E196E197B8AAE198E199E19AE19BE19CE19DE19EE19FE1A0E240E241E242E243E244E245E246E247E248E249E24AE24BE24CE24DE24EE24FE250E251E252E253E254E255E256E257E258E259E25AE25BE25CE25DE25EE25FE260E261E262E263E264E265E266E267E268E269E26AE26BE26CE26DE26EE26FE270E271E272E273E274E275E276E277E278E279E27AE27BE27CE27DE27EE280E281E282E283E284E285E286E287E288E289E28AE28BE28CE28DE28EE28FE290E291E292E293E294E295E296E297E298E299E29AE29BE29CE29DE29EE29FE2A0E340E341E342E343E344E345E346E347E348E349E34AE34BE34CE34DE34EE34FE350E351E352E353E354E355E356E357E358E359E35AE35BE35CE35DE35EE35FE360E361E362E363E364E365E366E367E368E369E36AE36BE36CE36DBCF8E36EE36FE370E371E372E373E374E375E376E377E378E379E37AE37BE37CE37DE37EE380E381E382E383E384E385E386E387F6C6E388E389E38AE38BE38CE38DE38EE38FE390E391E392E393E394E395E396E397E398E399E39AE39BE39CE39DE39EE39FE3A0E440E441E442E443E444E445F6C7E446E447E448E449E44AE44BE44CE44DE44EE44FE450E451E452E453E454E455E456E457E458E459E45AE45BE45CE45DE45EF6C8E45FE460E461E462E463E464E465E466E467E468E469E46AE46BE46CE46DE46EE46FE470E471E472E473E474E475E476E477E478E479E47AE47BE47CE47DE47EE480E481E482E483E484E485E486E487E488E489E48AE48BE48CE48DE48EE48FE490E491E492E493E494E495E496E497E498E499E49AE49BE49CE49DE49EE49FE4A0E540E541E542E543E544E545E546E547E548E549E54AE54BE54CE54DE54EE54FE550E551E552E553E554E555E556E557E558E559E55AE55BE55CE55DE55EE55FE560E561E562E563E564E565E566E567E568E569E56AE56BE56CE56DE56EE56FE570E571E572E573F6C9E574E575E576E577E578E579E57AE57BE57CE57DE57EE580E581E582E583E584E585E586E587E588E589E58AE58BE58CE58DE58EE58FE590E591E592E593E594E595E596E597E598E599E59AE59BE59CE59DE59EE59FF6CAE5A0E640E641E642E643E644E645E646E647E648E649E64AE64BE64CE64DE64EE64FE650E651E652E653E654E655E656E657E658E659E65AE65BE65CE65DE65EE65FE660E661E662F6CCE663E664E665E666E667E668E669E66AE66BE66CE66DE66EE66FE670E671E672E673E674E675E676E677E678E679E67AE67BE67CE67DE67EE680E681E682E683E684E685E686E687E688E689E68AE68BE68CE68DE68EE68FE690E691E692E693E694E695E696E697E698E699E69AE69BE69CE69DF6CBE69EE69FE6A0E740E741E742E743E744E745E746E747F7E9E748E749E74AE74BE74CE74DE74EE74FE750E751E752E753E754E755E756E757E758E759E75AE75BE75CE75DE75EE75FE760E761E762E763E764E765E766E767E768E769E76AE76BE76CE76DE76EE76FE770E771E772E773E774E775E776E777E778E779E77AE77BE77CE77DE77EE780E781E782E783E784E785E786E787E788E789E78AE78BE78CE78DE78EE78FE790E791E792E793E794E795E796E797E798E799E79AE79BE79CE79DE79EE79FE7A0E840E841E842E843E844E845E846E847E848E849E84AE84BE84CE84DE84EF6CDE84FE850E851E852E853E854E855E856E857E858E859E85AE85BE85CE85DE85EE85FE860E861E862E863E864E865E866E867E868E869E86AE86BE86CE86DE86EE86FE870E871E872E873E874E875E876E877E878E879E87AF6CEE87BE87CE87DE87EE880E881E882E883E884E885E886E887E888E889E88AE88BE88CE88DE88EE88FE890E891E892E893E894EEC4EEC5EEC6D5EBB6A4EEC8EEC7EEC9EECAC7A5EECBEECCE895B7B0B5F6EECDEECFE896EECEE897B8C6EED0EED1EED2B6DBB3AED6D3C4C6B1B5B8D6EED3EED4D4BFC7D5BEFBCED9B9B3EED6EED5EED8EED7C5A5EED9EEDAC7AEEEDBC7AFEEDCB2A7EEDDEEDEEEDFEEE0EEE1D7EAEEE2EEE3BCD8EEE4D3CBCCFAB2ACC1E5EEE5C7A6C3ADE898EEE6EEE7EEE8EEE9EEEAEEEBEEECE899EEEDEEEEEEEFE89AE89BEEF0EEF1EEF2EEF4EEF3E89CEEF5CDADC2C1EEF6EEF7EEF8D5A1EEF9CFB3EEFAEEFBE89DEEFCEEFDEFA1EEFEEFA2B8F5C3FAEFA3EFA4BDC2D2BFB2F9EFA5EFA6EFA7D2F8EFA8D6FDEFA9C6CCE89EEFAAEFABC1B4EFACCFFACBF8EFAEEFADB3FAB9F8EFAFEFB0D0E2EFB1EFB2B7E6D0BFEFB3EFB4EFB5C8F1CCE0EFB6EFB7EFB8EFB9EFBAD5E0EFBBB4EDC3AAEFBCE89FEFBDEFBEEFBFE8A0CEFDEFC0C2E0B4B8D7B6BDF5E940CFC7EFC3EFC1EFC2EFC4B6A7BCFCBEE2C3CCEFC5EFC6E941EFC7EFCFEFC8EFC9EFCAC7C2EFF1B6CDEFCBE942EFCCEFCDB6C6C3BEEFCEE943EFD0EFD1EFD2D5F2E944EFD3C4F7E945EFD4C4F8EFD5EFD6B8E4B0F7EFD7EFD8EFD9E946EFDAEFDBEFDCEFDDE947EFDEBEB5EFE1EFDFEFE0E948EFE2EFE3C1CDEFE4EFE5EFE6EFE7EFE8EFE9EFEAEFEBEFECC0D8E949EFEDC1ADEFEEEFEFEFF0E94AE94BCFE2E94CE94DE94EE94FE950E951E952E953B3A4E954E955E956E957E958E959E95AE95BE95CE95DE95EE95FE960E961E962E963E964E965E966E967E968E969E96AE96BE96CE96DE96EE96FE970E971E972E973E974E975E976E977E978E979E97AE97BE97CE97DE97EE980E981E982E983E984E985E986E987E988E989E98AE98BE98CE98DE98EE98FE990E991E992E993E994E995E996E997E998E999E99AE99BE99CE99DE99EE99FE9A0EA40EA41EA42EA43EA44EA45EA46EA47EA48EA49EA4AEA4BEA4CEA4DEA4EEA4FEA50EA51EA52EA53EA54EA55EA56EA57EA58EA59EA5AEA5BC3C5E3C5C9C1E3C6EA5CB1D5CECAB4B3C8F2E3C7CFD0E3C8BCE4E3C9E3CAC3C6D5A2C4D6B9EBCEC5E3CBC3F6E3CCEA5DB7A7B8F3BAD2E3CDE3CED4C4E3CFEA5EE3D0D1CBE3D1E3D2E3D3E3D4D1D6E3D5B2FBC0BBE3D6EA5FC0ABE3D7E3D8E3D9EA60E3DAE3DBEA61B8B7DAE2EA62B6D3EA63DAE4DAE3EA64EA65EA66EA67EA68EA69EA6ADAE6EA6BEA6CEA6DC8EEEA6EEA6FDAE5B7C0D1F4D2F5D5F3BDD7EA70EA71EA72EA73D7E8DAE8DAE7EA74B0A2CDD3EA75DAE9EA76B8BDBCCAC2BDC2A4B3C2DAEAEA77C2AAC4B0BDB5EA78EA79CFDEEA7AEA7BEA7CDAEBC9C2EA7DEA7EEA80EA81EA82B1DDEA83EA84EA85DAECEA86B6B8D4BAEA87B3FDEA88EA89DAEDD4C9CFD5C5E3EA8ADAEEEA8BEA8CEA8DEA8EEA8FDAEFEA90DAF0C1EACCD5CFDDEA91EA92EA93EA94EA95EA96EA97EA98EA99EA9AEA9BEA9CEA9DD3E7C2A1EA9EDAF1EA9FEAA0CBE5EB40DAF2EB41CBE6D2FEEB42EB43EB44B8F4EB45EB46DAF3B0AFCFB6EB47EB48D5CFEB49EB4AEB4BEB4CEB4DEB4EEB4FEB50EB51EB52CBEDEB53EB54EB55EB56EB57EB58EB59EB5ADAF4EB5BEB5CE3C4EB5DEB5EC1A5EB5FEB60F6BFEB61EB62F6C0F6C1C4D1EB63C8B8D1E3EB64EB65D0DBD1C5BCAFB9CDEB66EFF4EB67EB68B4C6D3BAF6C2B3FBEB69EB6AF6C3EB6BEB6CB5F1EB6DEB6EEB6FEB70EB71EB72EB73EB74EB75EB76F6C5EB77EB78EB79EB7AEB7BEB7CEB7DD3EAF6A7D1A9EB7EEB80EB81EB82F6A9EB83EB84EB85F6A8EB86EB87C1E3C0D7EB88B1A2EB89EB8AEB8BEB8CCEEDEB8DD0E8F6ABEB8EEB8FCFF6EB90F6AAD5F0F6ACC3B9EB91EB92EB93BBF4F6AEF6ADEB94EB95EB96C4DEEB97EB98C1D8EB99EB9AEB9BEB9CEB9DCBAAEB9ECFBCEB9FEBA0EC40EC41EC42EC43EC44EC45EC46EC47EC48F6AFEC49EC4AF6B0EC4BEC4CF6B1EC4DC2B6EC4EEC4FEC50EC51EC52B0D4C5F9EC53EC54EC55EC56F6B2EC57EC58EC59EC5AEC5BEC5CEC5DEC5EEC5FEC60EC61EC62EC63EC64EC65EC66EC67EC68EC69C7E0F6A6EC6AEC6BBEB8EC6CEC6DBEB2EC6EB5E5EC6FEC70B7C7EC71BFBFC3D2C3E6EC72EC73D8CCEC74EC75EC76B8EFEC77EC78EC79EC7AEC7BEC7CEC7DEC7EEC80BDF9D1A5EC81B0D0EC82EC83EC84EC85EC86F7B0EC87EC88EC89EC8AEC8BEC8CEC8DEC8EF7B1EC8FEC90EC91EC92EC93D0ACEC94B0B0EC95EC96EC97F7B2F7B3EC98F7B4EC99EC9AEC9BC7CAEC9CEC9DEC9EEC9FECA0ED40ED41BECFED42ED43F7B7ED44ED45ED46ED47ED48ED49ED4AF7B6ED4BB1DEED4CF7B5ED4DED4EF7B8ED4FF7B9ED50ED51ED52ED53ED54ED55ED56ED57ED58ED59ED5AED5BED5CED5DED5EED5FED60ED61ED62ED63ED64ED65ED66ED67ED68ED69ED6AED6BED6CED6DED6EED6FED70ED71ED72ED73ED74ED75ED76ED77ED78ED79ED7AED7BED7CED7DED7EED80ED81CEA4C8CDED82BAABE8B8E8B9E8BABEC2ED83ED84ED85ED86ED87D2F4ED88D4CFC9D8ED89ED8AED8BED8CED8DED8EED8FED90ED91ED92ED93ED94ED95ED96ED97ED98ED99ED9AED9BED9CED9DED9EED9FEDA0EE40EE41EE42EE43EE44EE45EE46EE47EE48EE49EE4AEE4BEE4CEE4DEE4EEE4FEE50EE51EE52EE53EE54EE55EE56EE57EE58EE59EE5AEE5BEE5CEE5DEE5EEE5FEE60EE61EE62EE63EE64EE65EE66EE67EE68EE69EE6AEE6BEE6CEE6DEE6EEE6FEE70EE71EE72EE73EE74EE75EE76EE77EE78EE79EE7AEE7BEE7CEE7DEE7EEE80EE81EE82EE83EE84EE85EE86EE87EE88EE89EE8AEE8BEE8CEE8DEE8EEE8FEE90EE91EE92EE93EE94EE95EE96EE97EE98EE99EE9AEE9BEE9CEE9DEE9EEE9FEEA0EF40EF41EF42EF43EF44EF45D2B3B6A5C7EAF1FCCFEECBB3D0EBE7EFCDE7B9CBB6D9F1FDB0E4CBCCF1FED4A4C2ADC1ECC6C4BEB1F2A1BCD5EF46F2A2F2A3EF47F2A4D2C3C6B5EF48CDC7F2A5EF49D3B1BFC5CCE2EF4AF2A6F2A7D1D5B6EEF2A8F2A9B5DFF2AAF2ABEF4BB2FCF2ACF2ADC8A7EF4CEF4DEF4EEF4FEF50EF51EF52EF53EF54EF55EF56EF57EF58EF59EF5AEF5BEF5CEF5DEF5EEF5FEF60EF61EF62EF63EF64EF65EF66EF67EF68EF69EF6AEF6BEF6CEF6DEF6EEF6FEF70EF71B7E7EF72EF73ECA9ECAAECABEF74ECACEF75EF76C6AEECADECAEEF77EF78EF79B7C9CAB3EF7AEF7BEF7CEF7DEF7EEF80EF81E2B8F7CFEF82EF83EF84EF85EF86EF87EF88EF89EF8AEF8BEF8CEF8DEF8EEF8FEF90EF91EF92EF93EF94EF95EF96EF97EF98EF99EF9AEF9BEF9CEF9DEF9EEF9FEFA0F040F041F042F043F044F7D0F045F046B2CDF047F048F049F04AF04BF04CF04DF04EF04FF050F051F052F053F054F055F056F057F058F059F05AF05BF05CF05DF05EF05FF060F061F062F063F7D1F064F065F066F067F068F069F06AF06BF06CF06DF06EF06FF070F071F072F073F074F075F076F077F078F079F07AF07BF07CF07DF07EF080F081F082F083F084F085F086F087F088F089F7D3F7D2F08AF08BF08CF08DF08EF08FF090F091F092F093F094F095F096E2BBF097BCA2F098E2BCE2BDE2BEE2BFE2C0E2C1B7B9D2FBBDA4CACEB1A5CBC7F099E2C2B6FCC8C4E2C3F09AF09BBDC8F09CB1FDE2C4F09DB6F6E2C5C4D9F09EF09FE2C6CFDAB9DDE2C7C0A1F0A0E2C8B2F6F140E2C9F141C1F3E2CAE2CBC2F8E2CCE2CDE2CECAD7D8B8D9E5CFE3F142F143F144F145F146F147F148F149F14AF14BF14CF0A5F14DF14EDCB0F14FF150F151F152F153F154F155F156F157F158F159F15AF15BF15CF15DF15EF15FF160F161F162F163F164F165F166F167F168F169F16AF16BF16CF16DF16EF16FF170F171F172F173F174F175F176F177F178F179F17AF17BF17CF17DF17EF180F181F182F183F184F185F186F187F188F189F18AF18BF18CF18DF18EF18FF190F191F192F193F194F195F196F197F198F199F19AF19BF19CF19DF19EF19FF1A0F240F241F242F243F244F245F246F247F248F249F24AF24BF24CF24DF24EF24FF250F251F252F253F254F255F256F257F258F259F25AF25BF25CF25DF25EF25FF260F261F262F263F264F265F266F267F268F269F26AF26BF26CF26DF26EF26FF270F271F272F273F274F275F276F277F278F279F27AF27BF27CF27DF27EF280F281F282F283F284F285F286F287F288F289F28AF28BF28CF28DF28EF28FF290F291F292F293F294F295F296F297F298F299F29AF29BF29CF29DF29EF29FF2A0F340F341F342F343F344F345F346F347F348F349F34AF34BF34CF34DF34EF34FF350F351C2EDD4A6CDD4D1B1B3DBC7FDF352B2B5C2BFE6E0CABBE6E1E6E2BED4E6E3D7A4CDD5E6E5BCDDE6E4E6E6E6E7C2EEF353BDBEE6E8C2E6BAA7E6E9F354E6EAB3D2D1E9F355F356BFA5E6EBC6EFE6ECE6EDF357F358E6EEC6ADE6EFF359C9A7E6F0E6F1E6F2E5B9E6F3E6F4C2E2E6F5E6F6D6E8E6F7F35AE6F8B9C7F35BF35CF35DF35EF35FF360F361F7BBF7BAF362F363F364F365F7BEF7BCBAA1F366F7BFF367F7C0F368F369F36AF7C2F7C1F7C4F36BF36CF7C3F36DF36EF36FF370F371F7C5F7C6F372F373F374F375F7C7F376CBE8F377F378F379F37AB8DFF37BF37CF37DF37EF380F381F7D4F382F7D5F383F384F385F386F7D6F387F388F389F38AF7D8F38BF7DAF38CF7D7F38DF38EF38FF390F391F392F393F394F395F7DBF396F7D9F397F398F399F39AF39BF39CF39DD7D7F39EF39FF3A0F440F7DCF441F442F443F444F445F446F7DDF447F448F449F7DEF44AF44BF44CF44DF44EF44FF450F451F452F453F454F7DFF455F456F457F7E0F458F459F45AF45BF45CF45DF45EF45FF460F461F462DBCBF463F464D8AAF465F466F467F468F469F46AF46BF46CE5F7B9EDF46DF46EF46FF470BFFDBBEAF7C9C6C7F7C8F471F7CAF7CCF7CBF472F473F474F7CDF475CEBAF476F7CEF477F478C4A7F479F47AF47BF47CF47DF47EF480F481F482F483F484F485F486F487F488F489F48AF48BF48CF48DF48EF48FF490F491F492F493F494F495F496F497F498F499F49AF49BF49CF49DF49EF49FF4A0F540F541F542F543F544F545F546F547F548F549F54AF54BF54CF54DF54EF54FF550F551F552F553F554F555F556F557F558F559F55AF55BF55CF55DF55EF55FF560F561F562F563F564F565F566F567F568F569F56AF56BF56CF56DF56EF56FF570F571F572F573F574F575F576F577F578F579F57AF57BF57CF57DF57EF580F581F582F583F584F585F586F587F588F589F58AF58BF58CF58DF58EF58FF590F591F592F593F594F595F596F597F598F599F59AF59BF59CF59DF59EF59FF5A0F640F641F642F643F644F645F646F647F648F649F64AF64BF64CF64DF64EF64FF650F651F652F653F654F655F656F657F658F659F65AF65BF65CF65DF65EF65FF660F661F662F663F664F665F666F667F668F669F66AF66BF66CF66DF66EF66FF670F671F672F673F674F675F676F677F678F679F67AF67BF67CF67DF67EF680F681F682F683F684F685F686F687F688F689F68AF68BF68CF68DF68EF68FF690F691F692F693F694F695F696F697F698F699F69AF69BF69CF69DF69EF69FF6A0F740F741F742F743F744F745F746F747F748F749F74AF74BF74CF74DF74EF74FF750F751F752F753F754F755F756F757F758F759F75AF75BF75CF75DF75EF75FF760F761F762F763F764F765F766F767F768F769F76AF76BF76CF76DF76EF76FF770F771F772F773F774F775F776F777F778F779F77AF77BF77CF77DF77EF780D3E3F781F782F6CFF783C2B3F6D0F784F785F6D1F6D2F6D3F6D4F786F787F6D6F788B1ABF6D7F789F6D8F6D9F6DAF78AF6DBF6DCF78BF78CF78DF78EF6DDF6DECFCAF78FF6DFF6E0F6E1F6E2F6E3F6E4C0F0F6E5F6E6F6E7F6E8F6E9F790F6EAF791F6EBF6ECF792F6EDF6EEF6EFF6F0F6F1F6F2F6F3F6F4BEA8F793F6F5F6F6F6F7F6F8F794F795F796F797F798C8FAF6F9F6FAF6FBF6FCF799F79AF6FDF6FEF7A1F7A2F7A3F7A4F7A5F79BF79CF7A6F7A7F7A8B1EEF7A9F7AAF7ABF79DF79EF7ACF7ADC1DBF7AEF79FF7A0F7AFF840F841F842F843F844F845F846F847F848F849F84AF84BF84CF84DF84EF84FF850F851F852F853F854F855F856F857F858F859F85AF85BF85CF85DF85EF85FF860F861F862F863F864F865F866F867F868F869F86AF86BF86CF86DF86EF86FF870F871F872F873F874F875F876F877F878F879F87AF87BF87CF87DF87EF880F881F882F883F884F885F886F887F888F889F88AF88BF88CF88DF88EF88FF890F891F892F893F894F895F896F897F898F899F89AF89BF89CF89DF89EF89FF8A0F940F941F942F943F944F945F946F947F948F949F94AF94BF94CF94DF94EF94FF950F951F952F953F954F955F956F957F958F959F95AF95BF95CF95DF95EF95FF960F961F962F963F964F965F966F967F968F969F96AF96BF96CF96DF96EF96FF970F971F972F973F974F975F976F977F978F979F97AF97BF97CF97DF97EF980F981F982F983F984F985F986F987F988F989F98AF98BF98CF98DF98EF98FF990F991F992F993F994F995F996F997F998F999F99AF99BF99CF99DF99EF99FF9A0FA40FA41FA42FA43FA44FA45FA46FA47FA48FA49FA4AFA4BFA4CFA4DFA4EFA4FFA50FA51FA52FA53FA54FA55FA56FA57FA58FA59FA5AFA5BFA5CFA5DFA5EFA5FFA60FA61FA62FA63FA64FA65FA66FA67FA68FA69FA6AFA6BFA6CFA6DFA6EFA6FFA70FA71FA72FA73FA74FA75FA76FA77FA78FA79FA7AFA7BFA7CFA7DFA7EFA80FA81FA82FA83FA84FA85FA86FA87FA88FA89FA8AFA8BFA8CFA8DFA8EFA8FFA90FA91FA92FA93FA94FA95FA96FA97FA98FA99FA9AFA9BFA9CFA9DFA9EFA9FFAA0FB40FB41FB42FB43FB44FB45FB46FB47FB48FB49FB4AFB4BFB4CFB4DFB4EFB4FFB50FB51FB52FB53FB54FB55FB56FB57FB58FB59FB5AFB5BC4F1F0AFBCA6F0B0C3F9FB5CC5B8D1BBFB5DF0B1F0B2F0B3F0B4F0B5D1BCFB5ED1ECFB5FF0B7F0B6D4A7FB60CDD2F0B8F0BAF0B9F0BBF0BCFB61FB62B8EBF0BDBAE8FB63F0BEF0BFBEE9F0C0B6ECF0C1F0C2F0C3F0C4C8B5F0C5F0C6FB64F0C7C5F4FB65F0C8FB66FB67FB68F0C9FB69F0CAF7BDFB6AF0CBF0CCF0CDFB6BF0CEFB6CFB6DFB6EFB6FF0CFBAD7FB70F0D0F0D1F0D2F0D3F0D4F0D5F0D6F0D8FB71FB72D3A5F0D7FB73F0D9FB74FB75FB76FB77FB78FB79FB7AFB7BFB7CFB7DF5BAC2B9FB7EFB80F7E4FB81FB82FB83FB84F7E5F7E6FB85FB86F7E7FB87FB88FB89FB8AFB8BFB8CF7E8C2B4FB8DFB8EFB8FFB90FB91FB92FB93FB94FB95F7EAFB96F7EBFB97FB98FB99FB9AFB9BFB9CC2F3FB9DFB9EFB9FFBA0FC40FC41FC42FC43FC44FC45FC46FC47FC48F4F0FC49FC4AFC4BF4EFFC4CFC4DC2E9FC4EF7E1F7E2FC4FFC50FC51FC52FC53BBC6FC54FC55FC56FC57D9E4FC58FC59FC5ACAF2C0E8F0A4FC5BBADAFC5CFC5DC7ADFC5EFC5FFC60C4ACFC61FC62F7ECF7EDF7EEFC63F7F0F7EFFC64F7F1FC65FC66F7F4FC67F7F3FC68F7F2F7F5FC69FC6AFC6BFC6CF7F6FC6DFC6EFC6FFC70FC71FC72FC73FC74FC75EDE9FC76EDEAEDEBFC77F6BCFC78FC79FC7AFC7BFC7CFC7DFC7EFC80FC81FC82FC83FC84F6BDFC85F6BEB6A6FC86D8BEFC87FC88B9C4FC89FC8AFC8BD8BBFC8CDCB1FC8DFC8EFC8FFC90FC91FC92CAF3FC93F7F7FC94FC95FC96FC97FC98FC99FC9AFC9BFC9CF7F8FC9DFC9EF7F9FC9FFCA0FD40FD41FD42FD43FD44F7FBFD45F7FAFD46B1C7FD47F7FCF7FDFD48FD49FD4AFD4BFD4CF7FEFD4DFD4EFD4FFD50FD51FD52FD53FD54FD55FD56FD57C6EBECB4FD58FD59FD5AFD5BFD5CFD5DFD5EFD5FFD60FD61FD62FD63FD64FD65FD66FD67FD68FD69FD6AFD6BFD6CFD6DFD6EFD6FFD70FD71FD72FD73FD74FD75FD76FD77FD78FD79FD7AFD7BFD7CFD7DFD7EFD80FD81FD82FD83FD84FD85B3DDF6B3FD86FD87F6B4C1E4F6B5F6B6F6B7F6B8F6B9F6BAC8A3F6BBFD88FD89FD8AFD8BFD8CFD8DFD8EFD8FFD90FD91FD92FD93C1FAB9A8EDE8FD94FD95FD96B9EAD9DFFD97FD98FD99FD9AFD9";encodeToGb2312(o){for(var u="",Z=0;Z<o.length;Z++){var h=o.charAt(Z),R=o.charCodeAt(Z);if(h==" ")u+="+";else if(R>=19968&&R<=40869){let A=R-19968;u+="%"+this.z.substr(A*4,2)+"%"+this.z.substr(A*4+2,2)}else u+="%"+o.charCodeAt(Z).toString(16)}return u}decodeFromGb2312(o){for(var u="",Z=0;Z<o.length;Z++){var h=o.charAt(Z);if(h=="+")u+=" ";else if(h!="%")u+=h;else{Z++;var R=o.charAt(Z);if(isNaN(parseInt(R)))try{var A=o.substr(Z,2)+o.substr(Z+3,2);Z=Z+4;for(var v=-1;(v=this.z.indexOf(A,v+1))!=-1;)if(v%4==0){u+=String.fromCharCode(v/4+19968);break}}catch{}else{Z++;try{u+=decodeURIComponent(h+R+o.charAt(Z))}catch{console.log("decodeURIComponent error"),console.log(h+R+o.charAt(Z))}}}}return u}}let Be=new Sl;const xl=new FinalizationRegistry(X=>{J.MxCpp.App.DestroyObject(X)}),Kl={};J.McDb=void 0,(X=>{(o=>{o[o.kTextLeft=0]="kTextLeft",o[o.kTextCenter=1]="kTextCenter",o[o.kTextRight=2]="kTextRight",o[o.kTextAlign=3]="kTextAlign",o[o.kTextMid=4]="kTextMid",o[o.kTextFit=5]="kTextFit"})(X.TextHorzMode||(X.TextHorzMode={})),(o=>{o[o.kTextBase=0]="kTextBase",o[o.kTextBottom=1]="kTextBottom",o[o.kTextVertMid=2]="kTextVertMid",o[o.kTextTop=3]="kTextTop"})(X.TextVertMode||(X.TextVertMode={})),(o=>{o[o.kTopLeft=1]="kTopLeft",o[o.kTopCenter=2]="kTopCenter",o[o.kTopRight=3]="kTopRight",o[o.kMiddleLeft=4]="kMiddleLeft",o[o.kMiddleCenter=5]="kMiddleCenter",o[o.kMiddleRight=6]="kMiddleRight",o[o.kBottomLeft=7]="kBottomLeft",o[o.kBottomCenter=8]="kBottomCenter",o[o.kBottomRight=9]="kBottomRight",o[o.kBaseLeft=10]="kBaseLeft",o[o.kBaseCenter=11]="kBaseCenter",o[o.kBaseRight=12]="kBaseRight",o[o.kBaseAlign=13]="kBaseAlign",o[o.kBottomAlign=14]="kBottomAlign",o[o.kMiddleAlign=15]="kMiddleAlign",o[o.kTopAlign=16]="kTopAlign",o[o.kBaseFit=17]="kBaseFit",o[o.kBottomFit=18]="kBottomFit",o[o.kMiddleFit=19]="kMiddleFit",o[o.kTopFit=20]="kTopFit",o[o.kBaseMid=21]="kBaseMid",o[o.kBottomMid=22]="kBottomMid",o[o.kMiddleMid=23]="kMiddleMid",o[o.kTopMid=24]="kTopMid"})(X.AttachmentPoint||(X.AttachmentPoint={})),(o=>{o[o.kLnWt000=0]="kLnWt000",o[o.kLnWt005=5]="kLnWt005",o[o.kLnWt009=9]="kLnWt009",o[o.kLnWt013=13]="kLnWt013",o[o.kLnWt015=15]="kLnWt015",o[o.kLnWt018=18]="kLnWt018",o[o.kLnWt020=20]="kLnWt020",o[o.kLnWt025=25]="kLnWt025",o[o.kLnWt030=30]="kLnWt030",o[o.kLnWt035=35]="kLnWt035",o[o.kLnWt040=40]="kLnWt040",o[o.kLnWt050=50]="kLnWt050",o[o.kLnWt053=53]="kLnWt053",o[o.kLnWt060=60]="kLnWt060",o[o.kLnWt070=70]="kLnWt070",o[o.kLnWt080=80]="kLnWt080",o[o.kLnWt090=90]="kLnWt090",o[o.kLnWt100=100]="kLnWt100",o[o.kLnWt106=106]="kLnWt106",o[o.kLnWt120=120]="kLnWt120",o[o.kLnWt140=140]="kLnWt140",o[o.kLnWt158=158]="kLnWt158",o[o.kLnWt200=200]="kLnWt200",o[o.kLnWt211=211]="kLnWt211",o[o.kLnWtByLayer=-1]="kLnWtByLayer",o[o.kLnWtByBlock=-2]="kLnWtByBlock",o[o.kLnWtByLwDefault=-3]="kLnWtByLwDefault"})(X.LineWeight||(X.LineWeight={}))})(J.McDb||(J.McDb={}));class at{imp=0;constructor(o){this.imp=o,this.imp&&xl.register(this,o,Kl)}getImp(){return this.imp}initTempObject(o){this.imp=o}get ObjectName(){return this.imp.getObjectName()}get Dxf0(){return this.imp.getDxf0()}getJson(){let o=this.imp.getJson();return Be.decodeFromGb2312(o)}setJson(o){let u=Be.encodeToGb2312(o);return this.imp.setJson(u)}}class dt extends at{constructor(o){super(o)}getObjectID(){return this.imp.getObjectID()}Erase(){return this.imp.Erase()}Clone(){let o=this.imp.Clone();return J.MxCpp.App.CreateCloneObject(o)}}class $t extends dt{constructor(o){super(o)}}class Ll extends dt{constructor(o){super(o)}}class Pl extends dt{constructor(o){super(o)}}class Se extends dt{constructor(o){super(o)}moveGripPointsAt(o,u,Z,h){return this.imp.moveGripPointsAt(o,u,Z,h)}}class ot extends Se{constructor(o){super(o)}getStartParam(){return{val:this.imp.getStartParam(),ret:J.MxCpp.getCallResult()}}getEndParam(){return{val:this.imp.getEndParam(),ret:J.MxCpp.getCallResult()}}getDistAtParam(o){return{val:this.imp.getDistAtParam(o),ret:J.MxCpp.getCallResult()}}getParamAtDist(o){return{val:this.imp.getParamAtDist(o),ret:J.MxCpp.getCallResult()}}getDistAtPoint(o){return{val:this.imp.getDistAtPoint(o),ret:J.MxCpp.getCallResult()}}getPointAtDist(o){return{val:this.imp.getPointAtDist(o),ret:J.MxCpp.getCallResult()}}}class en extends at{constructor(o){super(o)}GetLayerTable(){return new $t(this.imp.GetLayerTable())}GetLinetypeTable(){return new Ll(this.imp.GetLinetypeTable())}GetTextStyleTable(){return new Pl(this.imp.GetTextStyleTable())}GetCurrentlyLineTypeScale(){return this.imp.GetCurrentlyLineTypeScale()}SetCurrentlyLineTypeScale(o){return this.imp.SetCurrentlyLineTypeScale(o)}GetCurrentlyLineTypeName(){let o=this.imp.GetCurrentlyLineTypeName();return Be.decodeFromGb2312(o)}SetCurrentlyLineTypeName(o){let u=Be.encodeToGb2312(o);this.imp.SetCurrentlyLineTypeName(u)}GetCurrentlyLayerName(){let o=this.imp.GetCurrentlyLayerName();return Be.decodeFromGb2312(o)}SetCurrentlyLayerName(o){let u=Be.encodeToGb2312(o);this.imp.SetCurrentlyLayerName(u)}GetCurrentlyTrueColor(){return this.imp.GetCurrentlyTrueColor()}SetCurrentlyTrueColor(o){return this.imp.SetCurrentlyTrueColor(o)}GetCurrentlyColorIndex(){return this.imp.GetCurrentlyColorIndex()}SetCurrentlyColorIndex(o){return this.imp.SetCurrentlyColorIndex(o)}GetCurrentlyTextStyleName(){let o=this.imp.GetCurrentlyTextStyleName();return Be.decodeFromGb2312(o)}SetCurrentlyTextStyle(o){let u=Be.encodeToGb2312(o);this.imp.SetCurrentlyTextStyle(u)}}class xe{imp;mxObject;static currentFileName;constructor(o){this.imp=o}initMxObject(o){this.mxObject=o}getImp(){return this.imp}getMxCppImp(){return J.MxCpp.mxcadassemblyimp}updateDisplay(o,u){this.imp.updateDisplay(o,u)}test(){this.imp.test()}openWebFile(o,u,Z=!0){let h=Math.round(Math.random()*1e7);if(u){let R=this,A=(v,S)=>{R.mxObject.removeEventFuction("openFileComplete",A),h==S&&u(v)};this.mxObject.addEvent("openFileComplete",A)}return xe.currentFileName=o,this.imp.openWebFile(o,Z,h)}getCurrentFileName(){return xe.currentFileName}saveFileToUrl(o){return this.imp.saveFileToUrl(o)}saveFile(o,u,Z=!0,h=!0){o||(o=this.getCurrentFileName());const R=window;return R.mx_saveFile_call=A=>{if(u&&u(A),!!A){if(Z){let v;/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?v=new Blob([A.buffer],{type:"application/octet-stream"}):v=new Blob([A.buffer],{type:"application/octet-binary"}),h?Oe.saveAsFileDialog({blob:v,filename:o,types:[{description:"mxweb File",accept:{"application/octet-stream":[".mxweb"]}}]}):Oe.downloadFile(v,o)}R.mx_saveFile_call=null}},this.imp.saveFile(o)}GetDatabase(){return new en(this.imp.GetDatabase())}GetSysVarString(o){return this.imp.GetSysVarString(o)}SetSysVarString(o,u){return this.imp.SetSysVarString(o,u)}GetSysVarDouble(o){return this.imp.GetSysVarDouble(o)}SetSysVarDouble(o,u){return this.imp.SetSysVarDouble(o,u)}GetSysVarLong(o){return this.imp.GetSysVarLong(o)}SetSysVarLong(o,u){return this.imp.SetSysVarLong(o,u)}get DrawColor(){return this.imp.GetDrawColor()}set DrawColor(o){this.imp.SetDrawColor(o)}get DrawLineWeight(){return this.imp.GetDrawLineWeight()}set DrawLineWeight(o){this.imp.SetDrawLineWeight(o)}get DrawLineTypeScale(){return this.imp.GetDrawLineTypeScale()}set DrawLineTypeScale(o){this.imp.SetDrawLineTypeScale(o)}get DrawLinetype(){return this.imp.GetDrawLinetype()}set DrawLinetype(o){this.imp.SetDrawLinetype(o)}get DrawTextStyle(){return this.imp.GetDrawTextStyle()}set DrawTextStyle(o){this.imp.SetDrawTextStyle(o)}get DrawLayer(){return this.imp.GetDrawLayer()}set DrawLayer(o){this.imp.SetDrawLayer(o)}AddLayer(o){this.imp.AddLayer(o)}AddTextStyle(o,u,Z,h){this.imp.AddTextStyle(o,u,Z,h)}AddLinetype(o,u){this.imp.AddLinetype(o,u)}AddLinetypeEx(o,u,Z){this.imp.AddLinetypeEx(o,u,Z)}DrawLine(o,u,Z,h,R,A){return this.imp.DrawLine(o,u,Z,h,R,A)}AddDimStyle(o,u,Z,h,R){return this.imp.AddDimStyle(o,u,Z,h,R)}get DrawDimStyle(){return this.imp.GetDrawDimStyle()}set DrawDimStyle(o){this.imp.SetDrawDimStyle(o)}get DrawPatternDefinition(){return this.imp.GetPatternDefinition()}set DrawPatternDefinition(o){this.imp.SetPatternDefinition(o)}get DrawLineWidth(){return this.imp.GetDrawLineWidth()}set DrawLineWidth(o){this.imp.SetDrawLineWidth(o)}DrawArc(o,u,Z,h,R){return this.imp.DrawArc(o,u,Z,h,R)}DrawArc2(o,u,Z,h,R,A){return this.imp.DrawArc2(o,u,Z,h,R,A)}DrawCircle(o,u,Z){return this.imp.DrawCircle(o,u,Z)}DrawEllipse(o,u,Z,h,R){return this.imp.DrawEllipse(o,u,Z,h,R)}DrawEllipseArc(o,u,Z,h,R,A,v){return this.imp.DrawEllipseArc(o,u,Z,h,R,A,v)}DrawPoint(o,u){return this.imp.DrawPoint(o,u)}DrawSolid(o,u,Z,h,R,A,v,S){return this.imp.DrawSolid(o,u,Z,h,R,A,v,S)}DrawMText(o,u,Z,h,R,A,v){return this.imp.DrawMText(o,u,Z,h,R,A,v)}DrawText(o,u,Z,h,R,A,v){return this.imp.DrawTextDrawText(o,u,Z,h,R,A,v)}DrawBlockReference(o,u,Z,h,R){return this.imp.DrawBlockReference(o,u,Z,h,R)}DrawDimAligned(o,u,Z,h,R,A){return this.imp.DrawDimAligned(o,u,Z,h,R,A)}DrawDimAngular(o,u,Z,h,R,A,v,S){return this.imp.DrawDimAngular(o,u,Z,h,R,A,v,S)}DrawDimDiametric(o,u,Z,h,R){return this.imp.DrawDimDiametric(o,u,Z,h,R)}DrawDimRotated(o,u,Z,h,R,A,v){return this.imp.DrawDimRotated(o,u,Z,h,R,A,v)}DrawDimOrdinate(o,u,Z,h,R){return this.imp.DrawDimOrdinate(o,u,Z,h,R)}DrawDimRadial(o,u,Z,h,R){return this.imp.DrawDimRadial(o,u,Z,h,R)}PathMoveTo(o,u){this.imp.PathMoveTo(o,u)}PathMoveToEx(o,u,Z,h,R){this.imp.PathMoveToEx(o,u,Z,h,R)}PathLineTo(o,u){this.imp.PathLineTo(o,u)}PathLineToEx(o,u,Z,h,R){this.imp.PathLineToEx(o,u,Z,h,R)}DrawPathToPolyline(){return this.imp.DrawPathToPolyline()}DrawPathToSpline(){return this.imp.DrawPathToSpline()}PathMakeClosed(){this.imp.PathMakeClosed()}DrawPathToHatch(o){return this.imp.DrawPathToHatch(o)}DrawEntity(o){return this.imp.DrawEntity(o.getImp())}ObjectIdToObject(o){return J.MxCpp.App.ObjectIdToObject(o)}CloneMdDbObject(o){let u=this.imp.CloneMdDbObject(o);return J.MxCpp.App.CreateCloneObject(u)}ObjectIdToMdObjectImp(o){return J.MxCpp.App.getImp().ObjectIdToMdObject(o)}DestroyObject(o){!o||J.MxCpp.App.getImp().DestroyObject(o)}}class Hl{imp;init(o){this.imp=o}getImp(){return this.imp}getLastCallResult(){return this.imp.getLastCallResult()}CreateMxCAD(o,u,Z,h,R){let A=this.imp.CreateMxDraw(o,u,Z,h,R);return new xe(A)}DestroyObject(o){this.imp.DestroyObject(o)}GetCurrentMxCAD(){return new xe(this.imp.GetCurrentMxDraw())}mcedRGB2Index(o,u,Z,h=!0){return this.imp.mcedRGB2Index(o,u,Z,h)}ObjectIdToObject(o){if(!o)return null;let u=this.imp.ObjectIdToObjectName(o);if(u=="McDbLine"){let Z=this.imp.ObjectIdToMdDbLine(o);return new mt(Z)}else if(u=="McDbText"){let Z=this.imp.ObjectIdToMdDbText(o);return new ut(Z)}else if(u=="McDbPolyline"){let Z=this.imp.ObjectIdToMdDbPolyline(o);return new tn(Z)}else if(u=="McDbCircle"){let Z=this.imp.ObjectIdToMdDbCircle(o);return new yt(Z)}else if(u=="McDbBlockReference"){let Z=this.imp.ObjectIdToMdDbBlockReference(o);return new Ul(Z)}else if(u=="McDbAlignedDimension"){let Z=this.imp.ObjectIdToMdDbAlignedDimension(o);return new Ql(Z)}else if(u=="McDbMText"){let Z=this.imp.ObjectIdToMdDbMText(o);return new zl(Z)}return console.log("Mx: ObjectIdToObject error type"),null}CreateCloneObject(o){let u=o.getObjectName();if(u=="McDbLine"){let Z=new mt;return Z.getImp().ConnectionTempObject(o),J.MxCpp.App.DestroyObject(o),Z}else if(u=="McDbText"){let Z=new ut;return Z.getImp().ConnectionTempObject(o),J.MxCpp.App.DestroyObject(o),Z}return console.log("Mx: Clone error type"),new dt(o)}}class Il{mxcadassemblyimp;App=new Hl;NewMdCmColor(){return new this.mxcadassemblyimp.MdCmColor}getCallResult(){return this.App.getLastCallResult()}NewMdGePoint3d(o,u){if(u&&o&&o.x&&o.y){let h=o.z||0;o=k.MxFun.getCurrentDraw().docCoord2Cad(o.x,o.y,h)}let Z=new this.mxcadassemblyimp.MdGePoint3d;return o&&o.x&&o.y&&(Z.x=o.x,Z.y=o.y,o.z&&(Z.y=o.z)),Z}NewMdGePoint3d2(o,u,Z){let h=new this.mxcadassemblyimp.MdGePoint3d;return h.x=o,h.y=u,Z&&(h.y=Z),h}}class mt extends ot{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbLine)}get startPoint(){return this.imp.startPoint()}set startPoint(o){this.imp.setStartPoint(o)}get endPoint(){return this.imp.endPoint()}set endPoint(o){this.imp.setEndPoint(o)}}class ut extends Se{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbText)}get position(){return this.imp.position()}set position(o){this.imp.setPosition(o)}get alignmentPoint(){return this.imp.position()}set alignmentPoint(o){this.imp.setAlignmentPoint(o)}get oblique(){return this.imp.oblique()}set oblique(o){this.imp.setOblique(o)}get rotation(){return this.imp.rotation()}set rotation(o){this.imp.setRotation(o)}get height(){return this.imp.height()}set height(o){this.imp.setHeight(o)}get widthFactor(){return this.imp.widthFactor()}set widthFactor(o){this.imp.setWidthFactor(o)}get textString(){return Be.decodeFromGb2312(this.imp.textString())}set textString(o){this.imp.setTextString(Be.encodeToGb2312(o))}get horizontalMode(){return this.imp.horizontalMode()}set horizontalMode(o){this.imp.setHorizontalMode(o)}get verticalMode(){return this.imp.verticalMode()}set verticalMode(o){this.imp.setVerticalMode(o)}}class zl extends Se{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbMText)}get location(){return this.imp.location()}set location(o){this.imp.setLocation(o)}get rotation(){return this.imp.rotation()}set rotation(o){this.imp.setRotation(o)}get width(){return this.imp.width()}set width(o){this.imp.setWidth(o)}get textHeight(){return this.imp.textHeight()}set textHeight(o){this.imp.setTextHeight(o)}get attachment(){return this.imp.attachment()}set attachment(o){this.imp.setAttachment(o)}get contents(){return Be.decodeFromGb2312(this.imp.contents())}set contents(o){this.imp.setContents(Be.encodeToGb2312(o))}}class yt extends ot{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbCircle)}setCenter(o,u,Z){this.imp.setCenter(o,u,Z)}get center(){return this.imp.center()}set center(o){this.imp.setCenter(o)}get radius(){return this.imp.radius()}set radius(o){this.imp.setRadius(o)}}class tn extends ot{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbPolyline)}get isClosed(){return this.imp.isClosed()}set isClosed(o){this.imp.setClosed(o)}get constantWidth(){return this.imp.getConstantWidth()}set constantWidth(o){this.imp.setConstantWidth(o)}addVertexAt(o,u,Z,h,R){return this.imp.addVertexAt(o,u,Z,h,R)}removeVertexAt(o){return this.imp.removeVertexAt(o)}numVerts(){return this.imp.numVerts()}getPointAt(o){return{val:this.imp.getPointAt(o),ret:J.MxCpp.getCallResult()}}getBulgeAt(o){return this.imp.getBulgeAt(o)}getWidthsAt(o){return{val1:this.imp.getStartWidthsAt(o),val2:this.imp.getEndWidthsAt(o),ret:J.MxCpp.getCallResult()}}setPointAt(o,u){return this.imp.setPointAt(o,u)}setBulgeAt(o,u){return this.imp.setBulgeAt(o,u)}}class Ul extends Se{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbBlockReference)}get blockTableRecordId(){return this.imp.blockTableRecord()}set blockTableRecordId(o){this.imp.setBlockTableRecordId(o)}get position(){return this.imp.position()}set position(o){this.imp.setPosition(o)}get scaleFactors(){return this.imp.scaleFactors()}set scaleFactors(o){this.imp.setScaleFactors(o)}get rotation(){return this.imp.rotation()}set rotation(o){this.imp.setRotation(o)}get blockTransform(){return this.imp.blockTransform()}set blockTransform(o){this.imp.setBlockTransform(o)}}class Ol extends Se{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbDimension)}get textPosition(){return this.imp.textPosition()}set textPosition(o){this.imp.setTextPosition(o)}isUsingDefaultTextPosition(){return this.imp.isUsingDefaultTextPosition()}useSetTextPosition(){return this.imp.useSetTextPosition()}useDefaultTextPosition(){return this.imp.useDefaultTextPosition()}get elevation(){return this.imp.elevation()}set elevation(o){this.imp.setElevation(o)}get dimensionText(){return this.imp.dimensionText()}set dimensionText(o){this.imp.setDimensionText(o)}get textRotation(){return this.imp.textRotation()}set textRotation(o){this.imp.setTextRotation(o)}get dimensionStyle(){return this.imp.dimensionStyle()}set dimensionStyle(o){this.imp.setDimensionStyle(o)}get textAttachment(){return this.imp.textAttachment()}set textAttachment(o){this.imp.setTextAttachment(o)}get horizontalRotation(){return this.imp.horizontalRotation()}set horizontalRotation(o){this.imp.setHorizontalRotation(o)}recomputeDimBlock(){this.imp.recomputeDimBlock(!0)}getDimVarInt(o){return this.imp.GetDimVarInt(o)}setDimVarInt(o,u){this.imp.SetDimVarInt(o,u)}getDimVarDouble(o){return this.imp.GetDimVarDouble(o)}setDimVarDouble(o,u){this.imp.SetDimVarDouble(o,u)}getDimVarString(o){return this.imp.GetDimVarString(o)}setDimVarString(o,u){this.imp.SetDimVarString(o,u)}getDimVarObjectId(o){return this.imp.GetDimVarObjectId(o)}setDimVarObjectId(o,u){this.imp.SetDimVarObjectId(o,u)}}class Ql extends Ol{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.MdDbAlignedDimension)}get xLine1Point(){return this.imp.xLine1Point()}set xLine1Point(o){this.imp.setXLine1Point(o)}get xLine2Point(){return this.imp.xLine2Point()}set xLine2Point(o){this.imp.setXLine2Point(o)}get dimLinePoint(){return this.imp.dimLinePoint()}set dimLinePoint(o){this.imp.setDimLinePoint(o)}get oblique(){return this.imp.oblique()}set oblique(o){this.imp.setOblique(o)}}class Mn extends at{constructor(o){super(o),o||this.initTempObject(new J.MxCpp.mxcadassemblyimp.McDrawResbuf)}Clear(){this.imp.Clear()}GetCount(){return this.imp.GetCount()}AtDouble(o){return{val:this.imp.AtDouble(o),ret:J.MxCpp.getCallResult()}}Atlong(o){return{val:this.imp.Atlong(o),ret:J.MxCpp.getCallResult()}}AtObjectId(o){return{val:this.imp.AtObjectId(o),ret:J.MxCpp.getCallResult()}}AtString(o){return{val:Be.decodeFromGb2312(this.imp.AtString(o)),ret:J.MxCpp.getCallResult()}}AtPoint(o){return{val:this.imp.AtPoint(o),ret:J.MxCpp.getCallResult()}}ItemDataType(){return this.imp.ItemDataType()}AddDouble(o,u=-10){return this.imp.AddDouble(o,u)}Addlong(o,u=-10){return this.imp.Addlong(o,u)}AddObjectId(o,u=-10){return this.imp.AddObjectId(o,u)}AddString(o,u=-10){return this.imp.AddString(o,u)}AddPoint(o,u=-10){return this.imp.AddPoint(o,u)}RemoveAll(){this.imp.RemoveAll()}Remove(o){this.imp.Remove(o)}}class ht{id;type;constructor(o,u){this.id=o,this.type=u}getType(){return this.type}getId(){return this.id}erase(){this.type==1?k.MxFun.getCurrentDraw().eraseMxEntity(this.id):this.type==0&&Gt.eraseEntity(this.id)}}class ql{imp;constructor(){}init(){this.imp||(this.imp=new J.MxCpp.mxcadassemblyimp.McDrawUtility)}eraseEntity(o){return this.init(),this.imp.eraseEntity(o)}highlightEntity(o,u=!0){return this.init(),this.imp.highlightEntity(o,u)}findEntAtPoint(o,u,Z,h=-1,R=null){this.init();let A;return R==null?A=new J.MxCpp.mxcadassemblyimp.McDrawResbuf:A=R.getImp(),this.imp.findEntAtPoint(o,u,Z,h,A)}selectEnt(o,u=null){return this.init(),new Promise(async Z=>{const h=new k.MrxDbgUiPrPoint;o&&h.setMessage(o),h.setCursorType(qt.kRect);let R=await h.go();if(!R){Z([]);return}k.MrxDbgUtils.findEntAtPoint(R).then(A=>{let v=[];A.forEach(T=>{v.push(new ht(T,1))});let S=this.findEntAtPoint(R.x,R.y,R.z,-1,u);S!=0&&v.push(new ht(S,0)),Z(v)})})}}let Gt=new ql;const wn=()=>k.store.state.MxFun.stopRunCommand();function nn(X,o,u,Z){const h=X-u,R=o-Z;let A=0;return h==0?A=Math.PI/2:A=Math.atan(Math.abs(R/h)),h<0&&R>=0?A=Math.PI-A:h<0&&R<0?A=Math.PI+A:h>=0&&R<0&&(A=Math.PI*2-A),A}async function rn(){const X=new k.MrxDbgUiPrPoint;let o=new k.MxDbLine,u=[];X.setMessage(`
|
|
12
|
+
\u6307\u5B9A\u7B2C\u4E00\u70B9:`);let Z=await X.go();X.setUserDraw((R,A)=>{u.forEach(v=>{A.drawCustomEntity(v)}),A.drawLine(Z,R)});const h=()=>{X.setMessage(`
|
|
13
|
+
\u6307\u5B9A\u4E0B\u4E00\u4E2A\u70B9:`),u.length>1?X.setKeyWords("[\u9000\u51FA(E)/\u95ED\u5408(C)/\u653E\u5F03(U)]"):X.setKeyWords("[\u9000\u51FA(E)/\u653E\u5F03(U)]")};h(),X.goWhile(R=>{if(R===k.MrxDbgUiPrBaseReturn.kOk&&(o=new k.MxDbLine,k.MxPaintBrush.use(o),o.pt1=Z,o.pt2=X.value(),Z=o.pt2.clone(),u.push(o),h()),R===k.MrxDbgUiPrBaseReturn.kKeyWord){if(X.isKeyWordPicked("E"))wn();else if(X.isKeyWordPicked("C")){const A=new k.MxDbLine;return A.pt1=Z.clone(),A.pt2=u[0].pt1.clone(),k.MxPaintBrush.use(A),u.push(A),Z=A.pt2.clone(),wn(),{exit:!0}}}},R=>(R===k.MrxDbgUiPrBaseReturn.kCancel&&u.forEach(A=>{k.MxFun.getCurrentDraw().addMxEntity(A)}),{exit:!0}))}async function $l(){{const X=new k.MrxDbgUiPrPoint;X.setMessage(`
|
|
14
|
+
\u6307\u5B9A\u4E00\u70B9:`);let o=await X.go(),u=new mt,Z=new ut;Z.textString="\u6D4B\u8BD5Test",Z.height=k.MxFun.viewCoordLong2Cad(100),u.startPoint=J.MxCpp.NewMdGePoint3d(o),X.setUserDraw((S,T)=>{u.endPoint=J.MxCpp.NewMdGePoint3d(S),Z.position=J.MxCpp.NewMdGePoint3d(S),Z.alignmentPoint=Z.position,T.drawMcDbEntity(u),T.drawMcDbEntity(Z)}),X.setMessage(`
|
|
15
|
+
\u6307\u5B9A\u4E8C\u70B9:`),await X.go();let h=J.MxCpp.App.GetCurrentMxCAD();h.DrawEntity(Z);let R=J.MxCpp.NewMdCmColor();R.setRGB(255,45,66),h.DrawColor=R;let A=h.DrawLine(o.x,o.y,0,o.x+5e4,o.y,0);h.DrawCircle(o.x,o.y,1e4);let v=h.ObjectIdToObject(A);if(v&&v.ObjectName=="McDbLine"){let S=v,T=S.startPoint,L=S.endPoint;console.log(T.x),console.log(L.x)}}}k.store.events.on("MxDbEntityRegister",()=>{k.MxFun.addCommand("Mx_Line",rn),k.MxFun.addCommand("Mx_TestDraw",$l)});async function Tn(){const X=new k.MrxDbgUiPrPoint;X.setMessage(`
|
|
16
|
+
\u6307\u5B9A\u63D2\u5165\u4F4D\u7F6E:`);let o=await X.go();if(o==null)return;let u=`\u6D4B\u8BD5
|
|
17
|
+
\u6D4B\u8BD5`;if(u.length<=0)return;let Z=k.MxFun.screenCoordLong2Doc(50);u=Oe.b64Encode(u);const h={postx:o.x,posty:o.y,text:u,height:Z};k.MxFun.call("Mx_MText",h)}async function cn(){const X=new k.MrxDbgUiPrPoint,o=new k.MxDbPolyline;k.MxPaintBrush.use(o),X.setMessage(`
|
|
18
|
+
\u6307\u5B9A\u8D77\u70B9:`);let u;X.setUserDraw((Z,h)=>{h.drawCustomEntity(o),u&&h.drawLine(u,Z)}),X.goWhile(Z=>{if(Z===k.MrxDbgUiPrBaseReturn.kOk){const h=X.value();o.points.push(X.value()),u=h,X.setMessage(`
|
|
19
|
+
\u6307\u5B9A\u4E0B\u4E00\u4E2A\u70B9:`),X.setKeyWords("[\u5706\u5F27(A)/\u5BBD\u5EA6(W)]")}else Z===k.MrxDbgUiPrBaseReturn.kKeyWord&&(X.isKeyWordPicked("A"),X.isKeyWordPicked("W"))},Z=>{Z===k.MrxDbgUiPrBaseReturn.kCancel&&k.MxFun.getCurrentDraw().addMxEntity(o)})}k.store.events.on("MxDbEntityRegister",()=>{k.MxFun.addCommand("Mx_Pline",cn)});async function ln(){const X=new k.MrxDbgUiPrPoint;X.setMessage(`
|
|
20
|
+
\u6307\u5B9A\u4E00\u70B9:`);let o=await X.go(),u=new yt;u.setCenter(o.x,o.y,o.z);let Z=5;X.setUserDraw((h,R)=>{u.radius=o.distanceTo(h);let A=u.getEndParam().val,S=u.getDistAtParam(A).val/Z,T=0,L=new THREE.Vector3,z=new THREE.Vector3;for(let te=0;te<Z;te++){let j=u.getPointAtDist(T).val;T+=S,te>0?R.drawMcDbLine(j.x,j.y,j.z,L.x,L.y,L.z):z=new THREE.Vector3(j.x,j.y,j.z),te==Z-1&&R.drawMcDbLine(j.x,j.y,j.z,z.x,z.y,z.z),L=new THREE.Vector3(j.x,j.y,j.z)}}),X.setMessage(`
|
|
21
|
+
\u6307\u5B9A\u4E8C\u70B9:`),await X.go(),X.drawReserve()}k.store.events.on("MxDbEntityRegister",()=>{k.MxFun.addCommand("Mx_Polygon",ln)});function ea(X,o,u){const Z=X.x,h=o.x,R=u.x,A=X.y,v=o.y,S=u.y,T=Z-h,L=A-v,z=Z-R,te=A-S,j=(Z*Z-h*h+(A*A-v*v))/2,Q=(Z*Z-R*R+(A*A-S*S))/2,de=L*z-T*te,ne=-(te*j-L*Q)/de,$=-(T*Q-z*j)/de;return new THREE.Vector3(ne,$,0)}function ta(X,o){const u=X.x,Z=X.y,h=o.x,R=o.y;return Math.sqrt((u-h)*(u-h)+(Z-R)*(Z-R))}function na(X,o,u){let Z;X<u?Z=u-X:Z=u-X+360;let h;return X<o?h=o-X:h=o-X+360,h>Z}function an(X,o,u){const Z=X.x,h=o.x,R=X.y,A=o.y;let v,S,T;return v=(R-A)/u,S=(Z-h)/u,S>=.99999&&(S=.99999),S<=-.99999&&(S=-.99999),T=Math.acos(S),T=T/Math.PI*180,v<-.05&&(T=360-T),{sin:v,cos:S,angle:T}}const Ge=(X,o,u)=>{const Z=()=>{X.go(h=>{if(h===k.MrxDbgUiPrBaseReturn.kKeyWord&&u()&&Z(),h===k.MrxDbgUiPrBaseReturn.kOk&&o()&&Z(),h===k.MrxDbgUiPrBaseReturn.kNone&&Z(),h===k.MrxDbgUiPrBaseReturn.kCancel)return{exit:!0}})};return Z};class dn extends k.MxDbCircleShape{constructor(){super(),this._propertyDbKeys=[...this._propertyDbKeys,"bulge"]}getTypeName(){return"MxDbCircle"}create(){return new dn}getArcBulge(o,u,Z){const h=o.distanceTo(u);let v=2*new THREE.Line3(o,u).getCenter(new THREE.Vector3).distanceTo(Z)/h;return v>.9999&&v<1.0001?v=1:v<-.9999&&v>-1.0001?v=-1:Math.abs(v)<1e-10&&(v=0),v}getArcMidPoint(o,u,Z,h,R){const A=o,v=Z*Math.PI/180;let S=h*Math.PI/180;const T=new THREE.Vector3,L=new THREE.Vector3;T.x=A.x+u*Math.cos(v),T.y=A.y+u*Math.sin(v),L.x=A.x+u*Math.cos(S),L.y=A.y+u*Math.sin(S);const z=u;(R?Z<h:Z>h)&&(S+=Math.PI*2);const te=new THREE.Vector3;return te.x=A.x+z*Math.cos((v+S)/2),te.y=A.y+z*Math.sin((v+S)/2),[T,te,L,this.center]}getGripPoints(){return this.getArcMidPoint(this.center,this.radius,THREE.MathUtils.radToDeg(this.startAngle),THREE.MathUtils.radToDeg(this.endAngle),this.clockwise)}moveGripPointsAt(o,u){if(o===3)return this.center.add(u),!0;const Z=this.getGripPoints();return this.upDatePoints(Z,o,u),!0}upDatePoints(o,u,Z){o[u].add(Z);const[h,R,A]=o;this.center=ea(h,A,R),this.radius=ta(R,this.center);const v=an(h,this.center,this.radius),S=an(A,this.center,this.radius),T=an(R,this.center,this.radius);this.clockwise=na(S.angle,v.angle,T.angle),this.startAngle=THREE.MathUtils.degToRad(v.angle),this.endAngle=THREE.MathUtils.degToRad(S.angle)}}async function on(){const X=new k.MrxDbgUiPrPoint;X.setMessage(`
|
|
22
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u8D77\u70B9:`),X.setKeyWords("[\u5706\u5FC3(C)]");let o=new dn;o.closed=!1,k.MxPaintBrush.use(o);let u,Z,h;const R=Ge(X,()=>{u=X.value(),X.setMessage(`
|
|
23
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u7B2C\u4E8C\u4E2A\u70B9:`),X.setKeyWords("[\u5706\u5FC3(C)/\u7AEF\u70B9(E)]"),X.setUserDraw((ne,$)=>{$.drawLine(u,ne)}),Q()},()=>{if(X.isKeyWordPicked("C")){const ne=new k.MxDbCircleArc;o.center=X.value(),ne.center=X.value(),X.setMessage(`
|
|
24
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3:`),X.setKeyWords(""),v()}else return!0});let A;const v=Ge(X,()=>{A=X.value(),h=new k.MxDbCircleArc,h.closed=!1,k.MxPaintBrush.use(h),h.center=A,o.center=A,X.setMessage(`
|
|
25
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u8D77\u70B9:`),X.setUserDraw((ne,$)=>{$.drawCustomEntity(h),$.drawLine(A,ne)}),L()},()=>{});let S,T;const L=Ge(X,()=>{S=X.value(),h.endPoint=S,X.setMessage(`
|
|
26
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u89D2\u5EA6(A)/\u5F26\u957F(L)/\u4FEE\u6539\u534A\u5F84(R)]:`),X.setKeyWords("A L R"),T=new k.MxDbLine,T.setDashLineDisplay(!0),T.setDashArray(.05),T.setLineWidth(2),T.setColor("#ffd30d"),T.pt1=h.center,X.setUserDraw((ne,$)=>{h.startPoint=ne,T.pt2=ne,$.drawCustomEntity(h),$.drawCustomEntity(T)}),te()},()=>{});let z;const te=Ge(X,()=>{z=X.value(),h.startPoint=z,h.endPoint=S,k.MxFun.getCurrentDraw().addMxEntity(h)},()=>{if(X.isKeyWordPicked("A"))return X.setMessage(`
|
|
27
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u5939\u89D2(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u4FEE\u6539\u534A\u5F84(R)]:`),X.setKeyWords("R"),X.setUserDraw((ne,$)=>{h.startPoint=ne,$.drawCustomEntity(h),$.drawCustomEntity(T)}),!0;if(X.isKeyWordPicked("L"))return X.setMessage(`
|
|
28
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u5939\u89D2(\u6309\u4F4F ctrl \u952E\u53D6\u76F8\u53CD\u65B9\u5411)\u6216 [\u4FEE\u6539\u534A\u5F84(R)]:`),X.setKeyWords("R"),X.setUserDraw((ne,$)=>{h.startPoint=ne,$.drawCustomEntity(h),$.drawCustomEntity(T)}),!0;if(X.isKeyWordPicked("R"))X.setMessage(`
|
|
29
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u534A\u5F84${h.radius?"<"+h.radius+">":""}:`),X.setKeyWords(""),X.setUserDraw((ne,$)=>{$.drawLine(ne,h.center),h.startPoint=ne,$.drawCustomEntity(h)}),L();else return!0});let j;const Q=Ge(X,()=>{j=X.value(),X.setMessage(`
|
|
30
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u7AEF\u70B9:`),Z=new k.Mx3PointArc,Z.autoClockwise=!0,Z.closed=!1,k.MxPaintBrush.use(Z),Z.point1=u,Z.point3=j,o.center,X.setUserDraw((ne,$)=>{Z.point2=ne,$.drawCustomEntity(o)}),de()},()=>{if(X.isKeyWordPicked("C"))h=new k.MxDbCircleArc,h.closed=!1,k.MxPaintBrush.use(h),X.setMessage(`
|
|
31
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3`),X.setKeyWords(""),X.setUserDraw((ne,$)=>{h.startPoint=u,$.drawLine(ne,h.startPoint)}),v();else if(X.isKeyWordPicked("E"))h=new k.MxDbCircleArc,h.closed=!1,k.MxPaintBrush.use(h),X.setMessage(`
|
|
32
|
+
\u6307\u5B9A\u5706\u5F27\u7684\u5706\u5FC3`),X.setKeyWords(""),X.setUserDraw((ne,$)=>{h.startPoint=u,$.drawLine(ne,h.startPoint)}),v();else return!0}),de=Ge(X,()=>{Z.point1=u,Z.point2=X.value(),Z.point3=j,k.MxFun.getCurrentDraw().addMxEntity(Z)},()=>{if(X.isKeyWordPicked("C"))console.log("C");else if(X.isKeyWordPicked("E"))console.log("E");else return!0});R()}k.store.events.on("MxDbEntityRegister",()=>{k.MxFun.addCommand("Mx_Arc",on)});function mn(){const X=new k.MrxDbgUiPrPoint,o=new k.MxDbEllipseShape;o.closed=!1,k.MxPaintBrush.use(o),X.setMessage(`
|
|
33
|
+
\u6307\u5B9A\u692D\u5706\u7684\u8F74\u7AEF\u70B9`),X.setKeyWords("[\u4E2D\u5FC3\u70B9(C)]");let u,Z=new THREE.Vector3;Ge(X,()=>{u=X.value(),X.setUserDraw((T,L)=>{const z=new THREE.Line3(u,T);z.getCenter(Z),o.center=Z,o.xRadius=z.distance()/2,o.yRadius=o.xRadius,o.rotation=nn(T.x,T.y,Z.x,Z.y),L.drawLine(T,u)}),X.setMessage(`
|
|
34
|
+
\u6307\u5B9A\u692D\u5706\u5F27\u8F74\u7684\u53E6\u4E00\u4E2A\u7AEF\u70B9:`),X.setKeyWords(""),R()},()=>{})();const R=Ge(X,()=>{X.setUserDraw((T,L)=>{o.yRadius=Z.distanceTo(T),L.drawLine(Z,T),L.drawCustomEntity(o)}),X.setMessage(`
|
|
35
|
+
\u6307\u5B9A\u53E6\u4E00\u6761\u534A\u8F74\u957F\u5EA6`),X.setKeyWords(""),A()},()=>{}),A=Ge(X,()=>{X.setMessage(`
|
|
36
|
+
\u6307\u5B9A\u8D77\u59CB\u89D2\u5EA6`),X.setKeyWords(""),X.setUserDraw((T,L)=>{o.startAngle=nn(T.x,T.y,Z.x,Z.y)-o.rotation,L.drawLine(Z,T),L.drawCustomEntity(o)}),v()},()=>{}),v=Ge(X,()=>{X.setUserDraw((T,L)=>{o.endAngle=nn(T.x,T.y,Z.x,Z.y)-o.rotation,L.drawLine(Z,T),L.drawCustomEntity(o)}),X.setMessage(`
|
|
37
|
+
\u6307\u5B9A\u7EC8\u6B62\u89D2\u5EA6`),X.setKeyWords(""),S()},()=>{}),S=Ge(X,()=>{k.MxFun.getCurrentDraw().addMxEntity(o)},()=>{})}k.store.events.on("MxDbEntityRegister",()=>{k.MxFun.addCommand("Mx_EllipseArc",mn)});async function un(){(await Gt.selectEnt(`
|
|
38
|
+
\u9009\u62E9\u5220\u9664\u5BF9\u8C61`)).forEach(o=>{o.erase()})}k.store.events.on("MxDbEntityRegister",()=>{k.MxFun.addCommand("Mx_Erase",un)});function ia(X){return typeof ResizeObserver=="function"?new ResizeObserver(X):null}function ra(X,o){window.onresize=o;const u=()=>requestAnimationFrame(o);let Z=ia(u);if(Z){Z.observe(X);return}new MutationObserver(u).observe(X,{attributes:!0})}class Ke{static onloadWasmMxDraw3dModel;canvas;constructor(o){const u=()=>{const L=this.canvas.parentElement?.clientWidth||window.innerWidth,z=this.canvas.parentElement?.clientHeight||window.innerHeight;let te=Math.min(L,window.screen.availWidth),j=Math.min(z,window.screen.availHeight);te=Math.max(h,te),j=Math.max(R,j),this.canvas.style.width=te+1+"px",this.canvas.style.height=j+"px";const Q=window.devicePixelRatio||1;this.canvas.width=te*Q,this.canvas.height=j*Q},{canvas:Z,minWidth:h=300,minHeight:R=300,updateCanvasSize:A=u,...v}=o;let S=typeof Z=="string"?document.querySelectorAll(Z)[0]:Z,T=S.getContext("webgl2",{alpha:!1,depth:!0,antialias:!1,preserveDrawingBuffer:!0});T==null&&(T=S.getContext("webgl",{alpha:!1,depth:!0,antialias:!1,preserveDrawingBuffer:!0})),this.canvas=S,this.ctx=T,v.canvas=this.canvas;for(let L in v)this[L]=v[L];if(this.canvas instanceof HTMLCanvasElement){const L=this.canvas.parentElement||document.body;ra(L,A)}else console.error("createMxDraw3d canvas \u53C2\u6570\u4E0D\u6B63\u786E \u65E0\u6CD5\u83B7\u53D6\u5230canvas\u5143\u7D20");A(),Promise.resolve().then(()=>aa).then(({default:L})=>{L(this).then(()=>{Ke.onloadWasmMxDraw3dModel&&Ke.onloadWasmMxDraw3dModel(this),this.updateCanvasSize=A,this.open3DFile=z=>{const te=new FileReader;te.onload=()=>{if(!!te.result&&te.result instanceof ArrayBuffer){var j=new Uint8Array(te.result);const Q=this._malloc(j.length);this.HEAPU8.set(j,Q),this.openFromMemory(z.name,Q,j.length,!0),this.displayGround(!0),this.canvas.focus()}},te.readAsArrayBuffer(z)}})})}}const jn=(X,o)=>new URL(X,self.location.href||o).toString();function bn(X){return new Promise((o,u)=>{const Z=`
|
|
39
39
|
var xhr = new XMLHttpRequest();
|
|
40
|
-
var wasmUrl = '${
|
|
40
|
+
var wasmUrl = '${X}'
|
|
41
41
|
xhr.open('GET', wasmUrl, false);
|
|
42
42
|
xhr.responseType = 'arraybuffer';
|
|
43
43
|
xhr.send(null);
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
} else {
|
|
49
49
|
throw new Error(\`Failed to load \${wasmUrl}: \${xhr.status} \${xhr.statusText}\`);
|
|
50
50
|
}
|
|
51
|
-
`,h=new Blob([
|
|
51
|
+
`,h=new Blob([Z],{type:"application/javascript"}),R=URL.createObjectURL(h),A=new Worker(R);A.onmessage=function(v){if(v.data.status==="ready"){const S=v.data.module;o(S)}},A.onerror=v=>{u(v)},A.postMessage({})})}const ca=`\r
|
|
52
52
|
var mxdrawassembly = (() => {\r
|
|
53
53
|
var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\r
|
|
54
54
|
if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\r
|
|
@@ -504,7 +504,7 @@ else if (typeof define === 'function' && define['amd'])\r
|
|
|
504
504
|
define([], function() { return mxdrawassembly; });\r
|
|
505
505
|
else if (typeof exports === 'object')\r
|
|
506
506
|
exports["mxdrawassembly"] = mxdrawassembly;\r
|
|
507
|
-
`;J.MxCpp=void 0;async function Sn(Z,o=jn,u){if(J.MxCpp||(J.MxCpp=new Il),J.MxCpp.mxcadassemblyimp){Z(J.MxCpp);return}u||(u=await bn(o("mxdrawassembly_min.wasm",self.location.origin)));const X=new Blob([ca],{type:"application/javascript"}),h=URL.createObjectURL(X),R=document.createElement("script");R.src=h,document.body.appendChild(R),R.onload=async()=>{const A=await window.mxdrawassembly({wasmBinary:u,locateFile:o,mainScriptUrlOrBlob:new URL("data:application/javascript;base64,DQp2YXIgbXhkcmF3YXNzZW1ibHkgPSAoKCkgPT4gew0KICB2YXIgX3NjcmlwdERpciA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuY3VycmVudFNjcmlwdCA/IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjIDogdW5kZWZpbmVkOw0KICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgIT09ICd1bmRlZmluZWQnKSBfc2NyaXB0RGlyID0gX3NjcmlwdERpciB8fCBfX2ZpbGVuYW1lOw0KICByZXR1cm4gKA0KZnVuY3Rpb24obXhkcmF3YXNzZW1ibHkgPSB7fSkgIHsNCg0KZnVuY3Rpb24gYmEoKXtjYS5idWZmZXIhPWRhLmJ1ZmZlciYmaGEoKTtyZXR1cm4gZGF9ZnVuY3Rpb24gaWEoKXtjYS5idWZmZXIhPWRhLmJ1ZmZlciYmaGEoKTtyZXR1cm4gamF9ZnVuY3Rpb24ga2EoKXtjYS5idWZmZXIhPWRhLmJ1ZmZlciYmaGEoKTtyZXR1cm4gbGF9ZnVuY3Rpb24gYigpe2NhLmJ1ZmZlciE9ZGEuYnVmZmVyJiZoYSgpO3JldHVybiBtYX1mdW5jdGlvbiBtKCl7Y2EuYnVmZmVyIT1kYS5idWZmZXImJmhhKCk7cmV0dXJuIG5hfWZ1bmN0aW9uIG9hKCl7Y2EuYnVmZmVyIT1kYS5idWZmZXImJmhhKCk7cmV0dXJuIHBhfWZ1bmN0aW9uIHFhKCl7Y2EuYnVmZmVyIT1kYS5idWZmZXImJmhhKCk7cmV0dXJuIHJhfXZhciBuO258fChuPXR5cGVvZiBteGRyYXdhc3NlbWJseSAhPT0gJ3VuZGVmaW5lZCcgPyBteGRyYXdhc3NlbWJseSA6IHt9KTt2YXIgc2EsdGE7bi5yZWFkeT1uZXcgUHJvbWlzZShmdW5jdGlvbihhLGMpe3NhPWE7dGE9Y30pOw0KdmFyIHVhPU9iamVjdC5hc3NpZ24oe30sbiksdmE9Ii4vdGhpcy5wcm9ncmFtIix3YT0oYSxjKT0+e3Rocm93IGM7fSx4YT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyx5YT0iZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyx6YT0ib2JqZWN0Ij09dHlwZW9mIHByb2Nlc3MmJiJvYmplY3QiPT10eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucyYmInN0cmluZyI9PXR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGUscT1uLkVOVklST05NRU5UX0lTX1BUSFJFQUR8fCExLEFhPSIiO2Z1bmN0aW9uIEJhKGEpe3JldHVybiBuLmxvY2F0ZUZpbGU/bi5sb2NhdGVGaWxlKGEsQWEpOkFhK2F9dmFyIENhLERhLEZhOw0KaWYoemEpe3ZhciBmcz1yZXF1aXJlKCJmcyIpLEdhPXJlcXVpcmUoInBhdGgiKTtBYT15YT9HYS5kaXJuYW1lKEFhKSsiLyI6X19kaXJuYW1lKyIvIjtDYT0oYyxkKT0+e2M9Yy5zdGFydHNXaXRoKCJmaWxlOi8vIik/bmV3IFVSTChjKTpHYS5ub3JtYWxpemUoYyk7cmV0dXJuIGZzLnJlYWRGaWxlU3luYyhjLGQ/dm9pZCAwOiJ1dGY4Iil9O0ZhPWM9PntjPUNhKGMsITApO2MuYnVmZmVyfHwoYz1uZXcgVWludDhBcnJheShjKSk7cmV0dXJuIGN9O0RhPShjLGQsZSk9PntjPWMuc3RhcnRzV2l0aCgiZmlsZTovLyIpP25ldyBVUkwoYyk6R2Eubm9ybWFsaXplKGMpO2ZzLnJlYWRGaWxlKGMsZnVuY3Rpb24oZixnKXtmP2UoZik6ZChnLmJ1ZmZlcil9KX07IW4udGhpc1Byb2dyYW0mJjE8cHJvY2Vzcy5hcmd2Lmxlbmd0aCYmKHZhPXByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCIvIikpO3Byb2Nlc3MuYXJndi5zbGljZSgyKTt3YT0oYyxkKT0+e3Byb2Nlc3MuZXhpdENvZGU9Yzt0aHJvdyBkOw0KfTtuLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4iW0Vtc2NyaXB0ZW4gTW9kdWxlIG9iamVjdF0ifTtsZXQgYTt0cnl7YT1yZXF1aXJlKCJ3b3JrZXJfdGhyZWFkcyIpfWNhdGNoKGMpe3Rocm93IGNvbnNvbGUuZXJyb3IoJ1RoZSAid29ya2VyX3RocmVhZHMiIG1vZHVsZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgbm9kZS5qcyBidWlsZCAtIHBlcmhhcHMgYSBuZXdlciB2ZXJzaW9uIGlzIG5lZWRlZD8nKSxjO31nbG9iYWwuV29ya2VyPWEuV29ya2VyfWVsc2UgaWYoeGF8fHlhKXlhP0FhPXNlbGYubG9jYXRpb24uaHJlZjoidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5jdXJyZW50U2NyaXB0JiYoQWE9ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLF9zY3JpcHREaXImJihBYT1fc2NyaXB0RGlyKSxBYT0wIT09QWEuaW5kZXhPZigiYmxvYjoiKT9BYS5zdWJzdHIoMCxBYS5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpOiIiLHphfHwNCihDYT1hPT57dmFyIGM9bmV3IFhNTEh0dHBSZXF1ZXN0O2Mub3BlbigiR0VUIixhLCExKTtjLnNlbmQobnVsbCk7cmV0dXJuIGMucmVzcG9uc2VUZXh0fSx5YSYmKEZhPWE9Pnt2YXIgYz1uZXcgWE1MSHR0cFJlcXVlc3Q7Yy5vcGVuKCJHRVQiLGEsITEpO2MucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7Yy5zZW5kKG51bGwpO3JldHVybiBuZXcgVWludDhBcnJheShjLnJlc3BvbnNlKX0pLERhPShhLGMsZCk9Pnt2YXIgZT1uZXcgWE1MSHR0cFJlcXVlc3Q7ZS5vcGVuKCJHRVQiLGEsITApO2UucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7ZS5vbmxvYWQ9KCk9PnsyMDA9PWUuc3RhdHVzfHwwPT1lLnN0YXR1cyYmZS5yZXNwb25zZT9jKGUucmVzcG9uc2UpOmQoKX07ZS5vbmVycm9yPWQ7ZS5zZW5kKG51bGwpfSk7emEmJiJ1bmRlZmluZWQiPT10eXBlb2YgcGVyZm9ybWFuY2UmJihnbG9iYWwucGVyZm9ybWFuY2U9cmVxdWlyZSgicGVyZl9ob29rcyIpLnBlcmZvcm1hbmNlKTsNCnZhciBIYT1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLElhPWNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO3phJiYoSGE9YT0+ZnMud3JpdGVTeW5jKDEsYSsiXG4iKSxJYT1hPT5mcy53cml0ZVN5bmMoMixhKyJcbiIpKTt2YXIgS2E9bi5wcmludHx8SGEsTGE9bi5wcmludEVycnx8SWE7T2JqZWN0LmFzc2lnbihuLHVhKTt1YT1udWxsO24udGhpc1Byb2dyYW0mJih2YT1uLnRoaXNQcm9ncmFtKTtuLnF1aXQmJih3YT1uLnF1aXQpO3ZhciBNYTtuLndhc21CaW5hcnkmJihNYT1uLndhc21CaW5hcnkpO3ZhciBub0V4aXRSdW50aW1lPW4ubm9FeGl0UnVudGltZXx8ITA7Im9iamVjdCIhPXR5cGVvZiBXZWJBc3NlbWJseSYmTmEoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTt2YXIgY2EsT2EsUGE9ITEsUWEsZGEsamEsUmEsbGEsbWEsbmEscGEscmE7DQpmdW5jdGlvbiBoYSgpe3ZhciBhPWNhLmJ1ZmZlcjtuLkhFQVA4PWRhPW5ldyBJbnQ4QXJyYXkoYSk7bi5IRUFQMTY9UmE9bmV3IEludDE2QXJyYXkoYSk7bi5IRUFQMzI9bWE9bmV3IEludDMyQXJyYXkoYSk7bi5IRUFQVTg9amE9bmV3IFVpbnQ4QXJyYXkoYSk7bi5IRUFQVTE2PWxhPW5ldyBVaW50MTZBcnJheShhKTtuLkhFQVBVMzI9bmE9bmV3IFVpbnQzMkFycmF5KGEpO24uSEVBUEYzMj1wYT1uZXcgRmxvYXQzMkFycmF5KGEpO24uSEVBUEY2ND1yYT1uZXcgRmxvYXQ2NEFycmF5KGEpfXZhciBTYT1uLklOSVRJQUxfTUVNT1JZfHwxNjc3NzIxNjs0MTk0MzA0PD1TYXx8TmEoIklOSVRJQUxfTUVNT1JZIHNob3VsZCBiZSBsYXJnZXIgdGhhbiBTVEFDS19TSVpFLCB3YXMgIitTYSsiISAoU1RBQ0tfU0laRT00MTk0MzA0KSIpOw0KaWYocSljYT1uLndhc21NZW1vcnk7ZWxzZSBpZihuLndhc21NZW1vcnkpY2E9bi53YXNtTWVtb3J5O2Vsc2UgaWYoY2E9bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDpTYS82NTUzNixtYXhpbXVtOjMyNzY4LHNoYXJlZDohMH0pLCEoY2EuYnVmZmVyIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXIpKXRocm93IExhKCJyZXF1ZXN0ZWQgYSBzaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5IGJ1dCB0aGUgcmV0dXJuZWQgYnVmZmVyIGlzIG5vdCBhIFNoYXJlZEFycmF5QnVmZmVyLCBpbmRpY2F0aW5nIHRoYXQgd2hpbGUgdGhlIGJyb3dzZXIgaGFzIFNoYXJlZEFycmF5QnVmZmVyIGl0IGRvZXMgbm90IGhhdmUgV2ViQXNzZW1ibHkgdGhyZWFkcyBzdXBwb3J0IC0geW91IG1heSBuZWVkIHRvIHNldCBhIGZsYWciKSx6YSYmTGEoIihvbiBub2RlIHlvdSBtYXkgbmVlZDogLS1leHBlcmltZW50YWwtd2FzbS10aHJlYWRzIC0tZXhwZXJpbWVudGFsLXdhc20tYnVsay1tZW1vcnkgYW5kL29yIHJlY2VudCB2ZXJzaW9uKSIpLA0KRXJyb3IoImJhZCBtZW1vcnkiKTtoYSgpO1NhPWNhLmJ1ZmZlci5ieXRlTGVuZ3RoO3ZhciBUYSxVYT1bXSxWYT1bXSxXYT1bXSxYYT0wO2Z1bmN0aW9uIFlhKCl7cmV0dXJuIG5vRXhpdFJ1bnRpbWV8fDA8WGF9ZnVuY3Rpb24gWmEoKXtxfHwobi5ub0ZTSW5pdHx8JGF8fCgkYT0hMCxhYigpLG4uc3RkaW49bi5zdGRpbixuLnN0ZG91dD1uLnN0ZG91dCxuLnN0ZGVycj1uLnN0ZGVycixuLnN0ZGluP2JiKCJzdGRpbiIsbi5zdGRpbik6Y2IoIi9kZXYvdHR5IiwiL2Rldi9zdGRpbiIpLG4uc3Rkb3V0P2JiKCJzdGRvdXQiLG51bGwsbi5zdGRvdXQpOmNiKCIvZGV2L3R0eSIsIi9kZXYvc3Rkb3V0Iiksbi5zdGRlcnI/YmIoInN0ZGVyciIsbnVsbCxuLnN0ZGVycik6Y2IoIi9kZXYvdHR5MSIsIi9kZXYvc3RkZXJyIiksZGIoIi9kZXYvc3RkaW4iLDApLGRiKCIvZGV2L3N0ZG91dCIsMSksZGIoIi9kZXYvc3RkZXJyIiwxKSksZWI9ITEsZmIoVmEpKX0NCmZ1bmN0aW9uIGdiKCl7dmFyIGE9bi5wcmVSdW4uc2hpZnQoKTtVYS51bnNoaWZ0KGEpfXZhciBoYj0wLGliPW51bGwsamI9bnVsbDtmdW5jdGlvbiBrYigpe2hiKys7bi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzJiZuLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMoaGIpfWZ1bmN0aW9uIGxiKCl7aGItLTtuLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJm4ubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhoYik7aWYoMD09aGImJihudWxsIT09aWImJihjbGVhckludGVydmFsKGliKSxpYj1udWxsKSxqYikpe3ZhciBhPWpiO2piPW51bGw7YSgpfX1mdW5jdGlvbiBOYShhKXtpZihuLm9uQWJvcnQpbi5vbkFib3J0KGEpO2E9IkFib3J0ZWQoIithKyIpIjtMYShhKTtQYT0hMDtRYT0xO2E9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihhKyIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIik7dGEoYSk7dGhyb3cgYTt9DQpmdW5jdGlvbiBtYihhKXtyZXR1cm4gYS5zdGFydHNXaXRoKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIil9dmFyIG5iO25iPSJteGRyYXdhc3NlbWJseV9taW4ud2FzbSI7bWIobmIpfHwobmI9QmEobmIpKTtmdW5jdGlvbiBvYihhKXt0cnl7aWYoYT09bmImJk1hKXJldHVybiBuZXcgVWludDhBcnJheShNYSk7aWYoRmEpcmV0dXJuIEZhKGEpO3Rocm93ImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIjt9Y2F0Y2goYyl7TmEoYyl9fQ0KZnVuY3Rpb24gcGIoYSl7aWYoIU1hJiYoeGF8fHlhKSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGZldGNoJiYhYS5zdGFydHNXaXRoKCJmaWxlOi8vIikpcmV0dXJuIGZldGNoKGEse2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KS50aGVuKGZ1bmN0aW9uKGMpe2lmKCFjLm9rKXRocm93ImZhaWxlZCB0byBsb2FkIHdhc20gYmluYXJ5IGZpbGUgYXQgJyIrYSsiJyI7cmV0dXJuIGMuYXJyYXlCdWZmZXIoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIG9iKGEpfSk7aWYoRGEpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGMsZCl7RGEoYSxmdW5jdGlvbihlKXtjKG5ldyBVaW50OEFycmF5KGUpKX0sZCl9KX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBvYihhKX0pfQ0KZnVuY3Rpb24gcWIoYSxjLGQpe3JldHVybiBwYihhKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShlLGMpfSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZX0pLnRoZW4oZCxmdW5jdGlvbihlKXtMYSgiZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogIitlKTtOYShlKX0pfQ0KZnVuY3Rpb24gc2IoYSxjKXt2YXIgZD1uYjtyZXR1cm4gTWF8fCJmdW5jdGlvbiIhPXR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZ3x8bWIoZCl8fGQuc3RhcnRzV2l0aCgiZmlsZTovLyIpfHx6YXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGZldGNoP3FiKGQsYSxjKTpmZXRjaChkLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoZSxhKS50aGVuKGMsZnVuY3Rpb24oZil7TGEoIndhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAiK2YpO0xhKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpO3JldHVybiBxYihkLGEsYyl9KX0pfQ0KdmFyIHRiLHViLHpiPXsyNTMwOTA6KCk9PmJhKCkubGVuZ3RoLDI1MzExMDphPT57YT1yKGEpO2lmKHdpbmRvdy5teF9zYXZlRmlsZV9jYWxsKXt2YXIgYz1jfHwiYmluYXJ5IjtpZigidXRmOCIhPT1jJiYiYmluYXJ5IiE9PWMpdGhyb3cgRXJyb3IoJ0ludmFsaWQgZW5jb2RpbmcgdHlwZSAiJytjKyciJyk7dmFyIGQ7dmFyIGU9ZGIoYSxlfHwwKTthPXZiKGEse2ZhOiEwfSkubm9kZTtpZighYSl0aHJvdyBuZXcgdig0NCk7aWYoIWEuaC51KXRocm93IG5ldyB2KDYzKTthPWEuaC51KGEpLnNpemU7dmFyIGY9bmV3IFVpbnQ4QXJyYXkoYSk7d2IoZSxmLDAsYSwwKTsidXRmOCI9PT1jP2Q9eGIoZiwwKToiYmluYXJ5Ij09PWMmJihkPWYpO3liKGUpO3dpbmRvdy5teF9zYXZlRmlsZV9jYWxsKGQpfWVsc2UgY29uc29sZS5sb2coIndpbmRvdy5teF9zYXZlRmlsZV9jYWxsIHVuZGVmaW5lZCIpfX07DQpmdW5jdGlvbiBBYihhKXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiO3RoaXMubWVzc2FnZT0iUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgiK2ErIikiO3RoaXMuc3RhdHVzPWF9ZnVuY3Rpb24gQmIoYSl7YS50ZXJtaW5hdGUoKTthLm9ubWVzc2FnZT0oKT0+e319ZnVuY3Rpb24gQ2IoYSl7KGE9dy5GW2FdKXx8TmEoKTt3LnFiKGEpfWZ1bmN0aW9uIERiKGEpe3ZhciBjPXcuWmEoKTtpZighYylyZXR1cm4gNjt3LkkucHVzaChjKTt3LkZbYS5BXT1jO2MuQT1hLkE7dmFyIGQ9e2NtZDoicnVuIixzdGFydF9yb3V0aW5lOmEueWIsYXJnOmEuVGEscHRocmVhZF9wdHI6YS5BfTt6YSYmYy5yZWYoKTtjLnBvc3RNZXNzYWdlKGQsYS5FYik7cmV0dXJuIDB9DQp2YXIgRWI9KGEsYyk9Pntmb3IodmFyIGQ9MCxlPWEubGVuZ3RoLTE7MDw9ZTtlLS0pe3ZhciBmPWFbZV07Ii4iPT09Zj9hLnNwbGljZShlLDEpOiIuLiI9PT1mPyhhLnNwbGljZShlLDEpLGQrKyk6ZCYmKGEuc3BsaWNlKGUsMSksZC0tKX1pZihjKWZvcig7ZDtkLS0pYS51bnNoaWZ0KCIuLiIpO3JldHVybiBhfSxGYj1hPT57dmFyIGM9Ii8iPT09YS5jaGFyQXQoMCksZD0iLyI9PT1hLnN1YnN0cigtMSk7KGE9RWIoYS5zcGxpdCgiLyIpLmZpbHRlcihlPT4hIWUpLCFjKS5qb2luKCIvIikpfHxjfHwoYT0iLiIpO2EmJmQmJihhKz0iLyIpO3JldHVybihjPyIvIjoiIikrYX0sR2I9YT0+e3ZhciBjPS9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLy5leGVjKGEpLnNsaWNlKDEpO2E9Y1swXTtjPWNbMV07aWYoIWEmJiFjKXJldHVybiIuIjtjJiYoYz1jLnN1YnN0cigwLGMubGVuZ3RoLTEpKTtyZXR1cm4gYStjfSxIYj1hPT4NCntpZigiLyI9PT1hKXJldHVybiIvIjthPUZiKGEpO2E9YS5yZXBsYWNlKC9cLyQvLCIiKTt2YXIgYz1hLmxhc3RJbmRleE9mKCIvIik7cmV0dXJuLTE9PT1jP2E6YS5zdWJzdHIoYysxKX07ZnVuY3Rpb24gSWIoKXtpZigib2JqZWN0Ij09dHlwZW9mIGNyeXB0byYmImZ1bmN0aW9uIj09dHlwZW9mIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpcmV0dXJuIGQ9PihkLnNldChjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KGQuYnl0ZUxlbmd0aCkpKSxkKTtpZih6YSl0cnl7dmFyIGE9cmVxdWlyZSgiY3J5cHRvIik7aWYoYS5yYW5kb21GaWxsU3luYylyZXR1cm4gZD0+YS5yYW5kb21GaWxsU3luYyhkKTt2YXIgYz1hLnJhbmRvbUJ5dGVzO3JldHVybiBkPT4oZC5zZXQoYyhkLmJ5dGVMZW5ndGgpKSxkKX1jYXRjaChkKXt9TmEoImluaXRSYW5kb21EZXZpY2UiKX1mdW5jdGlvbiBKYihhKXtyZXR1cm4oSmI9SWIoKSkoYSl9DQpmdW5jdGlvbiBLYigpe2Zvcih2YXIgYT0iIixjPSExLGQ9YXJndW1lbnRzLmxlbmd0aC0xOy0xPD1kJiYhYztkLS0pe2M9MDw9ZD9hcmd1bWVudHNbZF06Ii8iO2lmKCJzdHJpbmciIT10eXBlb2YgYyl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncyIpO2lmKCFjKXJldHVybiIiO2E9YysiLyIrYTtjPSIvIj09PWMuY2hhckF0KDApfWE9RWIoYS5zcGxpdCgiLyIpLmZpbHRlcihlPT4hIWUpLCFjKS5qb2luKCIvIik7cmV0dXJuKGM/Ii8iOiIiKSthfHwiLiJ9DQpmdW5jdGlvbiBMYihhLGMsZCxlKXtpZighKDA8ZSkpcmV0dXJuIDA7dmFyIGY9ZDtlPWQrZS0xO2Zvcih2YXIgZz0wO2c8YS5sZW5ndGg7KytnKXt2YXIgaD1hLmNoYXJDb2RlQXQoZyk7aWYoNTUyOTY8PWgmJjU3MzQzPj1oKXt2YXIgbD1hLmNoYXJDb2RlQXQoKytnKTtoPTY1NTM2KygoaCYxMDIzKTw8MTApfGwmMTAyM31pZigxMjc+PWgpe2lmKGQ+PWUpYnJlYWs7Y1tkKytdPWh9ZWxzZXtpZigyMDQ3Pj1oKXtpZihkKzE+PWUpYnJlYWs7Y1tkKytdPTE5MnxoPj42fWVsc2V7aWYoNjU1MzU+PWgpe2lmKGQrMj49ZSlicmVhaztjW2QrK109MjI0fGg+PjEyfWVsc2V7aWYoZCszPj1lKWJyZWFrO2NbZCsrXT0yNDB8aD4+MTg7Y1tkKytdPTEyOHxoPj4xMiY2M31jW2QrK109MTI4fGg+PjYmNjN9Y1tkKytdPTEyOHxoJjYzfX1jW2RdPTA7cmV0dXJuIGQtZn0NCmZ1bmN0aW9uIE1iKGEsYyl7Zm9yKHZhciBkPTAsZT0wO2U8YS5sZW5ndGg7KytlKXt2YXIgZj1hLmNoYXJDb2RlQXQoZSk7MTI3Pj1mP2QrKzoyMDQ3Pj1mP2QrPTI6NTUyOTY8PWYmJjU3MzQzPj1mPyhkKz00LCsrZSk6ZCs9M31kPUFycmF5KGQrMSk7YT1MYihhLGQsMCxkLmxlbmd0aCk7YyYmKGQubGVuZ3RoPWEpO3JldHVybiBkfXZhciBOYj1bXTtmdW5jdGlvbiBPYihhLGMpe05iW2FdPXtpbnB1dDpbXSxvdXRwdXQ6W10sTzpjfTtQYihhLFFiKX0NCnZhciBRYj17b3BlbjpmdW5jdGlvbihhKXt2YXIgYz1OYlthLm5vZGUucmRldl07aWYoIWMpdGhyb3cgbmV3IHYoNDMpO2EudHR5PWM7YS5zZWVrYWJsZT0hMX0sY2xvc2U6ZnVuY3Rpb24oYSl7YS50dHkuTy5mc3luYyhhLnR0eSl9LGZzeW5jOmZ1bmN0aW9uKGEpe2EudHR5Lk8uZnN5bmMoYS50dHkpfSxyZWFkOmZ1bmN0aW9uKGEsYyxkLGUpe2lmKCFhLnR0eXx8IWEudHR5Lk8uRGEpdGhyb3cgbmV3IHYoNjApO2Zvcih2YXIgZj0wLGc9MDtnPGU7ZysrKXt0cnl7dmFyIGg9YS50dHkuTy5EYShhLnR0eSl9Y2F0Y2gobCl7dGhyb3cgbmV3IHYoMjkpO31pZih2b2lkIDA9PT1oJiYwPT09Zil0aHJvdyBuZXcgdig2KTtpZihudWxsPT09aHx8dm9pZCAwPT09aClicmVhaztmKys7Y1tkK2ddPWh9ZiYmKGEubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSk7cmV0dXJuIGZ9LHdyaXRlOmZ1bmN0aW9uKGEsYyxkLGUpe2lmKCFhLnR0eXx8IWEudHR5Lk8ua2EpdGhyb3cgbmV3IHYoNjApO3RyeXtmb3IodmFyIGY9DQowO2Y8ZTtmKyspYS50dHkuTy5rYShhLnR0eSxjW2QrZl0pfWNhdGNoKGcpe3Rocm93IG5ldyB2KDI5KTt9ZSYmKGEubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSk7cmV0dXJuIGZ9fSxSYj17RGE6ZnVuY3Rpb24oYSl7aWYoIWEuaW5wdXQubGVuZ3RoKXt2YXIgYz1udWxsO2lmKHphKXtjPUJ1ZmZlci5hbGxvYygyNTYpO3ZhciBkPTA7dHJ5e2Q9ZnMucmVhZFN5bmMocHJvY2Vzcy5zdGRpbi5mZCxjLDAsMjU2LC0xKX1jYXRjaChlKXtpZihlLnRvU3RyaW5nKCkuaW5jbHVkZXMoIkVPRiIpKWQ9MDtlbHNlIHRocm93IGU7fWM9MDxkP2Muc2xpY2UoMCxkKS50b1N0cmluZygidXRmLTgiKTpudWxsfWVsc2UidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5wcm9tcHQ/KGM9d2luZG93LnByb21wdCgiSW5wdXQ6ICIpLG51bGwhPT1jJiYoYys9IlxuIikpOiJmdW5jdGlvbiI9PXR5cGVvZiByZWFkbGluZSYmKGM9cmVhZGxpbmUoKSxudWxsIT09DQpjJiYoYys9IlxuIikpO2lmKCFjKXJldHVybiBudWxsO2EuaW5wdXQ9TWIoYywhMCl9cmV0dXJuIGEuaW5wdXQuc2hpZnQoKX0sa2E6ZnVuY3Rpb24oYSxjKXtudWxsPT09Y3x8MTA9PT1jPyhLYSh4YihhLm91dHB1dCwwKSksYS5vdXRwdXQ9W10pOjAhPWMmJmEub3V0cHV0LnB1c2goYyl9LGZzeW5jOmZ1bmN0aW9uKGEpe2Eub3V0cHV0JiYwPGEub3V0cHV0Lmxlbmd0aCYmKEthKHhiKGEub3V0cHV0LDApKSxhLm91dHB1dD1bXSl9fSxTYj17a2E6ZnVuY3Rpb24oYSxjKXtudWxsPT09Y3x8MTA9PT1jPyhMYSh4YihhLm91dHB1dCwwKSksYS5vdXRwdXQ9W10pOjAhPWMmJmEub3V0cHV0LnB1c2goYyl9LGZzeW5jOmZ1bmN0aW9uKGEpe2Eub3V0cHV0JiYwPGEub3V0cHV0Lmxlbmd0aCYmKExhKHhiKGEub3V0cHV0LDApKSxhLm91dHB1dD1bXSl9fSxCPXt2Om51bGwsRDpmdW5jdGlvbigpe3JldHVybiBCLmNyZWF0ZU5vZGUobnVsbCwiLyIsMTY4OTUsMCl9LGNyZWF0ZU5vZGU6ZnVuY3Rpb24oYSwNCmMsZCxlKXtpZigyNDU3Nj09PShkJjYxNDQwKXx8NDA5Nj09PShkJjYxNDQwKSl0aHJvdyBuZXcgdig2Myk7Qi52fHwoQi52PXtkaXI6e25vZGU6e3U6Qi5oLnUsQjpCLmguQixsb29rdXA6Qi5oLmxvb2t1cCxaOkIuaC5aLHJlbmFtZTpCLmgucmVuYW1lLHVubGluazpCLmgudW5saW5rLHJtZGlyOkIuaC5ybWRpcixyZWFkZGlyOkIuaC5yZWFkZGlyLHN5bWxpbms6Qi5oLnN5bWxpbmt9LHN0cmVhbTp7SDpCLmouSH19LGZpbGU6e25vZGU6e3U6Qi5oLnUsQjpCLmguQn0sc3RyZWFtOntIOkIuai5ILHJlYWQ6Qi5qLnJlYWQsd3JpdGU6Qi5qLndyaXRlLHRhOkIuai50YSxIYTpCLmouSGEsSmE6Qi5qLkphfX0sbGluazp7bm9kZTp7dTpCLmgudSxCOkIuaC5CLHJlYWRsaW5rOkIuaC5yZWFkbGlua30sc3RyZWFtOnt9fSx2YTp7bm9kZTp7dTpCLmgudSxCOkIuaC5CfSxzdHJlYW06VGJ9fSk7ZD1VYihhLGMsZCxlKTsxNjM4ND09PShkLm1vZGUmNjE0NDApPyhkLmg9Qi52LmRpci5ub2RlLA0KZC5qPUIudi5kaXIuc3RyZWFtLGQuaT17fSk6MzI3Njg9PT0oZC5tb2RlJjYxNDQwKT8oZC5oPUIudi5maWxlLm5vZGUsZC5qPUIudi5maWxlLnN0cmVhbSxkLm89MCxkLmk9bnVsbCk6NDA5NjA9PT0oZC5tb2RlJjYxNDQwKT8oZC5oPUIudi5saW5rLm5vZGUsZC5qPUIudi5saW5rLnN0cmVhbSk6ODE5Mj09PShkLm1vZGUmNjE0NDApJiYoZC5oPUIudi52YS5ub2RlLGQuaj1CLnYudmEuc3RyZWFtKTtkLnRpbWVzdGFtcD1EYXRlLm5vdygpO2EmJihhLmlbY109ZCxhLnRpbWVzdGFtcD1kLnRpbWVzdGFtcCk7cmV0dXJuIGR9LE5iOmZ1bmN0aW9uKGEpe3JldHVybiBhLmk/YS5pLnN1YmFycmF5P2EuaS5zdWJhcnJheSgwLGEubyk6bmV3IFVpbnQ4QXJyYXkoYS5pKTpuZXcgVWludDhBcnJheSgwKX0sQWE6ZnVuY3Rpb24oYSxjKXt2YXIgZD1hLmk/YS5pLmxlbmd0aDowO2Q+PWN8fChjPU1hdGgubWF4KGMsZCooMTA0ODU3Nj5kPzI6MS4xMjUpPj4+MCksMCE9ZCYmKGM9TWF0aC5tYXgoYywNCjI1NikpLGQ9YS5pLGEuaT1uZXcgVWludDhBcnJheShjKSwwPGEubyYmYS5pLnNldChkLnN1YmFycmF5KDAsYS5vKSwwKSl9LHBiOmZ1bmN0aW9uKGEsYyl7aWYoYS5vIT1jKWlmKDA9PWMpYS5pPW51bGwsYS5vPTA7ZWxzZXt2YXIgZD1hLmk7YS5pPW5ldyBVaW50OEFycmF5KGMpO2QmJmEuaS5zZXQoZC5zdWJhcnJheSgwLE1hdGgubWluKGMsYS5vKSkpO2Eubz1jfX0saDp7dTpmdW5jdGlvbihhKXt2YXIgYz17fTtjLmRldj04MTkyPT09KGEubW9kZSY2MTQ0MCk/YS5pZDoxO2MuaW5vPWEuaWQ7Yy5tb2RlPWEubW9kZTtjLm5saW5rPTE7Yy51aWQ9MDtjLmdpZD0wO2MucmRldj1hLnJkZXY7Yy5zaXplPTE2Mzg0PT09KGEubW9kZSY2MTQ0MCk/NDA5NjozMjc2OD09PShhLm1vZGUmNjE0NDApP2Eubzo0MDk2MD09PShhLm1vZGUmNjE0NDApP2EubGluay5sZW5ndGg6MDtjLmF0aW1lPW5ldyBEYXRlKGEudGltZXN0YW1wKTtjLm10aW1lPW5ldyBEYXRlKGEudGltZXN0YW1wKTtjLmN0aW1lPQ0KbmV3IERhdGUoYS50aW1lc3RhbXApO2MuVWE9NDA5NjtjLmJsb2Nrcz1NYXRoLmNlaWwoYy5zaXplL2MuVWEpO3JldHVybiBjfSxCOmZ1bmN0aW9uKGEsYyl7dm9pZCAwIT09Yy5tb2RlJiYoYS5tb2RlPWMubW9kZSk7dm9pZCAwIT09Yy50aW1lc3RhbXAmJihhLnRpbWVzdGFtcD1jLnRpbWVzdGFtcCk7dm9pZCAwIT09Yy5zaXplJiZCLnBiKGEsYy5zaXplKX0sbG9va3VwOmZ1bmN0aW9uKCl7dGhyb3cgVmJbNDRdO30sWjpmdW5jdGlvbihhLGMsZCxlKXtyZXR1cm4gQi5jcmVhdGVOb2RlKGEsYyxkLGUpfSxyZW5hbWU6ZnVuY3Rpb24oYSxjLGQpe2lmKDE2Mzg0PT09KGEubW9kZSY2MTQ0MCkpe3RyeXt2YXIgZT1XYihjLGQpfWNhdGNoKGcpe31pZihlKWZvcih2YXIgZiBpbiBlLmkpdGhyb3cgbmV3IHYoNTUpO31kZWxldGUgYS5wYXJlbnQuaVthLm5hbWVdO2EucGFyZW50LnRpbWVzdGFtcD1EYXRlLm5vdygpO2EubmFtZT1kO2MuaVtkXT1hO2MudGltZXN0YW1wPWEucGFyZW50LnRpbWVzdGFtcDsNCmEucGFyZW50PWN9LHVubGluazpmdW5jdGlvbihhLGMpe2RlbGV0ZSBhLmlbY107YS50aW1lc3RhbXA9RGF0ZS5ub3coKX0scm1kaXI6ZnVuY3Rpb24oYSxjKXt2YXIgZD1XYihhLGMpLGU7Zm9yKGUgaW4gZC5pKXRocm93IG5ldyB2KDU1KTtkZWxldGUgYS5pW2NdO2EudGltZXN0YW1wPURhdGUubm93KCl9LHJlYWRkaXI6ZnVuY3Rpb24oYSl7dmFyIGM9WyIuIiwiLi4iXSxkO2ZvcihkIGluIGEuaSlhLmkuaGFzT3duUHJvcGVydHkoZCkmJmMucHVzaChkKTtyZXR1cm4gY30sc3ltbGluazpmdW5jdGlvbihhLGMsZCl7YT1CLmNyZWF0ZU5vZGUoYSxjLDQxNDcxLDApO2EubGluaz1kO3JldHVybiBhfSxyZWFkbGluazpmdW5jdGlvbihhKXtpZig0MDk2MCE9PShhLm1vZGUmNjE0NDApKXRocm93IG5ldyB2KDI4KTtyZXR1cm4gYS5saW5rfX0sajp7cmVhZDpmdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPWEubm9kZS5pO2lmKGY+PWEubm9kZS5vKXJldHVybiAwO2E9TWF0aC5taW4oYS5ub2RlLm8tDQpmLGUpO2lmKDg8YSYmZy5zdWJhcnJheSljLnNldChnLnN1YmFycmF5KGYsZithKSxkKTtlbHNlIGZvcihlPTA7ZTxhO2UrKyljW2QrZV09Z1tmK2VdO3JldHVybiBhfSx3cml0ZTpmdW5jdGlvbihhLGMsZCxlLGYsZyl7Yy5idWZmZXI9PT1iYSgpLmJ1ZmZlciYmKGc9ITEpO2lmKCFlKXJldHVybiAwO2E9YS5ub2RlO2EudGltZXN0YW1wPURhdGUubm93KCk7aWYoYy5zdWJhcnJheSYmKCFhLml8fGEuaS5zdWJhcnJheSkpe2lmKGcpcmV0dXJuIGEuaT1jLnN1YmFycmF5KGQsZCtlKSxhLm89ZTtpZigwPT09YS5vJiYwPT09ZilyZXR1cm4gYS5pPWMuc2xpY2UoZCxkK2UpLGEubz1lO2lmKGYrZTw9YS5vKXJldHVybiBhLmkuc2V0KGMuc3ViYXJyYXkoZCxkK2UpLGYpLGV9Qi5BYShhLGYrZSk7aWYoYS5pLnN1YmFycmF5JiZjLnN1YmFycmF5KWEuaS5zZXQoYy5zdWJhcnJheShkLGQrZSksZik7ZWxzZSBmb3IoZz0wO2c8ZTtnKyspYS5pW2YrZ109Y1tkK2ddO2Eubz1NYXRoLm1heChhLm8sDQpmK2UpO3JldHVybiBlfSxIOmZ1bmN0aW9uKGEsYyxkKXsxPT09ZD9jKz1hLnBvc2l0aW9uOjI9PT1kJiYzMjc2OD09PShhLm5vZGUubW9kZSY2MTQ0MCkmJihjKz1hLm5vZGUubyk7aWYoMD5jKXRocm93IG5ldyB2KDI4KTtyZXR1cm4gY30sdGE6ZnVuY3Rpb24oYSxjLGQpe0IuQWEoYS5ub2RlLGMrZCk7YS5ub2RlLm89TWF0aC5tYXgoYS5ub2RlLm8sYytkKX0sSGE6ZnVuY3Rpb24oYSxjLGQsZSxmKXtpZigzMjc2OCE9PShhLm5vZGUubW9kZSY2MTQ0MCkpdGhyb3cgbmV3IHYoNDMpO2E9YS5ub2RlLmk7aWYoZiYyfHxhLmJ1ZmZlciE9PWJhKCkuYnVmZmVyKXtpZigwPGR8fGQrYzxhLmxlbmd0aClhPWEuc3ViYXJyYXk/YS5zdWJhcnJheShkLGQrYyk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSxkLGQrYyk7ZD0hMDtOYSgpO2M9dm9pZCAwO2lmKCFjKXRocm93IG5ldyB2KDQ4KTtiYSgpLnNldChhLGMpfWVsc2UgZD0hMSxjPWEuYnl0ZU9mZnNldDtyZXR1cm57ZzpjLEhiOmR9fSwNCkphOmZ1bmN0aW9uKGEsYyxkLGUpe0Iuai53cml0ZShhLGMsMCxlLGQsITEpO3JldHVybiAwfX19LFhiPW51bGwsWWI9e30sWmI9W10sJGI9MSxhYz1udWxsLGViPSEwLHY9bnVsbCxWYj17fSx2Yj0oYSxjPXt9KT0+e2E9S2IoYSk7aWYoIWEpcmV0dXJue3BhdGg6IiIsbm9kZTpudWxsfTtjPU9iamVjdC5hc3NpZ24oe0JhOiEwLGxhOjB9LGMpO2lmKDg8Yy5sYSl0aHJvdyBuZXcgdigzMik7YT1hLnNwbGl0KCIvIikuZmlsdGVyKGg9PiEhaCk7Zm9yKHZhciBkPVhiLGU9Ii8iLGY9MDtmPGEubGVuZ3RoO2YrKyl7dmFyIGc9Zj09PWEubGVuZ3RoLTE7aWYoZyYmYy5wYXJlbnQpYnJlYWs7ZD1XYihkLGFbZl0pO2U9RmIoZSsiLyIrYVtmXSk7ZC5NJiYoIWd8fGcmJmMuQmEpJiYoZD1kLk0ucm9vdCk7aWYoIWd8fGMuZmEpZm9yKGc9MDs0MDk2MD09PShkLm1vZGUmNjE0NDApOylpZihkPWJjKGUpLGU9S2IoR2IoZSksZCksZD12YihlLHtsYTpjLmxhKzF9KS5ub2RlLDQwPGcrKyl0aHJvdyBuZXcgdigzMik7DQp9cmV0dXJue3BhdGg6ZSxub2RlOmR9fSxjYz1hPT57Zm9yKHZhciBjOzspe2lmKGE9PT1hLnBhcmVudClyZXR1cm4gYT1hLkQuSWEsYz8iLyIhPT1hW2EubGVuZ3RoLTFdP2ErIi8iK2M6YStjOmE7Yz1jP2EubmFtZSsiLyIrYzphLm5hbWU7YT1hLnBhcmVudH19LGRjPShhLGMpPT57Zm9yKHZhciBkPTAsZT0wO2U8Yy5sZW5ndGg7ZSsrKWQ9KGQ8PDUpLWQrYy5jaGFyQ29kZUF0KGUpfDA7cmV0dXJuKGErZD4+PjApJWFjLmxlbmd0aH0sZWM9YT0+e3ZhciBjPWRjKGEucGFyZW50LmlkLGEubmFtZSk7aWYoYWNbY109PT1hKWFjW2NdPWEuTjtlbHNlIGZvcihjPWFjW2NdO2M7KXtpZihjLk49PT1hKXtjLk49YS5OO2JyZWFrfWM9Yy5OfX0sV2I9KGEsYyk9Pnt2YXIgZDtpZihkPShkPWZjKGEsIngiKSk/ZDphLmgubG9va3VwPzA6Mil0aHJvdyBuZXcgdihkLGEpO2ZvcihkPWFjW2RjKGEuaWQsYyldO2Q7ZD1kLk4pe3ZhciBlPWQubmFtZTtpZihkLnBhcmVudC5pZD09PWEuaWQmJmU9PT0NCmMpcmV0dXJuIGR9cmV0dXJuIGEuaC5sb29rdXAoYSxjKX0sVWI9KGEsYyxkLGUpPT57YT1uZXcgZ2MoYSxjLGQsZSk7Yz1kYyhhLnBhcmVudC5pZCxhLm5hbWUpO2EuTj1hY1tjXTtyZXR1cm4gYWNbY109YX0saGM9e3I6MCwicisiOjIsdzo1NzcsIncrIjo1NzgsYToxMDg5LCJhKyI6MTA5MH0saWM9YT0+e3ZhciBjPVsiciIsInciLCJydyJdW2EmM107YSY1MTImJihjKz0idyIpO3JldHVybiBjfSxmYz0oYSxjKT0+e2lmKGViKXJldHVybiAwO2lmKCFjLmluY2x1ZGVzKCJyIil8fGEubW9kZSYyOTIpe2lmKGMuaW5jbHVkZXMoInciKSYmIShhLm1vZGUmMTQ2KXx8Yy5pbmNsdWRlcygieCIpJiYhKGEubW9kZSY3MykpcmV0dXJuIDJ9ZWxzZSByZXR1cm4gMjtyZXR1cm4gMH0samM9KGEsYyk9Pnt0cnl7cmV0dXJuIFdiKGEsYyksMjB9Y2F0Y2goZCl7fXJldHVybiBmYyhhLCJ3eCIpfSxrYz0oYSxjLGQpPT57dHJ5e3ZhciBlPVdiKGEsYyl9Y2F0Y2goZil7cmV0dXJuIGYuc31pZihhPQ0KZmMoYSwid3giKSlyZXR1cm4gYTtpZihkKXtpZigxNjM4NCE9PShlLm1vZGUmNjE0NDApKXJldHVybiA1NDtpZihlPT09ZS5wYXJlbnR8fCIvIj09PWNjKGUpKXJldHVybiAxMH1lbHNlIGlmKDE2Mzg0PT09KGUubW9kZSY2MTQ0MCkpcmV0dXJuIDMxO3JldHVybiAwfSxsYz0oYT0wKT0+e2Zvcig7NDA5Nj49YTthKyspaWYoIVpiW2FdKXJldHVybiBhO3Rocm93IG5ldyB2KDMzKTt9LG5jPShhLGMpPT57bWN8fChtYz1mdW5jdGlvbigpe3RoaXMuJD17fX0sbWMucHJvdG90eXBlPXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG1jLnByb3RvdHlwZSx7b2JqZWN0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlfSxzZXQ6ZnVuY3Rpb24oZCl7dGhpcy5ub2RlPWR9fSxmbGFnczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJC5mbGFnc30sc2V0OmZ1bmN0aW9uKGQpe3RoaXMuJC5mbGFncz1kfX0scG9zaXRpb246e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiQucG9zaXRpb259LA0Kc2V0OmZ1bmN0aW9uKGQpe3RoaXMuJC5wb3NpdGlvbj1kfX19KSk7YT1PYmplY3QuYXNzaWduKG5ldyBtYyxhKTtjPWxjKGMpO2EuZmQ9YztyZXR1cm4gWmJbY109YX0sVGI9e29wZW46YT0+e2Euaj1ZYlthLm5vZGUucmRldl0uajthLmoub3BlbiYmYS5qLm9wZW4oYSl9LEg6KCk9Pnt0aHJvdyBuZXcgdig3MCk7fX0sUGI9KGEsYyk9PntZYlthXT17ajpjfX0sb2M9KGEsYyk9Pnt2YXIgZD0iLyI9PT1jLGU9IWM7aWYoZCYmWGIpdGhyb3cgbmV3IHYoMTApO2lmKCFkJiYhZSl7dmFyIGY9dmIoYyx7QmE6ITF9KTtjPWYucGF0aDtmPWYubm9kZTtpZihmLk0pdGhyb3cgbmV3IHYoMTApO2lmKDE2Mzg0IT09KGYubW9kZSY2MTQ0MCkpdGhyb3cgbmV3IHYoNTQpO31jPXt0eXBlOmEsUmI6e30sSWE6YyxuYjpbXX07YT1hLkQoYyk7YS5EPWM7Yy5yb290PWE7ZD9YYj1hOmYmJihmLk09YyxmLkQmJmYuRC5uYi5wdXNoKGMpKX0scGM9KGEsYyxkKT0+e3ZhciBlPXZiKGEse3BhcmVudDohMH0pLm5vZGU7DQphPUhiKGEpO2lmKCFhfHwiLiI9PT1hfHwiLi4iPT09YSl0aHJvdyBuZXcgdigyOCk7dmFyIGY9amMoZSxhKTtpZihmKXRocm93IG5ldyB2KGYpO2lmKCFlLmguWil0aHJvdyBuZXcgdig2Myk7cmV0dXJuIGUuaC5aKGUsYSxjLGQpfSxxYz0oYSxjLGQpPT57InVuZGVmaW5lZCI9PXR5cGVvZiBkJiYoZD1jLGM9NDM4KTtwYyhhLGN8ODE5MixkKX0sY2I9KGEsYyk9PntpZighS2IoYSkpdGhyb3cgbmV3IHYoNDQpO3ZhciBkPXZiKGMse3BhcmVudDohMH0pLm5vZGU7aWYoIWQpdGhyb3cgbmV3IHYoNDQpO2M9SGIoYyk7dmFyIGU9amMoZCxjKTtpZihlKXRocm93IG5ldyB2KGUpO2lmKCFkLmguc3ltbGluayl0aHJvdyBuZXcgdig2Myk7ZC5oLnN5bWxpbmsoZCxjLGEpfSxyYz1hPT57dmFyIGM9dmIoYSx7cGFyZW50OiEwfSkubm9kZTthPUhiKGEpO3ZhciBkPVdiKGMsYSksZT1rYyhjLGEsITApO2lmKGUpdGhyb3cgbmV3IHYoZSk7aWYoIWMuaC5ybWRpcil0aHJvdyBuZXcgdig2Myk7aWYoZC5NKXRocm93IG5ldyB2KDEwKTsNCmMuaC5ybWRpcihjLGEpO2VjKGQpfSxiYz1hPT57YT12YihhKS5ub2RlO2lmKCFhKXRocm93IG5ldyB2KDQ0KTtpZighYS5oLnJlYWRsaW5rKXRocm93IG5ldyB2KDI4KTtyZXR1cm4gS2IoY2MoYS5wYXJlbnQpLGEuaC5yZWFkbGluayhhKSl9LGRiPShhLGMsZCk9PntpZigiIj09PWEpdGhyb3cgbmV3IHYoNDQpO2lmKCJzdHJpbmciPT10eXBlb2YgYyl7dmFyIGU9aGNbY107aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlKXRocm93IEVycm9yKCJVbmtub3duIGZpbGUgb3BlbiBtb2RlOiAiK2MpO2M9ZX1kPWMmNjQ/KCJ1bmRlZmluZWQiPT10eXBlb2YgZD80Mzg6ZCkmNDA5NXwzMjc2ODowO2lmKCJvYmplY3QiPT10eXBlb2YgYSl2YXIgZj1hO2Vsc2V7YT1GYihhKTt0cnl7Zj12YihhLHtmYTohKGMmMTMxMDcyKX0pLm5vZGV9Y2F0Y2goZyl7fX1lPSExO2lmKGMmNjQpaWYoZil7aWYoYyYxMjgpdGhyb3cgbmV3IHYoMjApO31lbHNlIGY9cGMoYSxkLDApLGU9ITA7aWYoIWYpdGhyb3cgbmV3IHYoNDQpOw0KODE5Mj09PShmLm1vZGUmNjE0NDApJiYoYyY9LTUxMyk7aWYoYyY2NTUzNiYmMTYzODQhPT0oZi5tb2RlJjYxNDQwKSl0aHJvdyBuZXcgdig1NCk7aWYoIWUmJihkPWY/NDA5NjA9PT0oZi5tb2RlJjYxNDQwKT8zMjoxNjM4ND09PShmLm1vZGUmNjE0NDApJiYoInIiIT09aWMoYyl8fGMmNTEyKT8zMTpmYyhmLGljKGMpKTo0NCkpdGhyb3cgbmV3IHYoZCk7aWYoYyY1MTImJiFlKXtkPWY7ZD0ic3RyaW5nIj09dHlwZW9mIGQ/dmIoZCx7ZmE6ITB9KS5ub2RlOmQ7aWYoIWQuaC5CKXRocm93IG5ldyB2KDYzKTtpZigxNjM4ND09PShkLm1vZGUmNjE0NDApKXRocm93IG5ldyB2KDMxKTtpZigzMjc2OCE9PShkLm1vZGUmNjE0NDApKXRocm93IG5ldyB2KDI4KTtpZihlPWZjKGQsInciKSl0aHJvdyBuZXcgdihlKTtkLmguQihkLHtzaXplOjAsdGltZXN0YW1wOkRhdGUubm93KCl9KX1jJj0tMTMxNzEzO2Y9bmMoe25vZGU6ZixwYXRoOmNjKGYpLGZsYWdzOmMsc2Vla2FibGU6ITAscG9zaXRpb246MCwNCmo6Zi5qLEZiOltdLGVycm9yOiExfSk7Zi5qLm9wZW4mJmYuai5vcGVuKGYpOyFuLmxvZ1JlYWRGaWxlc3x8YyYxfHwoc2N8fChzYz17fSksYSBpbiBzY3x8KHNjW2FdPTEpKTtyZXR1cm4gZn0seWI9YT0+e2lmKG51bGw9PT1hLmZkKXRocm93IG5ldyB2KDgpO2EuamEmJihhLmphPW51bGwpO3RyeXthLmouY2xvc2UmJmEuai5jbG9zZShhKX1jYXRjaChjKXt0aHJvdyBjO31maW5hbGx5e1piW2EuZmRdPW51bGx9YS5mZD1udWxsfSx0Yz0oYSxjLGQpPT57aWYobnVsbD09PWEuZmQpdGhyb3cgbmV3IHYoOCk7aWYoIWEuc2Vla2FibGV8fCFhLmouSCl0aHJvdyBuZXcgdig3MCk7aWYoMCE9ZCYmMSE9ZCYmMiE9ZCl0aHJvdyBuZXcgdigyOCk7YS5wb3NpdGlvbj1hLmouSChhLGMsZCk7YS5GYj1bXX0sd2I9KGEsYyxkLGUsZik9PntpZigwPmV8fDA+Zil0aHJvdyBuZXcgdigyOCk7aWYobnVsbD09PWEuZmQpdGhyb3cgbmV3IHYoOCk7aWYoMT09PShhLmZsYWdzJjIwOTcxNTUpKXRocm93IG5ldyB2KDgpOw0KaWYoMTYzODQ9PT0oYS5ub2RlLm1vZGUmNjE0NDApKXRocm93IG5ldyB2KDMxKTtpZighYS5qLnJlYWQpdGhyb3cgbmV3IHYoMjgpO3ZhciBnPSJ1bmRlZmluZWQiIT10eXBlb2YgZjtpZighZylmPWEucG9zaXRpb247ZWxzZSBpZighYS5zZWVrYWJsZSl0aHJvdyBuZXcgdig3MCk7Yz1hLmoucmVhZChhLGMsZCxlLGYpO2d8fChhLnBvc2l0aW9uKz1jKTtyZXR1cm4gY30sYWI9KCk9Pnt2fHwodj1mdW5jdGlvbihhLGMpe3RoaXMubmFtZT0iRXJybm9FcnJvciI7dGhpcy5ub2RlPWM7dGhpcy5yYj1mdW5jdGlvbihkKXt0aGlzLnM9ZH07dGhpcy5yYihhKTt0aGlzLm1lc3NhZ2U9IkZTIGVycm9yIn0sdi5wcm90b3R5cGU9RXJyb3IoKSx2LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj12LFs0NF0uZm9yRWFjaChhPT57VmJbYV09bmV3IHYoYSk7VmJbYV0uc3RhY2s9IjxnZW5lcmljIGVycm9yLCBubyBzdGFjaz4ifSkpfSwkYSx1Yz0oYSxjKT0+e3ZhciBkPTA7YSYmKGR8PTM2NSk7YyYmKGR8PQ0KMTQ2KTtyZXR1cm4gZH0sYmI9KGEsYyxkKT0+e2E9RmIoIi9kZXYvIithKTt2YXIgZT11YyghIWMsISFkKTt2Y3x8KHZjPTY0KTt2YXIgZj12YysrPDw4fDA7UGIoZix7b3BlbjpnPT57Zy5zZWVrYWJsZT0hMX0sY2xvc2U6KCk9PntkJiZkLmJ1ZmZlciYmZC5idWZmZXIubGVuZ3RoJiZkKDEwKX0scmVhZDooZyxoLGwsdCk9Pntmb3IodmFyIHA9MCx4PTA7eDx0O3grKyl7dHJ5e3ZhciBVPWMoKX1jYXRjaChRKXt0aHJvdyBuZXcgdigyOSk7fWlmKHZvaWQgMD09PVUmJjA9PT1wKXRocm93IG5ldyB2KDYpO2lmKG51bGw9PT1VfHx2b2lkIDA9PT1VKWJyZWFrO3ArKztoW2wreF09VX1wJiYoZy5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKTtyZXR1cm4gcH0sd3JpdGU6KGcsaCxsLHQpPT57Zm9yKHZhciBwPTA7cDx0O3ArKyl0cnl7ZChoW2wrcF0pfWNhdGNoKHgpe3Rocm93IG5ldyB2KDI5KTt9dCYmKGcubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSk7cmV0dXJuIHB9fSk7cWMoYSxlLA0KZil9LHZjLHdjPXt9LG1jLHNjLHhjPSJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwOw0KZnVuY3Rpb24geGIoYSxjLGQpe3ZhciBlPWMrZDtmb3IoZD1jO2FbZF0mJiEoZD49ZSk7KSsrZDtpZigxNjxkLWMmJmEuYnVmZmVyJiZ4YylyZXR1cm4geGMuZGVjb2RlKGEuYnVmZmVyIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/YS5zbGljZShjLGQpOmEuc3ViYXJyYXkoYyxkKSk7Zm9yKGU9IiI7YzxkOyl7dmFyIGY9YVtjKytdO2lmKGYmMTI4KXt2YXIgZz1hW2MrK10mNjM7aWYoMTkyPT0oZiYyMjQpKWUrPVN0cmluZy5mcm9tQ2hhckNvZGUoKGYmMzEpPDw2fGcpO2Vsc2V7dmFyIGg9YVtjKytdJjYzO2Y9MjI0PT0oZiYyNDApPyhmJjE1KTw8MTJ8Zzw8NnxoOihmJjcpPDwxOHxnPDwxMnxoPDw2fGFbYysrXSY2Mzs2NTUzNj5mP2UrPVN0cmluZy5mcm9tQ2hhckNvZGUoZik6KGYtPTY1NTM2LGUrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8Zj4+MTAsNTYzMjB8ZiYxMDIzKSl9fWVsc2UgZSs9U3RyaW5nLmZyb21DaGFyQ29kZShmKX1yZXR1cm4gZX0NCmZ1bmN0aW9uIHIoYSxjKXtyZXR1cm4gYT94YihpYSgpLGEsYyk6IiJ9ZnVuY3Rpb24geWMoYSxjKXtpZigiLyI9PT1jLmNoYXJBdCgwKSlyZXR1cm4gYzthPS0xMDA9PT1hPyIvIjp6YyhhKS5wYXRoO2lmKDA9PWMubGVuZ3RoKXRocm93IG5ldyB2KDQ0KTtyZXR1cm4gRmIoYSsiLyIrYyl9dmFyIEFjPXZvaWQgMDtmdW5jdGlvbiBCYygpe0FjKz00O3JldHVybiBiKClbQWMtND4+Ml19ZnVuY3Rpb24gemMoYSl7YT1aYlthXTtpZighYSl0aHJvdyBuZXcgdig4KTtyZXR1cm4gYX1mdW5jdGlvbiBDYyhhKXtpZihxKXJldHVybiBEYygxLDEsYSk7UWE9YTtpZighWWEoKSl7dy56YigpO2lmKG4ub25FeGl0KW4ub25FeGl0KGEpO1BhPSEwfXdhKGEsbmV3IEFiKGEpKX1mdW5jdGlvbiBFYyhhKXtRYT1hO2lmKHEpdGhyb3cgRmMoYSksInVud2luZCI7Q2MoYSl9ZnVuY3Rpb24gR2MoYSl7YSBpbnN0YW5jZW9mIEFifHwidW53aW5kIj09YXx8d2EoMSxhKX0NCnZhciB3PXtHOltdLEk6W10sT2E6W10sRjp7fSxoYjpmdW5jdGlvbigpe3E/dy5rYigpOncuamIoKX0samI6ZnVuY3Rpb24oKXtmb3IodmFyIGE9MTthLS07KXcudWEoKX0sa2I6ZnVuY3Rpb24oKXt3LnJlY2VpdmVPYmplY3RUcmFuc2Zlcj13Lm9iO3cudGhyZWFkSW5pdFRMUz13Lk5hO3cuc2V0RXhpdFN0YXR1cz13LkxhO25vRXhpdFJ1bnRpbWU9ITF9LExhOmZ1bmN0aW9uKGEpe1FhPWF9LFdiOlsiJHRlcm1pbmF0ZVdvcmtlciJdLHpiOmZ1bmN0aW9uKCl7Zm9yKHZhciBhIG9mIHcuSSlCYihhKTtmb3IoYSBvZiB3LkcpQmIoYSk7dy5HPVtdO3cuST1bXTt3LkY9W119LHFiOmZ1bmN0aW9uKGEpe3ZhciBjPWEuQTtkZWxldGUgdy5GW2NdO3cuRy5wdXNoKGEpO3cuSS5zcGxpY2Uody5JLmluZGV4T2YoYSksMSk7YS5BPTA7emEmJmEudW5yZWYoKTtIYyhjKX0sb2I6ZnVuY3Rpb24oKXt9LE5hOmZ1bmN0aW9uKCl7dy5PYS5mb3JFYWNoKGE9PmEoKSl9LEVhOmE9Pm5ldyBQcm9taXNlKGM9Pg0Ke2Eub25tZXNzYWdlPWc9PntnPWcuZGF0YTt2YXIgaD1nLmNtZDthLkEmJih3LlhhPWEuQSk7aWYoZy50YXJnZXRUaHJlYWQmJmcudGFyZ2V0VGhyZWFkIT1JYygpKXt2YXIgbD13LkZbZy5WYl07bD9sLnBvc3RNZXNzYWdlKGcsZy50cmFuc2Zlckxpc3QpOkxhKCdJbnRlcm5hbCBlcnJvciEgV29ya2VyIHNlbnQgYSBtZXNzYWdlICInK2grJyIgdG8gdGFyZ2V0IHB0aHJlYWQgJytnLnRhcmdldFRocmVhZCsiLCBidXQgdGhhdCB0aHJlYWQgbm8gbG9uZ2VyIGV4aXN0cyEiKX1lbHNlIGlmKCJjaGVja01haWxib3giPT09aClKYygpO2Vsc2UgaWYoInNwYXduVGhyZWFkIj09PWgpRGIoZyk7ZWxzZSBpZigiY2xlYW51cFRocmVhZCI9PT1oKUNiKGcudGhyZWFkKTtlbHNlIGlmKCJraWxsVGhyZWFkIj09PWgpZz1nLnRocmVhZCxoPXcuRltnXSxkZWxldGUgdy5GW2ddLEJiKGgpLEhjKGcpLHcuSS5zcGxpY2Uody5JLmluZGV4T2YoaCksMSksaC5BPTA7ZWxzZSBpZigiY2FuY2VsVGhyZWFkIj09PQ0KaCl3LkZbZy50aHJlYWRdLnBvc3RNZXNzYWdlKHtjbWQ6ImNhbmNlbCJ9KTtlbHNlIGlmKCJsb2FkZWQiPT09aClhLmxvYWRlZD0hMCx6YSYmIWEuQSYmYS51bnJlZigpLGMoYSk7ZWxzZSBpZigicHJpbnQiPT09aClLYSgiVGhyZWFkICIrZy50aHJlYWRJZCsiOiAiK2cudGV4dCk7ZWxzZSBpZigicHJpbnRFcnIiPT09aClMYSgiVGhyZWFkICIrZy50aHJlYWRJZCsiOiAiK2cudGV4dCk7ZWxzZSBpZigiYWxlcnQiPT09aClhbGVydCgiVGhyZWFkICIrZy50aHJlYWRJZCsiOiAiK2cudGV4dCk7ZWxzZSBpZigic2V0aW1tZWRpYXRlIj09PWcudGFyZ2V0KWEucG9zdE1lc3NhZ2UoZyk7ZWxzZSBpZigiY2FsbEhhbmRsZXIiPT09aCluW2cuaGFuZGxlcl0oLi4uZy5hcmdzKTtlbHNlIGgmJkxhKCJ3b3JrZXIgc2VudCBhbiB1bmtub3duIGNvbW1hbmQgIitoKTt3LlhhPXZvaWQgMH07YS5vbmVycm9yPWc9PntMYSgid29ya2VyIHNlbnQgYW4gZXJyb3IhICIrZy5maWxlbmFtZSsiOiIrZy5saW5lbm8rDQoiOiAiK2cubWVzc2FnZSk7dGhyb3cgZzt9O3phJiYoYS5vbigibWVzc2FnZSIsZnVuY3Rpb24oZyl7YS5vbm1lc3NhZ2Uoe2RhdGE6Z30pfSksYS5vbigiZXJyb3IiLGZ1bmN0aW9uKGcpe2Eub25lcnJvcihnKX0pLGEub24oImRldGFjaGVkRXhpdCIsZnVuY3Rpb24oKXt9KSk7dmFyIGQ9W10sZT1bIm9uRXhpdCIsIm9uQWJvcnQiLCJwcmludCIsInByaW50RXJyIl0sZjtmb3IoZiBvZiBlKW4uaGFzT3duUHJvcGVydHkoZikmJmQucHVzaChmKTthLnBvc3RNZXNzYWdlKHtjbWQ6ImxvYWQiLGhhbmRsZXJzOmQsdXJsT3JCbG9iOm4ubWFpblNjcmlwdFVybE9yQmxvYnx8X3NjcmlwdERpcix3YXNtTWVtb3J5OmNhLHdhc21Nb2R1bGU6T2F9KX0pLG1iOmZ1bmN0aW9uKGEpe2lmKHEpcmV0dXJuIGEoKTtQcm9taXNlLmFsbCh3LkcubWFwKHcuRWEpKS50aGVuKGEpfSx1YTpmdW5jdGlvbigpe3ZhciBhPUJhKCJteGRyYXdhc3NlbWJseV9taW4ud29ya2VyLmpzIik7YT1uZXcgV29ya2VyKGEpOw0Kdy5HLnB1c2goYSl9LFphOmZ1bmN0aW9uKCl7MD09dy5HLmxlbmd0aCYmKHcudWEoKSx3LkVhKHcuR1swXSkpO3JldHVybiB3LkcucG9wKCl9fTtuLlBUaHJlYWQ9dztmdW5jdGlvbiBmYihhKXtmb3IoOzA8YS5sZW5ndGg7KWEuc2hpZnQoKShuKX1uLmVzdGFibGlzaFN0YWNrU3BhY2U9ZnVuY3Rpb24oKXt2YXIgYT1JYygpLGM9YigpW2ErNTI+PjJdO2E9YigpW2ErNTY+PjJdO0tjKGMsYy1hKTtMYyhjKX07ZnVuY3Rpb24gRmMoYSl7aWYocSlyZXR1cm4gRGMoMiwwLGEpO0VjKGEpfXZhciBNYz1bXTtmdW5jdGlvbiBOYyhhKXt2YXIgYz1NY1thXTtjfHwoYT49TWMubGVuZ3RoJiYoTWMubGVuZ3RoPWErMSksTWNbYV09Yz1UYS5nZXQoYSkpO3JldHVybiBjfW4uaW52b2tlRW50cnlQb2ludD1mdW5jdGlvbihhLGMpe2E9TmMoYSkoYyk7WWEoKT93LkxhKGEpOk9jKGEpfTtmdW5jdGlvbiBQYyhhLGMsZCxlKXtyZXR1cm4gcT9EYygzLDEsYSxjLGQsZSk6UWMoYSxjLGQsZSl9DQpmdW5jdGlvbiBRYyhhLGMsZCxlKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyKXJldHVybiBMYSgiQ3VycmVudCBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IFNoYXJlZEFycmF5QnVmZmVyLCBwdGhyZWFkcyBhcmUgbm90IGF2YWlsYWJsZSEiKSw2O3ZhciBmPVtdO2lmKHEmJjA9PT1mLmxlbmd0aClyZXR1cm4gUGMoYSxjLGQsZSk7YT17eWI6ZCxBOmEsVGE6ZSxFYjpmfTtyZXR1cm4gcT8oYS5JYj0ic3Bhd25UaHJlYWQiLHBvc3RNZXNzYWdlKGEsZiksMCk6RGIoYSl9DQpmdW5jdGlvbiBSYyhhLGMsZCl7aWYocSlyZXR1cm4gRGMoNCwxLGEsYyxkKTtBYz1kO3RyeXt2YXIgZT16YyhhKTtzd2l0Y2goYyl7Y2FzZSAwOnZhciBmPUJjKCk7cmV0dXJuIDA+Zj8tMjg6bmMoZSxmKS5mZDtjYXNlIDE6Y2FzZSAyOnJldHVybiAwO2Nhc2UgMzpyZXR1cm4gZS5mbGFncztjYXNlIDQ6cmV0dXJuIGY9QmMoKSxlLmZsYWdzfD1mLDA7Y2FzZSA1OnJldHVybiBmPUJjKCksY2EuYnVmZmVyIT1kYS5idWZmZXImJmhhKCksUmFbZiswPj4xXT0yLDA7Y2FzZSA2OmNhc2UgNzpyZXR1cm4gMDtjYXNlIDE2OmNhc2UgODpyZXR1cm4tMjg7Y2FzZSA5OnJldHVybiBiKClbU2MoKT4+Ml09MjgsLTE7ZGVmYXVsdDpyZXR1cm4tMjh9fWNhdGNoKGcpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2N8fCJFcnJub0Vycm9yIiE9PWcubmFtZSl0aHJvdyBnO3JldHVybi1nLnN9fQ0KZnVuY3Rpb24gVGMoYSxjLGQpe2lmKHEpcmV0dXJuIERjKDUsMSxhLGMsZCk7QWM9ZDt0cnl7dmFyIGU9emMoYSk7c3dpdGNoKGMpe2Nhc2UgMjE1MDk6Y2FzZSAyMTUwNTpyZXR1cm4gZS50dHk/MDotNTk7Y2FzZSAyMTUxMDpjYXNlIDIxNTExOmNhc2UgMjE1MTI6Y2FzZSAyMTUwNjpjYXNlIDIxNTA3OmNhc2UgMjE1MDg6cmV0dXJuIGUudHR5PzA6LTU5O2Nhc2UgMjE1MTk6aWYoIWUudHR5KXJldHVybi01OTt2YXIgZj1CYygpO3JldHVybiBiKClbZj4+Ml09MDtjYXNlIDIxNTIwOnJldHVybiBlLnR0eT8tMjg6LTU5O2Nhc2UgMjE1MzE6YT1mPUJjKCk7aWYoIWUuai5sYil0aHJvdyBuZXcgdig1OSk7cmV0dXJuIGUuai5sYihlLGMsYSk7Y2FzZSAyMTUyMzpyZXR1cm4gZS50dHk/MDotNTk7Y2FzZSAyMTUyNDpyZXR1cm4gZS50dHk/MDotNTk7ZGVmYXVsdDpyZXR1cm4tMjh9fWNhdGNoKGcpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2N8fCJFcnJub0Vycm9yIiE9PWcubmFtZSl0aHJvdyBnOw0KcmV0dXJuLWcuc319ZnVuY3Rpb24gVWMoYSxjLGQsZSl7aWYocSlyZXR1cm4gRGMoNiwxLGEsYyxkLGUpO0FjPWU7dHJ5e2M9cihjKTtjPXljKGEsYyk7dmFyIGY9ZT9CYygpOjA7cmV0dXJuIGRiKGMsZCxmKS5mZH1jYXRjaChnKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdjfHwiRXJybm9FcnJvciIhPT1nLm5hbWUpdGhyb3cgZztyZXR1cm4tZy5zfX1mdW5jdGlvbiBWYyhhKXtpZihxKXJldHVybiBEYyg3LDEsYSk7dHJ5e3JldHVybiBhPXIoYSkscmMoYSksMH1jYXRjaChjKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdjfHwiRXJybm9FcnJvciIhPT1jLm5hbWUpdGhyb3cgYztyZXR1cm4tYy5zfX0NCmZ1bmN0aW9uIFdjKGEsYyxkKXtpZihxKXJldHVybiBEYyg4LDEsYSxjLGQpO3RyeXtjPXIoYyk7Yz15YyhhLGMpO2lmKDA9PT1kKXthPWM7dmFyIGU9dmIoYSx7cGFyZW50OiEwfSkubm9kZTtpZighZSl0aHJvdyBuZXcgdig0NCk7dmFyIGY9SGIoYSksZz1XYihlLGYpLGg9a2MoZSxmLCExKTtpZihoKXRocm93IG5ldyB2KGgpO2lmKCFlLmgudW5saW5rKXRocm93IG5ldyB2KDYzKTtpZihnLk0pdGhyb3cgbmV3IHYoMTApO2UuaC51bmxpbmsoZSxmKTtlYyhnKX1lbHNlIDUxMj09PWQ/cmMoYyk6TmEoIkludmFsaWQgZmxhZ3MgcGFzc2VkIHRvIHVubGlua2F0Iik7cmV0dXJuIDB9Y2F0Y2gobCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3Y3x8IkVycm5vRXJyb3IiIT09bC5uYW1lKXRocm93IGw7cmV0dXJuLWwuc319ZnVuY3Rpb24gWGMoYSl7aWYoIVBhKXRyeXtpZihhKCksIVlhKCkpdHJ5e3E/T2MoUWEpOkVjKFFhKX1jYXRjaChjKXtHYyhjKX19Y2F0Y2goYyl7R2MoYyl9fQ0KZnVuY3Rpb24gWWMoYSl7ImZ1bmN0aW9uIj09PXR5cGVvZiBBdG9taWNzLkdiJiYoQXRvbWljcy5HYihiKCksYT4+MixhKS52YWx1ZS50aGVuKEpjKSxhKz0xMjgsQXRvbWljcy5zdG9yZShiKCksYT4+MiwxKSl9bi5fX2Vtc2NyaXB0ZW5fdGhyZWFkX21haWxib3hfYXdhaXQ9WWM7ZnVuY3Rpb24gSmMoKXt2YXIgYT1JYygpO2EmJihZYyhhKSxYYygoKT0+WmMoKSkpfW4uY2hlY2tNYWlsYm94PUpjO3ZhciAkYz1bXTtmdW5jdGlvbiBhZChhKXtiZHx8KGJkPXt9KTtiZFthXXx8KGJkW2FdPTEsemEmJihhPSJ3YXJuaW5nOiAiK2EpLExhKGEpKX12YXIgYmQsY2Q7Y2Q9emE/KCk9Pnt2YXIgYT1wcm9jZXNzLmhydGltZSgpO3JldHVybiAxRTMqYVswXSthWzFdLzFFNn06KCk9PnBlcmZvcm1hbmNlLnRpbWVPcmlnaW4rcGVyZm9ybWFuY2Uubm93KCk7DQpmdW5jdGlvbiBkZChhLGMpe2lmKDA+PWEpcmV0dXJuIGE7dmFyIGQ9MzI+PWM/TWF0aC5hYnMoMTw8Yy0xKTpNYXRoLnBvdygyLGMtMSk7YT49ZCYmKDMyPj1jfHxhPmQpJiYoYT0tMipkK2EpO3JldHVybiBhfWZ1bmN0aW9uIGVkKGEsYyl7cmV0dXJuIDA8PWE/YTozMj49Yz8yKk1hdGguYWJzKDE8PGMtMSkrYTpNYXRoLnBvdygyLGMpK2F9ZnVuY3Rpb24gZmQoYSl7Zm9yKHZhciBjPWE7aWEoKVtjXTspKytjO3JldHVybiBjLWF9DQpmdW5jdGlvbiBnZChhLGMpe2Z1bmN0aW9uIGQoZmEpe3ZhciBBPWU7KCJkb3VibGUiPT09ZmF8fCJpNjQiPT09ZmEpJiZBJjcmJihBKz00KTtlPUE7ImRvdWJsZSI9PT1mYT8oZmE9cWEoKVtlPj4zXSxlKz04KToiaTY0Ij09ZmE/KGZhPVtiKClbZT4+Ml0sYigpW2UrND4+Ml1dLGUrPTgpOihmYT1iKClbZT4+Ml0sZSs9NCk7cmV0dXJuIGZhfWZvcih2YXIgZT1jLGY9W10sZyxoOzspe3ZhciBsPWE7Zz1iYSgpW2E+PjBdO2lmKDA9PT1nKWJyZWFrO2g9YmEoKVthKzE+PjBdO2lmKDM3PT1nKXt2YXIgdD0hMSxwPWM9ITEseD0hMSxVPSExO2E6Zm9yKDs7KXtzd2l0Y2goaCl7Y2FzZSA0Mzp0PSEwO2JyZWFrO2Nhc2UgNDU6Yz0hMDticmVhaztjYXNlIDM1OnA9ITA7YnJlYWs7Y2FzZSA0ODppZih4KWJyZWFrIGE7ZWxzZXt4PSEwO2JyZWFrfWNhc2UgMzI6VT0hMDticmVhaztkZWZhdWx0OmJyZWFrIGF9YSsrO2g9YmEoKVthKzE+PjBdfXZhciBRPTA7aWYoNDI9PWgpUT1kKCJpMzIiKSwNCmErKyxoPWJhKClbYSsxPj4wXTtlbHNlIGZvcig7NDg8PWgmJjU3Pj1oOylRPTEwKlErKGgtNDgpLGErKyxoPWJhKClbYSsxPj4wXTt2YXIgaz0hMSx6PS0xO2lmKDQ2PT1oKXt6PTA7az0hMDthKys7aD1iYSgpW2ErMT4+MF07aWYoNDI9PWgpej1kKCJpMzIiKSxhKys7ZWxzZSBmb3IoOzspe2g9YmEoKVthKzE+PjBdO2lmKDQ4Pmh8fDU3PGgpYnJlYWs7ej0xMCp6KyhoLTQ4KTthKyt9aD1iYSgpW2ErMT4+MF19MD56JiYoej02LGs9ITEpO3N3aXRjaChTdHJpbmcuZnJvbUNoYXJDb2RlKGgpKXtjYXNlICJoIjpoPWJhKClbYSsyPj4wXTtpZigxMDQ9PWgpe2ErKzt2YXIgeT0xfWVsc2UgeT0yO2JyZWFrO2Nhc2UgImwiOmg9YmEoKVthKzI+PjBdOzEwOD09aD8oYSsrLHk9OCk6eT00O2JyZWFrO2Nhc2UgIkwiOmNhc2UgInEiOmNhc2UgImoiOnk9ODticmVhaztjYXNlICJ6IjpjYXNlICJ0IjpjYXNlICJJIjp5PTQ7YnJlYWs7ZGVmYXVsdDp5PW51bGx9eSYmYSsrO2g9YmEoKVthKzE+Pg0KMF07c3dpdGNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaCkpe2Nhc2UgImQiOmNhc2UgImkiOmNhc2UgInUiOmNhc2UgIm8iOmNhc2UgIngiOmNhc2UgIlgiOmNhc2UgInAiOmw9MTAwPT1ofHwxMDU9PWg7eT15fHw0O2c9ZCgiaSIrOCp5KTs4PT15JiYoZz0xMTc9PWg/KGdbMF0+Pj4wKSs0Mjk0OTY3Mjk2KihnWzFdPj4+MCk6KGdbMF0+Pj4wKSs0Mjk0OTY3Mjk2KmdbMV0pOzQ+PXkmJihnPShsP2RkOmVkKShnJk1hdGgucG93KDI1Nix5KS0xLDgqeSkpO3ZhciBaPU1hdGguYWJzKGcpO2w9IiI7aWYoMTAwPT1ofHwxMDU9PWgpdmFyIHU9ZGQoZyw4KnkpLnRvU3RyaW5nKDEwKTtlbHNlIGlmKDExNz09aCl1PWVkKGcsOCp5KS50b1N0cmluZygxMCksZz1NYXRoLmFicyhnKTtlbHNlIGlmKDExMT09aCl1PShwPyIwIjoiIikrWi50b1N0cmluZyg4KTtlbHNlIGlmKDEyMD09aHx8ODg9PWgpe2w9cCYmMCE9Zz8iMHgiOiIiO2lmKDA+Zyl7Zz0tZzt1PShaLTEpLnRvU3RyaW5nKDE2KTtaPVtdOw0KZm9yKHA9MDtwPHUubGVuZ3RoO3ArKylaLnB1c2goKDE1LXBhcnNlSW50KHVbcF0sMTYpKS50b1N0cmluZygxNikpO2Zvcih1PVouam9pbigiIik7dS5sZW5ndGg8Mip5Oyl1PSJmIit1fWVsc2UgdT1aLnRvU3RyaW5nKDE2KTs4OD09aCYmKGw9bC50b1VwcGVyQ2FzZSgpLHU9dS50b1VwcGVyQ2FzZSgpKX1lbHNlIDExMj09aCYmKDA9PT1aP3U9IihuaWwpIjoobD0iMHgiLHU9Wi50b1N0cmluZygxNikpKTtpZihrKWZvcig7dS5sZW5ndGg8ejspdT0iMCIrdTswPD1nJiYodD9sPSIrIitsOlUmJihsPSIgIitsKSk7Ii0iPT11LmNoYXJBdCgwKSYmKGw9Ii0iK2wsdT11LnN1YnN0cigxKSk7Zm9yKDtsLmxlbmd0aCt1Lmxlbmd0aDxROyljP3UrPSIgIjp4P3U9IjAiK3U6bD0iICIrbDt1PWwrdTt1LnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGZhKXtmLnB1c2goZmEuY2hhckNvZGVBdCgwKSl9KTticmVhaztjYXNlICJmIjpjYXNlICJGIjpjYXNlICJlIjpjYXNlICJFIjpjYXNlICJnIjpjYXNlICJHIjpnPQ0KZCgiZG91YmxlIik7aWYoaXNOYU4oZykpdT0ibmFuIix4PSExO2Vsc2UgaWYoaXNGaW5pdGUoZykpe2s9ITE7eT1NYXRoLm1pbih6LDIwKTtpZigxMDM9PWh8fDcxPT1oKWs9ITAsej16fHwxLHk9cGFyc2VJbnQoZy50b0V4cG9uZW50aWFsKHkpLnNwbGl0KCJlIilbMV0sMTApLHo+eSYmLTQ8PXk/KGg9KDEwMz09aD8iZiI6IkYiKS5jaGFyQ29kZUF0KDApLHotPXkrMSk6KGg9KDEwMz09aD8iZSI6IkUiKS5jaGFyQ29kZUF0KDApLHotLSkseT1NYXRoLm1pbih6LDIwKTtpZigxMDE9PWh8fDY5PT1oKXU9Zy50b0V4cG9uZW50aWFsKHkpLC9bZUVdWy0rXVxkJC8udGVzdCh1KSYmKHU9dS5zbGljZSgwLC0xKSsiMCIrdS5zbGljZSgtMSkpO2Vsc2UgaWYoMTAyPT1ofHw3MD09aCl1PWcudG9GaXhlZCh5KSwwPT09ZyYmKDA+Z3x8MD09PWcmJi1JbmZpbml0eT09PTEvZykmJih1PSItIit1KTtsPXUuc3BsaXQoImUiKTtpZihrJiYhcClmb3IoOzE8bFswXS5sZW5ndGgmJmxbMF0uaW5jbHVkZXMoIi4iKSYmDQooIjAiPT1sWzBdLnNsaWNlKC0xKXx8Ii4iPT1sWzBdLnNsaWNlKC0xKSk7KWxbMF09bFswXS5zbGljZSgwLC0xKTtlbHNlIGZvcihwJiYtMT09dS5pbmRleE9mKCIuIikmJihsWzBdKz0iLiIpO3o+eSsrOylsWzBdKz0iMCI7dT1sWzBdKygxPGwubGVuZ3RoPyJlIitsWzFdOiIiKTs2OT09aCYmKHU9dS50b1VwcGVyQ2FzZSgpKTswPD1nJiYodD91PSIrIit1OlUmJih1PSIgIit1KSl9ZWxzZSB1PSgwPmc/Ii0iOiIiKSsiaW5mIix4PSExO2Zvcig7dS5sZW5ndGg8UTspdT1jP3UrIiAiOiF4fHwiLSIhPXVbMF0mJiIrIiE9dVswXT8oeD8iMCI6IiAiKSt1OnVbMF0rIjAiK3Uuc2xpY2UoMSk7OTc+aCYmKHU9dS50b1VwcGVyQ2FzZSgpKTt1LnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGZhKXtmLnB1c2goZmEuY2hhckNvZGVBdCgwKSl9KTticmVhaztjYXNlICJzIjp4PSh0PWQoImk4KiIpKT9mZCh0KTo2O2smJih4PU1hdGgubWluKHgseikpO2lmKCFjKWZvcig7eDxRLS07KWYucHVzaCgzMik7DQppZih0KWZvcihwPTA7cDx4O3ArKylmLnB1c2goaWEoKVt0Kys+PjBdKTtlbHNlIGY9Zi5jb25jYXQoTWIoIihudWxsKSIuc3Vic3RyKDAseCksITApKTtpZihjKWZvcig7eDxRLS07KWYucHVzaCgzMik7YnJlYWs7Y2FzZSAiYyI6Zm9yKGMmJmYucHVzaChkKCJpOCIpKTswPC0tUTspZi5wdXNoKDMyKTtjfHxmLnB1c2goZCgiaTgiKSk7YnJlYWs7Y2FzZSAibiI6Yz1kKCJpMzIqIik7YigpW2M+PjJdPWYubGVuZ3RoO2JyZWFrO2Nhc2UgIiUiOmYucHVzaChnKTticmVhaztkZWZhdWx0OmZvcihwPWw7cDxhKzI7cCsrKWYucHVzaChiYSgpW3A+PjBdKX1hKz0yfWVsc2UgZi5wdXNoKGcpLGErPTF9cmV0dXJuIGZ9DQpmdW5jdGlvbiBoZChhKXtpZighYXx8IWEuY2FsbGVlfHwhYS5jYWxsZWUubmFtZSlyZXR1cm5bbnVsbCwiIiwiIl07dmFyIGM9YS5jYWxsZWUubmFtZSxkPSIoIixlPSEwLGY7Zm9yKGYgaW4gYSl7dmFyIGc9YVtmXTtlfHwoZCs9IiwgIik7ZT0hMTtkPSJudW1iZXIiPT10eXBlb2YgZ3x8InN0cmluZyI9PXR5cGVvZiBnP2QrZzpkKygiKCIrdHlwZW9mIGcrIikiKX1kKz0iKSI7YT0oYT1hLmNhbGxlZS5jYWxsZXIpP2EuYXJndW1lbnRzOltdO2UmJihkPSIiKTtyZXR1cm5bYSxjLGRdfQ0KZnVuY3Rpb24gamQoYSl7YTp7dmFyIGM9RXJyb3IoKTtpZighYy5zdGFjayl7dHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKHope2M9en1pZighYy5zdGFjayl7Yz0iKG5vIHN0YWNrIHRyYWNlIGF2YWlsYWJsZSkiO2JyZWFrIGF9fWM9Yy5zdGFjay50b1N0cmluZygpfWM9Yy5zbGljZShjLmluZGV4T2YoIlxuIixNYXRoLm1heChjLmxhc3RJbmRleE9mKCJfZW1zY3JpcHRlbl9sb2ciKSxjLmxhc3RJbmRleE9mKCJfZW1zY3JpcHRlbl9nZXRfY2FsbHN0YWNrIikpKSsxKTthJjMyJiZhZCgiRU1fTE9HX0RFTUFOR0xFIGlzIGRlcHJlY2F0ZWQ7IGlnbm9yaW5nIik7YSY4JiYidW5kZWZpbmVkIj09dHlwZW9mIGVtc2NyaXB0ZW5fc291cmNlX21hcCYmKGFkKCdTb3VyY2UgbWFwIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUsIGVtc2NyaXB0ZW5fbG9nIHdpdGggRU1fTE9HX0NfU1RBQ0sgd2lsbCBiZSBpZ25vcmVkLiBCdWlsZCB3aXRoICItLXByZS1qcyAkRU1TQ1JJUFRFTi9zcmMvZW1zY3JpcHRlbi1zb3VyY2UtbWFwLm1pbi5qcyIgbGlua2VyIGZsYWcgdG8gYWRkIHNvdXJjZSBtYXAgbG9hZGluZyB0byBjb2RlLicpLA0KYT1hXjh8MTYpO3ZhciBkPW51bGw7aWYoYSYxMjgpZm9yKGQ9aGQoYXJndW1lbnRzKTtkWzFdLmluY2x1ZGVzKCJfZW1zY3JpcHRlbl8iKTspZD1oZChkWzBdKTt2YXIgZT1jLnNwbGl0KCJcbiIpO2M9IiI7dmFyIGY9UmVnRXhwKCJcXHMqKC4qPylAKC4qPyk6KFswLTldKyk6KFswLTldKykiKSxnPVJlZ0V4cCgiXFxzKiguKj8pQCguKik6KC4qKSg6KC4qKSk/IiksaD1SZWdFeHAoIlxccyphdCAoLio/KSBcXCgoLiopOiguKik6KC4qKVxcKSIpLGw7Zm9yKGwgaW4gZSl7dmFyIHQ9ZVtsXSxwO2lmKChwPWguZXhlYyh0KSkmJjU9PXAubGVuZ3RoKXt0PXBbMV07dmFyIHg9cFsyXTt2YXIgVT1wWzNdO3A9cFs0XX1lbHNlIGlmKChwPWYuZXhlYyh0KSl8fChwPWcuZXhlYyh0KSkscCYmNDw9cC5sZW5ndGgpdD1wWzFdLHg9cFsyXSxVPXBbM10scD1wWzRdfDA7ZWxzZXtjKz10KyJcbiI7Y29udGludWV9dmFyIFE9ITE7aWYoYSY4KXt2YXIgaz1lbXNjcmlwdGVuX3NvdXJjZV9tYXAuU2Ioe2xpbmU6VSwNClZhOnB9KTtpZihRPWsmJmsuc291cmNlKWEmNjQmJihrLnNvdXJjZT1rLnNvdXJjZS5zdWJzdHJpbmcoay5zb3VyY2UucmVwbGFjZSgvXFwvZywiLyIpLmxhc3RJbmRleE9mKCIvIikrMSkpLGMrPSIgICAgYXQgIit0KyIgKCIray5zb3VyY2UrIjoiK2subGluZSsiOiIray5WYSsiKVxuIn1pZihhJjE2fHwhUSlhJjY0JiYoeD14LnN1YnN0cmluZyh4LnJlcGxhY2UoL1xcL2csIi8iKS5sYXN0SW5kZXhPZigiLyIpKzEpKSxjKz0oUT8iICAgICA9ICIrdDoiICAgIGF0ICIrdCkrIiAoIit4KyI6IitVKyI6IitwKyIpXG4iO2EmMTI4JiZkWzBdJiYoZFsxXT09dCYmMDxkWzJdLmxlbmd0aCYmKGM9Yy5yZXBsYWNlKC9ccyskLywiIiksYys9IiB3aXRoIHZhbHVlczogIitkWzFdK2RbMl0rIlxuIiksZD1oZChkWzBdKSl9cmV0dXJuIGM9Yy5yZXBsYWNlKC9ccyskLywiIil9ZnVuY3Rpb24ga2QoYSl7dmFyIGM9bGQoKTthPWEoKTtMYyhjKTtyZXR1cm4gYX0NCmZ1bmN0aW9uIERjKGEsYyl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aC0yLGU9YXJndW1lbnRzO3JldHVybiBrZCgoKT0+e2Zvcih2YXIgZj1tZCg4KmQpLGc9Zj4+MyxoPTA7aDxkO2grKyl7dmFyIGw9ZVsyK2hdO3FhKClbZytoXT1sfXJldHVybiBuZChhLGQsZixjKX0pfXZhciBvZD1bXSxwZD17fTtmdW5jdGlvbiBxZChhLGMpe3RyeXt2YXIgZD1pbmRleGVkREIub3BlbigiZW1zY3JpcHRlbl9maWxlc3lzdGVtIiwxKX1jYXRjaChlKXtjKGUpO3JldHVybn1kLm9udXBncmFkZW5lZWRlZD1lPT57ZT1lLnRhcmdldC5yZXN1bHQ7ZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJGSUxFUyIpJiZlLmRlbGV0ZU9iamVjdFN0b3JlKCJGSUxFUyIpO2UuY3JlYXRlT2JqZWN0U3RvcmUoIkZJTEVTIil9O2Qub25zdWNjZXNzPWU9PmEoZS50YXJnZXQucmVzdWx0KTtkLm9uZXJyb3I9ZT0+YyhlKX12YXIgcmQ7DQpmdW5jdGlvbiBzZChhLGMsZCxlLGYpe2Z1bmN0aW9uIGcoKXt2YXIgZWE9MCxFYT0wO0EucmVzcG9uc2UmJnUmJjA9PT1tKClbYSsxMj4+Ml0mJihFYT1BLnJlc3BvbnNlLmJ5dGVMZW5ndGgpOzA8RWEmJihlYT10ZChFYSksaWEoKS5zZXQobmV3IFVpbnQ4QXJyYXkoQS5yZXNwb25zZSksZWEpKTttKClbYSsxMj4+Ml09ZWE7dWQoYSsxNixFYSk7dWQoYSsyNCwwKTsoZWE9QS5yZXNwb25zZT9BLnJlc3BvbnNlLmJ5dGVMZW5ndGg6MCkmJnVkKGErMzIsZWEpO2thKClbYSs0MD4+MV09QS5yZWFkeVN0YXRlO2thKClbYSs0Mj4+MV09QS5zdGF0dXM7QS5zdGF0dXNUZXh0JiZ2ZChBLnN0YXR1c1RleHQsYSs0NCw2NCl9dmFyIGg9bSgpW2ErOD4+Ml07aWYoaCl7dmFyIGw9cihoKSx0PWErMTEyLHA9cih0KTtwfHwocD0iR0VUIik7bSgpO3ZhciB4PW0oKVt0KzUyPj4yXSxVPW0oKVt0KzU2Pj4yXSxRPSEhbSgpW3QrNjA+PjJdO20oKTt2YXIgaz1tKClbdCs2OD4+Ml0sej1tKClbdCs3Mj4+DQoyXTtoPW0oKVt0Kzc2Pj4yXTt2YXIgeT1tKClbdCs4MD4+Ml0sWj1tKClbdCs4ND4+Ml07dD1tKClbdCs4OD4+Ml07dmFyIHU9ISEoeCYxKSxmYT0hISh4JjIpO3g9ISEoeCY2NCk7az1rP3Ioayk6dm9pZCAwO3o9ej9yKHopOnZvaWQgMDt2YXIgQT1uZXcgWE1MSHR0cFJlcXVlc3Q7QS53aXRoQ3JlZGVudGlhbHM9UTtBLm9wZW4ocCxsLCF4LGsseik7eHx8KEEudGltZW91dD1VKTtBLlliPWw7QS5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjt5JiYobD1yKHkpLEEub3ZlcnJpZGVNaW1lVHlwZShsKSk7aWYoaClmb3IoOzspe3A9bSgpW2g+PjJdO2lmKCFwKWJyZWFrO2w9bSgpW2grND4+Ml07aWYoIWwpYnJlYWs7aCs9ODtwPXIocCk7bD1yKGwpO0Euc2V0UmVxdWVzdEhlYWRlcihwLGwpfXZhciBKYT1tKClbYSswPj4yXTtwZFtKYV09QTtoPVomJnQ/aWEoKS5zbGljZShaLFordCk6bnVsbDtBLm9ubG9hZD1lYT0+e0phIGluIHBkJiYoZygpLDIwMDw9QS5zdGF0dXMmJjMwMD5BLnN0YXR1cz8NCmMmJmMoYSxBLGVhKTpkJiZkKGEsQSxlYSkpfTtBLm9uZXJyb3I9ZWE9PntKYSBpbiBwZCYmKGcoKSxkJiZkKGEsQSxlYSkpfTtBLm9udGltZW91dD1lYT0+e0phIGluIHBkJiZkJiZkKGEsQSxlYSl9O0Eub25wcm9ncmVzcz1lYT0+e2lmKEphIGluIHBkKXt2YXIgRWE9dSYmZmEmJkEucmVzcG9uc2U/QS5yZXNwb25zZS5ieXRlTGVuZ3RoOjAsYWE9MDswPEVhJiZ1JiZmYSYmKGFhPXRkKEVhKSxpYSgpLnNldChuZXcgVWludDhBcnJheShBLnJlc3BvbnNlKSxhYSkpO20oKVthKzEyPj4yXT1hYTt1ZChhKzE2LEVhKTt1ZChhKzI0LGVhLmxvYWRlZC1FYSk7dWQoYSszMixlYS50b3RhbCk7a2EoKVthKzQwPj4xXT1BLnJlYWR5U3RhdGU7Mzw9QS5yZWFkeVN0YXRlJiYwPT09QS5zdGF0dXMmJjA8ZWEubG9hZGVkJiYoQS5zdGF0dXM9MjAwKTtrYSgpW2ErNDI+PjFdPUEuc3RhdHVzO0Euc3RhdHVzVGV4dCYmdmQoQS5zdGF0dXNUZXh0LGErNDQsNjQpO2UmJmUoYSxBLGVhKTthYSYmd2QoYWEpfX07DQpBLm9ucmVhZHlzdGF0ZWNoYW5nZT1lYT0+e0phIGluIHBkPyhrYSgpW2ErNDA+PjFdPUEucmVhZHlTdGF0ZSwyPD1BLnJlYWR5U3RhdGUmJihrYSgpW2ErNDI+PjFdPUEuc3RhdHVzKSxmJiZmKGEsQSxlYSkpOi0tWGF9O3RyeXtBLnNlbmQoaCl9Y2F0Y2goZWEpe2QmJmQoYSxBLGVhKX19ZWxzZSBkKGEsMCwibm8gdXJsIHNwZWNpZmllZCEiKX1mdW5jdGlvbiB1ZChhLGMpe20oKVthPj4yXT1jO20oKVthKzQ+PjJdPShjLW0oKVthPj4yXSkvNDI5NDk2NzI5Nn1mdW5jdGlvbiB2ZChhLGMsZCl7cmV0dXJuIExiKGEsaWEoKSxjLGQpfQ0KZnVuY3Rpb24geGQoYSxjLGQsZSl7dmFyIGY9cmQ7aWYoZil7dmFyIGc9YSsxMTI7KGc9bSgpW2crNjQ+PjJdKXx8KGc9bSgpW2ErOD4+Ml0pO3ZhciBoPXIoZyk7dHJ5e3ZhciBsPWYudHJhbnNhY3Rpb24oWyJGSUxFUyJdLCJyZWFkd3JpdGUiKS5vYmplY3RTdG9yZSgiRklMRVMiKS5wdXQoYyxoKTtsLm9uc3VjY2Vzcz0oKT0+e2thKClbYSs0MD4+MV09NDtrYSgpW2ErNDI+PjFdPTIwMDt2ZCgiT0siLGErNDQsNjQpO2QoYSwwLGgpfTtsLm9uZXJyb3I9dD0+e2thKClbYSs0MD4+MV09NDtrYSgpW2ErNDI+PjFdPTQxMzt2ZCgiUGF5bG9hZCBUb28gTGFyZ2UiLGErNDQsNjQpO2UoYSwwLHQpfX1jYXRjaCh0KXtlKGEsMCx0KX19ZWxzZSBlKGEsMCwiSW5kZXhlZERCIG5vdCBhdmFpbGFibGUhIil9DQpmdW5jdGlvbiB5ZChhLGMsZCl7dmFyIGU9cmQ7aWYoZSl7dmFyIGY9YSsxMTI7KGY9bSgpW2YrNjQ+PjJdKXx8KGY9bSgpW2ErOD4+Ml0pO2Y9cihmKTt0cnl7dmFyIGc9ZS50cmFuc2FjdGlvbihbIkZJTEVTIl0sInJlYWRvbmx5Iikub2JqZWN0U3RvcmUoIkZJTEVTIikuZ2V0KGYpO2cub25zdWNjZXNzPWg9PntpZihoLnRhcmdldC5yZXN1bHQpe2g9aC50YXJnZXQucmVzdWx0O3ZhciBsPWguYnl0ZUxlbmd0aHx8aC5sZW5ndGgsdD10ZChsKTtpYSgpLnNldChuZXcgVWludDhBcnJheShoKSx0KTttKClbYSsxMj4+Ml09dDt1ZChhKzE2LGwpO3VkKGErMjQsMCk7dWQoYSszMixsKTtrYSgpW2ErNDA+PjFdPTQ7a2EoKVthKzQyPj4xXT0yMDA7dmQoIk9LIixhKzQ0LDY0KTtjKGEsMCxoKX1lbHNlIGthKClbYSs0MD4+MV09NCxrYSgpW2ErNDI+PjFdPTQwNCx2ZCgiTm90IEZvdW5kIixhKzQ0LDY0KSxkKGEsMCwibm8gZGF0YSIpfTtnLm9uZXJyb3I9aD0+e2thKClbYSs0MD4+MV09NDsNCmthKClbYSs0Mj4+MV09NDA0O3ZkKCJOb3QgRm91bmQiLGErNDQsNjQpO2QoYSwwLGgpfX1jYXRjaChoKXtkKGEsMCxoKX19ZWxzZSBkKGEsMCwiSW5kZXhlZERCIG5vdCBhdmFpbGFibGUhIil9DQpmdW5jdGlvbiB6ZChhLGMsZCl7dmFyIGU9cmQ7aWYoZSl7dmFyIGY9YSsxMTI7KGY9bSgpW2YrNjQ+PjJdKXx8KGY9bSgpW2ErOD4+Ml0pO2Y9cihmKTt0cnl7dmFyIGc9ZS50cmFuc2FjdGlvbihbIkZJTEVTIl0sInJlYWR3cml0ZSIpLm9iamVjdFN0b3JlKCJGSUxFUyIpLmRlbGV0ZShmKTtnLm9uc3VjY2Vzcz1oPT57aD1oLnRhcmdldC5yZXN1bHQ7bSgpW2ErMTI+PjJdPTA7dWQoYSsxNiwwKTt1ZChhKzI0LDApO3VkKGErMzIsMCk7a2EoKVthKzQwPj4xXT00O2thKClbYSs0Mj4+MV09MjAwO3ZkKCJPSyIsYSs0NCw2NCk7YyhhLDAsaCl9O2cub25lcnJvcj1oPT57a2EoKVthKzQwPj4xXT00O2thKClbYSs0Mj4+MV09NDA0O3ZkKCJOb3QgRm91bmQiLGErNDQsNjQpO2QoYSwwLGgpfX1jYXRjaChoKXtkKGEsMCxoKX19ZWxzZSBkKGEsMCwiSW5kZXhlZERCIG5vdCBhdmFpbGFibGUhIil9DQpmdW5jdGlvbiBBZChhKXt2YXIgYz1hLmdldEV4dGVuc2lvbigiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpO2MmJihhLnZlcnRleEF0dHJpYkRpdmlzb3I9ZnVuY3Rpb24oZCxlKXtjLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShkLGUpfSxhLmRyYXdBcnJheXNJbnN0YW5jZWQ9ZnVuY3Rpb24oZCxlLGYsZyl7Yy5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoZCxlLGYsZyl9LGEuZHJhd0VsZW1lbnRzSW5zdGFuY2VkPWZ1bmN0aW9uKGQsZSxmLGcsaCl7Yy5kcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShkLGUsZixnLGgpfSl9DQpmdW5jdGlvbiBCZChhKXt2YXIgYz1hLmdldEV4dGVuc2lvbigiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTtjJiYoYS5jcmVhdGVWZXJ0ZXhBcnJheT1mdW5jdGlvbigpe3JldHVybiBjLmNyZWF0ZVZlcnRleEFycmF5T0VTKCl9LGEuZGVsZXRlVmVydGV4QXJyYXk9ZnVuY3Rpb24oZCl7Yy5kZWxldGVWZXJ0ZXhBcnJheU9FUyhkKX0sYS5iaW5kVmVydGV4QXJyYXk9ZnVuY3Rpb24oZCl7Yy5iaW5kVmVydGV4QXJyYXlPRVMoZCl9LGEuaXNWZXJ0ZXhBcnJheT1mdW5jdGlvbihkKXtyZXR1cm4gYy5pc1ZlcnRleEFycmF5T0VTKGQpfSl9ZnVuY3Rpb24gQ2QoYSl7dmFyIGM9YS5nZXRFeHRlbnNpb24oIldFQkdMX2RyYXdfYnVmZmVycyIpO2MmJihhLmRyYXdCdWZmZXJzPWZ1bmN0aW9uKGQsZSl7Yy5kcmF3QnVmZmVyc1dFQkdMKGQsZSl9KX12YXIgRGQ9MSxFZD1bXSxGZD1bXSxHZD1bXSxIZD1bXSxJZD17fSxKZD1bMSwxLDIsMiw0LDQsNCwyLDMsNCw4XTsNCmZ1bmN0aW9uIEtkKGEpe0xkfHwoTGQ9YSl9ZnVuY3Rpb24gTWQoYSl7Zm9yKHZhciBjPURkKyssZD1hLmxlbmd0aDtkPGM7ZCsrKWFbZF09bnVsbDtyZXR1cm4gY31mdW5jdGlvbiBOZChhKXtyZXR1cm4gMzItTWF0aC5jbHozMigwPT09YT8wOmEtMSl9ZnVuY3Rpb24gT2QoYSxjKXthLkNhfHwoYS5DYT1hLmdldENvbnRleHQsYS5nZXRDb250ZXh0PWZ1bmN0aW9uKGUsZil7Zj1hLkNhKGUsZik7cmV0dXJuIndlYmdsIj09ZT09ZiBpbnN0YW5jZW9mIFdlYkdMUmVuZGVyaW5nQ29udGV4dD9mOm51bGx9KTt2YXIgZD0xPGMuRmE/YS5nZXRDb250ZXh0KCJ3ZWJnbDIiLGMpOmEuZ2V0Q29udGV4dCgid2ViZ2wiLGMpO3JldHVybiBkP1BkKGQsYyk6MH0NCmZ1bmN0aW9uIFBkKGEsYyl7dmFyIGQ9dGQoOCk7YigpW2QrND4+Ml09SWMoKTt2YXIgZT17Z2I6ZCxhdHRyaWJ1dGVzOmMsdmVyc2lvbjpjLkZhLEw6YX07YS5jYW52YXMmJihhLmNhbnZhcy5TYT1lKTtJZFtkXT1lOygidW5kZWZpbmVkIj09dHlwZW9mIGMuemF8fGMuemEpJiZRZChlKTtlLkdhPWUuTC5nZXRQYXJhbWV0ZXIoMzQ5MjEpO2UuVT1bXTtmb3IoYT0wO2E8ZS5HYTthKyspZS5VW2FdPXtlbmFibGVkOiExLGVhOiExLHNpemU6MCx0eXBlOjAsS2E6MCxwYTowLGc6MCxSYTpudWxsfTthPU5kKDIwOTcxNTIpO2UuUz1bXTtlLk1hPVtdO2UuUy5sZW5ndGg9ZS5NYS5sZW5ndGg9YSsxO2UuYWE9W107ZS5xYT1bXTtlLmFhLmxlbmd0aD1lLnFhLmxlbmd0aD1hKzE7ZS5QPVtdO2UuUC5sZW5ndGg9YSsxO2ZvcihjPTA7Yzw9YTsrK2Mpe2UuUFtjXT1udWxsO2UuU1tjXT1lLk1hW2NdPTA7ZS5hYVtjXT1bXTtlLnFhW2NdPVtdO3ZhciBmPWUuYWFbY10sZz1lLnFhW2NdO2YubGVuZ3RoPQ0KZy5sZW5ndGg9NjQ7Zm9yKHZhciBoPTA7NjQ+aDsrK2gpZltoXT1nW2hdPW51bGx9cmV0dXJuIGR9DQpmdW5jdGlvbiBRZChhKXthfHwoYT1SZCk7aWYoIWEuaWIpe2EuaWI9ITA7dmFyIGM9YS5MO0FkKGMpO0JkKGMpO0NkKGMpO2MuS2I9Yy5nZXRFeHRlbnNpb24oIldFQkdMX2RyYXdfaW5zdGFuY2VkX2Jhc2VfdmVydGV4X2Jhc2VfaW5zdGFuY2UiKTtjLk9iPWMuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9tdWx0aV9kcmF3X2luc3RhbmNlZF9iYXNlX3ZlcnRleF9iYXNlX2luc3RhbmNlIik7Mjw9YS52ZXJzaW9uJiYoYy55YT1jLmdldEV4dGVuc2lvbigiRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5X3dlYmdsMiIpKTtpZigyPmEudmVyc2lvbnx8IWMueWEpYy55YT1jLmdldEV4dGVuc2lvbigiRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5Iik7Yy5RYj1jLmdldEV4dGVuc2lvbigiV0VCR0xfbXVsdGlfZHJhdyIpOyhjLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKXx8W10pLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5pbmNsdWRlcygibG9zZV9jb250ZXh0Iil8fGQuaW5jbHVkZXMoImRlYnVnIil8fGMuZ2V0RXh0ZW5zaW9uKGQpfSl9fQ0KdmFyIExkLFJkLFNkLFRkPVtdLFVkPXt9LFZkPVsiZGVmYXVsdCIsImxvdy1wb3dlciIsImhpZ2gtcGVyZm9ybWFuY2UiXSxXZD1bMCwidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OjAsInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OjBdLFhkPXt9Ow0KZnVuY3Rpb24gWWQoKXtpZighWmQpe3ZhciBhPXtVU0VSOiJ3ZWJfdXNlciIsTE9HTkFNRToid2ViX3VzZXIiLFBBVEg6Ii8iLFBXRDoiLyIsSE9NRToiL2hvbWUvd2ViX3VzZXIiLExBTkc6KCJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzp2YXx8Ii4vdGhpcy5wcm9ncmFtIn0sYztmb3IoYyBpbiBYZCl2b2lkIDA9PT1YZFtjXT9kZWxldGUgYVtjXTphW2NdPVhkW2NdO3ZhciBkPVtdO2ZvcihjIGluIGEpZC5wdXNoKGMrIj0iK2FbY10pO1pkPWR9cmV0dXJuIFpkfXZhciBaZDsNCmZ1bmN0aW9uICRkKGEsYyl7aWYocSlyZXR1cm4gRGMoOSwxLGEsYyk7dmFyIGQ9MDtZZCgpLmZvckVhY2goZnVuY3Rpb24oZSxmKXt2YXIgZz1jK2Q7Zj1tKClbYSs0KmY+PjJdPWc7Zm9yKGc9MDtnPGUubGVuZ3RoOysrZyliYSgpW2YrKz4+MF09ZS5jaGFyQ29kZUF0KGcpO2JhKClbZj4+MF09MDtkKz1lLmxlbmd0aCsxfSk7cmV0dXJuIDB9ZnVuY3Rpb24gYWUoYSxjKXtpZihxKXJldHVybiBEYygxMCwxLGEsYyk7dmFyIGQ9WWQoKTttKClbYT4+Ml09ZC5sZW5ndGg7dmFyIGU9MDtkLmZvckVhY2goZnVuY3Rpb24oZil7ZSs9Zi5sZW5ndGgrMX0pO20oKVtjPj4yXT1lO3JldHVybiAwfWZ1bmN0aW9uIGJlKGEpe2lmKHEpcmV0dXJuIERjKDExLDEsYSk7dHJ5e3ZhciBjPXpjKGEpO3liKGMpO3JldHVybiAwfWNhdGNoKGQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2N8fCJFcnJub0Vycm9yIiE9PWQubmFtZSl0aHJvdyBkO3JldHVybiBkLnN9fQ0KZnVuY3Rpb24gY2UoYSxjLGQsZSl7aWYocSlyZXR1cm4gRGMoMTIsMSxhLGMsZCxlKTt0cnl7YTp7dmFyIGY9emMoYSk7YT1jO2Zvcih2YXIgZyxoPWM9MDtoPGQ7aCsrKXt2YXIgbD1tKClbYT4+Ml0sdD1tKClbYSs0Pj4yXTthKz04O3ZhciBwPXdiKGYsYmEoKSxsLHQsZyk7aWYoMD5wKXt2YXIgeD0tMTticmVhayBhfWMrPXA7aWYocDx0KWJyZWFrOyJ1bmRlZmluZWQiIT09dHlwZW9mIGcmJihnKz1wKX14PWN9bSgpW2U+PjJdPXg7cmV0dXJuIDB9Y2F0Y2goVSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3Y3x8IkVycm5vRXJyb3IiIT09VS5uYW1lKXRocm93IFU7cmV0dXJuIFUuc319DQpmdW5jdGlvbiBkZShhLGMsZCxlLGYpe2lmKHEpcmV0dXJuIERjKDEzLDEsYSxjLGQsZSxmKTt0cnl7Yz1kKzIwOTcxNTI+Pj4wPDQxOTQzMDUtISFjPyhjPj4+MCkrNDI5NDk2NzI5NipkOk5hTjtpZihpc05hTihjKSlyZXR1cm4gNjE7dmFyIGc9emMoYSk7dGMoZyxjLGUpO3ViPVtnLnBvc2l0aW9uPj4+MCwodGI9Zy5wb3NpdGlvbiwxPD0rTWF0aC5hYnModGIpPzA8dGI/KE1hdGgubWluKCtNYXRoLmZsb29yKHRiLzQyOTQ5NjcyOTYpLDQyOTQ5NjcyOTUpfDApPj4+MDp+fitNYXRoLmNlaWwoKHRiLSsofn50Yj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldO2IoKVtmPj4yXT11YlswXTtiKClbZis0Pj4yXT11YlsxXTtnLmphJiYwPT09YyYmMD09PWUmJihnLmphPW51bGwpO3JldHVybiAwfWNhdGNoKGgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2N8fCJFcnJub0Vycm9yIiE9PWgubmFtZSl0aHJvdyBoO3JldHVybiBoLnN9fQ0KZnVuY3Rpb24gZWUoYSxjLGQsZSl7aWYocSlyZXR1cm4gRGMoMTQsMSxhLGMsZCxlKTt0cnl7YTp7dmFyIGY9emMoYSk7YT1jO2Zvcih2YXIgZyxoPWM9MDtoPGQ7aCsrKXt2YXIgbD1tKClbYT4+Ml0sdD1tKClbYSs0Pj4yXTthKz04O3ZhciBwPWYseD1iYSgpLFU9bCxRPXQsaz1nO2lmKDA+UXx8MD5rKXRocm93IG5ldyB2KDI4KTtpZihudWxsPT09cC5mZCl0aHJvdyBuZXcgdig4KTtpZigwPT09KHAuZmxhZ3MmMjA5NzE1NSkpdGhyb3cgbmV3IHYoOCk7aWYoMTYzODQ9PT0ocC5ub2RlLm1vZGUmNjE0NDApKXRocm93IG5ldyB2KDMxKTtpZighcC5qLndyaXRlKXRocm93IG5ldyB2KDI4KTtwLnNlZWthYmxlJiZwLmZsYWdzJjEwMjQmJnRjKHAsMCwyKTt2YXIgej0idW5kZWZpbmVkIiE9dHlwZW9mIGs7aWYoIXopaz1wLnBvc2l0aW9uO2Vsc2UgaWYoIXAuc2Vla2FibGUpdGhyb3cgbmV3IHYoNzApO3ZhciB5PXAuai53cml0ZShwLHgsVSxRLGssdm9pZCAwKTt6fHwocC5wb3NpdGlvbis9DQp5KTt2YXIgWj15O2lmKDA+Wil7dmFyIHU9LTE7YnJlYWsgYX1jKz1aOyJ1bmRlZmluZWQiIT09dHlwZW9mIGcmJihnKz1aKX11PWN9bSgpW2U+PjJdPXU7cmV0dXJuIDB9Y2F0Y2goZmEpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2N8fCJFcnJub0Vycm9yIiE9PWZhLm5hbWUpdGhyb3cgZmE7cmV0dXJuIGZhLnN9fWZ1bmN0aW9uIGZlKGEsYyxkLGUpe2Zvcih2YXIgZj0wO2Y8YTtmKyspe3ZhciBnPUNbZF0oKSxoPWcmJk1kKGUpO2c/KGcubmFtZT1oLGVbaF09Zyk6S2QoMTI4Mik7YigpW2MrNCpmPj4yXT1ofX1mdW5jdGlvbiBnZShhLGMsZCxlLGYsZyxoLGwpe2M9RmRbY107aWYoYT1DW2FdKGMsZCkpZT1sJiZ2ZChhLm5hbWUsbCxlKSxmJiYoYigpW2Y+PjJdPWUpLGcmJihiKClbZz4+Ml09YS5zaXplKSxoJiYoYigpW2g+PjJdPWEudHlwZSl9DQpmdW5jdGlvbiBoZShhLGMpe2lmKGMpe3ZhciBkPXZvaWQgMDtzd2l0Y2goYSl7Y2FzZSAzNjM0NjpkPTE7YnJlYWs7Y2FzZSAzNjM0NDpLZCgxMjgwKTtyZXR1cm47Y2FzZSAzNDgxNDpjYXNlIDM2MzQ1OmQ9MDticmVhaztjYXNlIDM0NDY2OnZhciBlPUMuZ2V0UGFyYW1ldGVyKDM0NDY3KTtkPWU/ZS5sZW5ndGg6MDticmVhaztjYXNlIDMzMzA5OmlmKDI+UmQudmVyc2lvbil7S2QoMTI4Mik7cmV0dXJufWQ9MiooQy5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCl8fFtdKS5sZW5ndGg7YnJlYWs7Y2FzZSAzMzMwNzpjYXNlIDMzMzA4OmlmKDI+UmQudmVyc2lvbil7S2QoMTI4MCk7cmV0dXJufWQ9MzMzMDc9PWE/MzowfWlmKHZvaWQgMD09PWQpc3dpdGNoKGU9Qy5nZXRQYXJhbWV0ZXIoYSksdHlwZW9mIGUpe2Nhc2UgIm51bWJlciI6ZD1lO2JyZWFrO2Nhc2UgImJvb2xlYW4iOmQ9ZT8xOjA7YnJlYWs7Y2FzZSAic3RyaW5nIjpLZCgxMjgwKTtyZXR1cm47Y2FzZSAib2JqZWN0IjppZihudWxsPT09DQplKXN3aXRjaChhKXtjYXNlIDM0OTY0OmNhc2UgMzU3MjU6Y2FzZSAzNDk2NTpjYXNlIDM2MDA2OmNhc2UgMzYwMDc6Y2FzZSAzMjg3MzpjYXNlIDM0MjI5OmNhc2UgMzY2NjI6Y2FzZSAzNjY2MzpjYXNlIDM1MDUzOmNhc2UgMzUwNTU6Y2FzZSAzNjAxMDpjYXNlIDM1MDk3OmNhc2UgMzU4Njk6Y2FzZSAzMjg3NDpjYXNlIDM2Mzg5OmNhc2UgMzU5ODM6Y2FzZSAzNTM2ODpjYXNlIDM0MDY4OmQ9MDticmVhaztkZWZhdWx0OktkKDEyODApO3JldHVybn1lbHNle2lmKGUgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXl8fGUgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8ZSBpbnN0YW5jZW9mIEludDMyQXJyYXl8fGUgaW5zdGFuY2VvZiBBcnJheSl7Zm9yKGE9MDthPGUubGVuZ3RoOysrYSliYSgpW2MrYT4+MF09ZVthXT8xOjA7cmV0dXJufXRyeXtkPWUubmFtZXwwfWNhdGNoKGYpe0tkKDEyODApO0xhKCJHTF9JTlZBTElEX0VOVU0gaW4gZ2xHZXQ0djogVW5rbm93biBvYmplY3QgcmV0dXJuZWQgZnJvbSBXZWJHTCBnZXRQYXJhbWV0ZXIoIisNCmErIikhIChlcnJvcjogIitmKyIpIik7cmV0dXJufX1icmVhaztkZWZhdWx0OktkKDEyODApO0xhKCJHTF9JTlZBTElEX0VOVU0gaW4gZ2xHZXQ0djogTmF0aXZlIGNvZGUgY2FsbGluZyBnbEdldDR2KCIrYSsiKSBhbmQgaXQgcmV0dXJucyAiK2UrIiBvZiB0eXBlICIrdHlwZW9mIGUrIiEiKTtyZXR1cm59YmEoKVtjPj4wXT1kPzE6MH1lbHNlIEtkKDEyODEpfWZ1bmN0aW9uIGllKGEpe3JldHVybiJdIj09YS5zbGljZSgtMSkmJmEubGFzdEluZGV4T2YoIlsiKX1mdW5jdGlvbiBqZShhKXt2YXIgYz1DLldhO2lmKGMpe3ZhciBkPWMuVFthXTsibnVtYmVyIj09dHlwZW9mIGQmJihjLlRbYV09ZD1DLmdldFVuaWZvcm1Mb2NhdGlvbihjLGMuUGFbYV0rKDA8ZD8iWyIrZCsiXSI6IiIpKSk7cmV0dXJuIGR9S2QoMTI4Mil9dmFyIGtlPVtdO2Z1bmN0aW9uIGxlKGEpe3JldHVybiAwPT09YSU0JiYoMCE9PWElMTAwfHwwPT09YSU0MDApfQ0KdmFyIG1lPVszMSwyOSwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sbmU9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXTtmdW5jdGlvbiBvZShhLGMpe2JhKCkuc2V0KGEsYyl9DQpmdW5jdGlvbiBwZShhLGMsZCxlKXtmdW5jdGlvbiBmKGsseix5KXtmb3Ioaz0ibnVtYmVyIj09dHlwZW9mIGs/ay50b1N0cmluZygpOmt8fCIiO2subGVuZ3RoPHo7KWs9eVswXStrO3JldHVybiBrfWZ1bmN0aW9uIGcoayx6KXtyZXR1cm4gZihrLHosIjAiKX1mdW5jdGlvbiBoKGsseil7ZnVuY3Rpb24geSh1KXtyZXR1cm4gMD51Py0xOjA8dT8xOjB9dmFyIFo7MD09PShaPXkoay5nZXRGdWxsWWVhcigpLXouZ2V0RnVsbFllYXIoKSkpJiYwPT09KFo9eShrLmdldE1vbnRoKCktei5nZXRNb250aCgpKSkmJihaPXkoay5nZXREYXRlKCktei5nZXREYXRlKCkpKTtyZXR1cm4gWn1mdW5jdGlvbiBsKGspe3N3aXRjaChrLmdldERheSgpKXtjYXNlIDA6cmV0dXJuIG5ldyBEYXRlKGsuZ2V0RnVsbFllYXIoKS0xLDExLDI5KTtjYXNlIDE6cmV0dXJuIGs7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCksMCwzKTtjYXNlIDM6cmV0dXJuIG5ldyBEYXRlKGsuZ2V0RnVsbFllYXIoKSwNCjAsMik7Y2FzZSA0OnJldHVybiBuZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCksMCwxKTtjYXNlIDU6cmV0dXJuIG5ldyBEYXRlKGsuZ2V0RnVsbFllYXIoKS0xLDExLDMxKTtjYXNlIDY6cmV0dXJuIG5ldyBEYXRlKGsuZ2V0RnVsbFllYXIoKS0xLDExLDMwKX19ZnVuY3Rpb24gdChrKXt2YXIgej1rLko7Zm9yKGs9bmV3IERhdGUoKG5ldyBEYXRlKGsuSysxOTAwLDAsMSkpLmdldFRpbWUoKSk7MDx6Oyl7dmFyIHk9ay5nZXRNb250aCgpLFo9KGxlKGsuZ2V0RnVsbFllYXIoKSk/bWU6bmUpW3ldO2lmKHo+Wi1rLmdldERhdGUoKSl6LT1aLWsuZ2V0RGF0ZSgpKzEsay5zZXREYXRlKDEpLDExPnk/ay5zZXRNb250aCh5KzEpOihrLnNldE1vbnRoKDApLGsuc2V0RnVsbFllYXIoay5nZXRGdWxsWWVhcigpKzEpKTtlbHNle2suc2V0RGF0ZShrLmdldERhdGUoKSt6KTticmVha319eT1uZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCkrMSwwLDQpO3o9bChuZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCksMCwNCjQpKTt5PWwoeSk7cmV0dXJuIDA+PWgoeixrKT8wPj1oKHksayk/ay5nZXRGdWxsWWVhcigpKzE6ay5nZXRGdWxsWWVhcigpOmsuZ2V0RnVsbFllYXIoKS0xfXZhciBwPWIoKVtlKzQwPj4yXTtlPXtDYjpiKClbZT4+Ml0sQmI6YigpW2UrND4+Ml0sYmE6YigpW2UrOD4+Ml0scmE6YigpW2UrMTI+PjJdLGRhOmIoKVtlKzE2Pj4yXSxLOmIoKVtlKzIwPj4yXSxDOmIoKVtlKzI0Pj4yXSxKOmIoKVtlKzI4Pj4yXSxYYjpiKClbZSszMj4+Ml0sQWI6YigpW2UrMzY+PjJdLERiOnA/cihwKToiIn07ZD1yKGQpO3A9eyIlYyI6IiVhICViICVkICVIOiVNOiVTICVZIiwiJUQiOiIlbS8lZC8leSIsIiVGIjoiJVktJW0tJWQiLCIlaCI6IiViIiwiJXIiOiIlSTolTTolUyAlcCIsIiVSIjoiJUg6JU0iLCIlVCI6IiVIOiVNOiVTIiwiJXgiOiIlbS8lZC8leSIsIiVYIjoiJUg6JU06JVMiLCIlRWMiOiIlYyIsIiVFQyI6IiVDIiwiJUV4IjoiJW0vJWQvJXkiLCIlRVgiOiIlSDolTTolUyIsIiVFeSI6IiV5IiwNCiIlRVkiOiIlWSIsIiVPZCI6IiVkIiwiJU9lIjoiJWUiLCIlT0giOiIlSCIsIiVPSSI6IiVJIiwiJU9tIjoiJW0iLCIlT00iOiIlTSIsIiVPUyI6IiVTIiwiJU91IjoiJXUiLCIlT1UiOiIlVSIsIiVPViI6IiVWIiwiJU93IjoiJXciLCIlT1ciOiIlVyIsIiVPeSI6IiV5In07Zm9yKHZhciB4IGluIHApZD1kLnJlcGxhY2UobmV3IFJlZ0V4cCh4LCJnIikscFt4XSk7dmFyIFU9IlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIpLFE9IkphbnVhcnkgRmVicnVhcnkgTWFyY2ggQXByaWwgTWF5IEp1bmUgSnVseSBBdWd1c3QgU2VwdGVtYmVyIE9jdG9iZXIgTm92ZW1iZXIgRGVjZW1iZXIiLnNwbGl0KCIgIik7cD17IiVhIjpmdW5jdGlvbihrKXtyZXR1cm4gVVtrLkNdLnN1YnN0cmluZygwLDMpfSwiJUEiOmZ1bmN0aW9uKGspe3JldHVybiBVW2suQ119LCIlYiI6ZnVuY3Rpb24oayl7cmV0dXJuIFFbay5kYV0uc3Vic3RyaW5nKDAsDQozKX0sIiVCIjpmdW5jdGlvbihrKXtyZXR1cm4gUVtrLmRhXX0sIiVDIjpmdW5jdGlvbihrKXtyZXR1cm4gZygoay5LKzE5MDApLzEwMHwwLDIpfSwiJWQiOmZ1bmN0aW9uKGspe3JldHVybiBnKGsucmEsMil9LCIlZSI6ZnVuY3Rpb24oayl7cmV0dXJuIGYoay5yYSwyLCIgIil9LCIlZyI6ZnVuY3Rpb24oayl7cmV0dXJuIHQoaykudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9LCIlRyI6ZnVuY3Rpb24oayl7cmV0dXJuIHQoayl9LCIlSCI6ZnVuY3Rpb24oayl7cmV0dXJuIGcoay5iYSwyKX0sIiVJIjpmdW5jdGlvbihrKXtrPWsuYmE7MD09az9rPTEyOjEyPGsmJihrLT0xMik7cmV0dXJuIGcoaywyKX0sIiVqIjpmdW5jdGlvbihrKXtmb3IodmFyIHo9MCx5PTA7eTw9ay5kYS0xO3orPShsZShrLksrMTkwMCk/bWU6bmUpW3krK10pO3JldHVybiBnKGsucmEreiwzKX0sIiVtIjpmdW5jdGlvbihrKXtyZXR1cm4gZyhrLmRhKzEsMil9LCIlTSI6ZnVuY3Rpb24oayl7cmV0dXJuIGcoay5CYiwNCjIpfSwiJW4iOmZ1bmN0aW9uKCl7cmV0dXJuIlxuIn0sIiVwIjpmdW5jdGlvbihrKXtyZXR1cm4gMDw9ay5iYSYmMTI+ay5iYT8iQU0iOiJQTSJ9LCIlUyI6ZnVuY3Rpb24oayl7cmV0dXJuIGcoay5DYiwyKX0sIiV0IjpmdW5jdGlvbigpe3JldHVybiJcdCJ9LCIldSI6ZnVuY3Rpb24oayl7cmV0dXJuIGsuQ3x8N30sIiVVIjpmdW5jdGlvbihrKXtyZXR1cm4gZyhNYXRoLmZsb29yKChrLkorNy1rLkMpLzcpLDIpfSwiJVYiOmZ1bmN0aW9uKGspe3ZhciB6PU1hdGguZmxvb3IoKGsuSis3LShrLkMrNiklNykvNyk7Mj49KGsuQyszNzEtay5KLTIpJTcmJnorKztpZih6KTUzPT16JiYoeT0oay5DKzM3MS1rLkopJTcsND09eXx8Mz09eSYmbGUoay5LKXx8KHo9MSkpO2Vsc2V7ej01Mjt2YXIgeT0oay5DKzctay5KLTEpJTc7KDQ9PXl8fDU9PXkmJmxlKGsuSyU0MDAtMSkpJiZ6Kyt9cmV0dXJuIGcoeiwyKX0sIiV3IjpmdW5jdGlvbihrKXtyZXR1cm4gay5DfSwiJVciOmZ1bmN0aW9uKGspe3JldHVybiBnKE1hdGguZmxvb3IoKGsuSisNCjctKGsuQys2KSU3KS83KSwyKX0sIiV5IjpmdW5jdGlvbihrKXtyZXR1cm4oay5LKzE5MDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpfSwiJVkiOmZ1bmN0aW9uKGspe3JldHVybiBrLksrMTkwMH0sIiV6IjpmdW5jdGlvbihrKXtrPWsuQWI7dmFyIHo9MDw9aztrPU1hdGguYWJzKGspLzYwO3JldHVybih6PyIrIjoiLSIpK1N0cmluZygiMDAwMCIrKGsvNjAqMTAwK2slNjApKS5zbGljZSgtNCl9LCIlWiI6ZnVuY3Rpb24oayl7cmV0dXJuIGsuRGJ9LCIlJSI6ZnVuY3Rpb24oKXtyZXR1cm4iJSJ9fTtkPWQucmVwbGFjZSgvJSUvZywiXHgwMFx4MDAiKTtmb3IoeCBpbiBwKWQuaW5jbHVkZXMoeCkmJihkPWQucmVwbGFjZShuZXcgUmVnRXhwKHgsImciKSxwW3hdKGUpKSk7ZD1kLnJlcGxhY2UoL1wwXDAvZywiJSIpO3g9TWIoZCwhMSk7aWYoeC5sZW5ndGg+YylyZXR1cm4gMDtvZSh4LGEpO3JldHVybiB4Lmxlbmd0aC0xfXcuaGIoKTsNCmZ1bmN0aW9uIGdjKGEsYyxkLGUpe2F8fChhPXRoaXMpO3RoaXMucGFyZW50PWE7dGhpcy5EPWEuRDt0aGlzLk09bnVsbDt0aGlzLmlkPSRiKys7dGhpcy5uYW1lPWM7dGhpcy5tb2RlPWQ7dGhpcy5oPXt9O3RoaXMuaj17fTt0aGlzLnJkZXY9ZX1PYmplY3QuZGVmaW5lUHJvcGVydGllcyhnYy5wcm90b3R5cGUse3JlYWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiAzNjU9PT0odGhpcy5tb2RlJjM2NSl9LHNldDpmdW5jdGlvbihhKXthP3RoaXMubW9kZXw9MzY1OnRoaXMubW9kZSY9LTM2Nn19LHdyaXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTQ2PT09KHRoaXMubW9kZSYxNDYpfSxzZXQ6ZnVuY3Rpb24oYSl7YT90aGlzLm1vZGV8PTE0Njp0aGlzLm1vZGUmPS0xNDd9fX0pO2FiKCk7YWM9QXJyYXkoNDA5Nik7b2MoQiwiLyIpO3BjKCIvdG1wIiwxNjg5NSwwKTtwYygiL2hvbWUiLDE2ODk1LDApO3BjKCIvaG9tZS93ZWJfdXNlciIsMTY4OTUsMCk7DQooKCk9PntwYygiL2RldiIsMTY4OTUsMCk7UGIoMjU5LHtyZWFkOigpPT4wLHdyaXRlOihlLGYsZyxoKT0+aH0pO3FjKCIvZGV2L251bGwiLDI1OSk7T2IoMTI4MCxSYik7T2IoMTUzNixTYik7cWMoIi9kZXYvdHR5IiwxMjgwKTtxYygiL2Rldi90dHkxIiwxNTM2KTt2YXIgYT1uZXcgVWludDhBcnJheSgxMDI0KSxjPTAsZD0oKT0+ezA9PT1jJiYoYz1KYihhKS5ieXRlTGVuZ3RoKTtyZXR1cm4gYVstLWNdfTtiYigicmFuZG9tIixkKTtiYigidXJhbmRvbSIsZCk7cGMoIi9kZXYvc2htIiwxNjg5NSwwKTtwYygiL2Rldi9zaG0vdG1wIiwxNjg5NSwwKX0pKCk7DQooKCk9PntwYygiL3Byb2MiLDE2ODk1LDApO3ZhciBhPXBjKCIvcHJvYy9zZWxmIiwxNjg5NSwwKTtwYygiL3Byb2Mvc2VsZi9mZCIsMTY4OTUsMCk7b2Moe0Q6KCk9Pnt2YXIgYz1VYihhLCJmZCIsMTY4OTUsNzMpO2MuaD17bG9va3VwOihkLGUpPT57dmFyIGY9WmJbK2VdO2lmKCFmKXRocm93IG5ldyB2KDgpO2Q9e3BhcmVudDpudWxsLEQ6e0lhOiJmYWtlIn0saDp7cmVhZGxpbms6KCk9PmYucGF0aH19O3JldHVybiBkLnBhcmVudD1kfX07cmV0dXJuIGN9fSwiL3Byb2Mvc2VsZi9mZCIpfSkoKTtxfHwoa2IoKSxxZChhPT57cmQ9YTtsYigpfSwoKT0+e3JkPSExO2xiKCl9KSk7Zm9yKHZhciBDLHFlPW5ldyBGbG9hdDMyQXJyYXkoMjg4KSxyZT0wOzI4OD5yZTsrK3JlKWtlW3JlXT1xZS5zdWJhcnJheSgwLHJlKzEpOw0KdmFyIHNlPVtudWxsLENjLEZjLFBjLFJjLFRjLFVjLFZjLFdjLCRkLGFlLGJlLGNlLGRlLGVlXSx5ZT17X19hc3NlcnRfZmFpbDpmdW5jdGlvbihhLGMsZCxlKXtOYSgiQXNzZXJ0aW9uIGZhaWxlZDogIityKGEpKyIsIGF0OiAiK1tjP3IoYyk6InVua25vd24gZmlsZW5hbWUiLGQsZT9yKGUpOiJ1bmtub3duIGZ1bmN0aW9uIl0pfSxfX2Vtc2NyaXB0ZW5faW5pdF9tYWluX3RocmVhZF9qczpmdW5jdGlvbihhKXt0ZShhLCF5YSwxLCF4YSk7dy5OYSgpfSxfX2Vtc2NyaXB0ZW5fdGhyZWFkX2NsZWFudXA6ZnVuY3Rpb24oYSl7cT9wb3N0TWVzc2FnZSh7Y21kOiJjbGVhbnVwVGhyZWFkIix0aHJlYWQ6YX0pOkNiKGEpfSxfX3B0aHJlYWRfY3JlYXRlX2pzOlFjLF9fc3lzY2FsbF9mY250bDY0OlJjLF9fc3lzY2FsbF9pb2N0bDpUYyxfX3N5c2NhbGxfb3BlbmF0OlVjLF9fc3lzY2FsbF9ybWRpcjpWYyxfX3N5c2NhbGxfdW5saW5rYXQ6V2MsX2Vtc2NyaXB0ZW5fZGVmYXVsdF9wdGhyZWFkX3N0YWNrX3NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gNDE5NDMwNH0sDQpfZW1zY3JpcHRlbl9mZXRjaF9mcmVlOmZ1bmN0aW9uKGEpe3ZhciBjPXBkW2FdO2MmJihkZWxldGUgcGRbYV0sMDxjLnJlYWR5U3RhdGUmJjQ+Yy5yZWFkeVN0YXRlJiZjLmFib3J0KCkpfSxfZW1zY3JpcHRlbl9nZXRfbm93X2lzX21vbm90b25pYzpmdW5jdGlvbigpe3JldHVybiEwfSxfZW1zY3JpcHRlbl9ub3RpZnlfbWFpbGJveF9wb3N0bWVzc2FnZTpmdW5jdGlvbihhLGMpe2E9PWM/c2V0VGltZW91dCgoKT0+SmMoKSk6cT9wb3N0TWVzc2FnZSh7dGFyZ2V0VGhyZWFkOmEsY21kOiJjaGVja01haWxib3gifSk6KGE9dy5GW2FdKSYmYS5wb3N0TWVzc2FnZSh7Y21kOiJjaGVja01haWxib3gifSl9LF9lbXNjcmlwdGVuX3NldF9vZmZzY3JlZW5jYW52YXNfc2l6ZTpmdW5jdGlvbigpe3JldHVybi0xfSxfZW1zY3JpcHRlbl90aHJlYWRfbWFpbGJveF9hd2FpdDpZYyxfZW1zY3JpcHRlbl90aHJvd19sb25nam1wOmZ1bmN0aW9uKCl7dGhyb3cgSW5maW5pdHk7fSxhYm9ydDpmdW5jdGlvbigpe05hKCIiKX0sDQplbXNjcmlwdGVuX2FzbV9jb25zdF9pbnQ6ZnVuY3Rpb24oYSxjLGQpeyRjLmxlbmd0aD0wO3ZhciBlO2ZvcihkPj49MjtlPWlhKClbYysrXTspZCs9MTA1IT1lJmQsJGMucHVzaCgxMDU9PWU/YigpW2RdOnFhKClbZCsrPj4xXSksKytkO3JldHVybiB6YlthXS5hcHBseShudWxsLCRjKX0sZW1zY3JpcHRlbl9jaGVja19ibG9ja2luZ19hbGxvd2VkOmZ1bmN0aW9uKCl7fSxlbXNjcmlwdGVuX2RhdGVfbm93OmZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCl9LGVtc2NyaXB0ZW5fZXhpdF93aXRoX2xpdmVfcnVudGltZTpmdW5jdGlvbigpe1hhKz0xO3Rocm93InVud2luZCI7fSxlbXNjcmlwdGVuX2dldF9ub3c6Y2QsZW1zY3JpcHRlbl9sb2c6ZnVuY3Rpb24oYSxjLGQpe2M9Z2QoYyxkKTtjPXhiKGMsMCk7YSYyNCYmKGM9Yy5yZXBsYWNlKC9ccyskLywiIiksYys9KDA8Yy5sZW5ndGg/IlxuIjoiIikramQoYSkpO2EmMT9hJjQ/Y29uc29sZS5lcnJvcihjKTphJjI/Y29uc29sZS53YXJuKGMpOg0KYSY1MTI/Y29uc29sZS5pbmZvKGMpOmEmMjU2P2NvbnNvbGUuZGVidWcoYyk6Y29uc29sZS5sb2coYyk6YSY2P0xhKGMpOkthKGMpfSxlbXNjcmlwdGVuX21lbWNweV9iaWc6ZnVuY3Rpb24oYSxjLGQpe2lhKCkuY29weVdpdGhpbihhLGMsYytkKX0sZW1zY3JpcHRlbl9yZWNlaXZlX29uX21haW5fdGhyZWFkX2pzOmZ1bmN0aW9uKGEsYyxkKXtvZC5sZW5ndGg9YztkPj49Mztmb3IodmFyIGU9MDtlPGM7ZSsrKW9kW2VdPXFhKClbZCtlXTtyZXR1cm4oMD5hP3piWy1hLTFdOnNlW2FdKS5hcHBseShudWxsLG9kKX0sZW1zY3JpcHRlbl9yZXNpemVfaGVhcDpmdW5jdGlvbihhKXt2YXIgYz1pYSgpLmxlbmd0aDthPj4+PTA7aWYoYTw9Y3x8MjE0NzQ4MzY0ODxhKXJldHVybiExO2Zvcih2YXIgZD0xOzQ+PWQ7ZCo9Mil7dmFyIGU9YyooMSsuMi9kKTtlPU1hdGgubWluKGUsYSsxMDA2NjMyOTYpO3ZhciBmPU1hdGgsZz1mLm1pbjtlPU1hdGgubWF4KGEsZSk7ZSs9KDY1NTM2LWUlNjU1MzYpJQ0KNjU1MzY7YTp7dmFyIGg9Y2EuYnVmZmVyO3RyeXtjYS5ncm93KGcuY2FsbChmLDIxNDc0ODM2NDgsZSktaC5ieXRlTGVuZ3RoKzY1NTM1Pj4+MTYpO2hhKCk7dmFyIGw9MTticmVhayBhfWNhdGNoKHQpe31sPXZvaWQgMH1pZihsKXJldHVybiEwfXJldHVybiExfSxlbXNjcmlwdGVuX3J1bl9zY3JpcHQ6ZnVuY3Rpb24oYSl7ZXZhbChyKGEpKX0sZW1zY3JpcHRlbl9zZXRfaW50ZXJ2YWw6ZnVuY3Rpb24oYSxjLGQpe1hhKz0xO3JldHVybiBzZXRJbnRlcnZhbChmdW5jdGlvbigpe1hjKGZ1bmN0aW9uKCl7TmMoYSkoZCl9KX0sYyl9LGVtc2NyaXB0ZW5fc3RhcnRfZmV0Y2g6ZnVuY3Rpb24oYSxjLGQsZSxmKXtmdW5jdGlvbiBnKGFhKXtaP2FhKCk6WGMoYWEpfVhhKz0xO3ZhciBoPWErMTEyLGw9cihoKSx0PW0oKVtoKzM2Pj4yXSxwPW0oKVtoKzQwPj4yXSx4PW0oKVtoKzQ0Pj4yXSxVPW0oKVtoKzQ4Pj4yXSxRPW0oKVtoKzUyPj4yXSxrPSEhKFEmNCksej0hIShRJjMyKSx5PSEhKFEmDQoxNiksWj0hIShRJjY0KSx1PWFhPT57LS1YYTtnKCgpPT57dD9OYyh0KShhYSk6YyYmYyhhYSl9KX0sZmE9YWE9PntnKCgpPT57eD9OYyh4KShhYSk6ZSYmZShhYSl9KX0sQT1hYT0+ey0tWGE7ZygoKT0+e3A/TmMocCkoYWEpOmQmJmQoYWEpfSl9LEphPWFhPT57ZygoKT0+e1U/TmMoVSkoYWEpOmYmJmYoYWEpfSl9O1E9YWE9PntzZChhYSx1LEEsZmEsSmEpfTt2YXIgZWE9KGFhLG9vKT0+e3hkKGFhLG9vLnJlc3BvbnNlLHJiPT57LS1YYTtnKCgpPT57dD9OYyh0KShyYik6YyYmYyhyYil9KX0scmI9PnstLVhhO2coKCk9Pnt0P05jKHQpKHJiKTpjJiZjKHJiKX0pfSl9LEVhPWFhPT57c2QoYWEsZWEsQSxmYSxKYSl9O2lmKCJFTV9JREJfU1RPUkUiPT09bClsPW0oKVtoKzg0Pj4yXSx4ZChhLGlhKCkuc2xpY2UobCxsK20oKVtoKzg4Pj4yXSksdSxBKTtlbHNlIGlmKCJFTV9JREJfREVMRVRFIj09PWwpemQoYSx1LEEpO2Vsc2UgaWYoeSl7aWYoeilyZXR1cm4gMDtzZChhLGs/ZWE6dSwNCkEsZmEsSmEpfWVsc2UgeWQoYSx1LHo/QTprP0VhOlEpO3JldHVybiBhfSxlbXNjcmlwdGVuX3Vud2luZF90b19qc19ldmVudF9sb29wOmZ1bmN0aW9uKCl7dGhyb3cidW53aW5kIjt9LGVtc2NyaXB0ZW5fd2ViZ2xfY3JlYXRlX2NvbnRleHQ6ZnVuY3Rpb24oYSxjKXtjPj49Mjt2YXIgZD1iKClbYys2XTtjPXthbHBoYTohIWIoKVtjKzBdLGRlcHRoOiEhYigpW2MrMV0sc3RlbmNpbDohIWIoKVtjKzJdLGFudGlhbGlhczohIWIoKVtjKzNdLHByZW11bHRpcGxpZWRBbHBoYTohIWIoKVtjKzRdLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjohIWIoKVtjKzVdLHBvd2VyUHJlZmVyZW5jZTpWZFtkXSxmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OiEhYigpW2MrN10sRmE6YigpW2MrOF0sUGI6YigpW2MrOV0semE6YigpW2MrMTBdLFlhOmIoKVtjKzExXSxUYjpiKClbYysxMl0sVWI6YigpW2MrMTNdfTthPTI8YT9yKGEpOmE7YT1XZFthXXx8KCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/DQpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGEpOnZvaWQgMCk7cmV0dXJuIWF8fGMuWWE/MDpPZChhLGMpfSxlbXNjcmlwdGVuX3dlYmdsX2Rlc3Ryb3lfY29udGV4dDpmdW5jdGlvbihhKXtSZD09YSYmKFJkPTApO1JkPT09SWRbYV0mJihSZD1udWxsKTtpZigib2JqZWN0Ij09dHlwZW9mIFVkKWZvcih2YXIgYz1JZFthXS5MLmNhbnZhcyxkPTA7ZDxUZC5sZW5ndGg7KytkKWlmKFRkW2RdLnRhcmdldD09Yyl7dmFyIGU9ZC0tLGY9VGRbZV07Zi50YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihmLk1iLGYuTGIsZi5aYik7VGQuc3BsaWNlKGUsMSl9SWRbYV0mJklkW2FdLkwuY2FudmFzJiYoSWRbYV0uTC5jYW52YXMuU2E9dm9pZCAwKTt3ZChJZFthXS5nYik7SWRbYV09bnVsbH0sZW1zY3JpcHRlbl93ZWJnbF9tYWtlX2NvbnRleHRfY3VycmVudDpmdW5jdGlvbihhKXtSZD1JZFthXTtuLkpiPUM9UmQmJlJkLkw7cmV0dXJuIWF8fEM/MDotNX0sZW52aXJvbl9nZXQ6JGQsZW52aXJvbl9zaXplc19nZXQ6YWUsDQpleGl0OkVjLGZkX2Nsb3NlOmJlLGZkX3JlYWQ6Y2UsZmRfc2VlazpkZSxmZF93cml0ZTplZSxnZXRlbnRyb3B5OmZ1bmN0aW9uKGEsYyl7SmIoaWEoKS5zdWJhcnJheShhLGErYykpO3JldHVybiAwfSxnbEF0dGFjaFNoYWRlcjpmdW5jdGlvbihhLGMpe0MuYXR0YWNoU2hhZGVyKEZkW2FdLEdkW2NdKX0sZ2xCaW5kQXR0cmliTG9jYXRpb246ZnVuY3Rpb24oYSxjLGQpe0MuYmluZEF0dHJpYkxvY2F0aW9uKEZkW2FdLGMscihkKSl9LGdsQmluZEJ1ZmZlcjpmdW5jdGlvbihhLGMpezM0OTYyPT1hP0MuVj1jOjM0OTYzPT1hJiYoQy5SPWMpOzM1MDUxPT1hP0Mud2E9YzozNTA1Mj09YSYmKEMueGE9Yyk7Qy5iaW5kQnVmZmVyKGEsRWRbY10pfSxnbEJpbmRWZXJ0ZXhBcnJheTpmdW5jdGlvbihhKXtDLmJpbmRWZXJ0ZXhBcnJheShIZFthXSk7YT1DLmdldFBhcmFtZXRlcigzNDk2NSk7Qy5SPWE/YS5uYW1lfDA6MH0sZ2xCdWZmZXJEYXRhOmZ1bmN0aW9uKGEsYyxkLGUpezI8PVJkLnZlcnNpb24/DQpkJiZjP0MuYnVmZmVyRGF0YShhLGlhKCksZSxkLGMpOkMuYnVmZmVyRGF0YShhLGMsZSk6Qy5idWZmZXJEYXRhKGEsZD9pYSgpLnN1YmFycmF5KGQsZCtjKTpjLGUpfSxnbENsZWFyOmZ1bmN0aW9uKGEpe0MuY2xlYXIoYSl9LGdsQ2xlYXJDb2xvcjpmdW5jdGlvbihhLGMsZCxlKXtDLmNsZWFyQ29sb3IoYSxjLGQsZSl9LGdsQ29tcGlsZVNoYWRlcjpmdW5jdGlvbihhKXtDLmNvbXBpbGVTaGFkZXIoR2RbYV0pfSxnbENyZWF0ZVByb2dyYW06ZnVuY3Rpb24oKXt2YXIgYT1NZChGZCksYz1DLmNyZWF0ZVByb2dyYW0oKTtjLm5hbWU9YTtjLlk9Yy5XPWMuWD0wO2Muc2E9MTtGZFthXT1jO3JldHVybiBhfSxnbENyZWF0ZVNoYWRlcjpmdW5jdGlvbihhKXt2YXIgYz1NZChHZCk7R2RbY109Qy5jcmVhdGVTaGFkZXIoYSk7cmV0dXJuIGN9LGdsRGVsZXRlQnVmZmVyczpmdW5jdGlvbihhLGMpe2Zvcih2YXIgZD0wO2Q8YTtkKyspe3ZhciBlPWIoKVtjKzQqZD4+Ml0sZj1FZFtlXTtmJiYoQy5kZWxldGVCdWZmZXIoZiksDQpmLm5hbWU9MCxFZFtlXT1udWxsLGU9PUMuViYmKEMuVj0wKSxlPT1DLlImJihDLlI9MCksZT09Qy53YSYmKEMud2E9MCksZT09Qy54YSYmKEMueGE9MCkpfX0sZ2xEZWxldGVQcm9ncmFtOmZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBjPUZkW2FdO2M/KEMuZGVsZXRlUHJvZ3JhbShjKSxjLm5hbWU9MCxGZFthXT1udWxsKTpLZCgxMjgxKX19LGdsRGVsZXRlU2hhZGVyOmZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBjPUdkW2FdO2M/KEMuZGVsZXRlU2hhZGVyKGMpLEdkW2FdPW51bGwpOktkKDEyODEpfX0sZ2xEZWxldGVWZXJ0ZXhBcnJheXM6ZnVuY3Rpb24oYSxjKXtmb3IodmFyIGQ9MDtkPGE7ZCsrKXt2YXIgZT1iKClbYys0KmQ+PjJdO0MuZGVsZXRlVmVydGV4QXJyYXkoSGRbZV0pO0hkW2VdPW51bGx9fSxnbERpc2FibGU6ZnVuY3Rpb24oYSl7Qy5kaXNhYmxlKGEpfSxnbERyYXdFbGVtZW50czpmdW5jdGlvbihhLGMsZCxlKXtpZighQy5SKXt2YXIgZj0xKkpkW2QtNTEyMF0qYzt2YXIgZz0NCk5kKGYpO3ZhciBoPVJkLlBbZ107aD9nPWg6KGg9Qy5nZXRQYXJhbWV0ZXIoMzQ5NjUpLFJkLlBbZ109Qy5jcmVhdGVCdWZmZXIoKSxDLmJpbmRCdWZmZXIoMzQ5NjMsUmQuUFtnXSksQy5idWZmZXJEYXRhKDM0OTYzLDE8PGcsMzUwNDgpLEMuYmluZEJ1ZmZlcigzNDk2MyxoKSxnPVJkLlBbZ10pO0MuYmluZEJ1ZmZlcigzNDk2MyxnKTtDLmJ1ZmZlclN1YkRhdGEoMzQ5NjMsMCxpYSgpLnN1YmFycmF5KGUsZStmKSk7ZT0wfVNkPSExO2ZvcihmPTA7ZjxSZC5HYTsrK2YpaWYoZz1SZC5VW2ZdLGcuZWEmJmcuZW5hYmxlZCl7U2Q9ITA7aD1nLnBhO2g9MDxoP2MqaDpnLnNpemUqSmRbZy50eXBlLTUxMjBdKmM7dmFyIGw9TmQoaCk7dmFyIHQ9UmQuYWFbbF0scD1SZC5TW2xdO1JkLlNbbF09UmQuU1tsXSsxJjYzO3ZhciB4PXRbcF07eD9sPXg6KHg9Qy5nZXRQYXJhbWV0ZXIoMzQ5NjQpLHRbcF09Qy5jcmVhdGVCdWZmZXIoKSxDLmJpbmRCdWZmZXIoMzQ5NjIsdFtwXSksQy5idWZmZXJEYXRhKDM0OTYyLA0KMTw8bCwzNTA0OCksQy5iaW5kQnVmZmVyKDM0OTYyLHgpLGw9dFtwXSk7Qy5iaW5kQnVmZmVyKDM0OTYyLGwpO0MuYnVmZmVyU3ViRGF0YSgzNDk2MiwwLGlhKCkuc3ViYXJyYXkoZy5nLGcuZytoKSk7Zy5SYS5jYWxsKEMsZixnLnNpemUsZy50eXBlLGcuS2EsZy5wYSwwKX1DLmRyYXdFbGVtZW50cyhhLGMsZCxlKTtTZCYmQy5iaW5kQnVmZmVyKDM0OTYyLEVkW0MuVl0pO0MuUnx8Qy5iaW5kQnVmZmVyKDM0OTYzLG51bGwpfSxnbERyYXdFbGVtZW50c0luc3RhbmNlZDpmdW5jdGlvbihhLGMsZCxlLGYpe0MuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGEsYyxkLGUsZil9LGdsRW5hYmxlOmZ1bmN0aW9uKGEpe0MuZW5hYmxlKGEpfSxnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5OmZ1bmN0aW9uKGEpe1JkLlVbYV0uZW5hYmxlZD0hMDtDLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGEpfSxnbEdlbkJ1ZmZlcnM6ZnVuY3Rpb24oYSxjKXtmZShhLGMsImNyZWF0ZUJ1ZmZlciIsRWQpfSxnbEdlblZlcnRleEFycmF5czpmdW5jdGlvbihhLA0KYyl7ZmUoYSxjLCJjcmVhdGVWZXJ0ZXhBcnJheSIsSGQpfSxnbEdldEFjdGl2ZUF0dHJpYjpmdW5jdGlvbihhLGMsZCxlLGYsZyxoKXtnZSgiZ2V0QWN0aXZlQXR0cmliIixhLGMsZCxlLGYsZyxoKX0sZ2xHZXRBY3RpdmVVbmlmb3JtOmZ1bmN0aW9uKGEsYyxkLGUsZixnLGgpe2dlKCJnZXRBY3RpdmVVbmlmb3JtIixhLGMsZCxlLGYsZyxoKX0sZ2xHZXRBdHRyaWJMb2NhdGlvbjpmdW5jdGlvbihhLGMpe3JldHVybiBDLmdldEF0dHJpYkxvY2F0aW9uKEZkW2FdLHIoYykpfSxnbEdldEJvb2xlYW52OmZ1bmN0aW9uKGEsYyl7aGUoYSxjKX0sZ2xHZXRFcnJvcjpmdW5jdGlvbigpe3ZhciBhPUMuZ2V0RXJyb3IoKXx8TGQ7TGQ9MDtyZXR1cm4gYX0sZ2xHZXRQcm9ncmFtSW5mb0xvZzpmdW5jdGlvbihhLGMsZCxlKXthPUMuZ2V0UHJvZ3JhbUluZm9Mb2coRmRbYV0pO251bGw9PT1hJiYoYT0iKHVua25vd24gZXJyb3IpIik7Yz0wPGMmJmU/dmQoYSxlLGMpOjA7ZCYmKGIoKVtkPj4yXT1jKX0sDQpnbEdldFByb2dyYW1pdjpmdW5jdGlvbihhLGMsZCl7aWYoZClpZihhPj1EZClLZCgxMjgxKTtlbHNlIGlmKGE9RmRbYV0sMzU3MTY9PWMpYT1DLmdldFByb2dyYW1JbmZvTG9nKGEpLG51bGw9PT1hJiYoYT0iKHVua25vd24gZXJyb3IpIiksYigpW2Q+PjJdPWEubGVuZ3RoKzE7ZWxzZSBpZigzNTcxOT09Yyl7aWYoIWEuWSlmb3IoYz0wO2M8Qy5nZXRQcm9ncmFtUGFyYW1ldGVyKGEsMzU3MTgpOysrYylhLlk9TWF0aC5tYXgoYS5ZLEMuZ2V0QWN0aXZlVW5pZm9ybShhLGMpLm5hbWUubGVuZ3RoKzEpO2IoKVtkPj4yXT1hLll9ZWxzZSBpZigzNTcyMj09Yyl7aWYoIWEuVylmb3IoYz0wO2M8Qy5nZXRQcm9ncmFtUGFyYW1ldGVyKGEsMzU3MjEpOysrYylhLlc9TWF0aC5tYXgoYS5XLEMuZ2V0QWN0aXZlQXR0cmliKGEsYykubmFtZS5sZW5ndGgrMSk7YigpW2Q+PjJdPWEuV31lbHNlIGlmKDM1MzgxPT1jKXtpZighYS5YKWZvcihjPTA7YzxDLmdldFByb2dyYW1QYXJhbWV0ZXIoYSwzNTM4Mik7KytjKWEuWD0NCk1hdGgubWF4KGEuWCxDLmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoYSxjKS5sZW5ndGgrMSk7YigpW2Q+PjJdPWEuWH1lbHNlIGIoKVtkPj4yXT1DLmdldFByb2dyYW1QYXJhbWV0ZXIoYSxjKTtlbHNlIEtkKDEyODEpfSxnbEdldFNoYWRlckluZm9Mb2c6ZnVuY3Rpb24oYSxjLGQsZSl7YT1DLmdldFNoYWRlckluZm9Mb2coR2RbYV0pO251bGw9PT1hJiYoYT0iKHVua25vd24gZXJyb3IpIik7Yz0wPGMmJmU/dmQoYSxlLGMpOjA7ZCYmKGIoKVtkPj4yXT1jKX0sZ2xHZXRTaGFkZXJpdjpmdW5jdGlvbihhLGMsZCl7ZD8zNTcxNj09Yz8oYT1DLmdldFNoYWRlckluZm9Mb2coR2RbYV0pLG51bGw9PT1hJiYoYT0iKHVua25vd24gZXJyb3IpIiksYT1hP2EubGVuZ3RoKzE6MCxiKClbZD4+Ml09YSk6MzU3MjA9PWM/KGE9KGE9Qy5nZXRTaGFkZXJTb3VyY2UoR2RbYV0pKT9hLmxlbmd0aCsxOjAsYigpW2Q+PjJdPWEpOmIoKVtkPj4yXT1DLmdldFNoYWRlclBhcmFtZXRlcihHZFthXSxjKToNCktkKDEyODEpfSxnbEdldFVuaWZvcm1Mb2NhdGlvbjpmdW5jdGlvbihhLGMpe2M9cihjKTtpZihhPUZkW2FdKXt2YXIgZD1hLGU9ZC5ULGY9ZC5RYSxnO2lmKCFlKWZvcihkLlQ9ZT17fSxkLlBhPXt9LGc9MDtnPEMuZ2V0UHJvZ3JhbVBhcmFtZXRlcihkLDM1NzE4KTsrK2cpe3ZhciBoPUMuZ2V0QWN0aXZlVW5pZm9ybShkLGcpO3ZhciBsPWgubmFtZTtoPWguc2l6ZTt2YXIgdD1pZShsKTt0PTA8dD9sLnNsaWNlKDAsdCk6bDt2YXIgcD1kLnNhO2Quc2ErPWg7Zlt0XT1baCxwXTtmb3IobD0wO2w8aDsrK2wpZVtwXT1sLGQuUGFbcCsrXT10fWQ9YS5UO2U9MDtmPWM7Zz1pZShjKTswPGcmJihlPXBhcnNlSW50KGMuc2xpY2UoZysxKSk+Pj4wLGY9Yy5zbGljZSgwLGcpKTtpZigoZj1hLlFhW2ZdKSYmZTxmWzBdJiYoZSs9ZlsxXSxkW2VdPWRbZV18fEMuZ2V0VW5pZm9ybUxvY2F0aW9uKGEsYykpKXJldHVybiBlfWVsc2UgS2QoMTI4MSk7cmV0dXJuLTF9LGdsTGluZVdpZHRoOmZ1bmN0aW9uKGEpe0MubGluZVdpZHRoKGEpfSwNCmdsTGlua1Byb2dyYW06ZnVuY3Rpb24oYSl7YT1GZFthXTtDLmxpbmtQcm9ncmFtKGEpO2EuVD0wO2EuUWE9e319LGdsU2hhZGVyU291cmNlOmZ1bmN0aW9uKGEsYyxkLGUpe2Zvcih2YXIgZj0iIixnPTA7ZzxjOysrZyl7dmFyIGg9ZT9iKClbZSs0Kmc+PjJdOi0xO2YrPXIoYigpW2QrNCpnPj4yXSwwPmg/dm9pZCAwOmgpfUMuc2hhZGVyU291cmNlKEdkW2FdLGYpfSxnbFVuaWZvcm0xaTpmdW5jdGlvbihhLGMpe0MudW5pZm9ybTFpKGplKGEpLGMpfSxnbFVuaWZvcm00ZjpmdW5jdGlvbihhLGMsZCxlLGYpe0MudW5pZm9ybTRmKGplKGEpLGMsZCxlLGYpfSxnbFVuaWZvcm00ZnY6ZnVuY3Rpb24oYSxjLGQpe2lmKDI8PVJkLnZlcnNpb24pYyYmQy51bmlmb3JtNGZ2KGplKGEpLG9hKCksZD4+Miw0KmMpO2Vsc2V7aWYoNzI+PWMpe3ZhciBlPWtlWzQqYy0xXSxmPW9hKCk7ZD4+PTI7Zm9yKHZhciBnPTA7Zzw0KmM7Zys9NCl7dmFyIGg9ZCtnO2VbZ109ZltoXTtlW2crMV09ZltoKzFdOw0KZVtnKzJdPWZbaCsyXTtlW2crM109ZltoKzNdfX1lbHNlIGU9b2EoKS5zdWJhcnJheShkPj4yLGQrMTYqYz4+Mik7Qy51bmlmb3JtNGZ2KGplKGEpLGUpfX0sZ2xVbmlmb3JtTWF0cml4NGZ2OmZ1bmN0aW9uKGEsYyxkLGUpe2lmKDI8PVJkLnZlcnNpb24pYyYmQy51bmlmb3JtTWF0cml4NGZ2KGplKGEpLCEhZCxvYSgpLGU+PjIsMTYqYyk7ZWxzZXtpZigxOD49Yyl7dmFyIGY9a2VbMTYqYy0xXSxnPW9hKCk7ZT4+PTI7Zm9yKHZhciBoPTA7aDwxNipjO2grPTE2KXt2YXIgbD1lK2g7ZltoXT1nW2xdO2ZbaCsxXT1nW2wrMV07ZltoKzJdPWdbbCsyXTtmW2grM109Z1tsKzNdO2ZbaCs0XT1nW2wrNF07ZltoKzVdPWdbbCs1XTtmW2grNl09Z1tsKzZdO2ZbaCs3XT1nW2wrN107ZltoKzhdPWdbbCs4XTtmW2grOV09Z1tsKzldO2ZbaCsxMF09Z1tsKzEwXTtmW2grMTFdPWdbbCsxMV07ZltoKzEyXT1nW2wrMTJdO2ZbaCsxM109Z1tsKzEzXTtmW2grMTRdPWdbbCsxNF07ZltoKzE1XT1nW2wrDQoxNV19fWVsc2UgZj1vYSgpLnN1YmFycmF5KGU+PjIsZSs2NCpjPj4yKTtDLnVuaWZvcm1NYXRyaXg0ZnYoamUoYSksISFkLGYpfX0sZ2xVc2VQcm9ncmFtOmZ1bmN0aW9uKGEpe2E9RmRbYV07Qy51c2VQcm9ncmFtKGEpO0MuV2E9YX0sZ2xWYWxpZGF0ZVByb2dyYW06ZnVuY3Rpb24oYSl7Qy52YWxpZGF0ZVByb2dyYW0oRmRbYV0pfSxnbFZlcnRleEF0dHJpYkRpdmlzb3I6ZnVuY3Rpb24oYSxjKXtDLnZlcnRleEF0dHJpYkRpdmlzb3IoYSxjKX0sZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyOmZ1bmN0aW9uKGEsYyxkLGUsZixnKXt2YXIgaD1SZC5VW2FdO0MuVj8oaC5lYT0hMSxDLnZlcnRleEF0dHJpYlBvaW50ZXIoYSxjLGQsISFlLGYsZykpOihoLnNpemU9YyxoLnR5cGU9ZCxoLkthPWUsaC5wYT1mLGguZz1nLGguZWE9ITAsaC5SYT1mdW5jdGlvbihsLHQscCx4LFUsUSl7dGhpcy52ZXJ0ZXhBdHRyaWJQb2ludGVyKGwsdCxwLHgsVSxRKX0pfSxpbnZva2VfaWk6dWUsaW52b2tlX2lpaWk6dmUsDQppbnZva2Vfdmk6d2UsaW52b2tlX3ZpaTp4ZSxtZW1vcnk6Y2F8fG4ud2FzbU1lbW9yeSxzdHJmdGltZV9sOmZ1bmN0aW9uKGEsYyxkLGUpe3JldHVybiBwZShhLGMsZCxlKX19Ow0KKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShkLGUpe2Q9ZC5leHBvcnRzO24uYXNtPWQ7dy5PYS5wdXNoKG4uYXNtLl9lbXNjcmlwdGVuX3Rsc19pbml0KTtUYT1uLmFzbS5fX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlO1ZhLnVuc2hpZnQobi5hc20uX193YXNtX2NhbGxfY3RvcnMpO09hPWU7dy5tYigoKT0+bGIoKSk7cmV0dXJuIGR9dmFyIGM9e2Vudjp5ZSx3YXNpX3NuYXBzaG90X3ByZXZpZXcxOnllfTtrYigpO2lmKG4uaW5zdGFudGlhdGVXYXNtKXRyeXtyZXR1cm4gbi5pbnN0YW50aWF0ZVdhc20oYyxhKX1jYXRjaChkKXtMYSgiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIitkKSx0YShkKX1zYihjLGZ1bmN0aW9uKGQpe2EoZC5pbnN0YW5jZSxkLm1vZHVsZSl9KS5jYXRjaCh0YSk7cmV0dXJue319KSgpOw0KdmFyIHplPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZFJ4T2JqZWN0X2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybih6ZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWRSeE9iamVjdF9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kUnhPYmplY3RfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZFJ4T2JqZWN0X2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybihBZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWRSeE9iamVjdF9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kUnhPYmplY3RfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZFJ4T2JqZWN0X2dldEpzb25fMD1mdW5jdGlvbigpe3JldHVybihCZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWRSeE9iamVjdF9nZXRKc29uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kUnhPYmplY3RfZ2V0SnNvbl8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sQ2U9bi5fZW1zY3JpcHRlbl9iaW5kX01kUnhPYmplY3Rfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKENlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZFJ4T2JqZWN0X3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRSeE9iamVjdF9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfZ2V0T2JqZWN0SURfMD1mdW5jdGlvbigpe3JldHVybihEZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9nZXRPYmplY3RJRF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfRXJhc2VfMD1mdW5jdGlvbigpe3JldHVybihFZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9FcmFzZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X0VyYXNlXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxGZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKEZlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9DbG9uZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEdlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X0Nsb25lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9tb3ZlR3JpcFBvaW50c0F0XzQ9ZnVuY3Rpb24oKXtyZXR1cm4oSGU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfbW92ZUdyaXBQb2ludHNBdF80PQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEllPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihJZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEplPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybihKZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEtlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X2dldEpzb25fMD1mdW5jdGlvbigpe3JldHVybihLZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9nZXRKc29uXzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3Rfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKExlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTWU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfZ2V0T2JqZWN0SURfMD1mdW5jdGlvbigpe3JldHVybihNZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9nZXRPYmplY3RJRF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfRXJhc2VfMD1mdW5jdGlvbigpe3JldHVybihOZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9FcmFzZV8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfRXJhc2VfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKE9lPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9DbG9uZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFBlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X0Nsb25lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9tb3ZlR3JpcFBvaW50c0F0XzQ9ZnVuY3Rpb24oKXtyZXR1cm4oUWU9DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9tb3ZlR3JpcFBvaW50c0F0XzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihSZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybihTZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFRlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X2dldEpzb25fMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKFRlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKFVlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVmU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRTdGFydFBhcmFtXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVmU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRTdGFydFBhcmFtXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRTdGFydFBhcmFtXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sV2U9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRFbmRQYXJhbV8wPQ0KZnVuY3Rpb24oKXtyZXR1cm4oV2U9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRFbmRQYXJhbV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0RW5kUGFyYW1fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldERpc3RBdFBhcmFtXzE9ZnVuY3Rpb24oKXtyZXR1cm4oWGU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXREaXN0QXRQYXJhbV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0RGlzdEF0UGFyYW1fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxZZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldFBhcmFtQXREaXN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oWWU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRQYXJhbUF0RGlzdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0UGFyYW1BdERpc3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwNClplPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0RGlzdEF0UG9pbnRfMT1mdW5jdGlvbigpe3JldHVybihaZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldERpc3RBdFBvaW50XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXREaXN0QXRQb2ludF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0UG9pbnRBdERpc3RfMT1mdW5jdGlvbigpe3JldHVybigkZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldFBvaW50QXREaXN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRQb2ludEF0RGlzdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0T2JqZWN0SURfMD1mdW5jdGlvbigpe3JldHVybihhZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldE9iamVjdElEXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRPYmplY3RJRF8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sYmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGJmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGNmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfQ29ubmVjdGlvblRlbXBPYmplY3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9DbG9uZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGRmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfQ2xvbmVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX0Nsb25lXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxlZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihlZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihmZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldE9iamVjdE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxnZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybihnZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldER4ZjBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldER4ZjBfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKGhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGpmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGpmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfc2V0SnNvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfc2V0SnNvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX01kRGJEaW1lbnNpb25fMD1mdW5jdGlvbigpe3JldHVybihrZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9NZERiRGltZW5zaW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fTWREYkRpbWVuc2lvbl8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sbGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFBvc2l0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4obGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFBvc2l0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFBvc2l0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0VGV4dFBvc2l0aW9uXzE9ZnVuY3Rpb24oKXtyZXR1cm4obWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0VGV4dFBvc2l0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0VGV4dFBvc2l0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25faXNVc2luZ0RlZmF1bHRUZXh0UG9zaXRpb25fMD1mdW5jdGlvbigpe3JldHVybihuZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9pc1VzaW5nRGVmYXVsdFRleHRQb3NpdGlvbl8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25faXNVc2luZ0RlZmF1bHRUZXh0UG9zaXRpb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl91c2VTZXRUZXh0UG9zaXRpb25fMD1mdW5jdGlvbigpe3JldHVybihvZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl91c2VTZXRUZXh0UG9zaXRpb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl91c2VTZXRUZXh0UG9zaXRpb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxwZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl91c2VEZWZhdWx0VGV4dFBvc2l0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdXNlRGVmYXVsdFRleHRQb3NpdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3VzZURlZmF1bHRUZXh0UG9zaXRpb25fMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2VsZXZhdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKHFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2VsZXZhdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2VsZXZhdGlvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldEVsZXZhdGlvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKHJmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldEVsZXZhdGlvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldEVsZXZhdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHNmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2RpbWVuc2lvblRleHRfMD1mdW5jdGlvbigpe3JldHVybihzZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9kaW1lbnNpb25UZXh0XzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9kaW1lbnNpb25UZXh0XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0RGltZW5zaW9uVGV4dF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHRmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldERpbWVuc2lvblRleHRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXREaW1lbnNpb25UZXh0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFJvdGF0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4odWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFJvdGF0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFJvdGF0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0VGV4dFJvdGF0aW9uXzE9DQpmdW5jdGlvbigpe3JldHVybih2Zj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXRUZXh0Um90YXRpb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXRUZXh0Um90YXRpb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3Zj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9kaW1lbnNpb25TdHlsZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHdmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2RpbWVuc2lvblN0eWxlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fZGltZW5zaW9uU3R5bGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4Zj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXREaW1lbnNpb25TdHlsZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldERpbWVuc2lvblN0eWxlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0RGltZW5zaW9uU3R5bGVfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHlmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3RleHRBdHRhY2htZW50XzA9ZnVuY3Rpb24oKXtyZXR1cm4oeWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dEF0dGFjaG1lbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl90ZXh0QXR0YWNobWVudF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHpmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldFRleHRBdHRhY2htZW50XzE9ZnVuY3Rpb24oKXtyZXR1cm4oemY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0VGV4dEF0dGFjaG1lbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXRUZXh0QXR0YWNobWVudF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2hvcml6b250YWxSb3RhdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKEFmPQ0Kbi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25faG9yaXpvbnRhbFJvdGF0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25faG9yaXpvbnRhbFJvdGF0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0SG9yaXpvbnRhbFJvdGF0aW9uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oQmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0SG9yaXpvbnRhbFJvdGF0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0SG9yaXpvbnRhbFJvdGF0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fcmVjb21wdXRlRGltQmxvY2tfMT1mdW5jdGlvbigpe3JldHVybihDZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9yZWNvbXB1dGVEaW1CbG9ja18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3JlY29tcHV0ZURpbUJsb2NrXzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxEZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJJbnRfMT1mdW5jdGlvbigpe3JldHVybihEZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJJbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJJbnRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9TZXREaW1WYXJJbnRfMj1mdW5jdGlvbigpe3JldHVybihFZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9TZXREaW1WYXJJbnRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9TZXREaW1WYXJJbnRfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJEb3VibGVfMT1mdW5jdGlvbigpe3JldHVybihGZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJEb3VibGVfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0dldERpbVZhckRvdWJsZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX1NldERpbVZhckRvdWJsZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKEdmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX1NldERpbVZhckRvdWJsZV8yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX1NldERpbVZhckRvdWJsZV8yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0dldERpbVZhclN0cmluZ18xPWZ1bmN0aW9uKCl7cmV0dXJuKEhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0dldERpbVZhclN0cmluZ18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0dldERpbVZhclN0cmluZ18xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX1NldERpbVZhclN0cmluZ18yPQ0KZnVuY3Rpb24oKXtyZXR1cm4oSWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fU2V0RGltVmFyU3RyaW5nXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fU2V0RGltVmFyU3RyaW5nXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fR2V0RGltVmFyT2JqZWN0SWRfMT1mdW5jdGlvbigpe3JldHVybihKZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJPYmplY3RJZF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0dldERpbVZhck9iamVjdElkXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fU2V0RGltVmFyT2JqZWN0SWRfMj1mdW5jdGlvbigpe3JldHVybihLZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9TZXREaW1WYXJPYmplY3RJZF8yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX1NldERpbVZhck9iamVjdElkXzIpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxMZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKExmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2dldE9iamVjdElEXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fZ2V0T2JqZWN0SURfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1mPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0VyYXNlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fRXJhc2VfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKE5mPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9Db25uZWN0aW9uVGVtcE9iamVjdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9mPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0Nsb25lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oT2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fQ2xvbmVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9DbG9uZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihQZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9tb3ZlR3JpcFBvaW50c0F0XzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2dldE9iamVjdE5hbWVfMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKFFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2dldE9iamVjdE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9nZXRPYmplY3ROYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2dldER4ZjBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9nZXREeGYwXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFNmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sDQpUZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oVGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0SnNvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldEpzb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFVmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX19fZGVzdHJveV9fXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWZj1uLl9lbXNjcmlwdGVuX2JpbmRfVm9pZFB0cl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFZmPW4uX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX1ZvaWRQdHJfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFdmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfTWRDbUNvbG9yXzA9ZnVuY3Rpb24oKXtyZXR1cm4oV2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9NZENtQ29sb3JfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX01kQ21Db2xvcl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0Q29sb3JJbmRleF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0Q29sb3JJbmRleF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0Q29sb3JJbmRleF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFlmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0UkdCXzM9ZnVuY3Rpb24oKXtyZXR1cm4oWWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRSR0JfMz1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX3NldFJHQl8zKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sWmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfcmVkXzA9ZnVuY3Rpb24oKXtyZXR1cm4oWmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfcmVkXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfcmVkXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfcmVkXzE9ZnVuY3Rpb24oKXtyZXR1cm4oJGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfcmVkXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfcmVkXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfZ3JlZW5fMD1mdW5jdGlvbigpe3JldHVybihhZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX2dldF9ncmVlbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X2dyZWVuXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxiZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX3NldF9ncmVlbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGJnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X2dyZWVuXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfZ3JlZW5fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX2dldF9ibHVlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oY2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfYmx1ZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X2JsdWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX3NldF9ibHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oZGc9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfYmx1ZV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X2JsdWVfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGVnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X21ldGhvZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGVnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X21ldGhvZF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X21ldGhvZF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGZnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X21ldGhvZF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGZnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X21ldGhvZF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X21ldGhvZF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGdnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X25fMD1mdW5jdGlvbigpe3JldHVybihnZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX2dldF9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfbl8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0saGc9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGhnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX3NldF9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfY29sb3JJbmRleF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGlnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X2NvbG9ySW5kZXhfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX2dldF9jb2xvckluZGV4XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samc9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfY29sb3JJbmRleF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGpnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X2NvbG9ySW5kZXhfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX3NldF9jb2xvckluZGV4XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxrZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oa2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxsZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMD1mdW5jdGlvbigpe3JldHVybihsZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMz1mdW5jdGlvbigpe3JldHVybihtZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMz1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMykuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LG5nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeF8wPWZ1bmN0aW9uKCl7cmV0dXJuKG5nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG9nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9zZXRfeF8xPWZ1bmN0aW9uKCl7cmV0dXJuKG9nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9zZXRfeF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9zZXRfeF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHBnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeV8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0scWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF95XzE9ZnVuY3Rpb24oKXtyZXR1cm4ocWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF95XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF95XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX2dldF96XzA9ZnVuY3Rpb24oKXtyZXR1cm4ocmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX2dldF96XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX2dldF96XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF96XzE9ZnVuY3Rpb24oKXtyZXR1cm4oc2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF96XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF96XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSx0Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih0Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx1Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX01kR2VWZWN0b3IzZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHVnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfTWRHZVZlY3RvcjNkXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9NZEdlVmVjdG9yM2RfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX01kR2VWZWN0b3IzZF8zPWZ1bmN0aW9uKCl7cmV0dXJuKHZnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfTWRHZVZlY3RvcjNkXzM9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX01kR2VWZWN0b3IzZF8zKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfZ2V0X3hfMD1mdW5jdGlvbigpe3JldHVybih3Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX2dldF94XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9nZXRfeF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2Rfc2V0X3hfMT1mdW5jdGlvbigpe3JldHVybih4Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX3NldF94XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9zZXRfeF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHlnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfZ2V0X3lfMD1mdW5jdGlvbigpe3JldHVybih5Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX2dldF95XzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX2dldF95XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0semc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9zZXRfeV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHpnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2Rfc2V0X3lfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX3NldF95XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9nZXRfel8wPWZ1bmN0aW9uKCl7cmV0dXJuKEFnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfZ2V0X3pfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX2dldF96XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9zZXRfel8xPWZ1bmN0aW9uKCl7cmV0dXJuKEJnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2Rfc2V0X3pfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2Rfc2V0X3pfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxDZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQ2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxEZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX01kR2VNYXRyaXgzZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKERnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfTWRHZU1hdHJpeDNkXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9NZEdlTWF0cml4M2RfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3NldFRvSWRlbnRpdHlfMD1mdW5jdGlvbigpe3JldHVybihFZz0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9JZGVudGl0eV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9JZGVudGl0eV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfcHJlTXVsdEJ5XzE9ZnVuY3Rpb24oKXtyZXR1cm4oRmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9wcmVNdWx0QnlfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3ByZU11bHRCeV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfcG9zdE11bHRCeV8xPWZ1bmN0aW9uKCl7cmV0dXJuKEdnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfcG9zdE11bHRCeV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfcG9zdE11bHRCeV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9Qcm9kdWN0XzI9DQpmdW5jdGlvbigpe3JldHVybihIZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3NldFRvUHJvZHVjdF8yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9Qcm9kdWN0XzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9pbnZlcnRfMD1mdW5jdGlvbigpe3JldHVybihJZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX2ludmVydF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfaW52ZXJ0XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9pc1Npbmd1bGFyXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9pc1Npbmd1bGFyXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9pc1Npbmd1bGFyXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sDQpLZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3RyYW5zcG9zZUl0XzA9ZnVuY3Rpb24oKXtyZXR1cm4oS2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF90cmFuc3Bvc2VJdF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfdHJhbnNwb3NlSXRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX2lzRXF1YWxUb18xPWZ1bmN0aW9uKCl7cmV0dXJuKExnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfaXNFcXVhbFRvXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9pc0VxdWFsVG9fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX2RldF8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfZGV0XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9kZXRfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LE5nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0Q29vcmRTeXN0ZW1fND1mdW5jdGlvbigpe3JldHVybihOZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3NldENvb3JkU3lzdGVtXzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9zZXRDb29yZFN5c3RlbV80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9UcmFuc2xhdGlvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKE9nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9UcmFuc2xhdGlvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9UcmFuc2xhdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9Sb3RhdGlvbl8zPWZ1bmN0aW9uKCl7cmV0dXJuKFBnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9Sb3RhdGlvbl8zPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9zZXRUb1JvdGF0aW9uXzMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9zZXRUb1NjYWxpbmdfMj1mdW5jdGlvbigpe3JldHVybihRZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3NldFRvU2NhbGluZ18yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9TY2FsaW5nXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9zY2FsZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2NhbGVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3NjYWxlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9nZXREYXRhXzI9ZnVuY3Rpb24oKXtyZXR1cm4oU2c9DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX2dldERhdGFfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX2dldERhdGFfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxUZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVGc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfTWREYkxheWVyVGFibGVSZWNvcmRfMD1mdW5jdGlvbigpe3JldHVybihVZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfTWREYkxheWVyVGFibGVSZWNvcmRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfTWREYkxheWVyVGFibGVSZWNvcmRfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFZnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9nZXROYW1lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2dldE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFdnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXROYW1lXzE9ZnVuY3Rpb24oKXtyZXR1cm4oV2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldE5hbWVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0TmFtZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9pc0Zyb3plbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFhnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9pc0Zyb3plbl8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2lzRnJvemVuXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldElzRnJvemVuXzE9ZnVuY3Rpb24oKXtyZXR1cm4oWWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldElzRnJvemVuXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldElzRnJvemVuXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2lzT2ZmXzA9ZnVuY3Rpb24oKXtyZXR1cm4oWmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2lzT2ZmXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2lzT2ZmXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldElzT2ZmXzE9DQpmdW5jdGlvbigpe3JldHVybigkZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SXNPZmZfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SXNPZmZfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfaXNMb2NrZWRfMD1mdW5jdGlvbigpe3JldHVybihhaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfaXNMb2NrZWRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfaXNMb2NrZWRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SXNMb2NrZWRfMT1mdW5jdGlvbigpe3JldHVybihiaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SXNMb2NrZWRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SXNMb2NrZWRfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGNoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9jb2xvcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKGNoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9jb2xvcl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9jb2xvcl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGRoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRDb2xvcl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGRoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRDb2xvcl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRDb2xvcl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9saW5ldHlwZU9iamVjdElkXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2xpbmV0eXBlT2JqZWN0SWRfMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9saW5ldHlwZU9iamVjdElkXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldExpbmV0eXBlT2JqZWN0SWRfMT1mdW5jdGlvbigpe3JldHVybihmaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0TGluZXR5cGVPYmplY3RJZF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRMaW5ldHlwZU9iamVjdElkXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2xpbmVXZWlnaHRfMD1mdW5jdGlvbigpe3JldHVybihnaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfbGluZVdlaWdodF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9saW5lV2VpZ2h0XzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxoaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0TGluZVdlaWdodF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGhoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRMaW5lV2VpZ2h0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldExpbmVXZWlnaHRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxpaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0T2JqZWN0SURfMD1mdW5jdGlvbigpe3JldHVybihpaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0T2JqZWN0SURfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfRXJhc2VfMD1mdW5jdGlvbigpe3JldHVybihqaD0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9FcmFzZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9FcmFzZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGtoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9Db25uZWN0aW9uVGVtcE9iamVjdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9Db25uZWN0aW9uVGVtcE9iamVjdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9DbG9uZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGxoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9DbG9uZV8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sbWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihtaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfbW92ZUdyaXBQb2ludHNBdF80PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9tb3ZlR3JpcFBvaW50c0F0XzQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihuaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9nZXRPYmplY3ROYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2dldER4ZjBfMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKG9oPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2dldER4ZjBfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxwaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKHBoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9nZXRKc29uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2dldEpzb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKHFoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldEpzb25fMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9fX2Rlc3Ryb3lfX18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHNoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHNoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXRPYmplY3RJRF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXRPYmplY3RJRF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHRoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9FcmFzZV8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4odWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nsb25lXzA9ZnVuY3Rpb24oKXtyZXR1cm4odmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nsb25lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nsb25lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX21vdmVHcmlwUG9pbnRzQXRfND0NCmZ1bmN0aW9uKCl7cmV0dXJuKHdoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9tb3ZlR3JpcFBvaW50c0F0XzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4aD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHhoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx5aD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVfZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHloPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX2dldER4ZjBfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHpoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXRKc29uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oemg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oQWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVfc2V0SnNvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9nZXRPYmplY3RJRF8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0VyYXNlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQ2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0VyYXNlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oRGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0Nsb25lXzA9DQpmdW5jdGlvbigpe3JldHVybihFaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfQ2xvbmVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfbW92ZUdyaXBQb2ludHNBdF80PWZ1bmN0aW9uKCl7cmV0dXJuKEZoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9tb3ZlR3JpcFBvaW50c0F0XzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEdoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LEhoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9nZXREeGYwXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX2dldER4ZjBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEloPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9nZXRKc29uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEpoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX3NldEpzb25fMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEtoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKExoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPQ0KZnVuY3Rpb24oKXtyZXR1cm4oTWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX0Nsb25lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihPaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFBoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFBoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFFoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0SnNvbl8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oU2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRMYXllclRhYmxlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRMYXllclRhYmxlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRMYXllclRhYmxlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRMaW5ldHlwZVRhYmxlXzA9DQpmdW5jdGlvbigpe3JldHVybihVaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldExpbmV0eXBlVGFibGVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldExpbmV0eXBlVGFibGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldFRleHRTdHlsZVRhYmxlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRUZXh0U3R5bGVUYWJsZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0VGV4dFN0eWxlVGFibGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldEN1cnJlbnRseUxpbmVUeXBlU2NhbGVfMD1mdW5jdGlvbigpe3JldHVybihXaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldEN1cnJlbnRseUxpbmVUeXBlU2NhbGVfMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5TGluZVR5cGVTY2FsZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5TGluZVR5cGVTY2FsZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFhoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5TGluZVR5cGVTY2FsZV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5TGluZVR5cGVTY2FsZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFloPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5TGF5ZXJOYW1lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oWWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlMYXllck5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldEN1cnJlbnRseUxheWVyTmFtZV8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sWmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9TZXRDdXJyZW50bHlMYXllck5hbWVfMT1mdW5jdGlvbigpe3JldHVybihaaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX1NldEN1cnJlbnRseUxheWVyTmFtZV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5TGF5ZXJOYW1lXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlMaW5lVHlwZU5hbWVfMD1mdW5jdGlvbigpe3JldHVybigkaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldEN1cnJlbnRseUxpbmVUeXBlTmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5TGluZVR5cGVOYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWk9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9TZXRDdXJyZW50bHlMaW5lVHlwZU5hbWVfMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKGFpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5TGluZVR5cGVOYW1lXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9TZXRDdXJyZW50bHlMaW5lVHlwZU5hbWVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldEN1cnJlbnRseVRydWVDb2xvcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKGJpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5VHJ1ZUNvbG9yXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlUcnVlQ29sb3JfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX1NldEN1cnJlbnRseVRydWVDb2xvcl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGNpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5VHJ1ZUNvbG9yXzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX1NldEN1cnJlbnRseVRydWVDb2xvcl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5Q29sb3JJbmRleF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5Q29sb3JJbmRleF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5Q29sb3JJbmRleF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5Q29sb3JJbmRleF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGVpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5Q29sb3JJbmRleF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5Q29sb3JJbmRleF8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sZmk9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlUZXh0U3R5bGVOYW1lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZmk9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlUZXh0U3R5bGVOYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlUZXh0U3R5bGVOYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ2k9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9TZXRDdXJyZW50bHlUZXh0U3R5bGVfMT1mdW5jdGlvbigpe3JldHVybihnaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX1NldEN1cnJlbnRseVRleHRTdHlsZV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5VGV4dFN0eWxlXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saGk9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9nZXRPYmplY3ROYW1lXzA9DQpmdW5jdGlvbigpe3JldHVybihoaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldE9iamVjdE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxpaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybihpaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldER4ZjBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldER4ZjBfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldEpzb25fMD1mdW5jdGlvbigpe3JldHVybihqaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldEpzb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxraT0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2Vfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGtpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2Vfc2V0SnNvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2Vfc2V0SnNvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF91cGRhdGVEaXNwbGF5XzI9ZnVuY3Rpb24oKXtyZXR1cm4obGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3VwZGF0ZURpc3BsYXlfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfdXBkYXRlRGlzcGxheV8yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1pPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF90ZXN0XzA9ZnVuY3Rpb24oKXtyZXR1cm4obWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3Rlc3RfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfdGVzdF8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sbmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X29wZW5XZWJGaWxlXzM9ZnVuY3Rpb24oKXtyZXR1cm4obmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X29wZW5XZWJGaWxlXzM9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X29wZW5XZWJGaWxlXzMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb2k9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3NhdmVGaWxlVG9VcmxfMT1mdW5jdGlvbigpe3JldHVybihvaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3Rfc2F2ZUZpbGVUb1VybF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9zYXZlRmlsZVRvVXJsXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3NhdmVGaWxlXzE9ZnVuY3Rpb24oKXtyZXR1cm4ocGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3NhdmVGaWxlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3NhdmVGaWxlXzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxxaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfZ2V0Vmlld0RhdGFKc29uUGFyYW1fMD1mdW5jdGlvbigpe3JldHVybihxaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfZ2V0Vmlld0RhdGFKc29uUGFyYW1fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfZ2V0Vmlld0RhdGFKc29uUGFyYW1fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxyaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfdXBkYXRhQXBwRGF0YV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHJpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF91cGRhdGFBcHBEYXRhXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3VwZGF0YUFwcERhdGFfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RGF0YWJhc2VfMD1mdW5jdGlvbigpe3JldHVybihzaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RGF0YWJhc2VfMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREYXRhYmFzZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXRTeXNWYXJTdHJpbmdfMT1mdW5jdGlvbigpe3JldHVybih0aT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0U3lzVmFyU3RyaW5nXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldFN5c1ZhclN0cmluZ18xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHVpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRTeXNWYXJTdHJpbmdfMj1mdW5jdGlvbigpe3JldHVybih1aT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0U3lzVmFyU3RyaW5nXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldFN5c1ZhclN0cmluZ18yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHZpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXRTeXNWYXJEb3VibGVfMT1mdW5jdGlvbigpe3JldHVybih2aT0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXRTeXNWYXJEb3VibGVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0U3lzVmFyRG91YmxlXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd2k9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldFN5c1ZhckRvdWJsZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHdpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRTeXNWYXJEb3VibGVfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0U3lzVmFyRG91YmxlXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldFN5c1ZhckxvbmdfMT1mdW5jdGlvbigpe3JldHVybih4aT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0U3lzVmFyTG9uZ18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXRTeXNWYXJMb25nXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldFN5c1ZhckxvbmdfMj0NCmZ1bmN0aW9uKCl7cmV0dXJuKHlpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRTeXNWYXJMb25nXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldFN5c1ZhckxvbmdfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx6aT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfZmlyZUV2ZW50V2luZG93U2l6ZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHppPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9maXJlRXZlbnRXaW5kb3dTaXplXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X2ZpcmVFdmVudFdpbmRvd1NpemVfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxBaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfZmlyZUV2ZW50Q29tbWFuZFN0YXJ0XzA9ZnVuY3Rpb24oKXtyZXR1cm4oQWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X2ZpcmVFdmVudENvbW1hbmRTdGFydF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9maXJlRXZlbnRDb21tYW5kU3RhcnRfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LEJpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9JbnRlbGxpU2VsZWN0X1BvaW50U2VsZWN0XzI9ZnVuY3Rpb24oKXtyZXR1cm4oQmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0ludGVsbGlTZWxlY3RfUG9pbnRTZWxlY3RfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfSW50ZWxsaVNlbGVjdF9Qb2ludFNlbGVjdF8yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LENpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9JbnRlbGxpU2VsZWN0X2dldEdyaWREYXRhXzE9ZnVuY3Rpb24oKXtyZXR1cm4oQ2k9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0ludGVsbGlTZWxlY3RfZ2V0R3JpZERhdGFfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfSW50ZWxsaVNlbGVjdF9nZXRHcmlkRGF0YV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9FbnRpdHlUZW1wV29yZERyYXdfb25KaWdDb21tYW5kRW5kXzA9DQpmdW5jdGlvbigpe3JldHVybihEaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRW50aXR5VGVtcFdvcmREcmF3X29uSmlnQ29tbWFuZEVuZF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9FbnRpdHlUZW1wV29yZERyYXdfb25KaWdDb21tYW5kRW5kXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0VudGl0eVRlbXBXb3JkRHJhd19vbkppZ0RyYXdFbnRpdHlEaXNwbGF5XzE9ZnVuY3Rpb24oKXtyZXR1cm4oRWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0VudGl0eVRlbXBXb3JkRHJhd19vbkppZ0RyYXdFbnRpdHlEaXNwbGF5XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0VudGl0eVRlbXBXb3JkRHJhd19vbkppZ0RyYXdFbnRpdHlEaXNwbGF5XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0VudGl0eVRlbXBXb3JkRHJhd19vblJlYWR5SmlnVXBkYXRlRGlzcGxhXzA9DQpmdW5jdGlvbigpe3JldHVybihGaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRW50aXR5VGVtcFdvcmREcmF3X29uUmVhZHlKaWdVcGRhdGVEaXNwbGFfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRW50aXR5VGVtcFdvcmREcmF3X29uUmVhZHlKaWdVcGRhdGVEaXNwbGFfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRW50aXR5VGVtcFdvcmREcmF3X29uSmlnQ2xlYXJEaXNwbGF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oR2k9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0VudGl0eVRlbXBXb3JkRHJhd19vbkppZ0NsZWFyRGlzcGxheV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9FbnRpdHlUZW1wV29yZERyYXdfb25KaWdDbGVhckRpc3BsYXlfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0NvbG9yXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSGk9DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0NvbG9yXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdDb2xvcl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREcmF3Q29sb3JfMD1mdW5jdGlvbigpe3JldHVybihJaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0NvbG9yXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdDb2xvcl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEppPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGRMYXllcl8xPWZ1bmN0aW9uKCl7cmV0dXJuKEppPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGRMYXllcl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGRMYXllcl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEtpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXREcmF3TGF5ZXJfMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKEtpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXREcmF3TGF5ZXJfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xheWVyXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMYXllcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKExpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREcmF3TGF5ZXJfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xheWVyXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0FkZFRleHRTdHlsZV80PWZ1bmN0aW9uKCl7cmV0dXJuKE1pPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGRUZXh0U3R5bGVfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfQWRkVGV4dFN0eWxlXzQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdUZXh0U3R5bGVfMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKE5pPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXREcmF3VGV4dFN0eWxlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdUZXh0U3R5bGVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd1RleHRTdHlsZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKE9pPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREcmF3VGV4dFN0eWxlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdUZXh0U3R5bGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfQWRkTGluZXR5cGVfMj1mdW5jdGlvbigpe3JldHVybihQaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfQWRkTGluZXR5cGVfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfQWRkTGluZXR5cGVfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwNClFpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGRMaW5ldHlwZUV4XzM9ZnVuY3Rpb24oKXtyZXR1cm4oUWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0FkZExpbmV0eXBlRXhfMz1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfQWRkTGluZXR5cGVFeF8zKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGREaW1TdHlsZV81PWZ1bmN0aW9uKCl7cmV0dXJuKFJpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGREaW1TdHlsZV81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGREaW1TdHlsZV81KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXREcmF3TGluZXR5cGVfMT1mdW5jdGlvbigpe3JldHVybihTaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xpbmV0eXBlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdMaW5ldHlwZV8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sVGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMaW5ldHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREcmF3TGluZXR5cGVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmV0eXBlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdMaW5lV2VpZ2h0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oVWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdMaW5lV2VpZ2h0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdMaW5lV2VpZ2h0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMaW5lV2VpZ2h0XzA9ZnVuY3Rpb24oKXtyZXR1cm4oVmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMaW5lV2VpZ2h0XzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmVXZWlnaHRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xpbmVUeXBlU2NhbGVfMT1mdW5jdGlvbigpe3JldHVybihXaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xpbmVUeXBlU2NhbGVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xpbmVUeXBlU2NhbGVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmVUeXBlU2NhbGVfMD1mdW5jdGlvbigpe3JldHVybihYaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmVUeXBlU2NhbGVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmVUeXBlU2NhbGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxZaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0RpbVN0eWxlXzE9DQpmdW5jdGlvbigpe3JldHVybihZaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0RpbVN0eWxlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdEaW1TdHlsZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFppPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREcmF3RGltU3R5bGVfMD1mdW5jdGlvbigpe3JldHVybihaaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0RpbVN0eWxlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdEaW1TdHlsZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRQYXR0ZXJuRGVmaW5pdGlvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKCRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRQYXR0ZXJuRGVmaW5pdGlvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRQYXR0ZXJuRGVmaW5pdGlvbl8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sYWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldFBhdHRlcm5EZWZpbml0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oYWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldFBhdHRlcm5EZWZpbml0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldFBhdHRlcm5EZWZpbml0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdMaW5lV2lkdGhfMT1mdW5jdGlvbigpe3JldHVybihiaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xpbmVXaWR0aF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXREcmF3TGluZVdpZHRoXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMaW5lV2lkdGhfMD1mdW5jdGlvbigpe3JldHVybihjaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmVXaWR0aF8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMaW5lV2lkdGhfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0xpbmVfNj1mdW5jdGlvbigpe3JldHVybihkaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0xpbmVfNj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0xpbmVfNikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0FyY181PWZ1bmN0aW9uKCl7cmV0dXJuKGVqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3QXJjXzU9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdBcmNfNSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0FyYzJfNj1mdW5jdGlvbigpe3JldHVybihmaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0FyYzJfNj0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3QXJjMl82KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGdqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3Q2lyY2xlXzM9ZnVuY3Rpb24oKXtyZXR1cm4oZ2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdDaXJjbGVfMz1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0NpcmNsZV8zKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RWxsaXBzZV81PWZ1bmN0aW9uKCl7cmV0dXJuKGhqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RWxsaXBzZV81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RWxsaXBzZV81KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGlqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RWxsaXBzZUFyY183PWZ1bmN0aW9uKCl7cmV0dXJuKGlqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RWxsaXBzZUFyY183PQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdFbGxpcHNlQXJjXzcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdQb2ludF8yPWZ1bmN0aW9uKCl7cmV0dXJuKGpqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3UG9pbnRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1BvaW50XzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdTb2xpZF84PWZ1bmN0aW9uKCl7cmV0dXJuKGtqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3U29saWRfOD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1NvbGlkXzgpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdNVGV4dF83PWZ1bmN0aW9uKCl7cmV0dXJuKGxqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3TVRleHRfNz0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3TVRleHRfNykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1RleHRfNz1mdW5jdGlvbigpe3JldHVybihtaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1RleHRfNz1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1RleHRfNykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxuaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0Jsb2NrUmVmZXJlbmNlXzU9ZnVuY3Rpb24oKXtyZXR1cm4obmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdCbG9ja1JlZmVyZW5jZV81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3QmxvY2tSZWZlcmVuY2VfNSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0RpbUFsaWduZWRfNj1mdW5jdGlvbigpe3JldHVybihvaj0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltQWxpZ25lZF82PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltQWxpZ25lZF82KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltQW5ndWxhcl84PWZ1bmN0aW9uKCl7cmV0dXJuKHBqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltQW5ndWxhcl84PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltQW5ndWxhcl84KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltRGlhbWV0cmljXzU9ZnVuY3Rpb24oKXtyZXR1cm4ocWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdEaW1EaWFtZXRyaWNfNT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0RpbURpYW1ldHJpY181KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltUm90YXRlZF83PQ0KZnVuY3Rpb24oKXtyZXR1cm4ocmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdEaW1Sb3RhdGVkXzc9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdEaW1Sb3RhdGVkXzcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdEaW1PcmRpbmF0ZV81PWZ1bmN0aW9uKCl7cmV0dXJuKHNqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltT3JkaW5hdGVfNT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0RpbU9yZGluYXRlXzUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdEaW1SYWRpYWxfNT1mdW5jdGlvbigpe3JldHVybih0aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0RpbVJhZGlhbF81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltUmFkaWFsXzUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sDQp1aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfUGF0aE1vdmVUb18yPWZ1bmN0aW9uKCl7cmV0dXJuKHVqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9QYXRoTW92ZVRvXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhNb3ZlVG9fMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfUGF0aE1vdmVUb0V4XzU9ZnVuY3Rpb24oKXtyZXR1cm4odmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhNb3ZlVG9FeF81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9QYXRoTW92ZVRvRXhfNSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfUGF0aExpbmVUb18yPWZ1bmN0aW9uKCl7cmV0dXJuKHdqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9QYXRoTGluZVRvXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhMaW5lVG9fMikuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHhqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9QYXRoTGluZVRvRXhfNT1mdW5jdGlvbigpe3JldHVybih4aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfUGF0aExpbmVUb0V4XzU9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhMaW5lVG9FeF81KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHlqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3UGF0aFRvUG9seWxpbmVfMD1mdW5jdGlvbigpe3JldHVybih5aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1BhdGhUb1BvbHlsaW5lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdQYXRoVG9Qb2x5bGluZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHpqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3UGF0aFRvU3BsaW5lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oemo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdQYXRoVG9TcGxpbmVfMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3UGF0aFRvU3BsaW5lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhNYWtlQ2xvc2VkXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhNYWtlQ2xvc2VkXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhNYWtlQ2xvc2VkXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdQYXRoVG9IYXRjaF8xPWZ1bmN0aW9uKCl7cmV0dXJuKEJqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3UGF0aFRvSGF0Y2hfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1BhdGhUb0hhdGNoXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdFbnRpdHlfMT1mdW5jdGlvbigpe3JldHVybihDaj0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RW50aXR5XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdFbnRpdHlfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxEaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfTWNBcHBfMD1mdW5jdGlvbigpe3JldHVybihEaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfTWNBcHBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNBcHBfTWNBcHBfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfSW5pdF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEVqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9Jbml0XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jQXBwX0luaXRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfQ3JlYXRlTXhEcmF3XzU9ZnVuY3Rpb24oKXtyZXR1cm4oRmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX0NyZWF0ZU14RHJhd181PQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01jQXBwX0NyZWF0ZU14RHJhd181KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9HZXRDdXJyZW50TXhEcmF3XzA9ZnVuY3Rpb24oKXtyZXR1cm4oR2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX0dldEN1cnJlbnRNeERyYXdfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNBcHBfR2V0Q3VycmVudE14RHJhd18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9EZXN0cm95T2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oSGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX0Rlc3Ryb3lPYmplY3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNBcHBfRGVzdHJveU9iamVjdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9tY2VkUkdCMkluZGV4XzQ9ZnVuY3Rpb24oKXtyZXR1cm4oSWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX21jZWRSR0IySW5kZXhfND0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0FwcF9tY2VkUkdCMkluZGV4XzQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9PYmplY3ROYW1lXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9PYmplY3ROYW1lXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9PYmplY3ROYW1lXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9NZERiTGluZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKEtqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9PYmplY3RJZFRvTWREYkxpbmVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNBcHBfT2JqZWN0SWRUb01kRGJMaW5lXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9NZERiVGV4dF8xPQ0KZnVuY3Rpb24oKXtyZXR1cm4oTGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9NZERiVGV4dF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0FwcF9PYmplY3RJZFRvTWREYlRleHRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfT2JqZWN0SWRUb01kT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oTWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9NZE9iamVjdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0FwcF9PYmplY3RJZFRvTWRPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfZ2V0TGFzdENhbGxSZXN1bHRfMD1mdW5jdGlvbigpe3JldHVybihOaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfZ2V0TGFzdENhbGxSZXN1bHRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNBcHBfZ2V0TGFzdENhbGxSZXN1bHRfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LE9qPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKE9qPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0FwcF9fX2Rlc3Ryb3lfX18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfTWNEcmF3UmVzYnVmXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9NY0RyYXdSZXNidWZfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX01jRHJhd1Jlc2J1Zl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQ2xlYXJfMD1mdW5jdGlvbigpe3JldHVybihRaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0NsZWFyXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9DbGVhcl8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sUmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9HZXRDb3VudF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfR2V0Q291bnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0dldENvdW50XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BdERvdWJsZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFNqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQXREb3VibGVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0RG91YmxlXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BdGxvbmdfMT1mdW5jdGlvbigpe3JldHVybihUaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0bG9uZ18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQXRsb25nXzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxVaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0T2JqZWN0SWRfMT1mdW5jdGlvbigpe3JldHVybihVaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0T2JqZWN0SWRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0T2JqZWN0SWRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0U3RyaW5nXzE9ZnVuY3Rpb24oKXtyZXR1cm4oVmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BdFN0cmluZ18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQXRTdHJpbmdfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0UG9pbnRfMT1mdW5jdGlvbigpe3JldHVybihXaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0UG9pbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0UG9pbnRfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFhqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfSXRlbURhdGFUeXBlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oWGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9JdGVtRGF0YVR5cGVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0l0ZW1EYXRhVHlwZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFlqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkRG91YmxlXzI9ZnVuY3Rpb24oKXtyZXR1cm4oWWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BZGREb3VibGVfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0FkZERvdWJsZV8yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFpqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkbG9uZ18yPWZ1bmN0aW9uKCl7cmV0dXJuKFpqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkbG9uZ18yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkbG9uZ18yKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sYWs9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BZGRPYmplY3RJZF8yPWZ1bmN0aW9uKCl7cmV0dXJuKGFrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkT2JqZWN0SWRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0FkZE9iamVjdElkXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYms9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BZGRTdHJpbmdfMj1mdW5jdGlvbigpe3JldHVybihiaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0FkZFN0cmluZ18yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkU3RyaW5nXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2s9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BZGRQb2ludF8yPWZ1bmN0aW9uKCl7cmV0dXJuKGNrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkUG9pbnRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0FkZFBvaW50XzIpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxkaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX1JlbW92ZUFsbF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGRrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfUmVtb3ZlQWxsXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9SZW1vdmVBbGxfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX1JlbW92ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKGVrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfUmVtb3ZlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9SZW1vdmVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihmaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX2dldE9iamVjdE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGdrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGdrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKGhrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGlrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGlrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfc2V0SnNvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfc2V0SnNvbl8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sams9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKGprPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX19fZGVzdHJveV9fXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2s9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1V0aWxpdHlfTWNEcmF3VXRpbGl0eV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGtrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdVdGlsaXR5X01jRHJhd1V0aWxpdHlfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9NY0RyYXdVdGlsaXR5XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbGs9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1V0aWxpdHlfZmluZEVudEF0UG9pbnRfNT1mdW5jdGlvbigpe3JldHVybihsaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9maW5kRW50QXRQb2ludF81PQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01jRHJhd1V0aWxpdHlfZmluZEVudEF0UG9pbnRfNSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9lcmFzZUVudGl0eV8xPWZ1bmN0aW9uKCl7cmV0dXJuKG1rPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdVdGlsaXR5X2VyYXNlRW50aXR5XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jRHJhd1V0aWxpdHlfZXJhc2VFbnRpdHlfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxuaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9oaWdobGlnaHRFbnRpdHlfMj1mdW5jdGlvbigpe3JldHVybihuaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9oaWdobGlnaHRFbnRpdHlfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9oaWdobGlnaHRFbnRpdHlfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9fX2Rlc3Ryb3lfX18wPQ0KZnVuY3Rpb24oKXtyZXR1cm4ob2s9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1V0aWxpdHlfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9fX2Rlc3Ryb3lfX18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9NZERiTGluZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHBrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9NZERiTGluZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9NZERiTGluZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9zdGFydFBvaW50XzA9ZnVuY3Rpb24oKXtyZXR1cm4ocWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX3N0YXJ0UG9pbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfc3RhcnRQb2ludF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9zZXRTdGFydFBvaW50XzE9DQpmdW5jdGlvbigpe3JldHVybihyaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfc2V0U3RhcnRQb2ludF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9zZXRTdGFydFBvaW50XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2VuZFBvaW50XzA9ZnVuY3Rpb24oKXtyZXR1cm4oc2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2VuZFBvaW50XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2VuZFBvaW50XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX3NldEVuZFBvaW50XzE9ZnVuY3Rpb24oKXtyZXR1cm4odGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX3NldEVuZFBvaW50XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX3NldEVuZFBvaW50XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldFN0YXJ0UGFyYW1fMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKHVrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRTdGFydFBhcmFtXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldFN0YXJ0UGFyYW1fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2az1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RW5kUGFyYW1fMD1mdW5jdGlvbigpe3JldHVybih2az1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RW5kUGFyYW1fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RW5kUGFyYW1fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3az1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RGlzdEF0UGFyYW1fMT1mdW5jdGlvbigpe3JldHVybih3az1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RGlzdEF0UGFyYW1fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RGlzdEF0UGFyYW1fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4az0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQYXJhbUF0RGlzdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHhrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQYXJhbUF0RGlzdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQYXJhbUF0RGlzdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHlrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXREaXN0QXRQb2ludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHlrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXREaXN0QXRQb2ludF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXREaXN0QXRQb2ludF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHprPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQb2ludEF0RGlzdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHprPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQb2ludEF0RGlzdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQb2ludEF0RGlzdF8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sQWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldE9iamVjdElEXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldE9iamVjdElEXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQms9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0VyYXNlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQms9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0VyYXNlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oQ2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxEaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfQ2xvbmVfMD1mdW5jdGlvbigpe3JldHVybihEaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfQ2xvbmVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfbW92ZUdyaXBQb2ludHNBdF80PWZ1bmN0aW9uKCl7cmV0dXJuKEVrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9tb3ZlR3JpcFBvaW50c0F0XzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEZrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LEdrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXREeGYwXzA9ZnVuY3Rpb24oKXtyZXR1cm4oR2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldER4ZjBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRKc29uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfc2V0SnNvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LA0KSms9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSms9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX19fZGVzdHJveV9fXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX19fZGVzdHJveV9fXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X01kRGJUZXh0XzA9ZnVuY3Rpb24oKXtyZXR1cm4oS2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X01kRGJUZXh0XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X01kRGJUZXh0XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3Bvc2l0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3Bvc2l0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3Bvc2l0aW9uXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxNaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0UG9zaXRpb25fMT1mdW5jdGlvbigpe3JldHVybihNaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0UG9zaXRpb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0UG9zaXRpb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfYWxpZ25tZW50UG9pbnRfMD1mdW5jdGlvbigpe3JldHVybihOaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfYWxpZ25tZW50UG9pbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfYWxpZ25tZW50UG9pbnRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0QWxpZ25tZW50UG9pbnRfMT1mdW5jdGlvbigpe3JldHVybihPaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0QWxpZ25tZW50UG9pbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0QWxpZ25tZW50UG9pbnRfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFBrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9vYmxpcXVlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X29ibGlxdWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfb2JsaXF1ZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRPYmxpcXVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oUWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldE9ibGlxdWVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0T2JsaXF1ZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9yb3RhdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9yb3RhdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9yb3RhdGlvbl8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sU2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldFJvdGF0aW9uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oU2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldFJvdGF0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldFJvdGF0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X2hlaWdodF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFRrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9oZWlnaHRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfaGVpZ2h0XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldEhlaWdodF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFVrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRIZWlnaHRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0SGVpZ2h0XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxWaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfd2lkdGhGYWN0b3JfMD1mdW5jdGlvbigpe3JldHVybihWaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfd2lkdGhGYWN0b3JfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfd2lkdGhGYWN0b3JfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0V2lkdGhGYWN0b3JfMT1mdW5jdGlvbigpe3JldHVybihXaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0V2lkdGhGYWN0b3JfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0V2lkdGhGYWN0b3JfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfdGV4dFN0cmluZ18wPWZ1bmN0aW9uKCl7cmV0dXJuKFhrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF90ZXh0U3RyaW5nXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3RleHRTdHJpbmdfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFlrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRUZXh0U3RyaW5nXzE9ZnVuY3Rpb24oKXtyZXR1cm4oWWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldFRleHRTdHJpbmdfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0VGV4dFN0cmluZ18xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFprPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9ob3Jpem9udGFsTW9kZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFprPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9ob3Jpem9udGFsTW9kZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9ob3Jpem9udGFsTW9kZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRIb3Jpem9udGFsTW9kZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKCRrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRIb3Jpem9udGFsTW9kZV8xPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldEhvcml6b250YWxNb2RlXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3ZlcnRpY2FsTW9kZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGFsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF92ZXJ0aWNhbE1vZGVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfdmVydGljYWxNb2RlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldFZlcnRpY2FsTW9kZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKGJsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRWZXJ0aWNhbE1vZGVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0VmVydGljYWxNb2RlXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X2dldE9iamVjdElEXzA9ZnVuY3Rpb24oKXtyZXR1cm4oY2w9DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfZ2V0T2JqZWN0SURfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfRXJhc2VfMD1mdW5jdGlvbigpe3JldHVybihkbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfRXJhc2VfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfQ29ubmVjdGlvblRlbXBPYmplY3RfMT1mdW5jdGlvbigpe3JldHVybihlbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfQ29ubmVjdGlvblRlbXBPYmplY3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfQ2xvbmVfMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKGZsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9DbG9uZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGdsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9tb3ZlR3JpcFBvaW50c0F0XzQ9ZnVuY3Rpb24oKXtyZXR1cm4oZ2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9nZXRPYmplY3ROYW1lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X2dldE9iamVjdE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGlsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9nZXREeGYwXzA9DQpmdW5jdGlvbigpe3JldHVybihpbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9nZXREeGYwXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X2dldEpzb25fMD1mdW5jdGlvbigpe3JldHVybihqbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldEpzb25fMT1mdW5jdGlvbigpe3JldHVybihrbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0SnNvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4obGw9DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9NZERiQ2lyY2xlXzA9ZnVuY3Rpb24oKXtyZXR1cm4obWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfTWREYkNpcmNsZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX01kRGJDaXJjbGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxubD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9jZW50ZXJfMD1mdW5jdGlvbigpe3JldHVybihubD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9jZW50ZXJfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9jZW50ZXJfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9zZXRDZW50ZXJfMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKG9sPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3NldENlbnRlcl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3NldENlbnRlcl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3JhZGl1c18wPWZ1bmN0aW9uKCl7cmV0dXJuKHBsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3JhZGl1c18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3JhZGl1c18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3NldFJhZGl1c18xPWZ1bmN0aW9uKCl7cmV0dXJuKHFsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3NldFJhZGl1c18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3NldFJhZGl1c18xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldFN0YXJ0UGFyYW1fMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKHJsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldFN0YXJ0UGFyYW1fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRTdGFydFBhcmFtXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0RW5kUGFyYW1fMD1mdW5jdGlvbigpe3JldHVybihzbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRFbmRQYXJhbV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldEVuZFBhcmFtXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0RGlzdEF0UGFyYW1fMT1mdW5jdGlvbigpe3JldHVybih0bD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXREaXN0QXRQYXJhbV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldERpc3RBdFBhcmFtXzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSx1bD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRQYXJhbUF0RGlzdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHVsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldFBhcmFtQXREaXN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0UGFyYW1BdERpc3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2bD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXREaXN0QXRQb2ludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHZsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldERpc3RBdFBvaW50XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0RGlzdEF0UG9pbnRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3bD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRQb2ludEF0RGlzdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHdsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldFBvaW50QXREaXN0XzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRQb2ludEF0RGlzdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldE9iamVjdElEXzA9ZnVuY3Rpb24oKXtyZXR1cm4oeGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRPYmplY3RJRF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHlsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX0VyYXNlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oeWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9FcmFzZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHpsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oemw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfQ29ubmVjdGlvblRlbXBPYmplY3RfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfQ2xvbmVfMD1mdW5jdGlvbigpe3JldHVybihBbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX0Nsb25lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfbW92ZUdyaXBQb2ludHNBdF80PWZ1bmN0aW9uKCl7cmV0dXJuKEJsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9tb3ZlR3JpcFBvaW50c0F0XzQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKENsPQ0Kbi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxEbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXREeGYwXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldER4ZjBfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRKc29uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldEpzb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9zZXRKc29uXzE9DQpmdW5jdGlvbigpe3JldHVybihGbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfc2V0SnNvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oR2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9fX2Rlc3Ryb3lfX18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfTWREYlBvbHlsaW5lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9NZERiUG9seWxpbmVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX01kRGJQb2x5bGluZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LA0KSWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9zZXRDbG9zZWRfMT1mdW5jdGlvbigpe3JldHVybihJbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldENsb3NlZF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfc2V0Q2xvc2VkXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9zZXRDb25zdGFudFdpZHRoXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9zZXRDb25zdGFudFdpZHRoXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9zZXRDb25zdGFudFdpZHRoXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9pc0Nsb3NlZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEtsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfaXNDbG9zZWRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2lzQ2xvc2VkXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxMbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldENvbnN0YW50V2lkdGhfMD1mdW5jdGlvbigpe3JldHVybihMbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldENvbnN0YW50V2lkdGhfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldENvbnN0YW50V2lkdGhfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2FkZFZlcnRleEF0XzU9ZnVuY3Rpb24oKXtyZXR1cm4oTWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9hZGRWZXJ0ZXhBdF81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfYWRkVmVydGV4QXRfNSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxObD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3JlbW92ZVZlcnRleEF0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oTmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9yZW1vdmVWZXJ0ZXhBdF8xPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9yZW1vdmVWZXJ0ZXhBdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9sPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfbnVtVmVydHNfMD1mdW5jdGlvbigpe3JldHVybihPbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX251bVZlcnRzXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9udW1WZXJ0c18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UG9pbnRBdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFBsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UG9pbnRBdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UG9pbnRBdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0QnVsZ2VBdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFFsPQ0Kbi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRCdWxnZUF0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRCdWxnZUF0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRTdGFydFdpZHRoc0F0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oUmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRTdGFydFdpZHRoc0F0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRTdGFydFdpZHRoc0F0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRFbmRXaWR0aHNBdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFNsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0RW5kV2lkdGhzQXRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldEVuZFdpZHRoc0F0XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxUbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldFBvaW50QXRfMj1mdW5jdGlvbigpe3JldHVybihUbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldFBvaW50QXRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldFBvaW50QXRfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEJ1bGdlQXRfMj1mdW5jdGlvbigpe3JldHVybihVbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEJ1bGdlQXRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEJ1bGdlQXRfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldFN0YXJ0UGFyYW1fMD1mdW5jdGlvbigpe3JldHVybihWbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldFN0YXJ0UGFyYW1fMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0U3RhcnRQYXJhbV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFdsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0RW5kUGFyYW1fMD1mdW5jdGlvbigpe3JldHVybihXbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldEVuZFBhcmFtXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRFbmRQYXJhbV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0RGlzdEF0UGFyYW1fMT1mdW5jdGlvbigpe3JldHVybihYbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldERpc3RBdFBhcmFtXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXREaXN0QXRQYXJhbV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFlsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UGFyYW1BdERpc3RfMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKFlsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UGFyYW1BdERpc3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldFBhcmFtQXREaXN0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXREaXN0QXRQb2ludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFpsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0RGlzdEF0UG9pbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldERpc3RBdFBvaW50XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRQb2ludEF0RGlzdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKCRsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UG9pbnRBdERpc3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldFBvaW50QXREaXN0XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxhbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldE9iamVjdElEXzA9ZnVuY3Rpb24oKXtyZXR1cm4oYW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRPYmplY3RJRF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0T2JqZWN0SURfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxibT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX0VyYXNlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oYm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9FcmFzZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfRXJhc2VfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oY209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGRtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfQ2xvbmVfMD1mdW5jdGlvbigpe3JldHVybihkbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX0Nsb25lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9DbG9uZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfbW92ZUdyaXBQb2ludHNBdF80PWZ1bmN0aW9uKCl7cmV0dXJuKGVtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfbW92ZUdyaXBQb2ludHNBdF80PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGZtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0T2JqZWN0TmFtZV8wPQ0KZnVuY3Rpb24oKXtyZXR1cm4oZm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRPYmplY3ROYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXREeGYwXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZ209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXREeGYwXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRKc29uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRKc29uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saW09DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEpzb25fMT1mdW5jdGlvbigpe3JldHVybihpbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEpzb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oam09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxrbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX01kRGJCbG9ja1JlZmVyZW5jZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGttPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfTWREYkJsb2NrUmVmZXJlbmNlXzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX01kRGJCbG9ja1JlZmVyZW5jZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfYmxvY2tUYWJsZVJlY29yZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGxtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfYmxvY2tUYWJsZVJlY29yZF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfYmxvY2tUYWJsZVJlY29yZF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0QmxvY2tUYWJsZVJlY29yZF8xPWZ1bmN0aW9uKCl7cmV0dXJuKG1tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0QmxvY2tUYWJsZVJlY29yZF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0QmxvY2tUYWJsZVJlY29yZF8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sbm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9wb3NpdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKG5tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfcG9zaXRpb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3Bvc2l0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRQb3NpdGlvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKG9tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0UG9zaXRpb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldFBvc2l0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zY2FsZUZhY3RvcnNfMD1mdW5jdGlvbigpe3JldHVybihwbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NjYWxlRmFjdG9yc18wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zY2FsZUZhY3RvcnNfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldFNjYWxlRmFjdG9yc18xPWZ1bmN0aW9uKCl7cmV0dXJuKHFtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0U2NhbGVGYWN0b3JzXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRTY2FsZUZhY3RvcnNfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxybT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3JvdGF0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9yb3RhdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfcm90YXRpb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldFJvdGF0aW9uXzE9DQpmdW5jdGlvbigpe3JldHVybihzbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldFJvdGF0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRSb3RhdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfYmxvY2tUcmFuc2Zvcm1fMD1mdW5jdGlvbigpe3JldHVybih0bT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX2Jsb2NrVHJhbnNmb3JtXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9ibG9ja1RyYW5zZm9ybV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHVtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0QmxvY2tUcmFuc2Zvcm1fMT1mdW5jdGlvbigpe3JldHVybih1bT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldEJsb2NrVHJhbnNmb3JtXzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldEJsb2NrVHJhbnNmb3JtXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHdtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHhtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPQ0KZnVuY3Rpb24oKXtyZXR1cm4oeW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx6bT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX0Nsb25lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oem09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxBbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihBbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LEJtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEJtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LENtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKENtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKERtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0SnNvbl8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oRW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKEZtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX19fZGVzdHJveV9fXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sR209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX01kRGJBbGlnbmVkRGltZW5zaW9uXzA9DQpmdW5jdGlvbigpe3JldHVybihHbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fTWREYkFsaWduZWREaW1lbnNpb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fTWREYkFsaWduZWREaW1lbnNpb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25feExpbmUxUG9pbnRfMD1mdW5jdGlvbigpe3JldHVybihIbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25feExpbmUxUG9pbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25feExpbmUxUG9pbnRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0WExpbmUxUG9pbnRfMT1mdW5jdGlvbigpe3JldHVybihJbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0WExpbmUxUG9pbnRfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRYTGluZTFQb2ludF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEptPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl94TGluZTJQb2ludF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEptPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl94TGluZTJQb2ludF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl94TGluZTJQb2ludF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEttPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRYTGluZTJQb2ludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKEttPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRYTGluZTJQb2ludF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRYTGluZTJQb2ludF8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sTG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2RpbUxpbmVQb2ludF8wPWZ1bmN0aW9uKCl7cmV0dXJuKExtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9kaW1MaW5lUG9pbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZGltTGluZVBvaW50XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldERpbUxpbmVQb2ludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKE1tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXREaW1MaW5lUG9pbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0RGltTGluZVBvaW50XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX29ibGlxdWVfMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKE5tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9vYmxpcXVlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX29ibGlxdWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0T2JsaXF1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKE9tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRPYmxpcXVlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldE9ibGlxdWVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdGV4dFBvc2l0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3RleHRQb3NpdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl90ZXh0UG9zaXRpb25fMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFFtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRUZXh0UG9zaXRpb25fMT1mdW5jdGlvbigpe3JldHVybihRbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0VGV4dFBvc2l0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldFRleHRQb3NpdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9pc1VzaW5nRGVmYXVsdFRleHRQb3NpdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9pc1VzaW5nRGVmYXVsdFRleHRQb3NpdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9pc1VzaW5nRGVmYXVsdFRleHRQb3NpdGlvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl91c2VTZXRUZXh0UG9zaXRpb25fMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKFNtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl91c2VTZXRUZXh0UG9zaXRpb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdXNlU2V0VGV4dFBvc2l0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3VzZURlZmF1bHRUZXh0UG9zaXRpb25fMD1mdW5jdGlvbigpe3JldHVybihUbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdXNlRGVmYXVsdFRleHRQb3NpdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl91c2VEZWZhdWx0VGV4dFBvc2l0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2VsZXZhdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFVtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9lbGV2YXRpb25fMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9lbGV2YXRpb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0RWxldmF0aW9uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oVm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldEVsZXZhdGlvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRFbGV2YXRpb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZGltZW5zaW9uVGV4dF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFdtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9kaW1lbnNpb25UZXh0XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2RpbWVuc2lvblRleHRfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFhtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXREaW1lbnNpb25UZXh0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oWG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldERpbWVuc2lvblRleHRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0RGltZW5zaW9uVGV4dF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFltPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl90ZXh0Um90YXRpb25fMD1mdW5jdGlvbigpe3JldHVybihZbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdGV4dFJvdGF0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3RleHRSb3RhdGlvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFptPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRUZXh0Um90YXRpb25fMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKFptPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRUZXh0Um90YXRpb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0VGV4dFJvdGF0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2RpbWVuc2lvblN0eWxlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oJG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2RpbWVuc2lvblN0eWxlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2RpbWVuc2lvblN0eWxlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYW49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldERpbWVuc2lvblN0eWxlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oYW49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldERpbWVuc2lvblN0eWxlXzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0RGltZW5zaW9uU3R5bGVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxibj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdGV4dEF0dGFjaG1lbnRfMD1mdW5jdGlvbigpe3JldHVybihibj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdGV4dEF0dGFjaG1lbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdGV4dEF0dGFjaG1lbnRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0VGV4dEF0dGFjaG1lbnRfMT1mdW5jdGlvbigpe3JldHVybihjbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0VGV4dEF0dGFjaG1lbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0VGV4dEF0dGFjaG1lbnRfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGRuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9ob3Jpem9udGFsUm90YXRpb25fMD1mdW5jdGlvbigpe3JldHVybihkbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25faG9yaXpvbnRhbFJvdGF0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2hvcml6b250YWxSb3RhdGlvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRIb3Jpem9udGFsUm90YXRpb25fMT1mdW5jdGlvbigpe3JldHVybihlbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0SG9yaXpvbnRhbFJvdGF0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldEhvcml6b250YWxSb3RhdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGZuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9yZWNvbXB1dGVEaW1CbG9ja18xPQ0KZnVuY3Rpb24oKXtyZXR1cm4oZm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3JlY29tcHV0ZURpbUJsb2NrXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3JlY29tcHV0ZURpbUJsb2NrXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX0dldERpbVZhckludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGduPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9HZXREaW1WYXJJbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fR2V0RGltVmFySW50XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhckludF8yPWZ1bmN0aW9uKCl7cmV0dXJuKGhuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9TZXREaW1WYXJJbnRfMj0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9TZXREaW1WYXJJbnRfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fR2V0RGltVmFyRG91YmxlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oam49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX0dldERpbVZhckRvdWJsZV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9HZXREaW1WYXJEb3VibGVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxrbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fU2V0RGltVmFyRG91YmxlXzI9ZnVuY3Rpb24oKXtyZXR1cm4oa249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhckRvdWJsZV8yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9TZXREaW1WYXJEb3VibGVfMikuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGxuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9HZXREaW1WYXJTdHJpbmdfMT1mdW5jdGlvbigpe3JldHVybihsbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fR2V0RGltVmFyU3RyaW5nXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX0dldERpbVZhclN0cmluZ18xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1uPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9TZXREaW1WYXJTdHJpbmdfMj1mdW5jdGlvbigpe3JldHVybihtbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fU2V0RGltVmFyU3RyaW5nXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhclN0cmluZ18yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5uPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9HZXREaW1WYXJPYmplY3RJZF8xPQ0KZnVuY3Rpb24oKXtyZXR1cm4obm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX0dldERpbVZhck9iamVjdElkXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX0dldERpbVZhck9iamVjdElkXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhck9iamVjdElkXzI9ZnVuY3Rpb24oKXtyZXR1cm4ob249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhck9iamVjdElkXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhck9iamVjdElkXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2dldE9iamVjdElEXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2dldE9iamVjdElEXzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZ2V0T2JqZWN0SURfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fRXJhc2VfMD1mdW5jdGlvbigpe3JldHVybihxbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fRXJhc2VfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxybj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fQ29ubmVjdGlvblRlbXBPYmplY3RfMT1mdW5jdGlvbigpe3JldHVybihybj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fQ29ubmVjdGlvblRlbXBPYmplY3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHNuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9DbG9uZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHNuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9DbG9uZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9tb3ZlR3JpcFBvaW50c0F0XzQ9ZnVuY3Rpb24oKXtyZXR1cm4odG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHVuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9nZXRPYmplY3ROYW1lXzA9ZnVuY3Rpb24oKXtyZXR1cm4odW49DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9nZXRPYmplY3ROYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybih2bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9nZXREeGYwXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2dldEpzb25fMD1mdW5jdGlvbigpe3JldHVybih3bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9nZXRKc29uXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSx4bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKHhuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldEpzb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx5bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih5bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx6bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X01kRGJNVGV4dF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHpuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfTWREYk1UZXh0XzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X01kRGJNVGV4dF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfbG9jYXRpb25fMD1mdW5jdGlvbigpe3JldHVybihBbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2xvY2F0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9sb2NhdGlvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0TG9jYXRpb25fMT1mdW5jdGlvbigpe3JldHVybihCbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldExvY2F0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9zZXRMb2NhdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LENuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfcm90YXRpb25fMD1mdW5jdGlvbigpe3JldHVybihDbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3JvdGF0aW9uXzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3JvdGF0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9zZXRSb3RhdGlvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKERuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0Um90YXRpb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldFJvdGF0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRW49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF93aWR0aF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEVuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfd2lkdGhfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3dpZHRoXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9zZXRXaWR0aF8xPWZ1bmN0aW9uKCl7cmV0dXJuKEZuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0V2lkdGhfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0V2lkdGhfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3RleHRIZWlnaHRfMD1mdW5jdGlvbigpe3JldHVybihHbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3RleHRIZWlnaHRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3RleHRIZWlnaHRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldFRleHRIZWlnaHRfMT1mdW5jdGlvbigpe3JldHVybihIbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldFRleHRIZWlnaHRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldFRleHRIZWlnaHRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2F0dGFjaG1lbnRfMD1mdW5jdGlvbigpe3JldHVybihJbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2F0dGFjaG1lbnRfMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfYXR0YWNobWVudF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEpuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0QXR0YWNobWVudF8xPWZ1bmN0aW9uKCl7cmV0dXJuKEpuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0QXR0YWNobWVudF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0QXR0YWNobWVudF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEtuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfY29udGVudHNfMD1mdW5jdGlvbigpe3JldHVybihLbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2NvbnRlbnRzXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9jb250ZW50c18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0Q29udGVudHNfMT1mdW5jdGlvbigpe3JldHVybihMbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldENvbnRlbnRzXzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldENvbnRlbnRzXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTW49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1uPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKE5uPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sT249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKE9uPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfQ29ubmVjdGlvblRlbXBPYmplY3RfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X0Nsb25lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihRbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxSbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihSbj0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFNuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFRuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFRuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFVuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKFVuPQ0Kbi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFZuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X19fZGVzdHJveV9fXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGQ9bi5fbWFsbG9jPWZ1bmN0aW9uKCl7cmV0dXJuKHRkPW4uX21hbGxvYz1uLmFzbS5tYWxsb2MpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd2Q9bi5fZnJlZT1mdW5jdGlvbigpe3JldHVybih3ZD1uLl9mcmVlPW4uYXNtLmZyZWUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07DQpmdW5jdGlvbiBTYygpe3JldHVybihTYz1uLmFzbS5fX2Vycm5vX2xvY2F0aW9uKS5hcHBseShudWxsLGFyZ3VtZW50cyl9bi5fX2Vtc2NyaXB0ZW5fdGxzX2luaXQ9ZnVuY3Rpb24oKXtyZXR1cm4obi5fX2Vtc2NyaXB0ZW5fdGxzX2luaXQ9bi5hc20uX2Vtc2NyaXB0ZW5fdGxzX2luaXQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIEljPW4uX3B0aHJlYWRfc2VsZj1mdW5jdGlvbigpe3JldHVybihJYz1uLl9wdGhyZWFkX3NlbGY9bi5hc20ucHRocmVhZF9zZWxmKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRlPW4uX19lbXNjcmlwdGVuX3RocmVhZF9pbml0PWZ1bmN0aW9uKCl7cmV0dXJuKHRlPW4uX19lbXNjcmlwdGVuX3RocmVhZF9pbml0PW4uYXNtLl9lbXNjcmlwdGVuX3RocmVhZF9pbml0KS5hcHBseShudWxsLGFyZ3VtZW50cyl9Ow0Kbi5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQ9ZnVuY3Rpb24oKXtyZXR1cm4obi5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQ9bi5hc20uX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07ZnVuY3Rpb24gbmQoKXtyZXR1cm4obmQ9bi5hc20uX2Vtc2NyaXB0ZW5fcnVuX2luX21haW5fcnVudGltZV90aHJlYWRfanMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBIYygpe3JldHVybihIYz1uLmFzbS5fZW1zY3JpcHRlbl90aHJlYWRfZnJlZV9kYXRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9DQp2YXIgT2M9bi5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQ9ZnVuY3Rpb24oKXtyZXR1cm4oT2M9bi5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQ9bi5hc20uX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmM9bi5fX2Vtc2NyaXB0ZW5fY2hlY2tfbWFpbGJveD1mdW5jdGlvbigpe3JldHVybihaYz1uLl9fZW1zY3JpcHRlbl9jaGVja19tYWlsYm94PW4uYXNtLl9lbXNjcmlwdGVuX2NoZWNrX21haWxib3gpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07ZnVuY3Rpb24gV24oKXtyZXR1cm4oV249bi5hc20uc2V0VGhyZXcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBLYygpe3JldHVybihLYz1uLmFzbS5lbXNjcmlwdGVuX3N0YWNrX3NldF9saW1pdHMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBsZCgpe3JldHVybihsZD1uLmFzbS5zdGFja1NhdmUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0NCmZ1bmN0aW9uIExjKCl7cmV0dXJuKExjPW4uYXNtLnN0YWNrUmVzdG9yZSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIG1kKCl7cmV0dXJuKG1kPW4uYXNtLnN0YWNrQWxsb2MpLmFwcGx5KG51bGwsYXJndW1lbnRzKX1uLmR5bkNhbGxfaWlqaj1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfaWlqaj1uLmFzbS5keW5DYWxsX2lpamopLmFwcGx5KG51bGwsYXJndW1lbnRzKX07bi5keW5DYWxsX2lpaj1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfaWlqPW4uYXNtLmR5bkNhbGxfaWlqKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O24uZHluQ2FsbF9paWlpaWppPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9paWlpaWppPW4uYXNtLmR5bkNhbGxfaWlpaWlqaSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtuLmR5bkNhbGxfaWlqaT1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfaWlqaT1uLmFzbS5keW5DYWxsX2lpamkpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07DQpuLmR5bkNhbGxfaWlpaWlpamppPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9paWlpaWlqamk9bi5hc20uZHluQ2FsbF9paWlpaWlqamkpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07bi5keW5DYWxsX2ppPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9qaT1uLmFzbS5keW5DYWxsX2ppKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O24uZHluQ2FsbF92aWo9ZnVuY3Rpb24oKXtyZXR1cm4obi5keW5DYWxsX3Zpaj1uLmFzbS5keW5DYWxsX3ZpaikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtuLmR5bkNhbGxfaWlpaj1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfaWlpaj1uLmFzbS5keW5DYWxsX2lpaWopLmFwcGx5KG51bGwsYXJndW1lbnRzKX07bi5keW5DYWxsX2lpaWlpaj1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfaWlpaWlqPW4uYXNtLmR5bkNhbGxfaWlpaWlqKS5hcHBseShudWxsLGFyZ3VtZW50cyl9Ow0Kbi5keW5DYWxsX2lpaWpqaWRkZGRkZGlpPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9paWlqamlkZGRkZGRpaT1uLmFzbS5keW5DYWxsX2lpaWpqaWRkZGRkZGlpKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O24uZHluQ2FsbF9paWlpZGRkZGlpaWlpaWpqaWlpaWlpPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9paWlpZGRkZGlpaWlpaWpqaWlpaWlpPW4uYXNtLmR5bkNhbGxfaWlpaWRkZGRpaWlpaWlqamlpaWlpaSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtuLmR5bkNhbGxfdmlpaj1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfdmlpaj1uLmFzbS5keW5DYWxsX3ZpaWopLmFwcGx5KG51bGwsYXJndW1lbnRzKX07bi5keW5DYWxsX2ppamk9ZnVuY3Rpb24oKXtyZXR1cm4obi5keW5DYWxsX2ppamk9bi5hc20uZHluQ2FsbF9qaWppKS5hcHBseShudWxsLGFyZ3VtZW50cyl9Ow0Kbi5keW5DYWxsX3ZpaWppaT1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfdmlpamlpPW4uYXNtLmR5bkNhbGxfdmlpamlpKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O24uZHluQ2FsbF9paWlpaWpqPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9paWlpaWpqPW4uYXNtLmR5bkNhbGxfaWlpaWlqaikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtuLmR5bkNhbGxfaWlpaWlpamo9ZnVuY3Rpb24oKXtyZXR1cm4obi5keW5DYWxsX2lpaWlpaWpqPW4uYXNtLmR5bkNhbGxfaWlpaWlpamopLmFwcGx5KG51bGwsYXJndW1lbnRzKX07bi5fX19zdGFydF9lbV9qcz0yNTI5OTI7bi5fX19zdG9wX2VtX2pzPTI1MzA5MDtmdW5jdGlvbiB4ZShhLGMsZCl7dmFyIGU9bGQoKTt0cnl7TmMoYSkoYyxkKX1jYXRjaChmKXtMYyhlKTtpZihmIT09ZiswKXRocm93IGY7V24oMSwwKX19DQpmdW5jdGlvbiB3ZShhLGMpe3ZhciBkPWxkKCk7dHJ5e05jKGEpKGMpfWNhdGNoKGUpe0xjKGQpO2lmKGUhPT1lKzApdGhyb3cgZTtXbigxLDApfX1mdW5jdGlvbiB1ZShhLGMpe3ZhciBkPWxkKCk7dHJ5e3JldHVybiBOYyhhKShjKX1jYXRjaChlKXtMYyhkKTtpZihlIT09ZSswKXRocm93IGU7V24oMSwwKX19ZnVuY3Rpb24gdmUoYSxjLGQsZSl7dmFyIGY9bGQoKTt0cnl7cmV0dXJuIE5jKGEpKGMsZCxlKX1jYXRjaChnKXtMYyhmKTtpZihnIT09ZyswKXRocm93IGc7V24oMSwwKX19bi5rZWVwUnVudGltZUFsaXZlPVlhO24ud2FzbU1lbW9yeT1jYTtuLkV4aXRTdGF0dXM9QWI7bi5QVGhyZWFkPXc7dmFyIFhuO2piPWZ1bmN0aW9uIFluKCl7WG58fFpuKCk7WG58fChqYj1Zbil9Ow0KZnVuY3Rpb24gWm4oKXtmdW5jdGlvbiBhKCl7aWYoIVhuJiYoWG49ITAsbi5jYWxsZWRSdW49ITAsIVBhKSl7WmEoKTtzYShuKTtpZihuLm9uUnVudGltZUluaXRpYWxpemVkKW4ub25SdW50aW1lSW5pdGlhbGl6ZWQoKTtpZighcSl7aWYobi5wb3N0UnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2Ygbi5wb3N0UnVuJiYobi5wb3N0UnVuPVtuLnBvc3RSdW5dKTtuLnBvc3RSdW4ubGVuZ3RoOyl7dmFyIGM9bi5wb3N0UnVuLnNoaWZ0KCk7V2EudW5zaGlmdChjKX1mYihXYSl9fX1pZighKDA8aGIpKWlmKHEpc2EobiksWmEoKSxzdGFydFdvcmtlcihuKTtlbHNle2lmKG4ucHJlUnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2Ygbi5wcmVSdW4mJihuLnByZVJ1bj1bbi5wcmVSdW5dKTtuLnByZVJ1bi5sZW5ndGg7KWdiKCk7ZmIoVWEpOzA8aGJ8fChuLnNldFN0YXR1cz8obi5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe24uc2V0U3RhdHVzKCIiKX0sDQoxKTthKCl9LDEpKTphKCkpfX1pZihuLnByZUluaXQpZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBuLnByZUluaXQmJihuLnByZUluaXQ9W24ucHJlSW5pdF0pOzA8bi5wcmVJbml0Lmxlbmd0aDspbi5wcmVJbml0LnBvcCgpKCk7Wm4oKTtmdW5jdGlvbiAkbigpe30kbi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSgkbi5wcm90b3R5cGUpOyRuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0kbjskbi5wcm90b3R5cGUubD0kbjskbi5tPXt9O24uV3JhcHBlck9iamVjdD0kbjtmdW5jdGlvbiBhbyhhKXtyZXR1cm4oYXx8JG4pLm19bi5nZXRDYWNoZT1hbztmdW5jdGlvbiBEKGEsYyl7dmFyIGQ9YW8oYyksZT1kW2FdO2lmKGUpcmV0dXJuIGU7ZT1PYmplY3QuY3JlYXRlKChjfHwkbikucHJvdG90eXBlKTtlLmc9YTtyZXR1cm4gZFthXT1lfW4ud3JhcFBvaW50ZXI9RDtuLmNhc3RPYmplY3Q9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gRChhLmcsYyl9O24uTlVMTD1EKDApOw0Kbi5kZXN0cm95PWZ1bmN0aW9uKGEpe2lmKCFhLl9fZGVzdHJveV9fKXRocm93IkVycm9yOiBDYW5ub3QgZGVzdHJveSBvYmplY3QuIChEaWQgeW91IGNyZWF0ZSBpdCB5b3Vyc2VsZj8pIjthLl9fZGVzdHJveV9fKCk7ZGVsZXRlIGFvKGEubClbYS5nXX07bi5jb21wYXJlPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGEuZz09PWMuZ307bi5nZXRQb2ludGVyPWZ1bmN0aW9uKGEpe3JldHVybiBhLmd9O24uZ2V0Q2xhc3M9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubH07dmFyIGJvPTAsY289MCxlbz0wLGZvPVtdLGdvPTA7ZnVuY3Rpb24gRSgpe2lmKGdvKXtmb3IodmFyIGE9MDthPGZvLmxlbmd0aDthKyspbi5fZnJlZShmb1thXSk7Zm8ubGVuZ3RoPTA7bi5fZnJlZShibyk7Ym89MDtjbys9Z287Z289MH1ib3x8KGNvKz0xMjgsKGJvPW4uX21hbGxvYyhjbykpfHxOYSgpKTtlbz0wfQ0KZnVuY3Rpb24gaG8oYSxjKXtib3x8TmEoKTthPWEubGVuZ3RoKmMuQllURVNfUEVSX0VMRU1FTlQ7YT1hKzcmLTg7ZW8rYT49Y28/KDA8YXx8TmEoKSxnbys9YSxjPW4uX21hbGxvYyhhKSxmby5wdXNoKGMpKTooYz1ibytlbyxlbys9YSk7cmV0dXJuIGN9ZnVuY3Rpb24gaW8oYSxjLGQpe2Q+Pj49MDtzd2l0Y2goYy5CWVRFU19QRVJfRUxFTUVOVCl7Y2FzZSAyOmQ+Pj49MTticmVhaztjYXNlIDQ6ZD4+Pj0yO2JyZWFrO2Nhc2UgODpkPj4+PTN9Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDtlKyspY1tkK2VdPWFbZV19ZnVuY3Rpb24gRihhKXtpZigic3RyaW5nIj09PXR5cGVvZiBhKXthPU1iKGEpO3ZhciBjPWhvKGEsYmEoKSk7aW8oYSxiYSgpLGMpO3JldHVybiBjfXJldHVybiBhfWZ1bmN0aW9uIGpvKGEpe2lmKCJvYmplY3QiPT09dHlwZW9mIGEpe3ZhciBjPWhvKGEscWEoKSk7aW8oYSxxYSgpLGMpO3JldHVybiBjfXJldHVybiBhfQ0KZnVuY3Rpb24ga28oKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWRSeE9iamVjdCwgbm8gY29uc3RydWN0b3IgaW4gSURMIjt9a28ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJG4ucHJvdG90eXBlKTtrby5wcm90b3R5cGUuY29uc3RydWN0b3I9a287a28ucHJvdG90eXBlLmw9a287a28ubT17fTtuLk1kUnhPYmplY3Q9a287a28ucHJvdG90eXBlLmdldE9iamVjdE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcih6ZSh0aGlzLmcpKX07a28ucHJvdG90eXBlLmdldER4ZjA9ZnVuY3Rpb24oKXtyZXR1cm4gcihBZSh0aGlzLmcpKX07a28ucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihCZSh0aGlzLmcpKX07a28ucHJvdG90eXBlLnNldEpzb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFDZShjLGEpfTsNCmZ1bmN0aW9uIEcoKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWREYk9iamVjdCwgbm8gY29uc3RydWN0b3IgaW4gSURMIjt9Ry5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShrby5wcm90b3R5cGUpO0cucHJvdG90eXBlLmNvbnN0cnVjdG9yPUc7Ry5wcm90b3R5cGUubD1HO0cubT17fTtuLk1kRGJPYmplY3Q9RztHLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBEZSh0aGlzLmcpfTtHLnByb3RvdHlwZS5FcmFzZT1mdW5jdGlvbigpe3JldHVybiEhRWUodGhpcy5nKX07Ry5wcm90b3R5cGUuQ29ubmVjdGlvblRlbXBPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFGZShjLGEpfTtHLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKEdlKHRoaXMuZyksRyl9Ow0KRy5wcm90b3R5cGUubW92ZUdyaXBQb2ludHNBdD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtyZXR1cm4hIUhlKGYsYSxjLGQsZSl9O0cucHJvdG90eXBlLmdldE9iamVjdE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihJZSh0aGlzLmcpKX07Ry5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKEplKHRoaXMuZykpfTtHLnByb3RvdHlwZS5nZXRKc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHIoS2UodGhpcy5nKSl9O0cucHJvdG90eXBlLnNldEpzb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFMZShjLGEpfTsNCmZ1bmN0aW9uIGxvKCl7dGhyb3ciY2Fubm90IGNvbnN0cnVjdCBhIE1kRGJFbnRpdHksIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fWxvLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTtsby5wcm90b3R5cGUuY29uc3RydWN0b3I9bG87bG8ucHJvdG90eXBlLmw9bG87bG8ubT17fTtuLk1kRGJFbnRpdHk9bG87bG8ucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIE1lKHRoaXMuZyl9O2xvLnByb3RvdHlwZS5FcmFzZT1mdW5jdGlvbigpe3JldHVybiEhTmUodGhpcy5nKX07bG8ucHJvdG90eXBlLkNvbm5lY3Rpb25UZW1wT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhT2UoYyxhKX07bG8ucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoUGUodGhpcy5nKSxHKX07DQpsby5wcm90b3R5cGUubW92ZUdyaXBQb2ludHNBdD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtyZXR1cm4hIVFlKGYsYSxjLGQsZSl9O2xvLnByb3RvdHlwZS5nZXRPYmplY3ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHIoUmUodGhpcy5nKSl9O2xvLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoU2UodGhpcy5nKSl9O2xvLnByb3RvdHlwZS5nZXRKc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHIoVGUodGhpcy5nKSl9O2xvLnByb3RvdHlwZS5zZXRKc29uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO3JldHVybiEhVWUoYyxhKX07DQpmdW5jdGlvbiBtbygpe3Rocm93ImNhbm5vdCBjb25zdHJ1Y3QgYSBNZERiQ3VydmUsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fW1vLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGxvLnByb3RvdHlwZSk7bW8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW1vO21vLnByb3RvdHlwZS5sPW1vO21vLm09e307bi5NZERiQ3VydmU9bW87bW8ucHJvdG90eXBlLmdldFN0YXJ0UGFyYW09ZnVuY3Rpb24oKXtyZXR1cm4gVmUodGhpcy5nKX07bW8ucHJvdG90eXBlLmdldEVuZFBhcmFtPWZ1bmN0aW9uKCl7cmV0dXJuIFdlKHRoaXMuZyl9O21vLnByb3RvdHlwZS5nZXREaXN0QXRQYXJhbT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gWGUoYyxhKX07bW8ucHJvdG90eXBlLmdldFBhcmFtQXREaXN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBZZShjLGEpfTsNCm1vLnByb3RvdHlwZS5nZXREaXN0QXRQb2ludD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gWmUoYyxhKX07bW8ucHJvdG90eXBlLmdldFBvaW50QXREaXN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKCRlKGMsYSksSCl9O21vLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBhZih0aGlzLmcpfTttby5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWJmKHRoaXMuZyl9O21vLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIWNmKGMsYSl9O21vLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKGRmKHRoaXMuZyksRyl9Ow0KbW8ucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISFlZihmLGEsYyxkLGUpfTttby5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKGZmKHRoaXMuZykpfTttby5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKGdmKHRoaXMuZykpfTttby5wcm90b3R5cGUuZ2V0SnNvbj1mdW5jdGlvbigpe3JldHVybiByKGhmKHRoaXMuZykpfTttby5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIWpmKGMsYSl9Ow0KZnVuY3Rpb24gSSgpe3RoaXMuZz1rZigpO2FvKEkpW3RoaXMuZ109dGhpc31JLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGxvLnByb3RvdHlwZSk7SS5wcm90b3R5cGUuY29uc3RydWN0b3I9STtJLnByb3RvdHlwZS5sPUk7SS5tPXt9O24uTWREYkRpbWVuc2lvbj1JO0kucHJvdG90eXBlLnRleHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBEKGxmKHRoaXMuZyksSCl9O0kucHJvdG90eXBlLnNldFRleHRQb3NpdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIW1mKGMsYSl9O0kucHJvdG90eXBlLmlzVXNpbmdEZWZhdWx0VGV4dFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuISFuZih0aGlzLmcpfTtJLnByb3RvdHlwZS51c2VTZXRUZXh0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4hIW9mKHRoaXMuZyl9O0kucHJvdG90eXBlLnVzZURlZmF1bHRUZXh0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4hIXBmKHRoaXMuZyl9Ow0KSS5wcm90b3R5cGUuZWxldmF0aW9uPUkucHJvdG90eXBlLmVsZXZhdGlvbj1mdW5jdGlvbigpe3JldHVybiBxZih0aGlzLmcpfTtJLnByb3RvdHlwZS5zZXRFbGV2YXRpb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFyZihjLGEpfTtJLnByb3RvdHlwZS5kaW1lbnNpb25UZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHIoc2YodGhpcy5nKSl9O0kucHJvdG90eXBlLnNldERpbWVuc2lvblRleHQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISF0ZihjLGEpfTtJLnByb3RvdHlwZS50ZXh0Um90YXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdWYodGhpcy5nKX07SS5wcm90b3R5cGUuc2V0VGV4dFJvdGF0aW9uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhdmYoYyxhKX07DQpJLnByb3RvdHlwZS5kaW1lbnNpb25TdHlsZT1mdW5jdGlvbigpe3JldHVybiB3Zih0aGlzLmcpfTtJLnByb3RvdHlwZS5zZXREaW1lbnNpb25TdHlsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXhmKGMsYSl9O0kucHJvdG90eXBlLnRleHRBdHRhY2htZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHlmKHRoaXMuZyl9O0kucHJvdG90eXBlLnNldFRleHRBdHRhY2htZW50PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhemYoYyxhKX07SS5wcm90b3R5cGUuaG9yaXpvbnRhbFJvdGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEFmKHRoaXMuZyl9O0kucHJvdG90eXBlLnNldEhvcml6b250YWxSb3RhdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUJmKGMsYSl9Ow0KSS5wcm90b3R5cGUucmVjb21wdXRlRGltQmxvY2s9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFDZihjLGEpfTtJLnByb3RvdHlwZS5HZXREaW1WYXJJbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIERmKGMsYSl9O0kucHJvdG90eXBlLlNldERpbVZhckludD1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7cmV0dXJuISFFZihkLGEsYyl9O0kucHJvdG90eXBlLkdldERpbVZhckRvdWJsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gRmYoYyxhKX07DQpJLnByb3RvdHlwZS5TZXREaW1WYXJEb3VibGU9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO3JldHVybiEhR2YoZCxhLGMpfTtJLnByb3RvdHlwZS5HZXREaW1WYXJTdHJpbmc9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHIoSGYoYyxhKSl9O0kucHJvdG90eXBlLlNldERpbVZhclN0cmluZz1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZztFKCk7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5nOkYoYyk7cmV0dXJuISFJZihkLGEsYyl9O0kucHJvdG90eXBlLkdldERpbVZhck9iamVjdElkPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBKZihjLGEpfTsNCkkucHJvdG90eXBlLlNldERpbVZhck9iamVjdElkPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtyZXR1cm4hIUtmKGQsYSxjKX07SS5wcm90b3R5cGUuZ2V0T2JqZWN0SUQ9ZnVuY3Rpb24oKXtyZXR1cm4gTGYodGhpcy5nKX07SS5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIU1mKHRoaXMuZyl9O0kucHJvdG90eXBlLkNvbm5lY3Rpb25UZW1wT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhTmYoYyxhKX07SS5wcm90b3R5cGUuQ2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gRChPZih0aGlzLmcpLEcpfTsNCkkucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISFQZihmLGEsYyxkLGUpfTtJLnByb3RvdHlwZS5nZXRPYmplY3ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHIoUWYodGhpcy5nKSl9O0kucHJvdG90eXBlLmdldER4ZjA9ZnVuY3Rpb24oKXtyZXR1cm4gcihSZih0aGlzLmcpKX07SS5wcm90b3R5cGUuZ2V0SnNvbj1mdW5jdGlvbigpe3JldHVybiByKFNmKHRoaXMuZykpfTtJLnByb3RvdHlwZS5zZXRKc29uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO3JldHVybiEhVGYoYyxhKX07SS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtVZih0aGlzLmcpfTsNCmZ1bmN0aW9uIG5vKCl7dGhyb3ciY2Fubm90IGNvbnN0cnVjdCBhIFZvaWRQdHIsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fW5vLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKCRuLnByb3RvdHlwZSk7bm8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW5vO25vLnByb3RvdHlwZS5sPW5vO25vLm09e307bi5Wb2lkUHRyPW5vO25vLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1ZmKHRoaXMuZyl9O2Z1bmN0aW9uIEooKXt0aGlzLmc9V2YoKTthbyhKKVt0aGlzLmddPXRoaXN9Si5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSgkbi5wcm90b3R5cGUpO0oucHJvdG90eXBlLmNvbnN0cnVjdG9yPUo7Si5wcm90b3R5cGUubD1KO0oubT17fTtuLk1kQ21Db2xvcj1KO0oucHJvdG90eXBlLnNldENvbG9ySW5kZXg9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7WGYoYyxhKX07DQpKLnByb3RvdHlwZS5zZXRSR0I9ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtZZihlLGEsYyxkKX07Si5wcm90b3R5cGUuZ2V0X3JlZD1KLnByb3RvdHlwZS5mYj1mdW5jdGlvbigpe3JldHVybiBaZih0aGlzLmcpfTtKLnByb3RvdHlwZS5zZXRfcmVkPUoucHJvdG90eXBlLnhiPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpOyRmKGMsYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwicmVkIix7Z2V0OkoucHJvdG90eXBlLmZiLHNldDpKLnByb3RvdHlwZS54Yn0pO0oucHJvdG90eXBlLmdldF9ncmVlbj1KLnByb3RvdHlwZS5iYj1mdW5jdGlvbigpe3JldHVybiBhZyh0aGlzLmcpfTsNCkoucHJvdG90eXBlLnNldF9ncmVlbj1KLnByb3RvdHlwZS51Yj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtiZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsImdyZWVuIix7Z2V0OkoucHJvdG90eXBlLmJiLHNldDpKLnByb3RvdHlwZS51Yn0pO0oucHJvdG90eXBlLmdldF9ibHVlPUoucHJvdG90eXBlLiRhPWZ1bmN0aW9uKCl7cmV0dXJuIGNnKHRoaXMuZyl9O0oucHJvdG90eXBlLnNldF9ibHVlPUoucHJvdG90eXBlLnNiPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2RnKGMsYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwiYmx1ZSIse2dldDpKLnByb3RvdHlwZS4kYSxzZXQ6Si5wcm90b3R5cGUuc2J9KTtKLnByb3RvdHlwZS5nZXRfbWV0aG9kPUoucHJvdG90eXBlLmNiPWZ1bmN0aW9uKCl7cmV0dXJuIGVnKHRoaXMuZyl9Ow0KSi5wcm90b3R5cGUuc2V0X21ldGhvZD1KLnByb3RvdHlwZS52Yj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtmZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsIm1ldGhvZCIse2dldDpKLnByb3RvdHlwZS5jYixzZXQ6Si5wcm90b3R5cGUudmJ9KTtKLnByb3RvdHlwZS5nZXRfbj1KLnByb3RvdHlwZS5lYj1mdW5jdGlvbigpe3JldHVybiBnZyh0aGlzLmcpfTtKLnByb3RvdHlwZS5zZXRfbj1KLnByb3RvdHlwZS53Yj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtoZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsIm4iLHtnZXQ6Si5wcm90b3R5cGUuZWIsc2V0OkoucHJvdG90eXBlLndifSk7Si5wcm90b3R5cGUuZ2V0X2NvbG9ySW5kZXg9Si5wcm90b3R5cGUuYWI9ZnVuY3Rpb24oKXtyZXR1cm4gaWcodGhpcy5nKX07DQpKLnByb3RvdHlwZS5zZXRfY29sb3JJbmRleD1KLnByb3RvdHlwZS50Yj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtqZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsImNvbG9ySW5kZXgiLHtnZXQ6Si5wcm90b3R5cGUuYWIsc2V0OkoucHJvdG90eXBlLnRifSk7Si5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtrZyh0aGlzLmcpfTsNCmZ1bmN0aW9uIEgoYSxjLGQpe2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO3RoaXMuZz12b2lkIDA9PT1hP2xnKCk6dm9pZCAwPT09Yz9fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX01kR2VQb2ludDNkXzEoYSk6dm9pZCAwPT09ZD9fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX01kR2VQb2ludDNkXzIoYSxjKTptZyhhLGMsZCk7YW8oSClbdGhpcy5nXT10aGlzfUgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJG4ucHJvdG90eXBlKTtILnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1IO0gucHJvdG90eXBlLmw9SDtILm09e307bi5NZEdlUG9pbnQzZD1IO0gucHJvdG90eXBlLmdldF94PUgucHJvdG90eXBlLmdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5nKHRoaXMuZyl9Ow0KSC5wcm90b3R5cGUuc2V0X3g9SC5wcm90b3R5cGUubWE9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7b2coYyxhKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEgucHJvdG90eXBlLCJ4Iix7Z2V0OkgucHJvdG90eXBlLmdhLHNldDpILnByb3RvdHlwZS5tYX0pO0gucHJvdG90eXBlLmdldF95PUgucHJvdG90eXBlLmhhPWZ1bmN0aW9uKCl7cmV0dXJuIHBnKHRoaXMuZyl9O0gucHJvdG90eXBlLnNldF95PUgucHJvdG90eXBlLm5hPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3FnKGMsYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShILnByb3RvdHlwZSwieSIse2dldDpILnByb3RvdHlwZS5oYSxzZXQ6SC5wcm90b3R5cGUubmF9KTtILnByb3RvdHlwZS5nZXRfej1ILnByb3RvdHlwZS5pYT1mdW5jdGlvbigpe3JldHVybiByZyh0aGlzLmcpfTsNCkgucHJvdG90eXBlLnNldF96PUgucHJvdG90eXBlLm9hPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3NnKGMsYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShILnByb3RvdHlwZSwieiIse2dldDpILnByb3RvdHlwZS5pYSxzZXQ6SC5wcm90b3R5cGUub2F9KTtILnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3RnKHRoaXMuZyl9Ow0KZnVuY3Rpb24gSyhhLGMsZCl7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7dGhpcy5nPXZvaWQgMD09PWE/dWcoKTp2b2lkIDA9PT1jP19lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX01kR2VWZWN0b3IzZF8xKGEpOnZvaWQgMD09PWQ/X2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfTWRHZVZlY3RvcjNkXzIoYSxjKTp2ZyhhLGMsZCk7YW8oSylbdGhpcy5nXT10aGlzfUsucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJG4ucHJvdG90eXBlKTtLLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1LO0sucHJvdG90eXBlLmw9SztLLm09e307bi5NZEdlVmVjdG9yM2Q9SztLLnByb3RvdHlwZS5nZXRfeD1LLnByb3RvdHlwZS5nYT1mdW5jdGlvbigpe3JldHVybiB3Zyh0aGlzLmcpfTsNCksucHJvdG90eXBlLnNldF94PUsucHJvdG90eXBlLm1hPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3hnKGMsYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShLLnByb3RvdHlwZSwieCIse2dldDpLLnByb3RvdHlwZS5nYSxzZXQ6Sy5wcm90b3R5cGUubWF9KTtLLnByb3RvdHlwZS5nZXRfeT1LLnByb3RvdHlwZS5oYT1mdW5jdGlvbigpe3JldHVybiB5Zyh0aGlzLmcpfTtLLnByb3RvdHlwZS5zZXRfeT1LLnByb3RvdHlwZS5uYT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTt6ZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsInkiLHtnZXQ6Sy5wcm90b3R5cGUuaGEsc2V0OksucHJvdG90eXBlLm5hfSk7Sy5wcm90b3R5cGUuZ2V0X3o9Sy5wcm90b3R5cGUuaWE9ZnVuY3Rpb24oKXtyZXR1cm4gQWcodGhpcy5nKX07DQpLLnByb3RvdHlwZS5zZXRfej1LLnByb3RvdHlwZS5vYT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtCZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsInoiLHtnZXQ6Sy5wcm90b3R5cGUuaWEsc2V0OksucHJvdG90eXBlLm9hfSk7Sy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtDZyh0aGlzLmcpfTtmdW5jdGlvbiBMKCl7dGhpcy5nPURnKCk7YW8oTClbdGhpcy5nXT10aGlzfUwucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJG4ucHJvdG90eXBlKTtMLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1MO0wucHJvdG90eXBlLmw9TDtMLm09e307bi5NZEdlTWF0cml4M2Q9TDtMLnByb3RvdHlwZS5zZXRUb0lkZW50aXR5PWZ1bmN0aW9uKCl7RWcodGhpcy5nKX07DQpMLnByb3RvdHlwZS5wcmVNdWx0Qnk9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7RmcoYyxhKX07TC5wcm90b3R5cGUucG9zdE11bHRCeT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtHZyhjLGEpfTtMLnByb3RvdHlwZS5zZXRUb1Byb2R1Y3Q9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO0hnKGQsYSxjKX07TC5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKCl7SWcodGhpcy5nKX07TC5wcm90b3R5cGUuaXNTaW5ndWxhcj1mdW5jdGlvbigpe3JldHVybiEhSmcodGhpcy5nKX07TC5wcm90b3R5cGUudHJhbnNwb3NlSXQ9ZnVuY3Rpb24oKXtLZyh0aGlzLmcpfTsNCkwucHJvdG90eXBlLmlzRXF1YWxUbz1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUxnKGMsYSl9O0wucHJvdG90eXBlLmRldD1mdW5jdGlvbigpe3JldHVybiBNZyh0aGlzLmcpfTtMLnByb3RvdHlwZS5zZXRDb29yZFN5c3RlbT1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtOZyhmLGEsYyxkLGUpfTtMLnByb3RvdHlwZS5zZXRUb1RyYW5zbGF0aW9uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO09nKGMsYSl9Ow0KTC5wcm90b3R5cGUuc2V0VG9Sb3RhdGlvbj1mdW5jdGlvbihhLGMsZCl7dmFyIGU9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO1BnKGUsYSxjLGQpfTtMLnByb3RvdHlwZS5zZXRUb1NjYWxpbmc9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO1FnKGQsYSxjKX07TC5wcm90b3R5cGUuc2NhbGU9TC5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gUmcodGhpcy5nKX07DQpMLnByb3RvdHlwZS5nZXREYXRhPUwucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO3JldHVybiBTZyhkLGEsYyl9O0wucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7VGcodGhpcy5nKX07ZnVuY3Rpb24gTSgpe3RoaXMuZz1VZygpO2FvKE0pW3RoaXMuZ109dGhpc31NLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTtNLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1NO00ucHJvdG90eXBlLmw9TTtNLm09e307bi5NZERiTGF5ZXJUYWJsZVJlY29yZD1NO00ucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihWZyh0aGlzLmcpKX07DQpNLnByb3RvdHlwZS5zZXROYW1lPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO3JldHVybiEhV2coYyxhKX07TS5wcm90b3R5cGUuaXNGcm96ZW49TS5wcm90b3R5cGUuaXNGcm96ZW49ZnVuY3Rpb24oKXtyZXR1cm4hIVhnKHRoaXMuZyl9O00ucHJvdG90eXBlLnNldElzRnJvemVuPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhWWcoYyxhKX07TS5wcm90b3R5cGUuaXNPZmY9ZnVuY3Rpb24oKXtyZXR1cm4hIVpnKHRoaXMuZyl9O00ucHJvdG90eXBlLnNldElzT2ZmPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhJGcoYyxhKX07TS5wcm90b3R5cGUuaXNMb2NrZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIWFoKHRoaXMuZyl9Ow0KTS5wcm90b3R5cGUuc2V0SXNMb2NrZWQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFiaChjLGEpfTtNLnByb3RvdHlwZS5jb2xvcj1NLnByb3RvdHlwZS5jb2xvcj1mdW5jdGlvbigpe3JldHVybiBEKGNoKHRoaXMuZyksSil9O00ucHJvdG90eXBlLnNldENvbG9yPU0ucHJvdG90eXBlLnNldENvbG9yPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhZGgoYyxhKX07TS5wcm90b3R5cGUubGluZXR5cGVPYmplY3RJZD1mdW5jdGlvbigpe3JldHVybiBlaCh0aGlzLmcpfTtNLnByb3RvdHlwZS5zZXRMaW5ldHlwZU9iamVjdElkPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhZmgoYyxhKX07TS5wcm90b3R5cGUubGluZVdlaWdodD1mdW5jdGlvbigpe3JldHVybiBnaCh0aGlzLmcpfTsNCk0ucHJvdG90eXBlLnNldExpbmVXZWlnaHQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFoaChjLGEpfTtNLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBpaCh0aGlzLmcpfTtNLnByb3RvdHlwZS5FcmFzZT1mdW5jdGlvbigpe3JldHVybiEhamgodGhpcy5nKX07TS5wcm90b3R5cGUuQ29ubmVjdGlvblRlbXBPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFraChjLGEpfTtNLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKGxoKHRoaXMuZyksRyl9Ow0KTS5wcm90b3R5cGUubW92ZUdyaXBQb2ludHNBdD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtyZXR1cm4hIW1oKGYsYSxjLGQsZSl9O00ucHJvdG90eXBlLmdldE9iamVjdE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihuaCh0aGlzLmcpKX07TS5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKG9oKHRoaXMuZykpfTtNLnByb3RvdHlwZS5nZXRKc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHIocGgodGhpcy5nKSl9O00ucHJvdG90eXBlLnNldEpzb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFxaChjLGEpfTtNLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3JoKHRoaXMuZyl9Ow0KZnVuY3Rpb24gcG8oKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWREYkxheWVyVGFibGUsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fXBvLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTtwby5wcm90b3R5cGUuY29uc3RydWN0b3I9cG87cG8ucHJvdG90eXBlLmw9cG87cG8ubT17fTtuLk1kRGJMYXllclRhYmxlPXBvO3BvLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBzaCh0aGlzLmcpfTtwby5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoKHRoaXMuZyl9O3BvLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXVoKGMsYSl9O3BvLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKHZoKHRoaXMuZyksRyl9Ow0KcG8ucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISF3aChmLGEsYyxkLGUpfTtwby5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKHhoKHRoaXMuZykpfTtwby5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKHloKHRoaXMuZykpfTtwby5wcm90b3R5cGUuZ2V0SnNvbj1mdW5jdGlvbigpe3JldHVybiByKHpoKHRoaXMuZykpfTtwby5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIUFoKGMsYSl9Ow0KZnVuY3Rpb24gcW8oKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWREYkxpbmV0eXBlVGFibGUsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fXFvLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTtxby5wcm90b3R5cGUuY29uc3RydWN0b3I9cW87cW8ucHJvdG90eXBlLmw9cW87cW8ubT17fTtuLk1kRGJMaW5ldHlwZVRhYmxlPXFvO3FvLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBCaCh0aGlzLmcpfTtxby5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIUNoKHRoaXMuZyl9O3FvLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIURoKGMsYSl9O3FvLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKEVoKHRoaXMuZyksRyl9Ow0KcW8ucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISFGaChmLGEsYyxkLGUpfTtxby5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKEdoKHRoaXMuZykpfTtxby5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKEhoKHRoaXMuZykpfTtxby5wcm90b3R5cGUuZ2V0SnNvbj1mdW5jdGlvbigpe3JldHVybiByKEloKHRoaXMuZykpfTtxby5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIUpoKGMsYSl9Ow0KZnVuY3Rpb24gcm8oKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWREYlRleHRTdHlsZVRhYmxlLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiO31yby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShHLnByb3RvdHlwZSk7cm8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPXJvO3JvLnByb3RvdHlwZS5sPXJvO3JvLm09e307bi5NZERiVGV4dFN0eWxlVGFibGU9cm87cm8ucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIEtoKHRoaXMuZyl9O3JvLnByb3RvdHlwZS5FcmFzZT1mdW5jdGlvbigpe3JldHVybiEhTGgodGhpcy5nKX07cm8ucHJvdG90eXBlLkNvbm5lY3Rpb25UZW1wT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhTWgoYyxhKX07cm8ucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoTmgodGhpcy5nKSxHKX07DQpyby5wcm90b3R5cGUubW92ZUdyaXBQb2ludHNBdD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtyZXR1cm4hIU9oKGYsYSxjLGQsZSl9O3JvLnByb3RvdHlwZS5nZXRPYmplY3ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHIoUGgodGhpcy5nKSl9O3JvLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoUWgodGhpcy5nKSl9O3JvLnByb3RvdHlwZS5nZXRKc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHIoUmgodGhpcy5nKSl9O3JvLnByb3RvdHlwZS5zZXRKc29uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO3JldHVybiEhU2goYyxhKX07DQpmdW5jdGlvbiBOKCl7dGhyb3ciY2Fubm90IGNvbnN0cnVjdCBhIE1kRGJEYXRhYmFzZSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjt9Ti5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShrby5wcm90b3R5cGUpO04ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU47Ti5wcm90b3R5cGUubD1OO04ubT17fTtuLk1kRGJEYXRhYmFzZT1OO04ucHJvdG90eXBlLkdldExheWVyVGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gRChUaCh0aGlzLmcpLHBvKX07Ti5wcm90b3R5cGUuR2V0TGluZXR5cGVUYWJsZT1mdW5jdGlvbigpe3JldHVybiBEKFVoKHRoaXMuZykscW8pfTtOLnByb3RvdHlwZS5HZXRUZXh0U3R5bGVUYWJsZT1mdW5jdGlvbigpe3JldHVybiBEKFZoKHRoaXMuZykscm8pfTtOLnByb3RvdHlwZS5HZXRDdXJyZW50bHlMaW5lVHlwZVNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIFdoKHRoaXMuZyl9Ow0KTi5wcm90b3R5cGUuU2V0Q3VycmVudGx5TGluZVR5cGVTY2FsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtYaChjLGEpfTtOLnByb3RvdHlwZS5HZXRDdXJyZW50bHlMYXllck5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihZaCh0aGlzLmcpKX07Ti5wcm90b3R5cGUuU2V0Q3VycmVudGx5TGF5ZXJOYW1lPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO1poKGMsYSl9O04ucHJvdG90eXBlLkdldEN1cnJlbnRseUxpbmVUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybiByKCRoKHRoaXMuZykpfTtOLnByb3RvdHlwZS5TZXRDdXJyZW50bHlMaW5lVHlwZU5hbWU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7YWkoYyxhKX07DQpOLnByb3RvdHlwZS5HZXRDdXJyZW50bHlUcnVlQ29sb3I9ZnVuY3Rpb24oKXtyZXR1cm4gRChiaSh0aGlzLmcpLEopfTtOLnByb3RvdHlwZS5TZXRDdXJyZW50bHlUcnVlQ29sb3I9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7Y2koYyxhKX07Ti5wcm90b3R5cGUuR2V0Q3VycmVudGx5Q29sb3JJbmRleD1mdW5jdGlvbigpe3JldHVybiBkaSh0aGlzLmcpfTtOLnByb3RvdHlwZS5TZXRDdXJyZW50bHlDb2xvckluZGV4PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2VpKGMsYSl9O04ucHJvdG90eXBlLkdldEN1cnJlbnRseVRleHRTdHlsZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihmaSh0aGlzLmcpKX07DQpOLnByb3RvdHlwZS5TZXRDdXJyZW50bHlUZXh0U3R5bGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7Z2koYyxhKX07Ti5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKGhpKHRoaXMuZykpfTtOLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoaWkodGhpcy5nKSl9O04ucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihqaSh0aGlzLmcpKX07Ti5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIWtpKGMsYSl9O2Z1bmN0aW9uIE8oKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWNPYmplY3QsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fU8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJG4ucHJvdG90eXBlKTsNCk8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU87Ty5wcm90b3R5cGUubD1PO08ubT17fTtuLk1jT2JqZWN0PU87Ty5wcm90b3R5cGUudXBkYXRlRGlzcGxheT1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZztFKCk7Im9iamVjdCI9PXR5cGVvZiBhJiYoYT1qbyhhKSk7Im9iamVjdCI9PXR5cGVvZiBjJiYoYz1qbyhjKSk7cmV0dXJuISFsaShkLGEsYyl9O08ucHJvdG90eXBlLnRlc3Q9Ty5wcm90b3R5cGUudGVzdD1mdW5jdGlvbigpe21pKHRoaXMuZyl9O08ucHJvdG90eXBlLm9wZW5XZWJGaWxlPWZ1bmN0aW9uKGEsYyxkKXt2YXIgZT10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7cmV0dXJuISFuaShlLGEsYyxkKX07DQpPLnByb3RvdHlwZS5zYXZlRmlsZVRvVXJsPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO3JldHVybiEhb2koYyxhKX07Ty5wcm90b3R5cGUuc2F2ZUZpbGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFwaShjLGEpfTtPLnByb3RvdHlwZS5nZXRWaWV3RGF0YUpzb25QYXJhbT1mdW5jdGlvbigpe3JldHVybiByKHFpKHRoaXMuZykpfTtPLnByb3RvdHlwZS51cGRhdGFBcHBEYXRhPWZ1bmN0aW9uKCl7cmkodGhpcy5nKX07Ty5wcm90b3R5cGUuR2V0RGF0YWJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4gRChzaSh0aGlzLmcpLE4pfTtPLnByb3RvdHlwZS5HZXRTeXNWYXJTdHJpbmc9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuIHIodGkoYyxhKSl9Ow0KTy5wcm90b3R5cGUuU2V0U3lzVmFyU3RyaW5nPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7Yz1jJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MuZzpGKGMpO3JldHVybiEhdWkoZCxhLGMpfTtPLnByb3RvdHlwZS5HZXRTeXNWYXJEb3VibGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuIHZpKGMsYSl9O08ucHJvdG90eXBlLlNldFN5c1ZhckRvdWJsZT1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7cmV0dXJuISF3aShkLGEsYyl9O08ucHJvdG90eXBlLkdldFN5c1Zhckxvbmc9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuIHhpKGMsYSl9Ow0KTy5wcm90b3R5cGUuU2V0U3lzVmFyTG9uZz1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7cmV0dXJuISF5aShkLGEsYyl9O08ucHJvdG90eXBlLmZpcmVFdmVudFdpbmRvd1NpemU9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO3ppKGQsYSxjKX07Ty5wcm90b3R5cGUuZmlyZUV2ZW50Q29tbWFuZFN0YXJ0PWZ1bmN0aW9uKCl7QWkodGhpcy5nKX07Ty5wcm90b3R5cGUuSW50ZWxsaVNlbGVjdF9Qb2ludFNlbGVjdD1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7cmV0dXJuIEJpKGQsYSxjKX07DQpPLnByb3RvdHlwZS5JbnRlbGxpU2VsZWN0X2dldEdyaWREYXRhPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiByKENpKGMsYSkpfTtPLnByb3RvdHlwZS5FbnRpdHlUZW1wV29yZERyYXdfb25KaWdDb21tYW5kRW5kPWZ1bmN0aW9uKCl7RGkodGhpcy5nKX07Ty5wcm90b3R5cGUuRW50aXR5VGVtcFdvcmREcmF3X29uSmlnRHJhd0VudGl0eURpc3BsYXk9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7RWkoYyxhKX07Ty5wcm90b3R5cGUuRW50aXR5VGVtcFdvcmREcmF3X29uUmVhZHlKaWdVcGRhdGVEaXNwbGE9ZnVuY3Rpb24oKXtGaSh0aGlzLmcpfTtPLnByb3RvdHlwZS5FbnRpdHlUZW1wV29yZERyYXdfb25KaWdDbGVhckRpc3BsYXk9ZnVuY3Rpb24oKXtHaSh0aGlzLmcpfTsNCk8ucHJvdG90eXBlLlNldERyYXdDb2xvcj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtIaShjLGEpfTtPLnByb3RvdHlwZS5HZXREcmF3Q29sb3I9ZnVuY3Rpb24oKXtyZXR1cm4gRChJaSh0aGlzLmcpLEopfTtPLnByb3RvdHlwZS5BZGRMYXllcj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtKaShjLGEpfTtPLnByb3RvdHlwZS5TZXREcmF3TGF5ZXI9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7S2koYyxhKX07Ty5wcm90b3R5cGUuR2V0RHJhd0xheWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHIoTGkodGhpcy5nKSl9Ow0KTy5wcm90b3R5cGUuQWRkVGV4dFN0eWxlPWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLmc6RihjKTtkPWQmJiJvYmplY3QiPT09dHlwZW9mIGQ/ZC5nOkYoZCk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtNaShmLGEsYyxkLGUpfTtPLnByb3RvdHlwZS5TZXREcmF3VGV4dFN0eWxlPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO05pKGMsYSl9O08ucHJvdG90eXBlLkdldERyYXdUZXh0U3R5bGU9ZnVuY3Rpb24oKXtyZXR1cm4gcihPaSh0aGlzLmcpKX07DQpPLnByb3RvdHlwZS5BZGRMaW5ldHlwZT1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLmc6RihjKTtQaShkLGEsYyl9O08ucHJvdG90eXBlLkFkZExpbmV0eXBlRXg9ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLmc6RihjKTtkPWQmJiJvYmplY3QiPT09dHlwZW9mIGQ/ZC5nOkYoZCk7UWkoZSxhLGMsZCl9Ow0KTy5wcm90b3R5cGUuQWRkRGltU3R5bGU9ZnVuY3Rpb24oYSxjLGQsZSxmKXt2YXIgZz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5nOkYoYyk7ZD1kJiYib2JqZWN0Ij09PXR5cGVvZiBkP2QuZzpGKGQpO2U9ZSYmIm9iamVjdCI9PT10eXBlb2YgZT9lLmc6RihlKTtmPWYmJiJvYmplY3QiPT09dHlwZW9mIGY/Zi5nOkYoZik7UmkoZyxhLGMsZCxlLGYpfTtPLnByb3RvdHlwZS5TZXREcmF3TGluZXR5cGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7U2koYyxhKX07Ty5wcm90b3R5cGUuR2V0RHJhd0xpbmV0eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIHIoVGkodGhpcy5nKSl9Ow0KTy5wcm90b3R5cGUuU2V0RHJhd0xpbmVXZWlnaHQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7VWkoYyxhKX07Ty5wcm90b3R5cGUuR2V0RHJhd0xpbmVXZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gVmkodGhpcy5nKX07Ty5wcm90b3R5cGUuU2V0RHJhd0xpbmVUeXBlU2NhbGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7V2koYyxhKX07Ty5wcm90b3R5cGUuR2V0RHJhd0xpbmVUeXBlU2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gWGkodGhpcy5nKX07Ty5wcm90b3R5cGUuU2V0RHJhd0RpbVN0eWxlPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO1lpKGMsYSl9O08ucHJvdG90eXBlLkdldERyYXdEaW1TdHlsZT1mdW5jdGlvbigpe3JldHVybiByKFppKHRoaXMuZykpfTsNCk8ucHJvdG90eXBlLlNldFBhdHRlcm5EZWZpbml0aW9uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpOyRpKGMsYSl9O08ucHJvdG90eXBlLkdldFBhdHRlcm5EZWZpbml0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHIoYWoodGhpcy5nKSl9O08ucHJvdG90eXBlLlNldERyYXdMaW5lV2lkdGg9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YmooYyxhKX07Ty5wcm90b3R5cGUuR2V0RHJhd0xpbmVXaWR0aD1mdW5jdGlvbigpe3JldHVybiBjaih0aGlzLmcpfTsNCk8ucHJvdG90eXBlLkRyYXdMaW5lPWZ1bmN0aW9uKGEsYyxkLGUsZixnKXt2YXIgaD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiYoZj1mLmcpO2cmJiJvYmplY3QiPT09dHlwZW9mIGcmJihnPWcuZyk7cmV0dXJuIGRqKGgsYSxjLGQsZSxmLGcpfTsNCk8ucHJvdG90eXBlLkRyYXdBcmM9ZnVuY3Rpb24oYSxjLGQsZSxmKXt2YXIgZz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiYoZj1mLmcpO3JldHVybiBlaihnLGEsYyxkLGUsZil9Ow0KTy5wcm90b3R5cGUuRHJhd0FyYzI9ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe3ZhciBoPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7ZyYmIm9iamVjdCI9PT10eXBlb2YgZyYmKGc9Zy5nKTtyZXR1cm4gZmooaCxhLGMsZCxlLGYsZyl9O08ucHJvdG90eXBlLkRyYXdDaXJjbGU9ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtyZXR1cm4gZ2ooZSxhLGMsZCl9Ow0KTy5wcm90b3R5cGUuRHJhd0VsbGlwc2U9ZnVuY3Rpb24oYSxjLGQsZSxmKXt2YXIgZz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiYoZj1mLmcpO3JldHVybiBoaihnLGEsYyxkLGUsZil9Ow0KTy5wcm90b3R5cGUuRHJhd0VsbGlwc2VBcmM9ZnVuY3Rpb24oYSxjLGQsZSxmLGcsaCl7dmFyIGw9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7ZiYmIm9iamVjdCI9PT10eXBlb2YgZiYmKGY9Zi5nKTtnJiYib2JqZWN0Ij09PXR5cGVvZiBnJiYoZz1nLmcpO2gmJiJvYmplY3QiPT09dHlwZW9mIGgmJihoPWguZyk7cmV0dXJuIGlqKGwsYSxjLGQsZSxmLGcsaCl9O08ucHJvdG90eXBlLkRyYXdQb2ludD1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7cmV0dXJuIGpqKGQsYSxjKX07DQpPLnByb3RvdHlwZS5EcmF3U29saWQ9ZnVuY3Rpb24oYSxjLGQsZSxmLGcsaCxsKXt2YXIgdD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiYoZj1mLmcpO2cmJiJvYmplY3QiPT09dHlwZW9mIGcmJihnPWcuZyk7aCYmIm9iamVjdCI9PT10eXBlb2YgaCYmKGg9aC5nKTtsJiYib2JqZWN0Ij09PXR5cGVvZiBsJiYobD1sLmcpO3JldHVybiBraih0LGEsYyxkLGUsZixnLGgsbCl9Ow0KTy5wcm90b3R5cGUuRHJhd01UZXh0PWZ1bmN0aW9uKGEsYyxkLGUsZixnLGgpe3ZhciBsPXRoaXMuZztFKCk7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2Q9ZCYmIm9iamVjdCI9PT10eXBlb2YgZD9kLmc6RihkKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7ZyYmIm9iamVjdCI9PT10eXBlb2YgZyYmKGc9Zy5nKTtoJiYib2JqZWN0Ij09PXR5cGVvZiBoJiYoaD1oLmcpO3JldHVybiBsaihsLGEsYyxkLGUsZixnLGgpfTsNCk8ucHJvdG90eXBlLkRyYXdUZXh0PWZ1bmN0aW9uKGEsYyxkLGUsZixnLGgpe3ZhciBsPXRoaXMuZztFKCk7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2Q9ZCYmIm9iamVjdCI9PT10eXBlb2YgZD9kLmc6RihkKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7ZyYmIm9iamVjdCI9PT10eXBlb2YgZyYmKGc9Zy5nKTtoJiYib2JqZWN0Ij09PXR5cGVvZiBoJiYoaD1oLmcpO3JldHVybiBtaihsLGEsYyxkLGUsZixnLGgpfTsNCk8ucHJvdG90eXBlLkRyYXdCbG9ja1JlZmVyZW5jZT1mdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPXRoaXMuZztFKCk7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2Q9ZCYmIm9iamVjdCI9PT10eXBlb2YgZD9kLmc6RihkKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7cmV0dXJuIG5qKGcsYSxjLGQsZSxmKX07DQpPLnByb3RvdHlwZS5EcmF3RGltQWxpZ25lZD1mdW5jdGlvbihhLGMsZCxlLGYsZyl7dmFyIGg9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7ZiYmIm9iamVjdCI9PT10eXBlb2YgZiYmKGY9Zi5nKTtnJiYib2JqZWN0Ij09PXR5cGVvZiBnJiYoZz1nLmcpO3JldHVybiBvaihoLGEsYyxkLGUsZixnKX07DQpPLnByb3RvdHlwZS5EcmF3RGltQW5ndWxhcj1mdW5jdGlvbihhLGMsZCxlLGYsZyxoLGwpe3ZhciB0PXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7ZyYmIm9iamVjdCI9PT10eXBlb2YgZyYmKGc9Zy5nKTtoJiYib2JqZWN0Ij09PXR5cGVvZiBoJiYoaD1oLmcpO2wmJiJvYmplY3QiPT09dHlwZW9mIGwmJihsPWwuZyk7cmV0dXJuIHBqKHQsYSxjLGQsZSxmLGcsaCxsKX07DQpPLnByb3RvdHlwZS5EcmF3RGltRGlhbWV0cmljPWZ1bmN0aW9uKGEsYyxkLGUsZil7dmFyIGc9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7ZiYmIm9iamVjdCI9PT10eXBlb2YgZiYmKGY9Zi5nKTtyZXR1cm4gcWooZyxhLGMsZCxlLGYpfTsNCk8ucHJvdG90eXBlLkRyYXdEaW1Sb3RhdGVkPWZ1bmN0aW9uKGEsYyxkLGUsZixnLGgpe3ZhciBsPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7ZyYmIm9iamVjdCI9PT10eXBlb2YgZyYmKGc9Zy5nKTtoJiYib2JqZWN0Ij09PXR5cGVvZiBoJiYoaD1oLmcpO3JldHVybiByaihsLGEsYyxkLGUsZixnLGgpfTsNCk8ucHJvdG90eXBlLkRyYXdEaW1PcmRpbmF0ZT1mdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7cmV0dXJuIHNqKGcsYSxjLGQsZSxmKX07Ty5wcm90b3R5cGUuRHJhd0RpbVJhZGlhbD1mdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7cmV0dXJuIHRqKGcsYSxjLGQsZSxmKX07DQpPLnByb3RvdHlwZS5QYXRoTW92ZVRvPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTt1aihkLGEsYyl9O08ucHJvdG90eXBlLlBhdGhNb3ZlVG9FeD1mdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7dmooZyxhLGMsZCxlLGYpfTtPLnByb3RvdHlwZS5QYXRoTGluZVRvPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTt3aihkLGEsYyl9Ow0KTy5wcm90b3R5cGUuUGF0aExpbmVUb0V4PWZ1bmN0aW9uKGEsYyxkLGUsZil7dmFyIGc9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7ZiYmIm9iamVjdCI9PT10eXBlb2YgZiYmKGY9Zi5nKTt4aihnLGEsYyxkLGUsZil9O08ucHJvdG90eXBlLkRyYXdQYXRoVG9Qb2x5bGluZT1mdW5jdGlvbigpe3JldHVybiB5aih0aGlzLmcpfTtPLnByb3RvdHlwZS5EcmF3UGF0aFRvU3BsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHpqKHRoaXMuZyl9O08ucHJvdG90eXBlLlBhdGhNYWtlQ2xvc2VkPWZ1bmN0aW9uKCl7QWoodGhpcy5nKX07DQpPLnByb3RvdHlwZS5EcmF3UGF0aFRvSGF0Y2g9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIEJqKGMsYSl9O08ucHJvdG90eXBlLkRyYXdFbnRpdHk9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIENqKGMsYSl9O2Z1bmN0aW9uIHNvKCl7dGhpcy5nPURqKCk7YW8oc28pW3RoaXMuZ109dGhpc31zby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSgkbi5wcm90b3R5cGUpO3NvLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1zbztzby5wcm90b3R5cGUubD1zbztzby5tPXt9O24uTWNBcHA9c287c28ucHJvdG90eXBlLkluaXQ9ZnVuY3Rpb24oKXtFaih0aGlzLmcpfTsNCnNvLnByb3RvdHlwZS5DcmVhdGVNeERyYXc9ZnVuY3Rpb24oYSxjLGQsZSxmKXt2YXIgZz10aGlzLmc7RSgpO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkPWQmJiJvYmplY3QiPT09dHlwZW9mIGQ/ZC5nOkYoZCk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiYoZj1mLmcpO3JldHVybiBEKEZqKGcsYSxjLGQsZSxmKSxPKX07c28ucHJvdG90eXBlLkdldEN1cnJlbnRNeERyYXc9ZnVuY3Rpb24oKXtyZXR1cm4gRChHaih0aGlzLmcpLE8pfTtzby5wcm90b3R5cGUuRGVzdHJveU9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtIaihjLGEpfTsNCnNvLnByb3RvdHlwZS5tY2VkUkdCMkluZGV4PWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO3JldHVybiBJaihmLGEsYyxkLGUpfTtzby5wcm90b3R5cGUuT2JqZWN0SWRUb09iamVjdE5hbWU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHIoSmooYyxhKSl9O3NvLnByb3RvdHlwZS5PYmplY3RJZFRvTWREYkxpbmU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIEQoS2ooYyxhKSxQKX07DQpzby5wcm90b3R5cGUuT2JqZWN0SWRUb01kRGJUZXh0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKExqKGMsYSksUil9O3NvLnByb3RvdHlwZS5PYmplY3RJZFRvTWRPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIEQoTWooYyxhKSxHKX07c28ucHJvdG90eXBlLmdldExhc3RDYWxsUmVzdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIE5qKHRoaXMuZyl9O3NvLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe09qKHRoaXMuZyl9O2Z1bmN0aW9uIFMoKXt0aGlzLmc9UGooKTthbyhTKVt0aGlzLmddPXRoaXN9Uy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShrby5wcm90b3R5cGUpO1MucHJvdG90eXBlLmNvbnN0cnVjdG9yPVM7Uy5wcm90b3R5cGUubD1TO1MubT17fTtuLk1jRHJhd1Jlc2J1Zj1TO1MucHJvdG90eXBlLkNsZWFyPWZ1bmN0aW9uKCl7UWoodGhpcy5nKX07DQpTLnByb3RvdHlwZS5HZXRDb3VudD1mdW5jdGlvbigpe3JldHVybiBSaih0aGlzLmcpfTtTLnByb3RvdHlwZS5BdERvdWJsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gU2ooYyxhKX07Uy5wcm90b3R5cGUuQXRsb25nPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBUaihjLGEpfTtTLnByb3RvdHlwZS5BdE9iamVjdElkPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBVaihjLGEpfTtTLnByb3RvdHlwZS5BdFN0cmluZz1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gcihWaihjLGEpKX07DQpTLnByb3RvdHlwZS5BdFBvaW50PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKFdqKGMsYSksSCl9O1MucHJvdG90eXBlLkl0ZW1EYXRhVHlwZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gWGooYyxhKX07Uy5wcm90b3R5cGUuQWRkRG91YmxlPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtZaihkLGEsYyl9O1MucHJvdG90eXBlLkFkZGxvbmc9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO1pqKGQsYSxjKX07DQpTLnByb3RvdHlwZS5BZGRPYmplY3RJZD1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7YWsoZCxhLGMpfTtTLnByb3RvdHlwZS5BZGRTdHJpbmc9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2JrKGQsYSxjKX07Uy5wcm90b3R5cGUuQWRkUG9pbnQ9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2NrKGQsYSxjKX07Uy5wcm90b3R5cGUuUmVtb3ZlQWxsPWZ1bmN0aW9uKCl7ZGsodGhpcy5nKX07DQpTLnByb3RvdHlwZS5SZW1vdmU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7ZWsoYyxhKX07Uy5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKGZrKHRoaXMuZykpfTtTLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoZ2sodGhpcy5nKSl9O1MucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihoayh0aGlzLmcpKX07Uy5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIWlrKGMsYSl9O1MucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7amsodGhpcy5nKX07ZnVuY3Rpb24gdG8oKXt0aGlzLmc9a2soKTthbyh0bylbdGhpcy5nXT10aGlzfXRvLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKCRuLnByb3RvdHlwZSk7DQp0by5wcm90b3R5cGUuY29uc3RydWN0b3I9dG87dG8ucHJvdG90eXBlLmw9dG87dG8ubT17fTtuLk1jRHJhd1V0aWxpdHk9dG87dG8ucHJvdG90eXBlLmZpbmRFbnRBdFBvaW50PWZ1bmN0aW9uKGEsYyxkLGUsZil7dmFyIGc9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7ZiYmIm9iamVjdCI9PT10eXBlb2YgZiYmKGY9Zi5nKTtyZXR1cm4gbGsoZyxhLGMsZCxlLGYpfTt0by5wcm90b3R5cGUuZXJhc2VFbnRpdHk9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFtayhjLGEpfTsNCnRvLnByb3RvdHlwZS5oaWdobGlnaHRFbnRpdHk9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO3JldHVybiEhbmsoZCxhLGMpfTt0by5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtvayh0aGlzLmcpfTtmdW5jdGlvbiBQKCl7dGhpcy5nPXBrKCk7YW8oUClbdGhpcy5nXT10aGlzfVAucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobW8ucHJvdG90eXBlKTtQLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1QO1AucHJvdG90eXBlLmw9UDtQLm09e307bi5NZERiTGluZT1QO1AucHJvdG90eXBlLnN0YXJ0UG9pbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRChxayh0aGlzLmcpLEgpfTtQLnByb3RvdHlwZS5zZXRTdGFydFBvaW50PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhcmsoYyxhKX07DQpQLnByb3RvdHlwZS5lbmRQb2ludD1mdW5jdGlvbigpe3JldHVybiBEKHNrKHRoaXMuZyksSCl9O1AucHJvdG90eXBlLnNldEVuZFBvaW50PVAucHJvdG90eXBlLnNldEVuZFBvaW50PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhdGsoYyxhKX07UC5wcm90b3R5cGUuZ2V0U3RhcnRQYXJhbT1mdW5jdGlvbigpe3JldHVybiB1ayh0aGlzLmcpfTtQLnByb3RvdHlwZS5nZXRFbmRQYXJhbT1mdW5jdGlvbigpe3JldHVybiB2ayh0aGlzLmcpfTtQLnByb3RvdHlwZS5nZXREaXN0QXRQYXJhbT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gd2soYyxhKX07UC5wcm90b3R5cGUuZ2V0UGFyYW1BdERpc3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHhrKGMsYSl9Ow0KUC5wcm90b3R5cGUuZ2V0RGlzdEF0UG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHlrKGMsYSl9O1AucHJvdG90eXBlLmdldFBvaW50QXREaXN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKHprKGMsYSksSCl9O1AucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIEFrKHRoaXMuZyl9O1AucHJvdG90eXBlLkVyYXNlPWZ1bmN0aW9uKCl7cmV0dXJuISFCayh0aGlzLmcpfTtQLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUNrKGMsYSl9O1AucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoRGsodGhpcy5nKSxHKX07DQpQLnByb3RvdHlwZS5tb3ZlR3JpcFBvaW50c0F0PWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO3JldHVybiEhRWsoZixhLGMsZCxlKX07UC5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKEZrKHRoaXMuZykpfTtQLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoR2sodGhpcy5nKSl9O1AucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihIayh0aGlzLmcpKX07UC5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIUlrKGMsYSl9O1AucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7SmsodGhpcy5nKX07DQpmdW5jdGlvbiBSKCl7dGhpcy5nPUtrKCk7YW8oUilbdGhpcy5nXT10aGlzfVIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobG8ucHJvdG90eXBlKTtSLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1SO1IucHJvdG90eXBlLmw9UjtSLm09e307bi5NZERiVGV4dD1SO1IucHJvdG90eXBlLnBvc2l0aW9uPVIucHJvdG90eXBlLnBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEQoTGsodGhpcy5nKSxIKX07Ui5wcm90b3R5cGUuc2V0UG9zaXRpb249Ui5wcm90b3R5cGUuc2V0UG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFNayhjLGEpfTtSLnByb3RvdHlwZS5hbGlnbm1lbnRQb2ludD1mdW5jdGlvbigpe3JldHVybiBEKE5rKHRoaXMuZyksSCl9Ow0KUi5wcm90b3R5cGUuc2V0QWxpZ25tZW50UG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFPayhjLGEpfTtSLnByb3RvdHlwZS5vYmxpcXVlPWZ1bmN0aW9uKCl7cmV0dXJuIFBrKHRoaXMuZyl9O1IucHJvdG90eXBlLnNldE9ibGlxdWU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFRayhjLGEpfTtSLnByb3RvdHlwZS5yb3RhdGlvbj1SLnByb3RvdHlwZS5yb3RhdGlvbj1mdW5jdGlvbigpe3JldHVybiBSayh0aGlzLmcpfTtSLnByb3RvdHlwZS5zZXRSb3RhdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIVNrKGMsYSl9O1IucHJvdG90eXBlLmhlaWdodD1SLnByb3RvdHlwZS5oZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gVGsodGhpcy5nKX07DQpSLnByb3RvdHlwZS5zZXRIZWlnaHQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFVayhjLGEpfTtSLnByb3RvdHlwZS53aWR0aEZhY3Rvcj1mdW5jdGlvbigpe3JldHVybiBWayh0aGlzLmcpfTtSLnByb3RvdHlwZS5zZXRXaWR0aEZhY3Rvcj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIVdrKGMsYSl9O1IucHJvdG90eXBlLnRleHRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gcihYayh0aGlzLmcpKX07Ui5wcm90b3R5cGUuc2V0VGV4dFN0cmluZz1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIVlrKGMsYSl9O1IucHJvdG90eXBlLmhvcml6b250YWxNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIFprKHRoaXMuZyl9Ow0KUi5wcm90b3R5cGUuc2V0SG9yaXpvbnRhbE1vZGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISEkayhjLGEpfTtSLnByb3RvdHlwZS52ZXJ0aWNhbE1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gYWwodGhpcy5nKX07Ui5wcm90b3R5cGUuc2V0VmVydGljYWxNb2RlPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhYmwoYyxhKX07Ui5wcm90b3R5cGUuZ2V0T2JqZWN0SUQ9ZnVuY3Rpb24oKXtyZXR1cm4gY2wodGhpcy5nKX07Ui5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWRsKHRoaXMuZyl9O1IucHJvdG90eXBlLkNvbm5lY3Rpb25UZW1wT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhZWwoYyxhKX07DQpSLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKGZsKHRoaXMuZyksRyl9O1IucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISFnbChmLGEsYyxkLGUpfTtSLnByb3RvdHlwZS5nZXRPYmplY3ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHIoaGwodGhpcy5nKSl9O1IucHJvdG90eXBlLmdldER4ZjA9ZnVuY3Rpb24oKXtyZXR1cm4gcihpbCh0aGlzLmcpKX07Ui5wcm90b3R5cGUuZ2V0SnNvbj1mdW5jdGlvbigpe3JldHVybiByKGpsKHRoaXMuZykpfTsNClIucHJvdG90eXBlLnNldEpzb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFrbChjLGEpfTtSLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2xsKHRoaXMuZyl9O2Z1bmN0aW9uIFQoKXt0aGlzLmc9bWwoKTthbyhUKVt0aGlzLmddPXRoaXN9VC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShtby5wcm90b3R5cGUpO1QucHJvdG90eXBlLmNvbnN0cnVjdG9yPVQ7VC5wcm90b3R5cGUubD1UO1QubT17fTtuLk1kRGJDaXJjbGU9VDtULnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gRChubCh0aGlzLmcpLEgpfTtULnByb3RvdHlwZS5zZXRDZW50ZXI9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFvbChjLGEpfTtULnByb3RvdHlwZS5yYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gcGwodGhpcy5nKX07DQpULnByb3RvdHlwZS5zZXRSYWRpdXM9VC5wcm90b3R5cGUuc2V0UmFkaXVzPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhcWwoYyxhKX07VC5wcm90b3R5cGUuZ2V0U3RhcnRQYXJhbT1mdW5jdGlvbigpe3JldHVybiBybCh0aGlzLmcpfTtULnByb3RvdHlwZS5nZXRFbmRQYXJhbT1mdW5jdGlvbigpe3JldHVybiBzbCh0aGlzLmcpfTtULnByb3RvdHlwZS5nZXREaXN0QXRQYXJhbT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gdGwoYyxhKX07VC5wcm90b3R5cGUuZ2V0UGFyYW1BdERpc3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHVsKGMsYSl9Ow0KVC5wcm90b3R5cGUuZ2V0RGlzdEF0UG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHZsKGMsYSl9O1QucHJvdG90eXBlLmdldFBvaW50QXREaXN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKHdsKGMsYSksSCl9O1QucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIHhsKHRoaXMuZyl9O1QucHJvdG90eXBlLkVyYXNlPWZ1bmN0aW9uKCl7cmV0dXJuISF5bCh0aGlzLmcpfTtULnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXpsKGMsYSl9O1QucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoQWwodGhpcy5nKSxHKX07DQpULnByb3RvdHlwZS5tb3ZlR3JpcFBvaW50c0F0PWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO3JldHVybiEhQmwoZixhLGMsZCxlKX07VC5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKENsKHRoaXMuZykpfTtULnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoRGwodGhpcy5nKSl9O1QucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihFbCh0aGlzLmcpKX07VC5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIUZsKGMsYSl9O1QucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7R2wodGhpcy5nKX07DQpmdW5jdGlvbiBWKCl7dGhpcy5nPUhsKCk7YW8oVilbdGhpcy5nXT10aGlzfVYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobW8ucHJvdG90eXBlKTtWLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1WO1YucHJvdG90eXBlLmw9VjtWLm09e307bi5NZERiUG9seWxpbmU9VjtWLnByb3RvdHlwZS5zZXRDbG9zZWQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFJbChjLGEpfTtWLnByb3RvdHlwZS5zZXRDb25zdGFudFdpZHRoPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhSmwoYyxhKX07Vi5wcm90b3R5cGUuaXNDbG9zZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIUtsKHRoaXMuZyl9O1YucHJvdG90eXBlLmdldENvbnN0YW50V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTGwodGhpcy5nKX07DQpWLnByb3RvdHlwZS5hZGRWZXJ0ZXhBdD1mdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7cmV0dXJuISFNbChnLGEsYyxkLGUsZil9O1YucHJvdG90eXBlLnJlbW92ZVZlcnRleEF0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhTmwoYyxhKX07Vi5wcm90b3R5cGUubnVtVmVydHM9ZnVuY3Rpb24oKXtyZXR1cm4gT2wodGhpcy5nKX07Vi5wcm90b3R5cGUuZ2V0UG9pbnRBdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gRChQbChjLGEpLEgpfTsNClYucHJvdG90eXBlLmdldEJ1bGdlQXQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIFFsKGMsYSl9O1YucHJvdG90eXBlLmdldFN0YXJ0V2lkdGhzQXQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIFJsKGMsYSl9O1YucHJvdG90eXBlLmdldEVuZFdpZHRoc0F0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBTbChjLGEpfTtWLnByb3RvdHlwZS5zZXRQb2ludEF0PWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtyZXR1cm4hIVRsKGQsYSxjKX07DQpWLnByb3RvdHlwZS5zZXRCdWxnZUF0PWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtyZXR1cm4hIVVsKGQsYSxjKX07Vi5wcm90b3R5cGUuZ2V0U3RhcnRQYXJhbT1mdW5jdGlvbigpe3JldHVybiBWbCh0aGlzLmcpfTtWLnByb3RvdHlwZS5nZXRFbmRQYXJhbT1mdW5jdGlvbigpe3JldHVybiBXbCh0aGlzLmcpfTtWLnByb3RvdHlwZS5nZXREaXN0QXRQYXJhbT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gWGwoYyxhKX07Vi5wcm90b3R5cGUuZ2V0UGFyYW1BdERpc3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIFlsKGMsYSl9Ow0KVi5wcm90b3R5cGUuZ2V0RGlzdEF0UG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIFpsKGMsYSl9O1YucHJvdG90eXBlLmdldFBvaW50QXREaXN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKCRsKGMsYSksSCl9O1YucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIGFtKHRoaXMuZyl9O1YucHJvdG90eXBlLkVyYXNlPWZ1bmN0aW9uKCl7cmV0dXJuISFibSh0aGlzLmcpfTtWLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIWNtKGMsYSl9O1YucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoZG0odGhpcy5nKSxHKX07DQpWLnByb3RvdHlwZS5tb3ZlR3JpcFBvaW50c0F0PWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO3JldHVybiEhZW0oZixhLGMsZCxlKX07Vi5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKGZtKHRoaXMuZykpfTtWLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoZ20odGhpcy5nKSl9O1YucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihobSh0aGlzLmcpKX07Vi5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIWltKGMsYSl9O1YucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7am0odGhpcy5nKX07DQpmdW5jdGlvbiBXKCl7dGhpcy5nPWttKCk7YW8oVylbdGhpcy5nXT10aGlzfVcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobG8ucHJvdG90eXBlKTtXLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1XO1cucHJvdG90eXBlLmw9VztXLm09e307bi5NZERiQmxvY2tSZWZlcmVuY2U9VztXLnByb3RvdHlwZS5ibG9ja1RhYmxlUmVjb3JkPWZ1bmN0aW9uKCl7cmV0dXJuIGxtKHRoaXMuZyl9O1cucHJvdG90eXBlLnNldEJsb2NrVGFibGVSZWNvcmQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFtbShjLGEpfTtXLnByb3RvdHlwZS5wb3NpdGlvbj1XLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBEKG5tKHRoaXMuZyksSCl9Ow0KVy5wcm90b3R5cGUuc2V0UG9zaXRpb249Vy5wcm90b3R5cGUuc2V0UG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFvbShjLGEpfTtXLnByb3RvdHlwZS5zY2FsZUZhY3RvcnM9ZnVuY3Rpb24oKXtyZXR1cm4gRChwbSh0aGlzLmcpLEgpfTtXLnByb3RvdHlwZS5zZXRTY2FsZUZhY3RvcnM9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFxbShjLGEpfTtXLnByb3RvdHlwZS5yb3RhdGlvbj1XLnByb3RvdHlwZS5yb3RhdGlvbj1mdW5jdGlvbigpe3JldHVybiBybSh0aGlzLmcpfTtXLnByb3RvdHlwZS5zZXRSb3RhdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXNtKGMsYSl9Ow0KVy5wcm90b3R5cGUuYmxvY2tUcmFuc2Zvcm09ZnVuY3Rpb24oKXtyZXR1cm4gRCh0bSh0aGlzLmcpLEwpfTtXLnByb3RvdHlwZS5zZXRCbG9ja1RyYW5zZm9ybT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXVtKGMsYSl9O1cucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIHdtKHRoaXMuZyl9O1cucHJvdG90eXBlLkVyYXNlPWZ1bmN0aW9uKCl7cmV0dXJuISF4bSh0aGlzLmcpfTtXLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXltKGMsYSl9O1cucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoem0odGhpcy5nKSxHKX07DQpXLnByb3RvdHlwZS5tb3ZlR3JpcFBvaW50c0F0PWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO3JldHVybiEhQW0oZixhLGMsZCxlKX07Vy5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKEJtKHRoaXMuZykpfTtXLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoQ20odGhpcy5nKSl9O1cucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihEbSh0aGlzLmcpKX07Vy5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIUVtKGMsYSl9O1cucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7Rm0odGhpcy5nKX07DQpmdW5jdGlvbiBYKCl7dGhpcy5nPUdtKCk7YW8oWClbdGhpcy5nXT10aGlzfVgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSS5wcm90b3R5cGUpO1gucHJvdG90eXBlLmNvbnN0cnVjdG9yPVg7WC5wcm90b3R5cGUubD1YO1gubT17fTtuLk1kRGJBbGlnbmVkRGltZW5zaW9uPVg7WC5wcm90b3R5cGUueExpbmUxUG9pbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRChIbSh0aGlzLmcpLEgpfTtYLnByb3RvdHlwZS5zZXRYTGluZTFQb2ludD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUltKGMsYSl9O1gucHJvdG90eXBlLnhMaW5lMlBvaW50PWZ1bmN0aW9uKCl7cmV0dXJuIEQoSm0odGhpcy5nKSxIKX07WC5wcm90b3R5cGUuc2V0WExpbmUyUG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFLbShjLGEpfTsNClgucHJvdG90eXBlLmRpbUxpbmVQb2ludD1mdW5jdGlvbigpe3JldHVybiBEKExtKHRoaXMuZyksSCl9O1gucHJvdG90eXBlLnNldERpbUxpbmVQb2ludD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIU1tKGMsYSl9O1gucHJvdG90eXBlLm9ibGlxdWU9ZnVuY3Rpb24oKXtyZXR1cm4gTm0odGhpcy5nKX07WC5wcm90b3R5cGUuc2V0T2JsaXF1ZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIU9tKGMsYSl9O1gucHJvdG90eXBlLnRleHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBEKFBtKHRoaXMuZyksSCl9O1gucHJvdG90eXBlLnNldFRleHRQb3NpdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIVFtKGMsYSl9Ow0KWC5wcm90b3R5cGUuaXNVc2luZ0RlZmF1bHRUZXh0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4hIVJtKHRoaXMuZyl9O1gucHJvdG90eXBlLnVzZVNldFRleHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiEhU20odGhpcy5nKX07WC5wcm90b3R5cGUudXNlRGVmYXVsdFRleHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiEhVG0odGhpcy5nKX07WC5wcm90b3R5cGUuZWxldmF0aW9uPVgucHJvdG90eXBlLmVsZXZhdGlvbj1mdW5jdGlvbigpe3JldHVybiBVbSh0aGlzLmcpfTtYLnByb3RvdHlwZS5zZXRFbGV2YXRpb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFWbShjLGEpfTtYLnByb3RvdHlwZS5kaW1lbnNpb25UZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHIoV20odGhpcy5nKSl9Ow0KWC5wcm90b3R5cGUuc2V0RGltZW5zaW9uVGV4dD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIVhtKGMsYSl9O1gucHJvdG90eXBlLnRleHRSb3RhdGlvbj1mdW5jdGlvbigpe3JldHVybiBZbSh0aGlzLmcpfTtYLnByb3RvdHlwZS5zZXRUZXh0Um90YXRpb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFabShjLGEpfTtYLnByb3RvdHlwZS5kaW1lbnNpb25TdHlsZT1mdW5jdGlvbigpe3JldHVybiAkbSh0aGlzLmcpfTtYLnByb3RvdHlwZS5zZXREaW1lbnNpb25TdHlsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIWFuKGMsYSl9O1gucHJvdG90eXBlLnRleHRBdHRhY2htZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGJuKHRoaXMuZyl9Ow0KWC5wcm90b3R5cGUuc2V0VGV4dEF0dGFjaG1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFjbihjLGEpfTtYLnByb3RvdHlwZS5ob3Jpem9udGFsUm90YXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gZG4odGhpcy5nKX07WC5wcm90b3R5cGUuc2V0SG9yaXpvbnRhbFJvdGF0aW9uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhZW4oYyxhKX07WC5wcm90b3R5cGUucmVjb21wdXRlRGltQmxvY2s9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFmbihjLGEpfTtYLnByb3RvdHlwZS5HZXREaW1WYXJJbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIGduKGMsYSl9Ow0KWC5wcm90b3R5cGUuU2V0RGltVmFySW50PWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtyZXR1cm4hIWhuKGQsYSxjKX07WC5wcm90b3R5cGUuR2V0RGltVmFyRG91YmxlPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBqbihjLGEpfTtYLnByb3RvdHlwZS5TZXREaW1WYXJEb3VibGU9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO3JldHVybiEha24oZCxhLGMpfTtYLnByb3RvdHlwZS5HZXREaW1WYXJTdHJpbmc9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHIobG4oYyxhKSl9Ow0KWC5wcm90b3R5cGUuU2V0RGltVmFyU3RyaW5nPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO0UoKTthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLmc6RihjKTtyZXR1cm4hIW1uKGQsYSxjKX07WC5wcm90b3R5cGUuR2V0RGltVmFyT2JqZWN0SWQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIG5uKGMsYSl9O1gucHJvdG90eXBlLlNldERpbVZhck9iamVjdElkPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtyZXR1cm4hIW9uKGQsYSxjKX07WC5wcm90b3R5cGUuZ2V0T2JqZWN0SUQ9ZnVuY3Rpb24oKXtyZXR1cm4gcG4odGhpcy5nKX07WC5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIXFuKHRoaXMuZyl9Ow0KWC5wcm90b3R5cGUuQ29ubmVjdGlvblRlbXBPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFybihjLGEpfTtYLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKHNuKHRoaXMuZyksRyl9O1gucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISF0bihmLGEsYyxkLGUpfTtYLnByb3RvdHlwZS5nZXRPYmplY3ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHIodW4odGhpcy5nKSl9O1gucHJvdG90eXBlLmdldER4ZjA9ZnVuY3Rpb24oKXtyZXR1cm4gcih2bih0aGlzLmcpKX07DQpYLnByb3RvdHlwZS5nZXRKc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHIod24odGhpcy5nKSl9O1gucHJvdG90eXBlLnNldEpzb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISF4bihjLGEpfTtYLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3luKHRoaXMuZyl9O2Z1bmN0aW9uIFkoKXt0aGlzLmc9em4oKTthbyhZKVt0aGlzLmddPXRoaXN9WS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShsby5wcm90b3R5cGUpO1kucHJvdG90eXBlLmNvbnN0cnVjdG9yPVk7WS5wcm90b3R5cGUubD1ZO1kubT17fTtuLk1kRGJNVGV4dD1ZO1kucHJvdG90eXBlLmxvY2F0aW9uPVkucHJvdG90eXBlLmxvY2F0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEQoQW4odGhpcy5nKSxIKX07DQpZLnByb3RvdHlwZS5zZXRMb2NhdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUJuKGMsYSl9O1kucHJvdG90eXBlLnJvdGF0aW9uPVkucHJvdG90eXBlLnJvdGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIENuKHRoaXMuZyl9O1kucHJvdG90eXBlLnNldFJvdGF0aW9uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhRG4oYyxhKX07WS5wcm90b3R5cGUud2lkdGg9WS5wcm90b3R5cGUud2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gRW4odGhpcy5nKX07WS5wcm90b3R5cGUuc2V0V2lkdGg9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFGbihjLGEpfTtZLnByb3RvdHlwZS50ZXh0SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIEduKHRoaXMuZyl9Ow0KWS5wcm90b3R5cGUuc2V0VGV4dEhlaWdodD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUhuKGMsYSl9O1kucHJvdG90eXBlLmF0dGFjaG1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gSW4odGhpcy5nKX07WS5wcm90b3R5cGUuc2V0QXR0YWNobWVudD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUpuKGMsYSl9O1kucHJvdG90eXBlLmNvbnRlbnRzPVkucHJvdG90eXBlLmk9ZnVuY3Rpb24oKXtyZXR1cm4gcihLbih0aGlzLmcpKX07WS5wcm90b3R5cGUuc2V0Q29udGVudHM9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFMbihjLGEpfTtZLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBNbih0aGlzLmcpfTtZLnByb3RvdHlwZS5FcmFzZT1mdW5jdGlvbigpe3JldHVybiEhTm4odGhpcy5nKX07DQpZLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIU9uKGMsYSl9O1kucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoUG4odGhpcy5nKSxHKX07WS5wcm90b3R5cGUubW92ZUdyaXBQb2ludHNBdD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtyZXR1cm4hIVFuKGYsYSxjLGQsZSl9O1kucHJvdG90eXBlLmdldE9iamVjdE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihSbih0aGlzLmcpKX07WS5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKFNuKHRoaXMuZykpfTsNClkucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihUbih0aGlzLmcpKX07WS5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIVVuKGMsYSl9O1kucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7Vm4odGhpcy5nKX07DQoNCg0KICByZXR1cm4gbXhkcmF3YXNzZW1ibHkucmVhZHkNCn0NCg0KKTsNCn0pKCk7DQppZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKQ0KICBtb2R1bGUuZXhwb3J0cyA9IG14ZHJhd2Fzc2VtYmx5Ow0KZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmVbJ2FtZCddKQ0KICBkZWZpbmUoW10sIGZ1bmN0aW9uKCkgeyByZXR1cm4gbXhkcmF3YXNzZW1ibHk7IH0pOw0KZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKQ0KICBleHBvcnRzWyJteGRyYXdhc3NlbWJseSJdID0gbXhkcmF3YXNzZW1ibHk7DQo=",self.location).href});J.MxCpp.mxcadassemblyimp=A;let v=new A.McApp;v.Init(),J.MxCpp.App.init(v),Z(J.MxCpp)}}function xn(Z,o){return new Promise(async(u,X)=>{try{Z.locateFile||(Z.locateFile=jn),Z.wasmBinary||(Z.wasmBinary=await bn(Z.locateFile("mxdraw3d_min.wasm",self.location.origin)));const h=new Ke(Z);Ke.onloadWasmMxDraw3dModel=()=>{o&&o(h),u(h)}}catch(h){X(h)}})}const la=Object.freeze(Object.defineProperty({__proto__:null,fetchAndInstantiate:Jn,b64Encode:It,b64Decode:zt,saveAsFileDialog:Ut,downloadFile:Ot,MxTools:Oe,drawText:kn,drawCircle:Qt,drawLine:rn,drawMText:Tn,drawPolyLine:cn,drawPolygon:ln,drawArc:on,drawEllipticalArc:mn,mxErase:un,McObject:xe,MdRxObject:at,MdDbDatabase:en,MdDbLayerTable:$t,MdDbEntity:Se,MdDbCurve:ot,MdDbLine:mt,MdDbText:ut,MdDbCircle:yt,get McDb(){return J.McDb},McDrawUtility:Gt,MxObjectId:ht,McDrawResbuf:Mn,MdDbPolyline:tn,MxDraw3d:Ke,get MxCpp(){return J.MxCpp},loadMxCADassembly:Sn,loadMxCADassembly3d:xn},Symbol.toStringTag,{value:"Module"}));var Yt=(()=>{var Z=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(Z=Z||__filename),function(o={}){var u=typeof o<"u"?o:{},X,h;u.ready=new Promise(function(e,t){X=e,h=t});var R=Object.assign({},u),A="./this.program",v=(e,t)=>{throw t},S=typeof window=="object",T=typeof importScripts=="function",L=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",z="";function te(e){return u.locateFile?u.locateFile(e,z):z+e}var j,Q,de;if(L){var ne=require("fs"),$=require("path");T?z=$.dirname(z)+"/":z=__dirname+"/",j=(e,t)=>(e=Vt(e)?new URL(e):$.normalize(e),ne.readFileSync(e,t?void 0:"utf8")),de=e=>{var t=j(e,!0);return t.buffer||(t=new Uint8Array(t)),t},Q=(e,t,n)=>{e=Vt(e)?new URL(e):$.normalize(e),ne.readFile(e,function(i,r){i?n(i):t(r.buffer)})},!u.thisProgram&&process.argv.length>1&&(A=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),v=(e,t)=>{throw process.exitCode=e,t},u.inspect=function(){return"[Emscripten Module object]"}}else(S||T)&&(T?z=self.location.href:typeof document<"u"&&document.currentScript&&(z=document.currentScript.src),Z&&(z=Z),z.indexOf("blob:")!==0?z=z.substr(0,z.replace(/[?#].*/,"").lastIndexOf("/")+1):z="",j=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},T&&(de=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),Q=(e,t,n)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{if(i.status==200||i.status==0&&i.response){t(i.response);return}n()},i.onerror=n,i.send(null)});var se=u.print||console.log.bind(console),ee=u.printErr||console.warn.bind(console);Object.assign(u,R),R=null,u.arguments&&u.arguments,u.thisProgram&&(A=u.thisProgram),u.quit&&(v=u.quit);var Fe;u.wasmBinary&&(Fe=u.wasmBinary);var Ze=u.noExitRuntime||!0;typeof WebAssembly!="object"&&Pe("no native wasm support detected");var fe,pe=!1,Xe;function Qe(e,t){e||Pe(t)}var ue,ie,Ye,bt,W,U,x,Re;function Kn(){var e=fe.buffer;u.HEAP8=ue=new Int8Array(e),u.HEAP16=Ye=new Int16Array(e),u.HEAP32=W=new Int32Array(e),u.HEAPU8=ie=new Uint8Array(e),u.HEAPU16=bt=new Uint16Array(e),u.HEAPU32=U=new Uint32Array(e),u.HEAPF32=x=new Float32Array(e),u.HEAPF64=Re=new Float64Array(e)}var Ln,Pn=[],Hn=[],da=[],In=[],oa=0;function zn(){return Ze||oa>0}function ma(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)pa(u.preRun.shift());gt(Pn)}function ua(){!u.noFSInit&&!s.init.initialized&&s.init(),s.ignorePermissions=!1,gt(Hn)}function ba(){gt(da)}function sa(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)Da(u.postRun.shift());gt(In)}function pa(e){Pn.unshift(e)}function Ea(e){Hn.unshift(e)}function Da(e){In.unshift(e)}var Le=0,st=null;function U2(e){return e}function sn(e){Le++,u.monitorRunDependencies&&u.monitorRunDependencies(Le)}function Rt(e){if(Le--,u.monitorRunDependencies&&u.monitorRunDependencies(Le),Le==0&&st){var t=st;st=null,t()}}function Pe(e){u.onAbort&&u.onAbort(e),e="Aborted("+e+")",ee(e),pe=!0,Xe=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw h(t),t}var fa="data:application/octet-stream;base64,";function Un(e){return e.startsWith(fa)}function Vt(e){return e.startsWith("file://")}var qe;qe="mxdraw3d_min.wasm",Un(qe)||(qe=te(qe));function On(e){try{if(e==qe&&Fe)return new Uint8Array(Fe);if(de)return de(e);throw"both async and sync fetching of the wasm failed"}catch(t){Pe(t)}}function Ba(e){if(!Fe&&(S||T)){if(typeof fetch=="function"&&!Vt(e))return fetch(e,{credentials:"same-origin"}).then(function(t){if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()}).catch(function(){return On(e)});if(Q)return new Promise(function(t,n){Q(e,function(i){t(new Uint8Array(i))},n)})}return Promise.resolve().then(function(){return On(e)})}function Qn(e,t,n){return Ba(e).then(function(i){return WebAssembly.instantiate(i,t)}).then(function(i){return i}).then(n,function(i){ee("failed to asynchronously prepare wasm: "+i),Pe(i)})}function Ca(e,t,n,i){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!Un(t)&&!Vt(t)&&!L&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(function(r){var c=WebAssembly.instantiateStreaming(r,n);return c.then(i,function(l){return ee("wasm streaming compile failed: "+l),ee("falling back to ArrayBuffer instantiation"),Qn(t,n,i)})}):Qn(t,n,i)}function _a(){var e={env:Fl,wasi_snapshot_preview1:Fl};function t(i,r){var c=i.exports;return u.asm=c,fe=u.asm.memory,Kn(),Ln=u.asm.__indirect_function_table,Ea(u.asm.__wasm_call_ctors),Rt(),c}sn();function n(i){t(i.instance)}if(u.instantiateWasm)try{return u.instantiateWasm(e,t)}catch(i){ee("Module.instantiateWasm callback failed with error: "+i),h(i)}return Ca(Fe,qe,e,n).catch(h),{}}var I,me,Fa={1946609:()=>{u.noExitRuntime=!0},1946640:(e,t,n,i)=>{u.ctx.getBufferSubData(e,t,ie.subarray(n,n+i))}};function Za(){u._myCanvasRect=u.canvas.getBoundingClientRect()}function Xa(){return Math.round(u._myCanvasRect.top)}function Wa(){return Math.round(u._myCanvasRect.left)}function ya(){return u.HEAP8.length}function ha(e){console.debug(be(e))}function Ga(e){console.info(be(e))}function Ya(e){console.warn(be(e))}function Ra(e){console.error(be(e))}function qn(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function gt(e){for(;e.length>0;)e.shift()(u)}var At=[];function Va(e){e.add_ref()}function ga(e){var t=new pn(e);return t.get_caught()||t.set_caught(!0),t.set_rethrown(!1),At.push(t),Va(t),t.get_exception_ptr()}var Je=0,vt=[];function D(e){var t=vt[e];return t||(e>=vt.length&&(vt.length=e+1),vt[e]=t=Ln.get(e)),t}function Aa(e){if(e.release_ref()&&!e.get_rethrown()){var t=e.get_destructor();t&&D(t)(e.excPtr),Gl(e.excPtr)}}function va(){f(0);var e=At.pop();Aa(e),Je=0}function pn(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(t){U[this.ptr+4>>2]=t},this.get_type=function(){return U[this.ptr+4>>2]},this.set_destructor=function(t){U[this.ptr+8>>2]=t},this.get_destructor=function(){return U[this.ptr+8>>2]},this.set_refcount=function(t){W[this.ptr>>2]=t},this.set_caught=function(t){t=t?1:0,ue[this.ptr+12>>0]=t},this.get_caught=function(){return ue[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,ue[this.ptr+13>>0]=t},this.get_rethrown=function(){return ue[this.ptr+13>>0]!=0},this.init=function(t,n){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(n),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var t=W[this.ptr>>2];W[this.ptr>>2]=t+1},this.release_ref=function(){var t=W[this.ptr>>2];return W[this.ptr>>2]=t-1,t===1},this.set_adjusted_ptr=function(t){U[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return U[this.ptr+16>>2]},this.get_exception_ptr=function(){var t=vl(this.get_type());if(t)return U[this.excPtr>>2];var n=this.get_adjusted_ptr();return n!==0?n:this.excPtr}}function Ja(e){throw Je||(Je=e),Je}function Jt(){var e=Je;if(!e)return Ft(0),0;var t=new pn(e);t.set_adjusted_ptr(e);var n=t.get_type();if(!n)return Ft(0),e;for(var i=0;i<arguments.length;i++){var r=arguments[i];if(r===0||r===n)break;var c=t.ptr+16;if(Al(r,n,c))return Ft(r),e}return Ft(n),e}var ka=Jt,Na=Jt,Ma=Jt,wa=Jt;function Ta(){var e=At.pop();e||Pe("no exception to throw");var t=e.excPtr;throw e.get_rethrown()||(At.push(e),e.set_rethrown(!0),e.set_caught(!1)),Je=t,Je}function ja(e,t,n){var i=new pn(e);throw i.init(t,n),Je=e,Je}var ae={isAbs:e=>e.charAt(0)==="/",splitPath:e=>{var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return t.exec(e).slice(1)},normalizeArray:(e,t)=>{for(var n=0,i=e.length-1;i>=0;i--){var r=e[i];r==="."?e.splice(i,1):r===".."?(e.splice(i,1),n++):n&&(e.splice(i,1),n--)}if(t)for(;n;n--)e.unshift("..");return e},normalize:e=>{var t=ae.isAbs(e),n=e.substr(-1)==="/";return e=ae.normalizeArray(e.split("/").filter(i=>!!i),!t).join("/"),!e&&!t&&(e="."),e&&n&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=ae.splitPath(e),n=t[0],i=t[1];return!n&&!i?".":(i&&(i=i.substr(0,i.length-1)),n+i)},basename:e=>{if(e==="/")return"/";e=ae.normalize(e),e=e.replace(/\/$/,"");var t=e.lastIndexOf("/");return t===-1?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return ae.normalize(e.join("/"))},join2:(e,t)=>ae.normalize(e+"/"+t)};function Sa(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return i=>crypto.getRandomValues(i);if(L)try{var e=require("crypto"),t=e.randomFillSync;if(t)return i=>e.randomFillSync(i);var n=e.randomBytes;return i=>(i.set(n(i.byteLength)),i)}catch{}Pe("initRandomDevice")}function $n(e){return($n=Sa())(e)}var Ve={resolve:function(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var i=n>=0?arguments[n]:s.cwd();if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=ae.isAbs(i)}return e=ae.normalizeArray(e.split("/").filter(r=>!!r),!t).join("/"),(t?"/":"")+e||"."},relative:(e,t)=>{e=Ve.resolve(e).substr(1),t=Ve.resolve(t).substr(1);function n(m){for(var b=0;b<m.length&&m[b]==="";b++);for(var p=m.length-1;p>=0&&m[p]==="";p--);return b>p?[]:m.slice(b,p-b+1)}for(var i=n(e.split("/")),r=n(t.split("/")),c=Math.min(i.length,r.length),l=c,a=0;a<c;a++)if(i[a]!==r[a]){l=a;break}for(var d=[],a=l;a<i.length;a++)d.push("..");return d=d.concat(r.slice(l)),d.join("/")}};function $e(e){for(var t=0,n=0;n<e.length;++n){var i=e.charCodeAt(n);i<=127?t++:i<=2047?t+=2:i>=55296&&i<=57343?(t+=4,++n):t+=3}return t}function En(e,t,n,i){if(!(i>0))return 0;for(var r=n,c=n+i-1,l=0;l<e.length;++l){var a=e.charCodeAt(l);if(a>=55296&&a<=57343){var d=e.charCodeAt(++l);a=65536+((a&1023)<<10)|d&1023}if(a<=127){if(n>=c)break;t[n++]=a}else if(a<=2047){if(n+1>=c)break;t[n++]=192|a>>6,t[n++]=128|a&63}else if(a<=65535){if(n+2>=c)break;t[n++]=224|a>>12,t[n++]=128|a>>6&63,t[n++]=128|a&63}else{if(n+3>=c)break;t[n++]=240|a>>18,t[n++]=128|a>>12&63,t[n++]=128|a>>6&63,t[n++]=128|a&63}}return t[n]=0,n-r}function kt(e,t,n){var i=n>0?n:$e(e)+1,r=new Array(i),c=En(e,r,0,r.length);return t&&(r.length=c),r}var He={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){He.ttys[e]={input:[],output:[],ops:t},s.registerDevice(e,He.stream_ops)},stream_ops:{open:function(e){var t=He.ttys[e.node.rdev];if(!t)throw new s.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,t,n,i,r){if(!e.tty||!e.tty.ops.get_char)throw new s.ErrnoError(60);for(var c=0,l=0;l<i;l++){var a;try{a=e.tty.ops.get_char(e.tty)}catch{throw new s.ErrnoError(29)}if(a===void 0&&c===0)throw new s.ErrnoError(6);if(a==null)break;c++,t[n+l]=a}return c&&(e.node.timestamp=Date.now()),c},write:function(e,t,n,i,r){if(!e.tty||!e.tty.ops.put_char)throw new s.ErrnoError(60);try{for(var c=0;c<i;c++)e.tty.ops.put_char(e.tty,t[n+c])}catch{throw new s.ErrnoError(29)}return i&&(e.node.timestamp=Date.now()),c}},default_tty_ops:{get_char:function(e){if(!e.input.length){var t=null;if(L){var n=256,i=Buffer.alloc(n),r=0;try{r=ne.readSync(process.stdin.fd,i,0,n,-1)}catch(c){if(c.toString().includes("EOF"))r=0;else throw c}r>0?t=i.slice(0,r).toString("utf-8"):t=null}else typeof window<"u"&&typeof window.prompt=="function"?(t=window.prompt("Input: "),t!==null&&(t+=`
|
|
507
|
+
`;J.MxCpp=void 0;async function Sn(X,o=jn,u){if(J.MxCpp||(J.MxCpp=new Il),J.MxCpp.mxcadassemblyimp){X(J.MxCpp);return}u||(u=await bn(o("mxdrawassembly_min.wasm",self.location.origin)));const Z=new Blob([ca],{type:"application/javascript"}),h=URL.createObjectURL(Z),R=document.createElement("script");R.src=h,document.body.appendChild(R),R.onload=async()=>{const A=await window.mxdrawassembly({wasmBinary:u,locateFile:o,mainScriptUrlOrBlob:new URL("data:application/javascript;base64,DQp2YXIgbXhkcmF3YXNzZW1ibHkgPSAoKCkgPT4gew0KICB2YXIgX3NjcmlwdERpciA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuY3VycmVudFNjcmlwdCA/IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjIDogdW5kZWZpbmVkOw0KICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgIT09ICd1bmRlZmluZWQnKSBfc2NyaXB0RGlyID0gX3NjcmlwdERpciB8fCBfX2ZpbGVuYW1lOw0KICByZXR1cm4gKA0KZnVuY3Rpb24obXhkcmF3YXNzZW1ibHkgPSB7fSkgIHsNCg0KZnVuY3Rpb24gYmEoKXtjYS5idWZmZXIhPWRhLmJ1ZmZlciYmaGEoKTtyZXR1cm4gZGF9ZnVuY3Rpb24gaWEoKXtjYS5idWZmZXIhPWRhLmJ1ZmZlciYmaGEoKTtyZXR1cm4gamF9ZnVuY3Rpb24ga2EoKXtjYS5idWZmZXIhPWRhLmJ1ZmZlciYmaGEoKTtyZXR1cm4gbGF9ZnVuY3Rpb24gYigpe2NhLmJ1ZmZlciE9ZGEuYnVmZmVyJiZoYSgpO3JldHVybiBtYX1mdW5jdGlvbiBtKCl7Y2EuYnVmZmVyIT1kYS5idWZmZXImJmhhKCk7cmV0dXJuIG5hfWZ1bmN0aW9uIG9hKCl7Y2EuYnVmZmVyIT1kYS5idWZmZXImJmhhKCk7cmV0dXJuIHBhfWZ1bmN0aW9uIHFhKCl7Y2EuYnVmZmVyIT1kYS5idWZmZXImJmhhKCk7cmV0dXJuIHJhfXZhciBuO258fChuPXR5cGVvZiBteGRyYXdhc3NlbWJseSAhPT0gJ3VuZGVmaW5lZCcgPyBteGRyYXdhc3NlbWJseSA6IHt9KTt2YXIgc2EsdGE7bi5yZWFkeT1uZXcgUHJvbWlzZShmdW5jdGlvbihhLGMpe3NhPWE7dGE9Y30pOw0KdmFyIHVhPU9iamVjdC5hc3NpZ24oe30sbiksdmE9Ii4vdGhpcy5wcm9ncmFtIix3YT0oYSxjKT0+e3Rocm93IGM7fSx4YT0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyx5YT0iZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyx6YT0ib2JqZWN0Ij09dHlwZW9mIHByb2Nlc3MmJiJvYmplY3QiPT10eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucyYmInN0cmluZyI9PXR5cGVvZiBwcm9jZXNzLnZlcnNpb25zLm5vZGUscT1uLkVOVklST05NRU5UX0lTX1BUSFJFQUR8fCExLEFhPSIiO2Z1bmN0aW9uIEJhKGEpe3JldHVybiBuLmxvY2F0ZUZpbGU/bi5sb2NhdGVGaWxlKGEsQWEpOkFhK2F9dmFyIENhLERhLEZhOw0KaWYoemEpe3ZhciBmcz1yZXF1aXJlKCJmcyIpLEdhPXJlcXVpcmUoInBhdGgiKTtBYT15YT9HYS5kaXJuYW1lKEFhKSsiLyI6X19kaXJuYW1lKyIvIjtDYT0oYyxkKT0+e2M9Yy5zdGFydHNXaXRoKCJmaWxlOi8vIik/bmV3IFVSTChjKTpHYS5ub3JtYWxpemUoYyk7cmV0dXJuIGZzLnJlYWRGaWxlU3luYyhjLGQ/dm9pZCAwOiJ1dGY4Iil9O0ZhPWM9PntjPUNhKGMsITApO2MuYnVmZmVyfHwoYz1uZXcgVWludDhBcnJheShjKSk7cmV0dXJuIGN9O0RhPShjLGQsZSk9PntjPWMuc3RhcnRzV2l0aCgiZmlsZTovLyIpP25ldyBVUkwoYyk6R2Eubm9ybWFsaXplKGMpO2ZzLnJlYWRGaWxlKGMsZnVuY3Rpb24oZixnKXtmP2UoZik6ZChnLmJ1ZmZlcil9KX07IW4udGhpc1Byb2dyYW0mJjE8cHJvY2Vzcy5hcmd2Lmxlbmd0aCYmKHZhPXByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCIvIikpO3Byb2Nlc3MuYXJndi5zbGljZSgyKTt3YT0oYyxkKT0+e3Byb2Nlc3MuZXhpdENvZGU9Yzt0aHJvdyBkOw0KfTtuLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4iW0Vtc2NyaXB0ZW4gTW9kdWxlIG9iamVjdF0ifTtsZXQgYTt0cnl7YT1yZXF1aXJlKCJ3b3JrZXJfdGhyZWFkcyIpfWNhdGNoKGMpe3Rocm93IGNvbnNvbGUuZXJyb3IoJ1RoZSAid29ya2VyX3RocmVhZHMiIG1vZHVsZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgbm9kZS5qcyBidWlsZCAtIHBlcmhhcHMgYSBuZXdlciB2ZXJzaW9uIGlzIG5lZWRlZD8nKSxjO31nbG9iYWwuV29ya2VyPWEuV29ya2VyfWVsc2UgaWYoeGF8fHlhKXlhP0FhPXNlbGYubG9jYXRpb24uaHJlZjoidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5jdXJyZW50U2NyaXB0JiYoQWE9ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLF9zY3JpcHREaXImJihBYT1fc2NyaXB0RGlyKSxBYT0wIT09QWEuaW5kZXhPZigiYmxvYjoiKT9BYS5zdWJzdHIoMCxBYS5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpOiIiLHphfHwNCihDYT1hPT57dmFyIGM9bmV3IFhNTEh0dHBSZXF1ZXN0O2Mub3BlbigiR0VUIixhLCExKTtjLnNlbmQobnVsbCk7cmV0dXJuIGMucmVzcG9uc2VUZXh0fSx5YSYmKEZhPWE9Pnt2YXIgYz1uZXcgWE1MSHR0cFJlcXVlc3Q7Yy5vcGVuKCJHRVQiLGEsITEpO2MucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7Yy5zZW5kKG51bGwpO3JldHVybiBuZXcgVWludDhBcnJheShjLnJlc3BvbnNlKX0pLERhPShhLGMsZCk9Pnt2YXIgZT1uZXcgWE1MSHR0cFJlcXVlc3Q7ZS5vcGVuKCJHRVQiLGEsITApO2UucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciI7ZS5vbmxvYWQ9KCk9PnsyMDA9PWUuc3RhdHVzfHwwPT1lLnN0YXR1cyYmZS5yZXNwb25zZT9jKGUucmVzcG9uc2UpOmQoKX07ZS5vbmVycm9yPWQ7ZS5zZW5kKG51bGwpfSk7emEmJiJ1bmRlZmluZWQiPT10eXBlb2YgcGVyZm9ybWFuY2UmJihnbG9iYWwucGVyZm9ybWFuY2U9cmVxdWlyZSgicGVyZl9ob29rcyIpLnBlcmZvcm1hbmNlKTsNCnZhciBIYT1jb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLElhPWNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO3phJiYoSGE9YT0+ZnMud3JpdGVTeW5jKDEsYSsiXG4iKSxJYT1hPT5mcy53cml0ZVN5bmMoMixhKyJcbiIpKTt2YXIgS2E9bi5wcmludHx8SGEsTGE9bi5wcmludEVycnx8SWE7T2JqZWN0LmFzc2lnbihuLHVhKTt1YT1udWxsO24udGhpc1Byb2dyYW0mJih2YT1uLnRoaXNQcm9ncmFtKTtuLnF1aXQmJih3YT1uLnF1aXQpO3ZhciBNYTtuLndhc21CaW5hcnkmJihNYT1uLndhc21CaW5hcnkpO3ZhciBub0V4aXRSdW50aW1lPW4ubm9FeGl0UnVudGltZXx8ITA7Im9iamVjdCIhPXR5cGVvZiBXZWJBc3NlbWJseSYmTmEoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTt2YXIgY2EsT2EsUGE9ITEsUWEsZGEsamEsUmEsbGEsbWEsbmEscGEscmE7DQpmdW5jdGlvbiBoYSgpe3ZhciBhPWNhLmJ1ZmZlcjtuLkhFQVA4PWRhPW5ldyBJbnQ4QXJyYXkoYSk7bi5IRUFQMTY9UmE9bmV3IEludDE2QXJyYXkoYSk7bi5IRUFQMzI9bWE9bmV3IEludDMyQXJyYXkoYSk7bi5IRUFQVTg9amE9bmV3IFVpbnQ4QXJyYXkoYSk7bi5IRUFQVTE2PWxhPW5ldyBVaW50MTZBcnJheShhKTtuLkhFQVBVMzI9bmE9bmV3IFVpbnQzMkFycmF5KGEpO24uSEVBUEYzMj1wYT1uZXcgRmxvYXQzMkFycmF5KGEpO24uSEVBUEY2ND1yYT1uZXcgRmxvYXQ2NEFycmF5KGEpfXZhciBTYT1uLklOSVRJQUxfTUVNT1JZfHwxNjc3NzIxNjs0MTk0MzA0PD1TYXx8TmEoIklOSVRJQUxfTUVNT1JZIHNob3VsZCBiZSBsYXJnZXIgdGhhbiBTVEFDS19TSVpFLCB3YXMgIitTYSsiISAoU1RBQ0tfU0laRT00MTk0MzA0KSIpOw0KaWYocSljYT1uLndhc21NZW1vcnk7ZWxzZSBpZihuLndhc21NZW1vcnkpY2E9bi53YXNtTWVtb3J5O2Vsc2UgaWYoY2E9bmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDpTYS82NTUzNixtYXhpbXVtOjMyNzY4LHNoYXJlZDohMH0pLCEoY2EuYnVmZmVyIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXIpKXRocm93IExhKCJyZXF1ZXN0ZWQgYSBzaGFyZWQgV2ViQXNzZW1ibHkuTWVtb3J5IGJ1dCB0aGUgcmV0dXJuZWQgYnVmZmVyIGlzIG5vdCBhIFNoYXJlZEFycmF5QnVmZmVyLCBpbmRpY2F0aW5nIHRoYXQgd2hpbGUgdGhlIGJyb3dzZXIgaGFzIFNoYXJlZEFycmF5QnVmZmVyIGl0IGRvZXMgbm90IGhhdmUgV2ViQXNzZW1ibHkgdGhyZWFkcyBzdXBwb3J0IC0geW91IG1heSBuZWVkIHRvIHNldCBhIGZsYWciKSx6YSYmTGEoIihvbiBub2RlIHlvdSBtYXkgbmVlZDogLS1leHBlcmltZW50YWwtd2FzbS10aHJlYWRzIC0tZXhwZXJpbWVudGFsLXdhc20tYnVsay1tZW1vcnkgYW5kL29yIHJlY2VudCB2ZXJzaW9uKSIpLA0KRXJyb3IoImJhZCBtZW1vcnkiKTtoYSgpO1NhPWNhLmJ1ZmZlci5ieXRlTGVuZ3RoO3ZhciBUYSxVYT1bXSxWYT1bXSxXYT1bXSxYYT0wO2Z1bmN0aW9uIFlhKCl7cmV0dXJuIG5vRXhpdFJ1bnRpbWV8fDA8WGF9ZnVuY3Rpb24gWmEoKXtxfHwobi5ub0ZTSW5pdHx8JGF8fCgkYT0hMCxhYigpLG4uc3RkaW49bi5zdGRpbixuLnN0ZG91dD1uLnN0ZG91dCxuLnN0ZGVycj1uLnN0ZGVycixuLnN0ZGluP2JiKCJzdGRpbiIsbi5zdGRpbik6Y2IoIi9kZXYvdHR5IiwiL2Rldi9zdGRpbiIpLG4uc3Rkb3V0P2JiKCJzdGRvdXQiLG51bGwsbi5zdGRvdXQpOmNiKCIvZGV2L3R0eSIsIi9kZXYvc3Rkb3V0Iiksbi5zdGRlcnI/YmIoInN0ZGVyciIsbnVsbCxuLnN0ZGVycik6Y2IoIi9kZXYvdHR5MSIsIi9kZXYvc3RkZXJyIiksZGIoIi9kZXYvc3RkaW4iLDApLGRiKCIvZGV2L3N0ZG91dCIsMSksZGIoIi9kZXYvc3RkZXJyIiwxKSksZWI9ITEsZmIoVmEpKX0NCmZ1bmN0aW9uIGdiKCl7dmFyIGE9bi5wcmVSdW4uc2hpZnQoKTtVYS51bnNoaWZ0KGEpfXZhciBoYj0wLGliPW51bGwsamI9bnVsbDtmdW5jdGlvbiBrYigpe2hiKys7bi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzJiZuLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMoaGIpfWZ1bmN0aW9uIGxiKCl7aGItLTtuLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJm4ubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhoYik7aWYoMD09aGImJihudWxsIT09aWImJihjbGVhckludGVydmFsKGliKSxpYj1udWxsKSxqYikpe3ZhciBhPWpiO2piPW51bGw7YSgpfX1mdW5jdGlvbiBOYShhKXtpZihuLm9uQWJvcnQpbi5vbkFib3J0KGEpO2E9IkFib3J0ZWQoIithKyIpIjtMYShhKTtQYT0hMDtRYT0xO2E9bmV3IFdlYkFzc2VtYmx5LlJ1bnRpbWVFcnJvcihhKyIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIik7dGEoYSk7dGhyb3cgYTt9DQpmdW5jdGlvbiBtYihhKXtyZXR1cm4gYS5zdGFydHNXaXRoKCJkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsIil9dmFyIG5iO25iPSJteGRyYXdhc3NlbWJseV9taW4ud2FzbSI7bWIobmIpfHwobmI9QmEobmIpKTtmdW5jdGlvbiBvYihhKXt0cnl7aWYoYT09bmImJk1hKXJldHVybiBuZXcgVWludDhBcnJheShNYSk7aWYoRmEpcmV0dXJuIEZhKGEpO3Rocm93ImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIjt9Y2F0Y2goYyl7TmEoYyl9fQ0KZnVuY3Rpb24gcGIoYSl7aWYoIU1hJiYoeGF8fHlhKSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGZldGNoJiYhYS5zdGFydHNXaXRoKCJmaWxlOi8vIikpcmV0dXJuIGZldGNoKGEse2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KS50aGVuKGZ1bmN0aW9uKGMpe2lmKCFjLm9rKXRocm93ImZhaWxlZCB0byBsb2FkIHdhc20gYmluYXJ5IGZpbGUgYXQgJyIrYSsiJyI7cmV0dXJuIGMuYXJyYXlCdWZmZXIoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIG9iKGEpfSk7aWYoRGEpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGMsZCl7RGEoYSxmdW5jdGlvbihlKXtjKG5ldyBVaW50OEFycmF5KGUpKX0sZCl9KX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBvYihhKX0pfQ0KZnVuY3Rpb24gcWIoYSxjLGQpe3JldHVybiBwYihhKS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShlLGMpfSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZX0pLnRoZW4oZCxmdW5jdGlvbihlKXtMYSgiZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogIitlKTtOYShlKX0pfQ0KZnVuY3Rpb24gc2IoYSxjKXt2YXIgZD1uYjtyZXR1cm4gTWF8fCJmdW5jdGlvbiIhPXR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZ3x8bWIoZCl8fGQuc3RhcnRzV2l0aCgiZmlsZTovLyIpfHx6YXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGZldGNoP3FiKGQsYSxjKTpmZXRjaChkLHtjcmVkZW50aWFsczoic2FtZS1vcmlnaW4ifSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcoZSxhKS50aGVuKGMsZnVuY3Rpb24oZil7TGEoIndhc20gc3RyZWFtaW5nIGNvbXBpbGUgZmFpbGVkOiAiK2YpO0xhKCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpO3JldHVybiBxYihkLGEsYyl9KX0pfQ0KdmFyIHRiLHViLHpiPXsyNTMwOTA6KCk9PmJhKCkubGVuZ3RoLDI1MzExMDphPT57YT1yKGEpO2lmKHdpbmRvdy5teF9zYXZlRmlsZV9jYWxsKXt2YXIgYz1jfHwiYmluYXJ5IjtpZigidXRmOCIhPT1jJiYiYmluYXJ5IiE9PWMpdGhyb3cgRXJyb3IoJ0ludmFsaWQgZW5jb2RpbmcgdHlwZSAiJytjKyciJyk7dmFyIGQ7dmFyIGU9ZGIoYSxlfHwwKTthPXZiKGEse2ZhOiEwfSkubm9kZTtpZighYSl0aHJvdyBuZXcgdig0NCk7aWYoIWEuaC51KXRocm93IG5ldyB2KDYzKTthPWEuaC51KGEpLnNpemU7dmFyIGY9bmV3IFVpbnQ4QXJyYXkoYSk7d2IoZSxmLDAsYSwwKTsidXRmOCI9PT1jP2Q9eGIoZiwwKToiYmluYXJ5Ij09PWMmJihkPWYpO3liKGUpO3dpbmRvdy5teF9zYXZlRmlsZV9jYWxsKGQpfWVsc2UgY29uc29sZS5sb2coIndpbmRvdy5teF9zYXZlRmlsZV9jYWxsIHVuZGVmaW5lZCIpfX07DQpmdW5jdGlvbiBBYihhKXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiO3RoaXMubWVzc2FnZT0iUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgiK2ErIikiO3RoaXMuc3RhdHVzPWF9ZnVuY3Rpb24gQmIoYSl7YS50ZXJtaW5hdGUoKTthLm9ubWVzc2FnZT0oKT0+e319ZnVuY3Rpb24gQ2IoYSl7KGE9dy5GW2FdKXx8TmEoKTt3LnFiKGEpfWZ1bmN0aW9uIERiKGEpe3ZhciBjPXcuWmEoKTtpZighYylyZXR1cm4gNjt3LkkucHVzaChjKTt3LkZbYS5BXT1jO2MuQT1hLkE7dmFyIGQ9e2NtZDoicnVuIixzdGFydF9yb3V0aW5lOmEueWIsYXJnOmEuVGEscHRocmVhZF9wdHI6YS5BfTt6YSYmYy5yZWYoKTtjLnBvc3RNZXNzYWdlKGQsYS5FYik7cmV0dXJuIDB9DQp2YXIgRWI9KGEsYyk9Pntmb3IodmFyIGQ9MCxlPWEubGVuZ3RoLTE7MDw9ZTtlLS0pe3ZhciBmPWFbZV07Ii4iPT09Zj9hLnNwbGljZShlLDEpOiIuLiI9PT1mPyhhLnNwbGljZShlLDEpLGQrKyk6ZCYmKGEuc3BsaWNlKGUsMSksZC0tKX1pZihjKWZvcig7ZDtkLS0pYS51bnNoaWZ0KCIuLiIpO3JldHVybiBhfSxGYj1hPT57dmFyIGM9Ii8iPT09YS5jaGFyQXQoMCksZD0iLyI9PT1hLnN1YnN0cigtMSk7KGE9RWIoYS5zcGxpdCgiLyIpLmZpbHRlcihlPT4hIWUpLCFjKS5qb2luKCIvIikpfHxjfHwoYT0iLiIpO2EmJmQmJihhKz0iLyIpO3JldHVybihjPyIvIjoiIikrYX0sR2I9YT0+e3ZhciBjPS9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLy5leGVjKGEpLnNsaWNlKDEpO2E9Y1swXTtjPWNbMV07aWYoIWEmJiFjKXJldHVybiIuIjtjJiYoYz1jLnN1YnN0cigwLGMubGVuZ3RoLTEpKTtyZXR1cm4gYStjfSxIYj1hPT4NCntpZigiLyI9PT1hKXJldHVybiIvIjthPUZiKGEpO2E9YS5yZXBsYWNlKC9cLyQvLCIiKTt2YXIgYz1hLmxhc3RJbmRleE9mKCIvIik7cmV0dXJuLTE9PT1jP2E6YS5zdWJzdHIoYysxKX07ZnVuY3Rpb24gSWIoKXtpZigib2JqZWN0Ij09dHlwZW9mIGNyeXB0byYmImZ1bmN0aW9uIj09dHlwZW9mIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpcmV0dXJuIGQ9PihkLnNldChjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KGQuYnl0ZUxlbmd0aCkpKSxkKTtpZih6YSl0cnl7dmFyIGE9cmVxdWlyZSgiY3J5cHRvIik7aWYoYS5yYW5kb21GaWxsU3luYylyZXR1cm4gZD0+YS5yYW5kb21GaWxsU3luYyhkKTt2YXIgYz1hLnJhbmRvbUJ5dGVzO3JldHVybiBkPT4oZC5zZXQoYyhkLmJ5dGVMZW5ndGgpKSxkKX1jYXRjaChkKXt9TmEoImluaXRSYW5kb21EZXZpY2UiKX1mdW5jdGlvbiBKYihhKXtyZXR1cm4oSmI9SWIoKSkoYSl9DQpmdW5jdGlvbiBLYigpe2Zvcih2YXIgYT0iIixjPSExLGQ9YXJndW1lbnRzLmxlbmd0aC0xOy0xPD1kJiYhYztkLS0pe2M9MDw9ZD9hcmd1bWVudHNbZF06Ii8iO2lmKCJzdHJpbmciIT10eXBlb2YgYyl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncyIpO2lmKCFjKXJldHVybiIiO2E9YysiLyIrYTtjPSIvIj09PWMuY2hhckF0KDApfWE9RWIoYS5zcGxpdCgiLyIpLmZpbHRlcihlPT4hIWUpLCFjKS5qb2luKCIvIik7cmV0dXJuKGM/Ii8iOiIiKSthfHwiLiJ9DQpmdW5jdGlvbiBMYihhLGMsZCxlKXtpZighKDA8ZSkpcmV0dXJuIDA7dmFyIGY9ZDtlPWQrZS0xO2Zvcih2YXIgZz0wO2c8YS5sZW5ndGg7KytnKXt2YXIgaD1hLmNoYXJDb2RlQXQoZyk7aWYoNTUyOTY8PWgmJjU3MzQzPj1oKXt2YXIgbD1hLmNoYXJDb2RlQXQoKytnKTtoPTY1NTM2KygoaCYxMDIzKTw8MTApfGwmMTAyM31pZigxMjc+PWgpe2lmKGQ+PWUpYnJlYWs7Y1tkKytdPWh9ZWxzZXtpZigyMDQ3Pj1oKXtpZihkKzE+PWUpYnJlYWs7Y1tkKytdPTE5MnxoPj42fWVsc2V7aWYoNjU1MzU+PWgpe2lmKGQrMj49ZSlicmVhaztjW2QrK109MjI0fGg+PjEyfWVsc2V7aWYoZCszPj1lKWJyZWFrO2NbZCsrXT0yNDB8aD4+MTg7Y1tkKytdPTEyOHxoPj4xMiY2M31jW2QrK109MTI4fGg+PjYmNjN9Y1tkKytdPTEyOHxoJjYzfX1jW2RdPTA7cmV0dXJuIGQtZn0NCmZ1bmN0aW9uIE1iKGEsYyl7Zm9yKHZhciBkPTAsZT0wO2U8YS5sZW5ndGg7KytlKXt2YXIgZj1hLmNoYXJDb2RlQXQoZSk7MTI3Pj1mP2QrKzoyMDQ3Pj1mP2QrPTI6NTUyOTY8PWYmJjU3MzQzPj1mPyhkKz00LCsrZSk6ZCs9M31kPUFycmF5KGQrMSk7YT1MYihhLGQsMCxkLmxlbmd0aCk7YyYmKGQubGVuZ3RoPWEpO3JldHVybiBkfXZhciBOYj1bXTtmdW5jdGlvbiBPYihhLGMpe05iW2FdPXtpbnB1dDpbXSxvdXRwdXQ6W10sTzpjfTtQYihhLFFiKX0NCnZhciBRYj17b3BlbjpmdW5jdGlvbihhKXt2YXIgYz1OYlthLm5vZGUucmRldl07aWYoIWMpdGhyb3cgbmV3IHYoNDMpO2EudHR5PWM7YS5zZWVrYWJsZT0hMX0sY2xvc2U6ZnVuY3Rpb24oYSl7YS50dHkuTy5mc3luYyhhLnR0eSl9LGZzeW5jOmZ1bmN0aW9uKGEpe2EudHR5Lk8uZnN5bmMoYS50dHkpfSxyZWFkOmZ1bmN0aW9uKGEsYyxkLGUpe2lmKCFhLnR0eXx8IWEudHR5Lk8uRGEpdGhyb3cgbmV3IHYoNjApO2Zvcih2YXIgZj0wLGc9MDtnPGU7ZysrKXt0cnl7dmFyIGg9YS50dHkuTy5EYShhLnR0eSl9Y2F0Y2gobCl7dGhyb3cgbmV3IHYoMjkpO31pZih2b2lkIDA9PT1oJiYwPT09Zil0aHJvdyBuZXcgdig2KTtpZihudWxsPT09aHx8dm9pZCAwPT09aClicmVhaztmKys7Y1tkK2ddPWh9ZiYmKGEubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSk7cmV0dXJuIGZ9LHdyaXRlOmZ1bmN0aW9uKGEsYyxkLGUpe2lmKCFhLnR0eXx8IWEudHR5Lk8ua2EpdGhyb3cgbmV3IHYoNjApO3RyeXtmb3IodmFyIGY9DQowO2Y8ZTtmKyspYS50dHkuTy5rYShhLnR0eSxjW2QrZl0pfWNhdGNoKGcpe3Rocm93IG5ldyB2KDI5KTt9ZSYmKGEubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSk7cmV0dXJuIGZ9fSxSYj17RGE6ZnVuY3Rpb24oYSl7aWYoIWEuaW5wdXQubGVuZ3RoKXt2YXIgYz1udWxsO2lmKHphKXtjPUJ1ZmZlci5hbGxvYygyNTYpO3ZhciBkPTA7dHJ5e2Q9ZnMucmVhZFN5bmMocHJvY2Vzcy5zdGRpbi5mZCxjLDAsMjU2LC0xKX1jYXRjaChlKXtpZihlLnRvU3RyaW5nKCkuaW5jbHVkZXMoIkVPRiIpKWQ9MDtlbHNlIHRocm93IGU7fWM9MDxkP2Muc2xpY2UoMCxkKS50b1N0cmluZygidXRmLTgiKTpudWxsfWVsc2UidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5wcm9tcHQ/KGM9d2luZG93LnByb21wdCgiSW5wdXQ6ICIpLG51bGwhPT1jJiYoYys9IlxuIikpOiJmdW5jdGlvbiI9PXR5cGVvZiByZWFkbGluZSYmKGM9cmVhZGxpbmUoKSxudWxsIT09DQpjJiYoYys9IlxuIikpO2lmKCFjKXJldHVybiBudWxsO2EuaW5wdXQ9TWIoYywhMCl9cmV0dXJuIGEuaW5wdXQuc2hpZnQoKX0sa2E6ZnVuY3Rpb24oYSxjKXtudWxsPT09Y3x8MTA9PT1jPyhLYSh4YihhLm91dHB1dCwwKSksYS5vdXRwdXQ9W10pOjAhPWMmJmEub3V0cHV0LnB1c2goYyl9LGZzeW5jOmZ1bmN0aW9uKGEpe2Eub3V0cHV0JiYwPGEub3V0cHV0Lmxlbmd0aCYmKEthKHhiKGEub3V0cHV0LDApKSxhLm91dHB1dD1bXSl9fSxTYj17a2E6ZnVuY3Rpb24oYSxjKXtudWxsPT09Y3x8MTA9PT1jPyhMYSh4YihhLm91dHB1dCwwKSksYS5vdXRwdXQ9W10pOjAhPWMmJmEub3V0cHV0LnB1c2goYyl9LGZzeW5jOmZ1bmN0aW9uKGEpe2Eub3V0cHV0JiYwPGEub3V0cHV0Lmxlbmd0aCYmKExhKHhiKGEub3V0cHV0LDApKSxhLm91dHB1dD1bXSl9fSxCPXt2Om51bGwsRDpmdW5jdGlvbigpe3JldHVybiBCLmNyZWF0ZU5vZGUobnVsbCwiLyIsMTY4OTUsMCl9LGNyZWF0ZU5vZGU6ZnVuY3Rpb24oYSwNCmMsZCxlKXtpZigyNDU3Nj09PShkJjYxNDQwKXx8NDA5Nj09PShkJjYxNDQwKSl0aHJvdyBuZXcgdig2Myk7Qi52fHwoQi52PXtkaXI6e25vZGU6e3U6Qi5oLnUsQjpCLmguQixsb29rdXA6Qi5oLmxvb2t1cCxaOkIuaC5aLHJlbmFtZTpCLmgucmVuYW1lLHVubGluazpCLmgudW5saW5rLHJtZGlyOkIuaC5ybWRpcixyZWFkZGlyOkIuaC5yZWFkZGlyLHN5bWxpbms6Qi5oLnN5bWxpbmt9LHN0cmVhbTp7SDpCLmouSH19LGZpbGU6e25vZGU6e3U6Qi5oLnUsQjpCLmguQn0sc3RyZWFtOntIOkIuai5ILHJlYWQ6Qi5qLnJlYWQsd3JpdGU6Qi5qLndyaXRlLHRhOkIuai50YSxIYTpCLmouSGEsSmE6Qi5qLkphfX0sbGluazp7bm9kZTp7dTpCLmgudSxCOkIuaC5CLHJlYWRsaW5rOkIuaC5yZWFkbGlua30sc3RyZWFtOnt9fSx2YTp7bm9kZTp7dTpCLmgudSxCOkIuaC5CfSxzdHJlYW06VGJ9fSk7ZD1VYihhLGMsZCxlKTsxNjM4ND09PShkLm1vZGUmNjE0NDApPyhkLmg9Qi52LmRpci5ub2RlLA0KZC5qPUIudi5kaXIuc3RyZWFtLGQuaT17fSk6MzI3Njg9PT0oZC5tb2RlJjYxNDQwKT8oZC5oPUIudi5maWxlLm5vZGUsZC5qPUIudi5maWxlLnN0cmVhbSxkLm89MCxkLmk9bnVsbCk6NDA5NjA9PT0oZC5tb2RlJjYxNDQwKT8oZC5oPUIudi5saW5rLm5vZGUsZC5qPUIudi5saW5rLnN0cmVhbSk6ODE5Mj09PShkLm1vZGUmNjE0NDApJiYoZC5oPUIudi52YS5ub2RlLGQuaj1CLnYudmEuc3RyZWFtKTtkLnRpbWVzdGFtcD1EYXRlLm5vdygpO2EmJihhLmlbY109ZCxhLnRpbWVzdGFtcD1kLnRpbWVzdGFtcCk7cmV0dXJuIGR9LE5iOmZ1bmN0aW9uKGEpe3JldHVybiBhLmk/YS5pLnN1YmFycmF5P2EuaS5zdWJhcnJheSgwLGEubyk6bmV3IFVpbnQ4QXJyYXkoYS5pKTpuZXcgVWludDhBcnJheSgwKX0sQWE6ZnVuY3Rpb24oYSxjKXt2YXIgZD1hLmk/YS5pLmxlbmd0aDowO2Q+PWN8fChjPU1hdGgubWF4KGMsZCooMTA0ODU3Nj5kPzI6MS4xMjUpPj4+MCksMCE9ZCYmKGM9TWF0aC5tYXgoYywNCjI1NikpLGQ9YS5pLGEuaT1uZXcgVWludDhBcnJheShjKSwwPGEubyYmYS5pLnNldChkLnN1YmFycmF5KDAsYS5vKSwwKSl9LHBiOmZ1bmN0aW9uKGEsYyl7aWYoYS5vIT1jKWlmKDA9PWMpYS5pPW51bGwsYS5vPTA7ZWxzZXt2YXIgZD1hLmk7YS5pPW5ldyBVaW50OEFycmF5KGMpO2QmJmEuaS5zZXQoZC5zdWJhcnJheSgwLE1hdGgubWluKGMsYS5vKSkpO2Eubz1jfX0saDp7dTpmdW5jdGlvbihhKXt2YXIgYz17fTtjLmRldj04MTkyPT09KGEubW9kZSY2MTQ0MCk/YS5pZDoxO2MuaW5vPWEuaWQ7Yy5tb2RlPWEubW9kZTtjLm5saW5rPTE7Yy51aWQ9MDtjLmdpZD0wO2MucmRldj1hLnJkZXY7Yy5zaXplPTE2Mzg0PT09KGEubW9kZSY2MTQ0MCk/NDA5NjozMjc2OD09PShhLm1vZGUmNjE0NDApP2Eubzo0MDk2MD09PShhLm1vZGUmNjE0NDApP2EubGluay5sZW5ndGg6MDtjLmF0aW1lPW5ldyBEYXRlKGEudGltZXN0YW1wKTtjLm10aW1lPW5ldyBEYXRlKGEudGltZXN0YW1wKTtjLmN0aW1lPQ0KbmV3IERhdGUoYS50aW1lc3RhbXApO2MuVWE9NDA5NjtjLmJsb2Nrcz1NYXRoLmNlaWwoYy5zaXplL2MuVWEpO3JldHVybiBjfSxCOmZ1bmN0aW9uKGEsYyl7dm9pZCAwIT09Yy5tb2RlJiYoYS5tb2RlPWMubW9kZSk7dm9pZCAwIT09Yy50aW1lc3RhbXAmJihhLnRpbWVzdGFtcD1jLnRpbWVzdGFtcCk7dm9pZCAwIT09Yy5zaXplJiZCLnBiKGEsYy5zaXplKX0sbG9va3VwOmZ1bmN0aW9uKCl7dGhyb3cgVmJbNDRdO30sWjpmdW5jdGlvbihhLGMsZCxlKXtyZXR1cm4gQi5jcmVhdGVOb2RlKGEsYyxkLGUpfSxyZW5hbWU6ZnVuY3Rpb24oYSxjLGQpe2lmKDE2Mzg0PT09KGEubW9kZSY2MTQ0MCkpe3RyeXt2YXIgZT1XYihjLGQpfWNhdGNoKGcpe31pZihlKWZvcih2YXIgZiBpbiBlLmkpdGhyb3cgbmV3IHYoNTUpO31kZWxldGUgYS5wYXJlbnQuaVthLm5hbWVdO2EucGFyZW50LnRpbWVzdGFtcD1EYXRlLm5vdygpO2EubmFtZT1kO2MuaVtkXT1hO2MudGltZXN0YW1wPWEucGFyZW50LnRpbWVzdGFtcDsNCmEucGFyZW50PWN9LHVubGluazpmdW5jdGlvbihhLGMpe2RlbGV0ZSBhLmlbY107YS50aW1lc3RhbXA9RGF0ZS5ub3coKX0scm1kaXI6ZnVuY3Rpb24oYSxjKXt2YXIgZD1XYihhLGMpLGU7Zm9yKGUgaW4gZC5pKXRocm93IG5ldyB2KDU1KTtkZWxldGUgYS5pW2NdO2EudGltZXN0YW1wPURhdGUubm93KCl9LHJlYWRkaXI6ZnVuY3Rpb24oYSl7dmFyIGM9WyIuIiwiLi4iXSxkO2ZvcihkIGluIGEuaSlhLmkuaGFzT3duUHJvcGVydHkoZCkmJmMucHVzaChkKTtyZXR1cm4gY30sc3ltbGluazpmdW5jdGlvbihhLGMsZCl7YT1CLmNyZWF0ZU5vZGUoYSxjLDQxNDcxLDApO2EubGluaz1kO3JldHVybiBhfSxyZWFkbGluazpmdW5jdGlvbihhKXtpZig0MDk2MCE9PShhLm1vZGUmNjE0NDApKXRocm93IG5ldyB2KDI4KTtyZXR1cm4gYS5saW5rfX0sajp7cmVhZDpmdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPWEubm9kZS5pO2lmKGY+PWEubm9kZS5vKXJldHVybiAwO2E9TWF0aC5taW4oYS5ub2RlLm8tDQpmLGUpO2lmKDg8YSYmZy5zdWJhcnJheSljLnNldChnLnN1YmFycmF5KGYsZithKSxkKTtlbHNlIGZvcihlPTA7ZTxhO2UrKyljW2QrZV09Z1tmK2VdO3JldHVybiBhfSx3cml0ZTpmdW5jdGlvbihhLGMsZCxlLGYsZyl7Yy5idWZmZXI9PT1iYSgpLmJ1ZmZlciYmKGc9ITEpO2lmKCFlKXJldHVybiAwO2E9YS5ub2RlO2EudGltZXN0YW1wPURhdGUubm93KCk7aWYoYy5zdWJhcnJheSYmKCFhLml8fGEuaS5zdWJhcnJheSkpe2lmKGcpcmV0dXJuIGEuaT1jLnN1YmFycmF5KGQsZCtlKSxhLm89ZTtpZigwPT09YS5vJiYwPT09ZilyZXR1cm4gYS5pPWMuc2xpY2UoZCxkK2UpLGEubz1lO2lmKGYrZTw9YS5vKXJldHVybiBhLmkuc2V0KGMuc3ViYXJyYXkoZCxkK2UpLGYpLGV9Qi5BYShhLGYrZSk7aWYoYS5pLnN1YmFycmF5JiZjLnN1YmFycmF5KWEuaS5zZXQoYy5zdWJhcnJheShkLGQrZSksZik7ZWxzZSBmb3IoZz0wO2c8ZTtnKyspYS5pW2YrZ109Y1tkK2ddO2Eubz1NYXRoLm1heChhLm8sDQpmK2UpO3JldHVybiBlfSxIOmZ1bmN0aW9uKGEsYyxkKXsxPT09ZD9jKz1hLnBvc2l0aW9uOjI9PT1kJiYzMjc2OD09PShhLm5vZGUubW9kZSY2MTQ0MCkmJihjKz1hLm5vZGUubyk7aWYoMD5jKXRocm93IG5ldyB2KDI4KTtyZXR1cm4gY30sdGE6ZnVuY3Rpb24oYSxjLGQpe0IuQWEoYS5ub2RlLGMrZCk7YS5ub2RlLm89TWF0aC5tYXgoYS5ub2RlLm8sYytkKX0sSGE6ZnVuY3Rpb24oYSxjLGQsZSxmKXtpZigzMjc2OCE9PShhLm5vZGUubW9kZSY2MTQ0MCkpdGhyb3cgbmV3IHYoNDMpO2E9YS5ub2RlLmk7aWYoZiYyfHxhLmJ1ZmZlciE9PWJhKCkuYnVmZmVyKXtpZigwPGR8fGQrYzxhLmxlbmd0aClhPWEuc3ViYXJyYXk/YS5zdWJhcnJheShkLGQrYyk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSxkLGQrYyk7ZD0hMDtOYSgpO2M9dm9pZCAwO2lmKCFjKXRocm93IG5ldyB2KDQ4KTtiYSgpLnNldChhLGMpfWVsc2UgZD0hMSxjPWEuYnl0ZU9mZnNldDtyZXR1cm57ZzpjLEhiOmR9fSwNCkphOmZ1bmN0aW9uKGEsYyxkLGUpe0Iuai53cml0ZShhLGMsMCxlLGQsITEpO3JldHVybiAwfX19LFhiPW51bGwsWWI9e30sWmI9W10sJGI9MSxhYz1udWxsLGViPSEwLHY9bnVsbCxWYj17fSx2Yj0oYSxjPXt9KT0+e2E9S2IoYSk7aWYoIWEpcmV0dXJue3BhdGg6IiIsbm9kZTpudWxsfTtjPU9iamVjdC5hc3NpZ24oe0JhOiEwLGxhOjB9LGMpO2lmKDg8Yy5sYSl0aHJvdyBuZXcgdigzMik7YT1hLnNwbGl0KCIvIikuZmlsdGVyKGg9PiEhaCk7Zm9yKHZhciBkPVhiLGU9Ii8iLGY9MDtmPGEubGVuZ3RoO2YrKyl7dmFyIGc9Zj09PWEubGVuZ3RoLTE7aWYoZyYmYy5wYXJlbnQpYnJlYWs7ZD1XYihkLGFbZl0pO2U9RmIoZSsiLyIrYVtmXSk7ZC5NJiYoIWd8fGcmJmMuQmEpJiYoZD1kLk0ucm9vdCk7aWYoIWd8fGMuZmEpZm9yKGc9MDs0MDk2MD09PShkLm1vZGUmNjE0NDApOylpZihkPWJjKGUpLGU9S2IoR2IoZSksZCksZD12YihlLHtsYTpjLmxhKzF9KS5ub2RlLDQwPGcrKyl0aHJvdyBuZXcgdigzMik7DQp9cmV0dXJue3BhdGg6ZSxub2RlOmR9fSxjYz1hPT57Zm9yKHZhciBjOzspe2lmKGE9PT1hLnBhcmVudClyZXR1cm4gYT1hLkQuSWEsYz8iLyIhPT1hW2EubGVuZ3RoLTFdP2ErIi8iK2M6YStjOmE7Yz1jP2EubmFtZSsiLyIrYzphLm5hbWU7YT1hLnBhcmVudH19LGRjPShhLGMpPT57Zm9yKHZhciBkPTAsZT0wO2U8Yy5sZW5ndGg7ZSsrKWQ9KGQ8PDUpLWQrYy5jaGFyQ29kZUF0KGUpfDA7cmV0dXJuKGErZD4+PjApJWFjLmxlbmd0aH0sZWM9YT0+e3ZhciBjPWRjKGEucGFyZW50LmlkLGEubmFtZSk7aWYoYWNbY109PT1hKWFjW2NdPWEuTjtlbHNlIGZvcihjPWFjW2NdO2M7KXtpZihjLk49PT1hKXtjLk49YS5OO2JyZWFrfWM9Yy5OfX0sV2I9KGEsYyk9Pnt2YXIgZDtpZihkPShkPWZjKGEsIngiKSk/ZDphLmgubG9va3VwPzA6Mil0aHJvdyBuZXcgdihkLGEpO2ZvcihkPWFjW2RjKGEuaWQsYyldO2Q7ZD1kLk4pe3ZhciBlPWQubmFtZTtpZihkLnBhcmVudC5pZD09PWEuaWQmJmU9PT0NCmMpcmV0dXJuIGR9cmV0dXJuIGEuaC5sb29rdXAoYSxjKX0sVWI9KGEsYyxkLGUpPT57YT1uZXcgZ2MoYSxjLGQsZSk7Yz1kYyhhLnBhcmVudC5pZCxhLm5hbWUpO2EuTj1hY1tjXTtyZXR1cm4gYWNbY109YX0saGM9e3I6MCwicisiOjIsdzo1NzcsIncrIjo1NzgsYToxMDg5LCJhKyI6MTA5MH0saWM9YT0+e3ZhciBjPVsiciIsInciLCJydyJdW2EmM107YSY1MTImJihjKz0idyIpO3JldHVybiBjfSxmYz0oYSxjKT0+e2lmKGViKXJldHVybiAwO2lmKCFjLmluY2x1ZGVzKCJyIil8fGEubW9kZSYyOTIpe2lmKGMuaW5jbHVkZXMoInciKSYmIShhLm1vZGUmMTQ2KXx8Yy5pbmNsdWRlcygieCIpJiYhKGEubW9kZSY3MykpcmV0dXJuIDJ9ZWxzZSByZXR1cm4gMjtyZXR1cm4gMH0samM9KGEsYyk9Pnt0cnl7cmV0dXJuIFdiKGEsYyksMjB9Y2F0Y2goZCl7fXJldHVybiBmYyhhLCJ3eCIpfSxrYz0oYSxjLGQpPT57dHJ5e3ZhciBlPVdiKGEsYyl9Y2F0Y2goZil7cmV0dXJuIGYuc31pZihhPQ0KZmMoYSwid3giKSlyZXR1cm4gYTtpZihkKXtpZigxNjM4NCE9PShlLm1vZGUmNjE0NDApKXJldHVybiA1NDtpZihlPT09ZS5wYXJlbnR8fCIvIj09PWNjKGUpKXJldHVybiAxMH1lbHNlIGlmKDE2Mzg0PT09KGUubW9kZSY2MTQ0MCkpcmV0dXJuIDMxO3JldHVybiAwfSxsYz0oYT0wKT0+e2Zvcig7NDA5Nj49YTthKyspaWYoIVpiW2FdKXJldHVybiBhO3Rocm93IG5ldyB2KDMzKTt9LG5jPShhLGMpPT57bWN8fChtYz1mdW5jdGlvbigpe3RoaXMuJD17fX0sbWMucHJvdG90eXBlPXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG1jLnByb3RvdHlwZSx7b2JqZWN0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlfSxzZXQ6ZnVuY3Rpb24oZCl7dGhpcy5ub2RlPWR9fSxmbGFnczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJC5mbGFnc30sc2V0OmZ1bmN0aW9uKGQpe3RoaXMuJC5mbGFncz1kfX0scG9zaXRpb246e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiQucG9zaXRpb259LA0Kc2V0OmZ1bmN0aW9uKGQpe3RoaXMuJC5wb3NpdGlvbj1kfX19KSk7YT1PYmplY3QuYXNzaWduKG5ldyBtYyxhKTtjPWxjKGMpO2EuZmQ9YztyZXR1cm4gWmJbY109YX0sVGI9e29wZW46YT0+e2Euaj1ZYlthLm5vZGUucmRldl0uajthLmoub3BlbiYmYS5qLm9wZW4oYSl9LEg6KCk9Pnt0aHJvdyBuZXcgdig3MCk7fX0sUGI9KGEsYyk9PntZYlthXT17ajpjfX0sb2M9KGEsYyk9Pnt2YXIgZD0iLyI9PT1jLGU9IWM7aWYoZCYmWGIpdGhyb3cgbmV3IHYoMTApO2lmKCFkJiYhZSl7dmFyIGY9dmIoYyx7QmE6ITF9KTtjPWYucGF0aDtmPWYubm9kZTtpZihmLk0pdGhyb3cgbmV3IHYoMTApO2lmKDE2Mzg0IT09KGYubW9kZSY2MTQ0MCkpdGhyb3cgbmV3IHYoNTQpO31jPXt0eXBlOmEsUmI6e30sSWE6YyxuYjpbXX07YT1hLkQoYyk7YS5EPWM7Yy5yb290PWE7ZD9YYj1hOmYmJihmLk09YyxmLkQmJmYuRC5uYi5wdXNoKGMpKX0scGM9KGEsYyxkKT0+e3ZhciBlPXZiKGEse3BhcmVudDohMH0pLm5vZGU7DQphPUhiKGEpO2lmKCFhfHwiLiI9PT1hfHwiLi4iPT09YSl0aHJvdyBuZXcgdigyOCk7dmFyIGY9amMoZSxhKTtpZihmKXRocm93IG5ldyB2KGYpO2lmKCFlLmguWil0aHJvdyBuZXcgdig2Myk7cmV0dXJuIGUuaC5aKGUsYSxjLGQpfSxxYz0oYSxjLGQpPT57InVuZGVmaW5lZCI9PXR5cGVvZiBkJiYoZD1jLGM9NDM4KTtwYyhhLGN8ODE5MixkKX0sY2I9KGEsYyk9PntpZighS2IoYSkpdGhyb3cgbmV3IHYoNDQpO3ZhciBkPXZiKGMse3BhcmVudDohMH0pLm5vZGU7aWYoIWQpdGhyb3cgbmV3IHYoNDQpO2M9SGIoYyk7dmFyIGU9amMoZCxjKTtpZihlKXRocm93IG5ldyB2KGUpO2lmKCFkLmguc3ltbGluayl0aHJvdyBuZXcgdig2Myk7ZC5oLnN5bWxpbmsoZCxjLGEpfSxyYz1hPT57dmFyIGM9dmIoYSx7cGFyZW50OiEwfSkubm9kZTthPUhiKGEpO3ZhciBkPVdiKGMsYSksZT1rYyhjLGEsITApO2lmKGUpdGhyb3cgbmV3IHYoZSk7aWYoIWMuaC5ybWRpcil0aHJvdyBuZXcgdig2Myk7aWYoZC5NKXRocm93IG5ldyB2KDEwKTsNCmMuaC5ybWRpcihjLGEpO2VjKGQpfSxiYz1hPT57YT12YihhKS5ub2RlO2lmKCFhKXRocm93IG5ldyB2KDQ0KTtpZighYS5oLnJlYWRsaW5rKXRocm93IG5ldyB2KDI4KTtyZXR1cm4gS2IoY2MoYS5wYXJlbnQpLGEuaC5yZWFkbGluayhhKSl9LGRiPShhLGMsZCk9PntpZigiIj09PWEpdGhyb3cgbmV3IHYoNDQpO2lmKCJzdHJpbmciPT10eXBlb2YgYyl7dmFyIGU9aGNbY107aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlKXRocm93IEVycm9yKCJVbmtub3duIGZpbGUgb3BlbiBtb2RlOiAiK2MpO2M9ZX1kPWMmNjQ/KCJ1bmRlZmluZWQiPT10eXBlb2YgZD80Mzg6ZCkmNDA5NXwzMjc2ODowO2lmKCJvYmplY3QiPT10eXBlb2YgYSl2YXIgZj1hO2Vsc2V7YT1GYihhKTt0cnl7Zj12YihhLHtmYTohKGMmMTMxMDcyKX0pLm5vZGV9Y2F0Y2goZyl7fX1lPSExO2lmKGMmNjQpaWYoZil7aWYoYyYxMjgpdGhyb3cgbmV3IHYoMjApO31lbHNlIGY9cGMoYSxkLDApLGU9ITA7aWYoIWYpdGhyb3cgbmV3IHYoNDQpOw0KODE5Mj09PShmLm1vZGUmNjE0NDApJiYoYyY9LTUxMyk7aWYoYyY2NTUzNiYmMTYzODQhPT0oZi5tb2RlJjYxNDQwKSl0aHJvdyBuZXcgdig1NCk7aWYoIWUmJihkPWY/NDA5NjA9PT0oZi5tb2RlJjYxNDQwKT8zMjoxNjM4ND09PShmLm1vZGUmNjE0NDApJiYoInIiIT09aWMoYyl8fGMmNTEyKT8zMTpmYyhmLGljKGMpKTo0NCkpdGhyb3cgbmV3IHYoZCk7aWYoYyY1MTImJiFlKXtkPWY7ZD0ic3RyaW5nIj09dHlwZW9mIGQ/dmIoZCx7ZmE6ITB9KS5ub2RlOmQ7aWYoIWQuaC5CKXRocm93IG5ldyB2KDYzKTtpZigxNjM4ND09PShkLm1vZGUmNjE0NDApKXRocm93IG5ldyB2KDMxKTtpZigzMjc2OCE9PShkLm1vZGUmNjE0NDApKXRocm93IG5ldyB2KDI4KTtpZihlPWZjKGQsInciKSl0aHJvdyBuZXcgdihlKTtkLmguQihkLHtzaXplOjAsdGltZXN0YW1wOkRhdGUubm93KCl9KX1jJj0tMTMxNzEzO2Y9bmMoe25vZGU6ZixwYXRoOmNjKGYpLGZsYWdzOmMsc2Vla2FibGU6ITAscG9zaXRpb246MCwNCmo6Zi5qLEZiOltdLGVycm9yOiExfSk7Zi5qLm9wZW4mJmYuai5vcGVuKGYpOyFuLmxvZ1JlYWRGaWxlc3x8YyYxfHwoc2N8fChzYz17fSksYSBpbiBzY3x8KHNjW2FdPTEpKTtyZXR1cm4gZn0seWI9YT0+e2lmKG51bGw9PT1hLmZkKXRocm93IG5ldyB2KDgpO2EuamEmJihhLmphPW51bGwpO3RyeXthLmouY2xvc2UmJmEuai5jbG9zZShhKX1jYXRjaChjKXt0aHJvdyBjO31maW5hbGx5e1piW2EuZmRdPW51bGx9YS5mZD1udWxsfSx0Yz0oYSxjLGQpPT57aWYobnVsbD09PWEuZmQpdGhyb3cgbmV3IHYoOCk7aWYoIWEuc2Vla2FibGV8fCFhLmouSCl0aHJvdyBuZXcgdig3MCk7aWYoMCE9ZCYmMSE9ZCYmMiE9ZCl0aHJvdyBuZXcgdigyOCk7YS5wb3NpdGlvbj1hLmouSChhLGMsZCk7YS5GYj1bXX0sd2I9KGEsYyxkLGUsZik9PntpZigwPmV8fDA+Zil0aHJvdyBuZXcgdigyOCk7aWYobnVsbD09PWEuZmQpdGhyb3cgbmV3IHYoOCk7aWYoMT09PShhLmZsYWdzJjIwOTcxNTUpKXRocm93IG5ldyB2KDgpOw0KaWYoMTYzODQ9PT0oYS5ub2RlLm1vZGUmNjE0NDApKXRocm93IG5ldyB2KDMxKTtpZighYS5qLnJlYWQpdGhyb3cgbmV3IHYoMjgpO3ZhciBnPSJ1bmRlZmluZWQiIT10eXBlb2YgZjtpZighZylmPWEucG9zaXRpb247ZWxzZSBpZighYS5zZWVrYWJsZSl0aHJvdyBuZXcgdig3MCk7Yz1hLmoucmVhZChhLGMsZCxlLGYpO2d8fChhLnBvc2l0aW9uKz1jKTtyZXR1cm4gY30sYWI9KCk9Pnt2fHwodj1mdW5jdGlvbihhLGMpe3RoaXMubmFtZT0iRXJybm9FcnJvciI7dGhpcy5ub2RlPWM7dGhpcy5yYj1mdW5jdGlvbihkKXt0aGlzLnM9ZH07dGhpcy5yYihhKTt0aGlzLm1lc3NhZ2U9IkZTIGVycm9yIn0sdi5wcm90b3R5cGU9RXJyb3IoKSx2LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj12LFs0NF0uZm9yRWFjaChhPT57VmJbYV09bmV3IHYoYSk7VmJbYV0uc3RhY2s9IjxnZW5lcmljIGVycm9yLCBubyBzdGFjaz4ifSkpfSwkYSx1Yz0oYSxjKT0+e3ZhciBkPTA7YSYmKGR8PTM2NSk7YyYmKGR8PQ0KMTQ2KTtyZXR1cm4gZH0sYmI9KGEsYyxkKT0+e2E9RmIoIi9kZXYvIithKTt2YXIgZT11YyghIWMsISFkKTt2Y3x8KHZjPTY0KTt2YXIgZj12YysrPDw4fDA7UGIoZix7b3BlbjpnPT57Zy5zZWVrYWJsZT0hMX0sY2xvc2U6KCk9PntkJiZkLmJ1ZmZlciYmZC5idWZmZXIubGVuZ3RoJiZkKDEwKX0scmVhZDooZyxoLGwsdCk9Pntmb3IodmFyIHA9MCx4PTA7eDx0O3grKyl7dHJ5e3ZhciBVPWMoKX1jYXRjaChRKXt0aHJvdyBuZXcgdigyOSk7fWlmKHZvaWQgMD09PVUmJjA9PT1wKXRocm93IG5ldyB2KDYpO2lmKG51bGw9PT1VfHx2b2lkIDA9PT1VKWJyZWFrO3ArKztoW2wreF09VX1wJiYoZy5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKTtyZXR1cm4gcH0sd3JpdGU6KGcsaCxsLHQpPT57Zm9yKHZhciBwPTA7cDx0O3ArKyl0cnl7ZChoW2wrcF0pfWNhdGNoKHgpe3Rocm93IG5ldyB2KDI5KTt9dCYmKGcubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSk7cmV0dXJuIHB9fSk7cWMoYSxlLA0KZil9LHZjLHdjPXt9LG1jLHNjLHhjPSJ1bmRlZmluZWQiIT10eXBlb2YgVGV4dERlY29kZXI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwOw0KZnVuY3Rpb24geGIoYSxjLGQpe3ZhciBlPWMrZDtmb3IoZD1jO2FbZF0mJiEoZD49ZSk7KSsrZDtpZigxNjxkLWMmJmEuYnVmZmVyJiZ4YylyZXR1cm4geGMuZGVjb2RlKGEuYnVmZmVyIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXI/YS5zbGljZShjLGQpOmEuc3ViYXJyYXkoYyxkKSk7Zm9yKGU9IiI7YzxkOyl7dmFyIGY9YVtjKytdO2lmKGYmMTI4KXt2YXIgZz1hW2MrK10mNjM7aWYoMTkyPT0oZiYyMjQpKWUrPVN0cmluZy5mcm9tQ2hhckNvZGUoKGYmMzEpPDw2fGcpO2Vsc2V7dmFyIGg9YVtjKytdJjYzO2Y9MjI0PT0oZiYyNDApPyhmJjE1KTw8MTJ8Zzw8NnxoOihmJjcpPDwxOHxnPDwxMnxoPDw2fGFbYysrXSY2Mzs2NTUzNj5mP2UrPVN0cmluZy5mcm9tQ2hhckNvZGUoZik6KGYtPTY1NTM2LGUrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8Zj4+MTAsNTYzMjB8ZiYxMDIzKSl9fWVsc2UgZSs9U3RyaW5nLmZyb21DaGFyQ29kZShmKX1yZXR1cm4gZX0NCmZ1bmN0aW9uIHIoYSxjKXtyZXR1cm4gYT94YihpYSgpLGEsYyk6IiJ9ZnVuY3Rpb24geWMoYSxjKXtpZigiLyI9PT1jLmNoYXJBdCgwKSlyZXR1cm4gYzthPS0xMDA9PT1hPyIvIjp6YyhhKS5wYXRoO2lmKDA9PWMubGVuZ3RoKXRocm93IG5ldyB2KDQ0KTtyZXR1cm4gRmIoYSsiLyIrYyl9dmFyIEFjPXZvaWQgMDtmdW5jdGlvbiBCYygpe0FjKz00O3JldHVybiBiKClbQWMtND4+Ml19ZnVuY3Rpb24gemMoYSl7YT1aYlthXTtpZighYSl0aHJvdyBuZXcgdig4KTtyZXR1cm4gYX1mdW5jdGlvbiBDYyhhKXtpZihxKXJldHVybiBEYygxLDEsYSk7UWE9YTtpZighWWEoKSl7dy56YigpO2lmKG4ub25FeGl0KW4ub25FeGl0KGEpO1BhPSEwfXdhKGEsbmV3IEFiKGEpKX1mdW5jdGlvbiBFYyhhKXtRYT1hO2lmKHEpdGhyb3cgRmMoYSksInVud2luZCI7Q2MoYSl9ZnVuY3Rpb24gR2MoYSl7YSBpbnN0YW5jZW9mIEFifHwidW53aW5kIj09YXx8d2EoMSxhKX0NCnZhciB3PXtHOltdLEk6W10sT2E6W10sRjp7fSxoYjpmdW5jdGlvbigpe3E/dy5rYigpOncuamIoKX0samI6ZnVuY3Rpb24oKXtmb3IodmFyIGE9MTthLS07KXcudWEoKX0sa2I6ZnVuY3Rpb24oKXt3LnJlY2VpdmVPYmplY3RUcmFuc2Zlcj13Lm9iO3cudGhyZWFkSW5pdFRMUz13Lk5hO3cuc2V0RXhpdFN0YXR1cz13LkxhO25vRXhpdFJ1bnRpbWU9ITF9LExhOmZ1bmN0aW9uKGEpe1FhPWF9LFdiOlsiJHRlcm1pbmF0ZVdvcmtlciJdLHpiOmZ1bmN0aW9uKCl7Zm9yKHZhciBhIG9mIHcuSSlCYihhKTtmb3IoYSBvZiB3LkcpQmIoYSk7dy5HPVtdO3cuST1bXTt3LkY9W119LHFiOmZ1bmN0aW9uKGEpe3ZhciBjPWEuQTtkZWxldGUgdy5GW2NdO3cuRy5wdXNoKGEpO3cuSS5zcGxpY2Uody5JLmluZGV4T2YoYSksMSk7YS5BPTA7emEmJmEudW5yZWYoKTtIYyhjKX0sb2I6ZnVuY3Rpb24oKXt9LE5hOmZ1bmN0aW9uKCl7dy5PYS5mb3JFYWNoKGE9PmEoKSl9LEVhOmE9Pm5ldyBQcm9taXNlKGM9Pg0Ke2Eub25tZXNzYWdlPWc9PntnPWcuZGF0YTt2YXIgaD1nLmNtZDthLkEmJih3LlhhPWEuQSk7aWYoZy50YXJnZXRUaHJlYWQmJmcudGFyZ2V0VGhyZWFkIT1JYygpKXt2YXIgbD13LkZbZy5WYl07bD9sLnBvc3RNZXNzYWdlKGcsZy50cmFuc2Zlckxpc3QpOkxhKCdJbnRlcm5hbCBlcnJvciEgV29ya2VyIHNlbnQgYSBtZXNzYWdlICInK2grJyIgdG8gdGFyZ2V0IHB0aHJlYWQgJytnLnRhcmdldFRocmVhZCsiLCBidXQgdGhhdCB0aHJlYWQgbm8gbG9uZ2VyIGV4aXN0cyEiKX1lbHNlIGlmKCJjaGVja01haWxib3giPT09aClKYygpO2Vsc2UgaWYoInNwYXduVGhyZWFkIj09PWgpRGIoZyk7ZWxzZSBpZigiY2xlYW51cFRocmVhZCI9PT1oKUNiKGcudGhyZWFkKTtlbHNlIGlmKCJraWxsVGhyZWFkIj09PWgpZz1nLnRocmVhZCxoPXcuRltnXSxkZWxldGUgdy5GW2ddLEJiKGgpLEhjKGcpLHcuSS5zcGxpY2Uody5JLmluZGV4T2YoaCksMSksaC5BPTA7ZWxzZSBpZigiY2FuY2VsVGhyZWFkIj09PQ0KaCl3LkZbZy50aHJlYWRdLnBvc3RNZXNzYWdlKHtjbWQ6ImNhbmNlbCJ9KTtlbHNlIGlmKCJsb2FkZWQiPT09aClhLmxvYWRlZD0hMCx6YSYmIWEuQSYmYS51bnJlZigpLGMoYSk7ZWxzZSBpZigicHJpbnQiPT09aClLYSgiVGhyZWFkICIrZy50aHJlYWRJZCsiOiAiK2cudGV4dCk7ZWxzZSBpZigicHJpbnRFcnIiPT09aClMYSgiVGhyZWFkICIrZy50aHJlYWRJZCsiOiAiK2cudGV4dCk7ZWxzZSBpZigiYWxlcnQiPT09aClhbGVydCgiVGhyZWFkICIrZy50aHJlYWRJZCsiOiAiK2cudGV4dCk7ZWxzZSBpZigic2V0aW1tZWRpYXRlIj09PWcudGFyZ2V0KWEucG9zdE1lc3NhZ2UoZyk7ZWxzZSBpZigiY2FsbEhhbmRsZXIiPT09aCluW2cuaGFuZGxlcl0oLi4uZy5hcmdzKTtlbHNlIGgmJkxhKCJ3b3JrZXIgc2VudCBhbiB1bmtub3duIGNvbW1hbmQgIitoKTt3LlhhPXZvaWQgMH07YS5vbmVycm9yPWc9PntMYSgid29ya2VyIHNlbnQgYW4gZXJyb3IhICIrZy5maWxlbmFtZSsiOiIrZy5saW5lbm8rDQoiOiAiK2cubWVzc2FnZSk7dGhyb3cgZzt9O3phJiYoYS5vbigibWVzc2FnZSIsZnVuY3Rpb24oZyl7YS5vbm1lc3NhZ2Uoe2RhdGE6Z30pfSksYS5vbigiZXJyb3IiLGZ1bmN0aW9uKGcpe2Eub25lcnJvcihnKX0pLGEub24oImRldGFjaGVkRXhpdCIsZnVuY3Rpb24oKXt9KSk7dmFyIGQ9W10sZT1bIm9uRXhpdCIsIm9uQWJvcnQiLCJwcmludCIsInByaW50RXJyIl0sZjtmb3IoZiBvZiBlKW4uaGFzT3duUHJvcGVydHkoZikmJmQucHVzaChmKTthLnBvc3RNZXNzYWdlKHtjbWQ6ImxvYWQiLGhhbmRsZXJzOmQsdXJsT3JCbG9iOm4ubWFpblNjcmlwdFVybE9yQmxvYnx8X3NjcmlwdERpcix3YXNtTWVtb3J5OmNhLHdhc21Nb2R1bGU6T2F9KX0pLG1iOmZ1bmN0aW9uKGEpe2lmKHEpcmV0dXJuIGEoKTtQcm9taXNlLmFsbCh3LkcubWFwKHcuRWEpKS50aGVuKGEpfSx1YTpmdW5jdGlvbigpe3ZhciBhPUJhKCJteGRyYXdhc3NlbWJseV9taW4ud29ya2VyLmpzIik7YT1uZXcgV29ya2VyKGEpOw0Kdy5HLnB1c2goYSl9LFphOmZ1bmN0aW9uKCl7MD09dy5HLmxlbmd0aCYmKHcudWEoKSx3LkVhKHcuR1swXSkpO3JldHVybiB3LkcucG9wKCl9fTtuLlBUaHJlYWQ9dztmdW5jdGlvbiBmYihhKXtmb3IoOzA8YS5sZW5ndGg7KWEuc2hpZnQoKShuKX1uLmVzdGFibGlzaFN0YWNrU3BhY2U9ZnVuY3Rpb24oKXt2YXIgYT1JYygpLGM9YigpW2ErNTI+PjJdO2E9YigpW2ErNTY+PjJdO0tjKGMsYy1hKTtMYyhjKX07ZnVuY3Rpb24gRmMoYSl7aWYocSlyZXR1cm4gRGMoMiwwLGEpO0VjKGEpfXZhciBNYz1bXTtmdW5jdGlvbiBOYyhhKXt2YXIgYz1NY1thXTtjfHwoYT49TWMubGVuZ3RoJiYoTWMubGVuZ3RoPWErMSksTWNbYV09Yz1UYS5nZXQoYSkpO3JldHVybiBjfW4uaW52b2tlRW50cnlQb2ludD1mdW5jdGlvbihhLGMpe2E9TmMoYSkoYyk7WWEoKT93LkxhKGEpOk9jKGEpfTtmdW5jdGlvbiBQYyhhLGMsZCxlKXtyZXR1cm4gcT9EYygzLDEsYSxjLGQsZSk6UWMoYSxjLGQsZSl9DQpmdW5jdGlvbiBRYyhhLGMsZCxlKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyKXJldHVybiBMYSgiQ3VycmVudCBlbnZpcm9ubWVudCBkb2VzIG5vdCBzdXBwb3J0IFNoYXJlZEFycmF5QnVmZmVyLCBwdGhyZWFkcyBhcmUgbm90IGF2YWlsYWJsZSEiKSw2O3ZhciBmPVtdO2lmKHEmJjA9PT1mLmxlbmd0aClyZXR1cm4gUGMoYSxjLGQsZSk7YT17eWI6ZCxBOmEsVGE6ZSxFYjpmfTtyZXR1cm4gcT8oYS5JYj0ic3Bhd25UaHJlYWQiLHBvc3RNZXNzYWdlKGEsZiksMCk6RGIoYSl9DQpmdW5jdGlvbiBSYyhhLGMsZCl7aWYocSlyZXR1cm4gRGMoNCwxLGEsYyxkKTtBYz1kO3RyeXt2YXIgZT16YyhhKTtzd2l0Y2goYyl7Y2FzZSAwOnZhciBmPUJjKCk7cmV0dXJuIDA+Zj8tMjg6bmMoZSxmKS5mZDtjYXNlIDE6Y2FzZSAyOnJldHVybiAwO2Nhc2UgMzpyZXR1cm4gZS5mbGFncztjYXNlIDQ6cmV0dXJuIGY9QmMoKSxlLmZsYWdzfD1mLDA7Y2FzZSA1OnJldHVybiBmPUJjKCksY2EuYnVmZmVyIT1kYS5idWZmZXImJmhhKCksUmFbZiswPj4xXT0yLDA7Y2FzZSA2OmNhc2UgNzpyZXR1cm4gMDtjYXNlIDE2OmNhc2UgODpyZXR1cm4tMjg7Y2FzZSA5OnJldHVybiBiKClbU2MoKT4+Ml09MjgsLTE7ZGVmYXVsdDpyZXR1cm4tMjh9fWNhdGNoKGcpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2N8fCJFcnJub0Vycm9yIiE9PWcubmFtZSl0aHJvdyBnO3JldHVybi1nLnN9fQ0KZnVuY3Rpb24gVGMoYSxjLGQpe2lmKHEpcmV0dXJuIERjKDUsMSxhLGMsZCk7QWM9ZDt0cnl7dmFyIGU9emMoYSk7c3dpdGNoKGMpe2Nhc2UgMjE1MDk6Y2FzZSAyMTUwNTpyZXR1cm4gZS50dHk/MDotNTk7Y2FzZSAyMTUxMDpjYXNlIDIxNTExOmNhc2UgMjE1MTI6Y2FzZSAyMTUwNjpjYXNlIDIxNTA3OmNhc2UgMjE1MDg6cmV0dXJuIGUudHR5PzA6LTU5O2Nhc2UgMjE1MTk6aWYoIWUudHR5KXJldHVybi01OTt2YXIgZj1CYygpO3JldHVybiBiKClbZj4+Ml09MDtjYXNlIDIxNTIwOnJldHVybiBlLnR0eT8tMjg6LTU5O2Nhc2UgMjE1MzE6YT1mPUJjKCk7aWYoIWUuai5sYil0aHJvdyBuZXcgdig1OSk7cmV0dXJuIGUuai5sYihlLGMsYSk7Y2FzZSAyMTUyMzpyZXR1cm4gZS50dHk/MDotNTk7Y2FzZSAyMTUyNDpyZXR1cm4gZS50dHk/MDotNTk7ZGVmYXVsdDpyZXR1cm4tMjh9fWNhdGNoKGcpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2N8fCJFcnJub0Vycm9yIiE9PWcubmFtZSl0aHJvdyBnOw0KcmV0dXJuLWcuc319ZnVuY3Rpb24gVWMoYSxjLGQsZSl7aWYocSlyZXR1cm4gRGMoNiwxLGEsYyxkLGUpO0FjPWU7dHJ5e2M9cihjKTtjPXljKGEsYyk7dmFyIGY9ZT9CYygpOjA7cmV0dXJuIGRiKGMsZCxmKS5mZH1jYXRjaChnKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdjfHwiRXJybm9FcnJvciIhPT1nLm5hbWUpdGhyb3cgZztyZXR1cm4tZy5zfX1mdW5jdGlvbiBWYyhhKXtpZihxKXJldHVybiBEYyg3LDEsYSk7dHJ5e3JldHVybiBhPXIoYSkscmMoYSksMH1jYXRjaChjKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIHdjfHwiRXJybm9FcnJvciIhPT1jLm5hbWUpdGhyb3cgYztyZXR1cm4tYy5zfX0NCmZ1bmN0aW9uIFdjKGEsYyxkKXtpZihxKXJldHVybiBEYyg4LDEsYSxjLGQpO3RyeXtjPXIoYyk7Yz15YyhhLGMpO2lmKDA9PT1kKXthPWM7dmFyIGU9dmIoYSx7cGFyZW50OiEwfSkubm9kZTtpZighZSl0aHJvdyBuZXcgdig0NCk7dmFyIGY9SGIoYSksZz1XYihlLGYpLGg9a2MoZSxmLCExKTtpZihoKXRocm93IG5ldyB2KGgpO2lmKCFlLmgudW5saW5rKXRocm93IG5ldyB2KDYzKTtpZihnLk0pdGhyb3cgbmV3IHYoMTApO2UuaC51bmxpbmsoZSxmKTtlYyhnKX1lbHNlIDUxMj09PWQ/cmMoYyk6TmEoIkludmFsaWQgZmxhZ3MgcGFzc2VkIHRvIHVubGlua2F0Iik7cmV0dXJuIDB9Y2F0Y2gobCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3Y3x8IkVycm5vRXJyb3IiIT09bC5uYW1lKXRocm93IGw7cmV0dXJuLWwuc319ZnVuY3Rpb24gWGMoYSl7aWYoIVBhKXRyeXtpZihhKCksIVlhKCkpdHJ5e3E/T2MoUWEpOkVjKFFhKX1jYXRjaChjKXtHYyhjKX19Y2F0Y2goYyl7R2MoYyl9fQ0KZnVuY3Rpb24gWWMoYSl7ImZ1bmN0aW9uIj09PXR5cGVvZiBBdG9taWNzLkdiJiYoQXRvbWljcy5HYihiKCksYT4+MixhKS52YWx1ZS50aGVuKEpjKSxhKz0xMjgsQXRvbWljcy5zdG9yZShiKCksYT4+MiwxKSl9bi5fX2Vtc2NyaXB0ZW5fdGhyZWFkX21haWxib3hfYXdhaXQ9WWM7ZnVuY3Rpb24gSmMoKXt2YXIgYT1JYygpO2EmJihZYyhhKSxYYygoKT0+WmMoKSkpfW4uY2hlY2tNYWlsYm94PUpjO3ZhciAkYz1bXTtmdW5jdGlvbiBhZChhKXtiZHx8KGJkPXt9KTtiZFthXXx8KGJkW2FdPTEsemEmJihhPSJ3YXJuaW5nOiAiK2EpLExhKGEpKX12YXIgYmQsY2Q7Y2Q9emE/KCk9Pnt2YXIgYT1wcm9jZXNzLmhydGltZSgpO3JldHVybiAxRTMqYVswXSthWzFdLzFFNn06KCk9PnBlcmZvcm1hbmNlLnRpbWVPcmlnaW4rcGVyZm9ybWFuY2Uubm93KCk7DQpmdW5jdGlvbiBkZChhLGMpe2lmKDA+PWEpcmV0dXJuIGE7dmFyIGQ9MzI+PWM/TWF0aC5hYnMoMTw8Yy0xKTpNYXRoLnBvdygyLGMtMSk7YT49ZCYmKDMyPj1jfHxhPmQpJiYoYT0tMipkK2EpO3JldHVybiBhfWZ1bmN0aW9uIGVkKGEsYyl7cmV0dXJuIDA8PWE/YTozMj49Yz8yKk1hdGguYWJzKDE8PGMtMSkrYTpNYXRoLnBvdygyLGMpK2F9ZnVuY3Rpb24gZmQoYSl7Zm9yKHZhciBjPWE7aWEoKVtjXTspKytjO3JldHVybiBjLWF9DQpmdW5jdGlvbiBnZChhLGMpe2Z1bmN0aW9uIGQoZmEpe3ZhciBBPWU7KCJkb3VibGUiPT09ZmF8fCJpNjQiPT09ZmEpJiZBJjcmJihBKz00KTtlPUE7ImRvdWJsZSI9PT1mYT8oZmE9cWEoKVtlPj4zXSxlKz04KToiaTY0Ij09ZmE/KGZhPVtiKClbZT4+Ml0sYigpW2UrND4+Ml1dLGUrPTgpOihmYT1iKClbZT4+Ml0sZSs9NCk7cmV0dXJuIGZhfWZvcih2YXIgZT1jLGY9W10sZyxoOzspe3ZhciBsPWE7Zz1iYSgpW2E+PjBdO2lmKDA9PT1nKWJyZWFrO2g9YmEoKVthKzE+PjBdO2lmKDM3PT1nKXt2YXIgdD0hMSxwPWM9ITEseD0hMSxVPSExO2E6Zm9yKDs7KXtzd2l0Y2goaCl7Y2FzZSA0Mzp0PSEwO2JyZWFrO2Nhc2UgNDU6Yz0hMDticmVhaztjYXNlIDM1OnA9ITA7YnJlYWs7Y2FzZSA0ODppZih4KWJyZWFrIGE7ZWxzZXt4PSEwO2JyZWFrfWNhc2UgMzI6VT0hMDticmVhaztkZWZhdWx0OmJyZWFrIGF9YSsrO2g9YmEoKVthKzE+PjBdfXZhciBRPTA7aWYoNDI9PWgpUT1kKCJpMzIiKSwNCmErKyxoPWJhKClbYSsxPj4wXTtlbHNlIGZvcig7NDg8PWgmJjU3Pj1oOylRPTEwKlErKGgtNDgpLGErKyxoPWJhKClbYSsxPj4wXTt2YXIgaz0hMSx6PS0xO2lmKDQ2PT1oKXt6PTA7az0hMDthKys7aD1iYSgpW2ErMT4+MF07aWYoNDI9PWgpej1kKCJpMzIiKSxhKys7ZWxzZSBmb3IoOzspe2g9YmEoKVthKzE+PjBdO2lmKDQ4Pmh8fDU3PGgpYnJlYWs7ej0xMCp6KyhoLTQ4KTthKyt9aD1iYSgpW2ErMT4+MF19MD56JiYoej02LGs9ITEpO3N3aXRjaChTdHJpbmcuZnJvbUNoYXJDb2RlKGgpKXtjYXNlICJoIjpoPWJhKClbYSsyPj4wXTtpZigxMDQ9PWgpe2ErKzt2YXIgeT0xfWVsc2UgeT0yO2JyZWFrO2Nhc2UgImwiOmg9YmEoKVthKzI+PjBdOzEwOD09aD8oYSsrLHk9OCk6eT00O2JyZWFrO2Nhc2UgIkwiOmNhc2UgInEiOmNhc2UgImoiOnk9ODticmVhaztjYXNlICJ6IjpjYXNlICJ0IjpjYXNlICJJIjp5PTQ7YnJlYWs7ZGVmYXVsdDp5PW51bGx9eSYmYSsrO2g9YmEoKVthKzE+Pg0KMF07c3dpdGNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaCkpe2Nhc2UgImQiOmNhc2UgImkiOmNhc2UgInUiOmNhc2UgIm8iOmNhc2UgIngiOmNhc2UgIlgiOmNhc2UgInAiOmw9MTAwPT1ofHwxMDU9PWg7eT15fHw0O2c9ZCgiaSIrOCp5KTs4PT15JiYoZz0xMTc9PWg/KGdbMF0+Pj4wKSs0Mjk0OTY3Mjk2KihnWzFdPj4+MCk6KGdbMF0+Pj4wKSs0Mjk0OTY3Mjk2KmdbMV0pOzQ+PXkmJihnPShsP2RkOmVkKShnJk1hdGgucG93KDI1Nix5KS0xLDgqeSkpO3ZhciBaPU1hdGguYWJzKGcpO2w9IiI7aWYoMTAwPT1ofHwxMDU9PWgpdmFyIHU9ZGQoZyw4KnkpLnRvU3RyaW5nKDEwKTtlbHNlIGlmKDExNz09aCl1PWVkKGcsOCp5KS50b1N0cmluZygxMCksZz1NYXRoLmFicyhnKTtlbHNlIGlmKDExMT09aCl1PShwPyIwIjoiIikrWi50b1N0cmluZyg4KTtlbHNlIGlmKDEyMD09aHx8ODg9PWgpe2w9cCYmMCE9Zz8iMHgiOiIiO2lmKDA+Zyl7Zz0tZzt1PShaLTEpLnRvU3RyaW5nKDE2KTtaPVtdOw0KZm9yKHA9MDtwPHUubGVuZ3RoO3ArKylaLnB1c2goKDE1LXBhcnNlSW50KHVbcF0sMTYpKS50b1N0cmluZygxNikpO2Zvcih1PVouam9pbigiIik7dS5sZW5ndGg8Mip5Oyl1PSJmIit1fWVsc2UgdT1aLnRvU3RyaW5nKDE2KTs4OD09aCYmKGw9bC50b1VwcGVyQ2FzZSgpLHU9dS50b1VwcGVyQ2FzZSgpKX1lbHNlIDExMj09aCYmKDA9PT1aP3U9IihuaWwpIjoobD0iMHgiLHU9Wi50b1N0cmluZygxNikpKTtpZihrKWZvcig7dS5sZW5ndGg8ejspdT0iMCIrdTswPD1nJiYodD9sPSIrIitsOlUmJihsPSIgIitsKSk7Ii0iPT11LmNoYXJBdCgwKSYmKGw9Ii0iK2wsdT11LnN1YnN0cigxKSk7Zm9yKDtsLmxlbmd0aCt1Lmxlbmd0aDxROyljP3UrPSIgIjp4P3U9IjAiK3U6bD0iICIrbDt1PWwrdTt1LnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGZhKXtmLnB1c2goZmEuY2hhckNvZGVBdCgwKSl9KTticmVhaztjYXNlICJmIjpjYXNlICJGIjpjYXNlICJlIjpjYXNlICJFIjpjYXNlICJnIjpjYXNlICJHIjpnPQ0KZCgiZG91YmxlIik7aWYoaXNOYU4oZykpdT0ibmFuIix4PSExO2Vsc2UgaWYoaXNGaW5pdGUoZykpe2s9ITE7eT1NYXRoLm1pbih6LDIwKTtpZigxMDM9PWh8fDcxPT1oKWs9ITAsej16fHwxLHk9cGFyc2VJbnQoZy50b0V4cG9uZW50aWFsKHkpLnNwbGl0KCJlIilbMV0sMTApLHo+eSYmLTQ8PXk/KGg9KDEwMz09aD8iZiI6IkYiKS5jaGFyQ29kZUF0KDApLHotPXkrMSk6KGg9KDEwMz09aD8iZSI6IkUiKS5jaGFyQ29kZUF0KDApLHotLSkseT1NYXRoLm1pbih6LDIwKTtpZigxMDE9PWh8fDY5PT1oKXU9Zy50b0V4cG9uZW50aWFsKHkpLC9bZUVdWy0rXVxkJC8udGVzdCh1KSYmKHU9dS5zbGljZSgwLC0xKSsiMCIrdS5zbGljZSgtMSkpO2Vsc2UgaWYoMTAyPT1ofHw3MD09aCl1PWcudG9GaXhlZCh5KSwwPT09ZyYmKDA+Z3x8MD09PWcmJi1JbmZpbml0eT09PTEvZykmJih1PSItIit1KTtsPXUuc3BsaXQoImUiKTtpZihrJiYhcClmb3IoOzE8bFswXS5sZW5ndGgmJmxbMF0uaW5jbHVkZXMoIi4iKSYmDQooIjAiPT1sWzBdLnNsaWNlKC0xKXx8Ii4iPT1sWzBdLnNsaWNlKC0xKSk7KWxbMF09bFswXS5zbGljZSgwLC0xKTtlbHNlIGZvcihwJiYtMT09dS5pbmRleE9mKCIuIikmJihsWzBdKz0iLiIpO3o+eSsrOylsWzBdKz0iMCI7dT1sWzBdKygxPGwubGVuZ3RoPyJlIitsWzFdOiIiKTs2OT09aCYmKHU9dS50b1VwcGVyQ2FzZSgpKTswPD1nJiYodD91PSIrIit1OlUmJih1PSIgIit1KSl9ZWxzZSB1PSgwPmc/Ii0iOiIiKSsiaW5mIix4PSExO2Zvcig7dS5sZW5ndGg8UTspdT1jP3UrIiAiOiF4fHwiLSIhPXVbMF0mJiIrIiE9dVswXT8oeD8iMCI6IiAiKSt1OnVbMF0rIjAiK3Uuc2xpY2UoMSk7OTc+aCYmKHU9dS50b1VwcGVyQ2FzZSgpKTt1LnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGZhKXtmLnB1c2goZmEuY2hhckNvZGVBdCgwKSl9KTticmVhaztjYXNlICJzIjp4PSh0PWQoImk4KiIpKT9mZCh0KTo2O2smJih4PU1hdGgubWluKHgseikpO2lmKCFjKWZvcig7eDxRLS07KWYucHVzaCgzMik7DQppZih0KWZvcihwPTA7cDx4O3ArKylmLnB1c2goaWEoKVt0Kys+PjBdKTtlbHNlIGY9Zi5jb25jYXQoTWIoIihudWxsKSIuc3Vic3RyKDAseCksITApKTtpZihjKWZvcig7eDxRLS07KWYucHVzaCgzMik7YnJlYWs7Y2FzZSAiYyI6Zm9yKGMmJmYucHVzaChkKCJpOCIpKTswPC0tUTspZi5wdXNoKDMyKTtjfHxmLnB1c2goZCgiaTgiKSk7YnJlYWs7Y2FzZSAibiI6Yz1kKCJpMzIqIik7YigpW2M+PjJdPWYubGVuZ3RoO2JyZWFrO2Nhc2UgIiUiOmYucHVzaChnKTticmVhaztkZWZhdWx0OmZvcihwPWw7cDxhKzI7cCsrKWYucHVzaChiYSgpW3A+PjBdKX1hKz0yfWVsc2UgZi5wdXNoKGcpLGErPTF9cmV0dXJuIGZ9DQpmdW5jdGlvbiBoZChhKXtpZighYXx8IWEuY2FsbGVlfHwhYS5jYWxsZWUubmFtZSlyZXR1cm5bbnVsbCwiIiwiIl07dmFyIGM9YS5jYWxsZWUubmFtZSxkPSIoIixlPSEwLGY7Zm9yKGYgaW4gYSl7dmFyIGc9YVtmXTtlfHwoZCs9IiwgIik7ZT0hMTtkPSJudW1iZXIiPT10eXBlb2YgZ3x8InN0cmluZyI9PXR5cGVvZiBnP2QrZzpkKygiKCIrdHlwZW9mIGcrIikiKX1kKz0iKSI7YT0oYT1hLmNhbGxlZS5jYWxsZXIpP2EuYXJndW1lbnRzOltdO2UmJihkPSIiKTtyZXR1cm5bYSxjLGRdfQ0KZnVuY3Rpb24gamQoYSl7YTp7dmFyIGM9RXJyb3IoKTtpZighYy5zdGFjayl7dHJ5e3Rocm93IEVycm9yKCk7fWNhdGNoKHope2M9en1pZighYy5zdGFjayl7Yz0iKG5vIHN0YWNrIHRyYWNlIGF2YWlsYWJsZSkiO2JyZWFrIGF9fWM9Yy5zdGFjay50b1N0cmluZygpfWM9Yy5zbGljZShjLmluZGV4T2YoIlxuIixNYXRoLm1heChjLmxhc3RJbmRleE9mKCJfZW1zY3JpcHRlbl9sb2ciKSxjLmxhc3RJbmRleE9mKCJfZW1zY3JpcHRlbl9nZXRfY2FsbHN0YWNrIikpKSsxKTthJjMyJiZhZCgiRU1fTE9HX0RFTUFOR0xFIGlzIGRlcHJlY2F0ZWQ7IGlnbm9yaW5nIik7YSY4JiYidW5kZWZpbmVkIj09dHlwZW9mIGVtc2NyaXB0ZW5fc291cmNlX21hcCYmKGFkKCdTb3VyY2UgbWFwIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUsIGVtc2NyaXB0ZW5fbG9nIHdpdGggRU1fTE9HX0NfU1RBQ0sgd2lsbCBiZSBpZ25vcmVkLiBCdWlsZCB3aXRoICItLXByZS1qcyAkRU1TQ1JJUFRFTi9zcmMvZW1zY3JpcHRlbi1zb3VyY2UtbWFwLm1pbi5qcyIgbGlua2VyIGZsYWcgdG8gYWRkIHNvdXJjZSBtYXAgbG9hZGluZyB0byBjb2RlLicpLA0KYT1hXjh8MTYpO3ZhciBkPW51bGw7aWYoYSYxMjgpZm9yKGQ9aGQoYXJndW1lbnRzKTtkWzFdLmluY2x1ZGVzKCJfZW1zY3JpcHRlbl8iKTspZD1oZChkWzBdKTt2YXIgZT1jLnNwbGl0KCJcbiIpO2M9IiI7dmFyIGY9UmVnRXhwKCJcXHMqKC4qPylAKC4qPyk6KFswLTldKyk6KFswLTldKykiKSxnPVJlZ0V4cCgiXFxzKiguKj8pQCguKik6KC4qKSg6KC4qKSk/IiksaD1SZWdFeHAoIlxccyphdCAoLio/KSBcXCgoLiopOiguKik6KC4qKVxcKSIpLGw7Zm9yKGwgaW4gZSl7dmFyIHQ9ZVtsXSxwO2lmKChwPWguZXhlYyh0KSkmJjU9PXAubGVuZ3RoKXt0PXBbMV07dmFyIHg9cFsyXTt2YXIgVT1wWzNdO3A9cFs0XX1lbHNlIGlmKChwPWYuZXhlYyh0KSl8fChwPWcuZXhlYyh0KSkscCYmNDw9cC5sZW5ndGgpdD1wWzFdLHg9cFsyXSxVPXBbM10scD1wWzRdfDA7ZWxzZXtjKz10KyJcbiI7Y29udGludWV9dmFyIFE9ITE7aWYoYSY4KXt2YXIgaz1lbXNjcmlwdGVuX3NvdXJjZV9tYXAuU2Ioe2xpbmU6VSwNClZhOnB9KTtpZihRPWsmJmsuc291cmNlKWEmNjQmJihrLnNvdXJjZT1rLnNvdXJjZS5zdWJzdHJpbmcoay5zb3VyY2UucmVwbGFjZSgvXFwvZywiLyIpLmxhc3RJbmRleE9mKCIvIikrMSkpLGMrPSIgICAgYXQgIit0KyIgKCIray5zb3VyY2UrIjoiK2subGluZSsiOiIray5WYSsiKVxuIn1pZihhJjE2fHwhUSlhJjY0JiYoeD14LnN1YnN0cmluZyh4LnJlcGxhY2UoL1xcL2csIi8iKS5sYXN0SW5kZXhPZigiLyIpKzEpKSxjKz0oUT8iICAgICA9ICIrdDoiICAgIGF0ICIrdCkrIiAoIit4KyI6IitVKyI6IitwKyIpXG4iO2EmMTI4JiZkWzBdJiYoZFsxXT09dCYmMDxkWzJdLmxlbmd0aCYmKGM9Yy5yZXBsYWNlKC9ccyskLywiIiksYys9IiB3aXRoIHZhbHVlczogIitkWzFdK2RbMl0rIlxuIiksZD1oZChkWzBdKSl9cmV0dXJuIGM9Yy5yZXBsYWNlKC9ccyskLywiIil9ZnVuY3Rpb24ga2QoYSl7dmFyIGM9bGQoKTthPWEoKTtMYyhjKTtyZXR1cm4gYX0NCmZ1bmN0aW9uIERjKGEsYyl7dmFyIGQ9YXJndW1lbnRzLmxlbmd0aC0yLGU9YXJndW1lbnRzO3JldHVybiBrZCgoKT0+e2Zvcih2YXIgZj1tZCg4KmQpLGc9Zj4+MyxoPTA7aDxkO2grKyl7dmFyIGw9ZVsyK2hdO3FhKClbZytoXT1sfXJldHVybiBuZChhLGQsZixjKX0pfXZhciBvZD1bXSxwZD17fTtmdW5jdGlvbiBxZChhLGMpe3RyeXt2YXIgZD1pbmRleGVkREIub3BlbigiZW1zY3JpcHRlbl9maWxlc3lzdGVtIiwxKX1jYXRjaChlKXtjKGUpO3JldHVybn1kLm9udXBncmFkZW5lZWRlZD1lPT57ZT1lLnRhcmdldC5yZXN1bHQ7ZS5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKCJGSUxFUyIpJiZlLmRlbGV0ZU9iamVjdFN0b3JlKCJGSUxFUyIpO2UuY3JlYXRlT2JqZWN0U3RvcmUoIkZJTEVTIil9O2Qub25zdWNjZXNzPWU9PmEoZS50YXJnZXQucmVzdWx0KTtkLm9uZXJyb3I9ZT0+YyhlKX12YXIgcmQ7DQpmdW5jdGlvbiBzZChhLGMsZCxlLGYpe2Z1bmN0aW9uIGcoKXt2YXIgZWE9MCxFYT0wO0EucmVzcG9uc2UmJnUmJjA9PT1tKClbYSsxMj4+Ml0mJihFYT1BLnJlc3BvbnNlLmJ5dGVMZW5ndGgpOzA8RWEmJihlYT10ZChFYSksaWEoKS5zZXQobmV3IFVpbnQ4QXJyYXkoQS5yZXNwb25zZSksZWEpKTttKClbYSsxMj4+Ml09ZWE7dWQoYSsxNixFYSk7dWQoYSsyNCwwKTsoZWE9QS5yZXNwb25zZT9BLnJlc3BvbnNlLmJ5dGVMZW5ndGg6MCkmJnVkKGErMzIsZWEpO2thKClbYSs0MD4+MV09QS5yZWFkeVN0YXRlO2thKClbYSs0Mj4+MV09QS5zdGF0dXM7QS5zdGF0dXNUZXh0JiZ2ZChBLnN0YXR1c1RleHQsYSs0NCw2NCl9dmFyIGg9bSgpW2ErOD4+Ml07aWYoaCl7dmFyIGw9cihoKSx0PWErMTEyLHA9cih0KTtwfHwocD0iR0VUIik7bSgpO3ZhciB4PW0oKVt0KzUyPj4yXSxVPW0oKVt0KzU2Pj4yXSxRPSEhbSgpW3QrNjA+PjJdO20oKTt2YXIgaz1tKClbdCs2OD4+Ml0sej1tKClbdCs3Mj4+DQoyXTtoPW0oKVt0Kzc2Pj4yXTt2YXIgeT1tKClbdCs4MD4+Ml0sWj1tKClbdCs4ND4+Ml07dD1tKClbdCs4OD4+Ml07dmFyIHU9ISEoeCYxKSxmYT0hISh4JjIpO3g9ISEoeCY2NCk7az1rP3Ioayk6dm9pZCAwO3o9ej9yKHopOnZvaWQgMDt2YXIgQT1uZXcgWE1MSHR0cFJlcXVlc3Q7QS53aXRoQ3JlZGVudGlhbHM9UTtBLm9wZW4ocCxsLCF4LGsseik7eHx8KEEudGltZW91dD1VKTtBLlliPWw7QS5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIjt5JiYobD1yKHkpLEEub3ZlcnJpZGVNaW1lVHlwZShsKSk7aWYoaClmb3IoOzspe3A9bSgpW2g+PjJdO2lmKCFwKWJyZWFrO2w9bSgpW2grND4+Ml07aWYoIWwpYnJlYWs7aCs9ODtwPXIocCk7bD1yKGwpO0Euc2V0UmVxdWVzdEhlYWRlcihwLGwpfXZhciBKYT1tKClbYSswPj4yXTtwZFtKYV09QTtoPVomJnQ/aWEoKS5zbGljZShaLFordCk6bnVsbDtBLm9ubG9hZD1lYT0+e0phIGluIHBkJiYoZygpLDIwMDw9QS5zdGF0dXMmJjMwMD5BLnN0YXR1cz8NCmMmJmMoYSxBLGVhKTpkJiZkKGEsQSxlYSkpfTtBLm9uZXJyb3I9ZWE9PntKYSBpbiBwZCYmKGcoKSxkJiZkKGEsQSxlYSkpfTtBLm9udGltZW91dD1lYT0+e0phIGluIHBkJiZkJiZkKGEsQSxlYSl9O0Eub25wcm9ncmVzcz1lYT0+e2lmKEphIGluIHBkKXt2YXIgRWE9dSYmZmEmJkEucmVzcG9uc2U/QS5yZXNwb25zZS5ieXRlTGVuZ3RoOjAsYWE9MDswPEVhJiZ1JiZmYSYmKGFhPXRkKEVhKSxpYSgpLnNldChuZXcgVWludDhBcnJheShBLnJlc3BvbnNlKSxhYSkpO20oKVthKzEyPj4yXT1hYTt1ZChhKzE2LEVhKTt1ZChhKzI0LGVhLmxvYWRlZC1FYSk7dWQoYSszMixlYS50b3RhbCk7a2EoKVthKzQwPj4xXT1BLnJlYWR5U3RhdGU7Mzw9QS5yZWFkeVN0YXRlJiYwPT09QS5zdGF0dXMmJjA8ZWEubG9hZGVkJiYoQS5zdGF0dXM9MjAwKTtrYSgpW2ErNDI+PjFdPUEuc3RhdHVzO0Euc3RhdHVzVGV4dCYmdmQoQS5zdGF0dXNUZXh0LGErNDQsNjQpO2UmJmUoYSxBLGVhKTthYSYmd2QoYWEpfX07DQpBLm9ucmVhZHlzdGF0ZWNoYW5nZT1lYT0+e0phIGluIHBkPyhrYSgpW2ErNDA+PjFdPUEucmVhZHlTdGF0ZSwyPD1BLnJlYWR5U3RhdGUmJihrYSgpW2ErNDI+PjFdPUEuc3RhdHVzKSxmJiZmKGEsQSxlYSkpOi0tWGF9O3RyeXtBLnNlbmQoaCl9Y2F0Y2goZWEpe2QmJmQoYSxBLGVhKX19ZWxzZSBkKGEsMCwibm8gdXJsIHNwZWNpZmllZCEiKX1mdW5jdGlvbiB1ZChhLGMpe20oKVthPj4yXT1jO20oKVthKzQ+PjJdPShjLW0oKVthPj4yXSkvNDI5NDk2NzI5Nn1mdW5jdGlvbiB2ZChhLGMsZCl7cmV0dXJuIExiKGEsaWEoKSxjLGQpfQ0KZnVuY3Rpb24geGQoYSxjLGQsZSl7dmFyIGY9cmQ7aWYoZil7dmFyIGc9YSsxMTI7KGc9bSgpW2crNjQ+PjJdKXx8KGc9bSgpW2ErOD4+Ml0pO3ZhciBoPXIoZyk7dHJ5e3ZhciBsPWYudHJhbnNhY3Rpb24oWyJGSUxFUyJdLCJyZWFkd3JpdGUiKS5vYmplY3RTdG9yZSgiRklMRVMiKS5wdXQoYyxoKTtsLm9uc3VjY2Vzcz0oKT0+e2thKClbYSs0MD4+MV09NDtrYSgpW2ErNDI+PjFdPTIwMDt2ZCgiT0siLGErNDQsNjQpO2QoYSwwLGgpfTtsLm9uZXJyb3I9dD0+e2thKClbYSs0MD4+MV09NDtrYSgpW2ErNDI+PjFdPTQxMzt2ZCgiUGF5bG9hZCBUb28gTGFyZ2UiLGErNDQsNjQpO2UoYSwwLHQpfX1jYXRjaCh0KXtlKGEsMCx0KX19ZWxzZSBlKGEsMCwiSW5kZXhlZERCIG5vdCBhdmFpbGFibGUhIil9DQpmdW5jdGlvbiB5ZChhLGMsZCl7dmFyIGU9cmQ7aWYoZSl7dmFyIGY9YSsxMTI7KGY9bSgpW2YrNjQ+PjJdKXx8KGY9bSgpW2ErOD4+Ml0pO2Y9cihmKTt0cnl7dmFyIGc9ZS50cmFuc2FjdGlvbihbIkZJTEVTIl0sInJlYWRvbmx5Iikub2JqZWN0U3RvcmUoIkZJTEVTIikuZ2V0KGYpO2cub25zdWNjZXNzPWg9PntpZihoLnRhcmdldC5yZXN1bHQpe2g9aC50YXJnZXQucmVzdWx0O3ZhciBsPWguYnl0ZUxlbmd0aHx8aC5sZW5ndGgsdD10ZChsKTtpYSgpLnNldChuZXcgVWludDhBcnJheShoKSx0KTttKClbYSsxMj4+Ml09dDt1ZChhKzE2LGwpO3VkKGErMjQsMCk7dWQoYSszMixsKTtrYSgpW2ErNDA+PjFdPTQ7a2EoKVthKzQyPj4xXT0yMDA7dmQoIk9LIixhKzQ0LDY0KTtjKGEsMCxoKX1lbHNlIGthKClbYSs0MD4+MV09NCxrYSgpW2ErNDI+PjFdPTQwNCx2ZCgiTm90IEZvdW5kIixhKzQ0LDY0KSxkKGEsMCwibm8gZGF0YSIpfTtnLm9uZXJyb3I9aD0+e2thKClbYSs0MD4+MV09NDsNCmthKClbYSs0Mj4+MV09NDA0O3ZkKCJOb3QgRm91bmQiLGErNDQsNjQpO2QoYSwwLGgpfX1jYXRjaChoKXtkKGEsMCxoKX19ZWxzZSBkKGEsMCwiSW5kZXhlZERCIG5vdCBhdmFpbGFibGUhIil9DQpmdW5jdGlvbiB6ZChhLGMsZCl7dmFyIGU9cmQ7aWYoZSl7dmFyIGY9YSsxMTI7KGY9bSgpW2YrNjQ+PjJdKXx8KGY9bSgpW2ErOD4+Ml0pO2Y9cihmKTt0cnl7dmFyIGc9ZS50cmFuc2FjdGlvbihbIkZJTEVTIl0sInJlYWR3cml0ZSIpLm9iamVjdFN0b3JlKCJGSUxFUyIpLmRlbGV0ZShmKTtnLm9uc3VjY2Vzcz1oPT57aD1oLnRhcmdldC5yZXN1bHQ7bSgpW2ErMTI+PjJdPTA7dWQoYSsxNiwwKTt1ZChhKzI0LDApO3VkKGErMzIsMCk7a2EoKVthKzQwPj4xXT00O2thKClbYSs0Mj4+MV09MjAwO3ZkKCJPSyIsYSs0NCw2NCk7YyhhLDAsaCl9O2cub25lcnJvcj1oPT57a2EoKVthKzQwPj4xXT00O2thKClbYSs0Mj4+MV09NDA0O3ZkKCJOb3QgRm91bmQiLGErNDQsNjQpO2QoYSwwLGgpfX1jYXRjaChoKXtkKGEsMCxoKX19ZWxzZSBkKGEsMCwiSW5kZXhlZERCIG5vdCBhdmFpbGFibGUhIil9DQpmdW5jdGlvbiBBZChhKXt2YXIgYz1hLmdldEV4dGVuc2lvbigiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpO2MmJihhLnZlcnRleEF0dHJpYkRpdmlzb3I9ZnVuY3Rpb24oZCxlKXtjLnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShkLGUpfSxhLmRyYXdBcnJheXNJbnN0YW5jZWQ9ZnVuY3Rpb24oZCxlLGYsZyl7Yy5kcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoZCxlLGYsZyl9LGEuZHJhd0VsZW1lbnRzSW5zdGFuY2VkPWZ1bmN0aW9uKGQsZSxmLGcsaCl7Yy5kcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShkLGUsZixnLGgpfSl9DQpmdW5jdGlvbiBCZChhKXt2YXIgYz1hLmdldEV4dGVuc2lvbigiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTtjJiYoYS5jcmVhdGVWZXJ0ZXhBcnJheT1mdW5jdGlvbigpe3JldHVybiBjLmNyZWF0ZVZlcnRleEFycmF5T0VTKCl9LGEuZGVsZXRlVmVydGV4QXJyYXk9ZnVuY3Rpb24oZCl7Yy5kZWxldGVWZXJ0ZXhBcnJheU9FUyhkKX0sYS5iaW5kVmVydGV4QXJyYXk9ZnVuY3Rpb24oZCl7Yy5iaW5kVmVydGV4QXJyYXlPRVMoZCl9LGEuaXNWZXJ0ZXhBcnJheT1mdW5jdGlvbihkKXtyZXR1cm4gYy5pc1ZlcnRleEFycmF5T0VTKGQpfSl9ZnVuY3Rpb24gQ2QoYSl7dmFyIGM9YS5nZXRFeHRlbnNpb24oIldFQkdMX2RyYXdfYnVmZmVycyIpO2MmJihhLmRyYXdCdWZmZXJzPWZ1bmN0aW9uKGQsZSl7Yy5kcmF3QnVmZmVyc1dFQkdMKGQsZSl9KX12YXIgRGQ9MSxFZD1bXSxGZD1bXSxHZD1bXSxIZD1bXSxJZD17fSxKZD1bMSwxLDIsMiw0LDQsNCwyLDMsNCw4XTsNCmZ1bmN0aW9uIEtkKGEpe0xkfHwoTGQ9YSl9ZnVuY3Rpb24gTWQoYSl7Zm9yKHZhciBjPURkKyssZD1hLmxlbmd0aDtkPGM7ZCsrKWFbZF09bnVsbDtyZXR1cm4gY31mdW5jdGlvbiBOZChhKXtyZXR1cm4gMzItTWF0aC5jbHozMigwPT09YT8wOmEtMSl9ZnVuY3Rpb24gT2QoYSxjKXthLkNhfHwoYS5DYT1hLmdldENvbnRleHQsYS5nZXRDb250ZXh0PWZ1bmN0aW9uKGUsZil7Zj1hLkNhKGUsZik7cmV0dXJuIndlYmdsIj09ZT09ZiBpbnN0YW5jZW9mIFdlYkdMUmVuZGVyaW5nQ29udGV4dD9mOm51bGx9KTt2YXIgZD0xPGMuRmE/YS5nZXRDb250ZXh0KCJ3ZWJnbDIiLGMpOmEuZ2V0Q29udGV4dCgid2ViZ2wiLGMpO3JldHVybiBkP1BkKGQsYyk6MH0NCmZ1bmN0aW9uIFBkKGEsYyl7dmFyIGQ9dGQoOCk7YigpW2QrND4+Ml09SWMoKTt2YXIgZT17Z2I6ZCxhdHRyaWJ1dGVzOmMsdmVyc2lvbjpjLkZhLEw6YX07YS5jYW52YXMmJihhLmNhbnZhcy5TYT1lKTtJZFtkXT1lOygidW5kZWZpbmVkIj09dHlwZW9mIGMuemF8fGMuemEpJiZRZChlKTtlLkdhPWUuTC5nZXRQYXJhbWV0ZXIoMzQ5MjEpO2UuVT1bXTtmb3IoYT0wO2E8ZS5HYTthKyspZS5VW2FdPXtlbmFibGVkOiExLGVhOiExLHNpemU6MCx0eXBlOjAsS2E6MCxwYTowLGc6MCxSYTpudWxsfTthPU5kKDIwOTcxNTIpO2UuUz1bXTtlLk1hPVtdO2UuUy5sZW5ndGg9ZS5NYS5sZW5ndGg9YSsxO2UuYWE9W107ZS5xYT1bXTtlLmFhLmxlbmd0aD1lLnFhLmxlbmd0aD1hKzE7ZS5QPVtdO2UuUC5sZW5ndGg9YSsxO2ZvcihjPTA7Yzw9YTsrK2Mpe2UuUFtjXT1udWxsO2UuU1tjXT1lLk1hW2NdPTA7ZS5hYVtjXT1bXTtlLnFhW2NdPVtdO3ZhciBmPWUuYWFbY10sZz1lLnFhW2NdO2YubGVuZ3RoPQ0KZy5sZW5ndGg9NjQ7Zm9yKHZhciBoPTA7NjQ+aDsrK2gpZltoXT1nW2hdPW51bGx9cmV0dXJuIGR9DQpmdW5jdGlvbiBRZChhKXthfHwoYT1SZCk7aWYoIWEuaWIpe2EuaWI9ITA7dmFyIGM9YS5MO0FkKGMpO0JkKGMpO0NkKGMpO2MuS2I9Yy5nZXRFeHRlbnNpb24oIldFQkdMX2RyYXdfaW5zdGFuY2VkX2Jhc2VfdmVydGV4X2Jhc2VfaW5zdGFuY2UiKTtjLk9iPWMuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9tdWx0aV9kcmF3X2luc3RhbmNlZF9iYXNlX3ZlcnRleF9iYXNlX2luc3RhbmNlIik7Mjw9YS52ZXJzaW9uJiYoYy55YT1jLmdldEV4dGVuc2lvbigiRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5X3dlYmdsMiIpKTtpZigyPmEudmVyc2lvbnx8IWMueWEpYy55YT1jLmdldEV4dGVuc2lvbigiRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5Iik7Yy5RYj1jLmdldEV4dGVuc2lvbigiV0VCR0xfbXVsdGlfZHJhdyIpOyhjLmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKXx8W10pLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5pbmNsdWRlcygibG9zZV9jb250ZXh0Iil8fGQuaW5jbHVkZXMoImRlYnVnIil8fGMuZ2V0RXh0ZW5zaW9uKGQpfSl9fQ0KdmFyIExkLFJkLFNkLFRkPVtdLFVkPXt9LFZkPVsiZGVmYXVsdCIsImxvdy1wb3dlciIsImhpZ2gtcGVyZm9ybWFuY2UiXSxXZD1bMCwidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OjAsInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OjBdLFhkPXt9Ow0KZnVuY3Rpb24gWWQoKXtpZighWmQpe3ZhciBhPXtVU0VSOiJ3ZWJfdXNlciIsTE9HTkFNRToid2ViX3VzZXIiLFBBVEg6Ii8iLFBXRDoiLyIsSE9NRToiL2hvbWUvd2ViX3VzZXIiLExBTkc6KCJvYmplY3QiPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzJiZuYXZpZ2F0b3IubGFuZ3VhZ2VzWzBdfHwiQyIpLnJlcGxhY2UoIi0iLCJfIikrIi5VVEYtOCIsXzp2YXx8Ii4vdGhpcy5wcm9ncmFtIn0sYztmb3IoYyBpbiBYZCl2b2lkIDA9PT1YZFtjXT9kZWxldGUgYVtjXTphW2NdPVhkW2NdO3ZhciBkPVtdO2ZvcihjIGluIGEpZC5wdXNoKGMrIj0iK2FbY10pO1pkPWR9cmV0dXJuIFpkfXZhciBaZDsNCmZ1bmN0aW9uICRkKGEsYyl7aWYocSlyZXR1cm4gRGMoOSwxLGEsYyk7dmFyIGQ9MDtZZCgpLmZvckVhY2goZnVuY3Rpb24oZSxmKXt2YXIgZz1jK2Q7Zj1tKClbYSs0KmY+PjJdPWc7Zm9yKGc9MDtnPGUubGVuZ3RoOysrZyliYSgpW2YrKz4+MF09ZS5jaGFyQ29kZUF0KGcpO2JhKClbZj4+MF09MDtkKz1lLmxlbmd0aCsxfSk7cmV0dXJuIDB9ZnVuY3Rpb24gYWUoYSxjKXtpZihxKXJldHVybiBEYygxMCwxLGEsYyk7dmFyIGQ9WWQoKTttKClbYT4+Ml09ZC5sZW5ndGg7dmFyIGU9MDtkLmZvckVhY2goZnVuY3Rpb24oZil7ZSs9Zi5sZW5ndGgrMX0pO20oKVtjPj4yXT1lO3JldHVybiAwfWZ1bmN0aW9uIGJlKGEpe2lmKHEpcmV0dXJuIERjKDExLDEsYSk7dHJ5e3ZhciBjPXpjKGEpO3liKGMpO3JldHVybiAwfWNhdGNoKGQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2N8fCJFcnJub0Vycm9yIiE9PWQubmFtZSl0aHJvdyBkO3JldHVybiBkLnN9fQ0KZnVuY3Rpb24gY2UoYSxjLGQsZSl7aWYocSlyZXR1cm4gRGMoMTIsMSxhLGMsZCxlKTt0cnl7YTp7dmFyIGY9emMoYSk7YT1jO2Zvcih2YXIgZyxoPWM9MDtoPGQ7aCsrKXt2YXIgbD1tKClbYT4+Ml0sdD1tKClbYSs0Pj4yXTthKz04O3ZhciBwPXdiKGYsYmEoKSxsLHQsZyk7aWYoMD5wKXt2YXIgeD0tMTticmVhayBhfWMrPXA7aWYocDx0KWJyZWFrOyJ1bmRlZmluZWQiIT09dHlwZW9mIGcmJihnKz1wKX14PWN9bSgpW2U+PjJdPXg7cmV0dXJuIDB9Y2F0Y2goVSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiB3Y3x8IkVycm5vRXJyb3IiIT09VS5uYW1lKXRocm93IFU7cmV0dXJuIFUuc319DQpmdW5jdGlvbiBkZShhLGMsZCxlLGYpe2lmKHEpcmV0dXJuIERjKDEzLDEsYSxjLGQsZSxmKTt0cnl7Yz1kKzIwOTcxNTI+Pj4wPDQxOTQzMDUtISFjPyhjPj4+MCkrNDI5NDk2NzI5NipkOk5hTjtpZihpc05hTihjKSlyZXR1cm4gNjE7dmFyIGc9emMoYSk7dGMoZyxjLGUpO3ViPVtnLnBvc2l0aW9uPj4+MCwodGI9Zy5wb3NpdGlvbiwxPD0rTWF0aC5hYnModGIpPzA8dGI/KE1hdGgubWluKCtNYXRoLmZsb29yKHRiLzQyOTQ5NjcyOTYpLDQyOTQ5NjcyOTUpfDApPj4+MDp+fitNYXRoLmNlaWwoKHRiLSsofn50Yj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldO2IoKVtmPj4yXT11YlswXTtiKClbZis0Pj4yXT11YlsxXTtnLmphJiYwPT09YyYmMD09PWUmJihnLmphPW51bGwpO3JldHVybiAwfWNhdGNoKGgpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2N8fCJFcnJub0Vycm9yIiE9PWgubmFtZSl0aHJvdyBoO3JldHVybiBoLnN9fQ0KZnVuY3Rpb24gZWUoYSxjLGQsZSl7aWYocSlyZXR1cm4gRGMoMTQsMSxhLGMsZCxlKTt0cnl7YTp7dmFyIGY9emMoYSk7YT1jO2Zvcih2YXIgZyxoPWM9MDtoPGQ7aCsrKXt2YXIgbD1tKClbYT4+Ml0sdD1tKClbYSs0Pj4yXTthKz04O3ZhciBwPWYseD1iYSgpLFU9bCxRPXQsaz1nO2lmKDA+UXx8MD5rKXRocm93IG5ldyB2KDI4KTtpZihudWxsPT09cC5mZCl0aHJvdyBuZXcgdig4KTtpZigwPT09KHAuZmxhZ3MmMjA5NzE1NSkpdGhyb3cgbmV3IHYoOCk7aWYoMTYzODQ9PT0ocC5ub2RlLm1vZGUmNjE0NDApKXRocm93IG5ldyB2KDMxKTtpZighcC5qLndyaXRlKXRocm93IG5ldyB2KDI4KTtwLnNlZWthYmxlJiZwLmZsYWdzJjEwMjQmJnRjKHAsMCwyKTt2YXIgej0idW5kZWZpbmVkIiE9dHlwZW9mIGs7aWYoIXopaz1wLnBvc2l0aW9uO2Vsc2UgaWYoIXAuc2Vla2FibGUpdGhyb3cgbmV3IHYoNzApO3ZhciB5PXAuai53cml0ZShwLHgsVSxRLGssdm9pZCAwKTt6fHwocC5wb3NpdGlvbis9DQp5KTt2YXIgWj15O2lmKDA+Wil7dmFyIHU9LTE7YnJlYWsgYX1jKz1aOyJ1bmRlZmluZWQiIT09dHlwZW9mIGcmJihnKz1aKX11PWN9bSgpW2U+PjJdPXU7cmV0dXJuIDB9Y2F0Y2goZmEpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2N8fCJFcnJub0Vycm9yIiE9PWZhLm5hbWUpdGhyb3cgZmE7cmV0dXJuIGZhLnN9fWZ1bmN0aW9uIGZlKGEsYyxkLGUpe2Zvcih2YXIgZj0wO2Y8YTtmKyspe3ZhciBnPUNbZF0oKSxoPWcmJk1kKGUpO2c/KGcubmFtZT1oLGVbaF09Zyk6S2QoMTI4Mik7YigpW2MrNCpmPj4yXT1ofX1mdW5jdGlvbiBnZShhLGMsZCxlLGYsZyxoLGwpe2M9RmRbY107aWYoYT1DW2FdKGMsZCkpZT1sJiZ2ZChhLm5hbWUsbCxlKSxmJiYoYigpW2Y+PjJdPWUpLGcmJihiKClbZz4+Ml09YS5zaXplKSxoJiYoYigpW2g+PjJdPWEudHlwZSl9DQpmdW5jdGlvbiBoZShhLGMpe2lmKGMpe3ZhciBkPXZvaWQgMDtzd2l0Y2goYSl7Y2FzZSAzNjM0NjpkPTE7YnJlYWs7Y2FzZSAzNjM0NDpLZCgxMjgwKTtyZXR1cm47Y2FzZSAzNDgxNDpjYXNlIDM2MzQ1OmQ9MDticmVhaztjYXNlIDM0NDY2OnZhciBlPUMuZ2V0UGFyYW1ldGVyKDM0NDY3KTtkPWU/ZS5sZW5ndGg6MDticmVhaztjYXNlIDMzMzA5OmlmKDI+UmQudmVyc2lvbil7S2QoMTI4Mik7cmV0dXJufWQ9MiooQy5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCl8fFtdKS5sZW5ndGg7YnJlYWs7Y2FzZSAzMzMwNzpjYXNlIDMzMzA4OmlmKDI+UmQudmVyc2lvbil7S2QoMTI4MCk7cmV0dXJufWQ9MzMzMDc9PWE/MzowfWlmKHZvaWQgMD09PWQpc3dpdGNoKGU9Qy5nZXRQYXJhbWV0ZXIoYSksdHlwZW9mIGUpe2Nhc2UgIm51bWJlciI6ZD1lO2JyZWFrO2Nhc2UgImJvb2xlYW4iOmQ9ZT8xOjA7YnJlYWs7Y2FzZSAic3RyaW5nIjpLZCgxMjgwKTtyZXR1cm47Y2FzZSAib2JqZWN0IjppZihudWxsPT09DQplKXN3aXRjaChhKXtjYXNlIDM0OTY0OmNhc2UgMzU3MjU6Y2FzZSAzNDk2NTpjYXNlIDM2MDA2OmNhc2UgMzYwMDc6Y2FzZSAzMjg3MzpjYXNlIDM0MjI5OmNhc2UgMzY2NjI6Y2FzZSAzNjY2MzpjYXNlIDM1MDUzOmNhc2UgMzUwNTU6Y2FzZSAzNjAxMDpjYXNlIDM1MDk3OmNhc2UgMzU4Njk6Y2FzZSAzMjg3NDpjYXNlIDM2Mzg5OmNhc2UgMzU5ODM6Y2FzZSAzNTM2ODpjYXNlIDM0MDY4OmQ9MDticmVhaztkZWZhdWx0OktkKDEyODApO3JldHVybn1lbHNle2lmKGUgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXl8fGUgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8ZSBpbnN0YW5jZW9mIEludDMyQXJyYXl8fGUgaW5zdGFuY2VvZiBBcnJheSl7Zm9yKGE9MDthPGUubGVuZ3RoOysrYSliYSgpW2MrYT4+MF09ZVthXT8xOjA7cmV0dXJufXRyeXtkPWUubmFtZXwwfWNhdGNoKGYpe0tkKDEyODApO0xhKCJHTF9JTlZBTElEX0VOVU0gaW4gZ2xHZXQ0djogVW5rbm93biBvYmplY3QgcmV0dXJuZWQgZnJvbSBXZWJHTCBnZXRQYXJhbWV0ZXIoIisNCmErIikhIChlcnJvcjogIitmKyIpIik7cmV0dXJufX1icmVhaztkZWZhdWx0OktkKDEyODApO0xhKCJHTF9JTlZBTElEX0VOVU0gaW4gZ2xHZXQ0djogTmF0aXZlIGNvZGUgY2FsbGluZyBnbEdldDR2KCIrYSsiKSBhbmQgaXQgcmV0dXJucyAiK2UrIiBvZiB0eXBlICIrdHlwZW9mIGUrIiEiKTtyZXR1cm59YmEoKVtjPj4wXT1kPzE6MH1lbHNlIEtkKDEyODEpfWZ1bmN0aW9uIGllKGEpe3JldHVybiJdIj09YS5zbGljZSgtMSkmJmEubGFzdEluZGV4T2YoIlsiKX1mdW5jdGlvbiBqZShhKXt2YXIgYz1DLldhO2lmKGMpe3ZhciBkPWMuVFthXTsibnVtYmVyIj09dHlwZW9mIGQmJihjLlRbYV09ZD1DLmdldFVuaWZvcm1Mb2NhdGlvbihjLGMuUGFbYV0rKDA8ZD8iWyIrZCsiXSI6IiIpKSk7cmV0dXJuIGR9S2QoMTI4Mil9dmFyIGtlPVtdO2Z1bmN0aW9uIGxlKGEpe3JldHVybiAwPT09YSU0JiYoMCE9PWElMTAwfHwwPT09YSU0MDApfQ0KdmFyIG1lPVszMSwyOSwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sbmU9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXTtmdW5jdGlvbiBvZShhLGMpe2JhKCkuc2V0KGEsYyl9DQpmdW5jdGlvbiBwZShhLGMsZCxlKXtmdW5jdGlvbiBmKGsseix5KXtmb3Ioaz0ibnVtYmVyIj09dHlwZW9mIGs/ay50b1N0cmluZygpOmt8fCIiO2subGVuZ3RoPHo7KWs9eVswXStrO3JldHVybiBrfWZ1bmN0aW9uIGcoayx6KXtyZXR1cm4gZihrLHosIjAiKX1mdW5jdGlvbiBoKGsseil7ZnVuY3Rpb24geSh1KXtyZXR1cm4gMD51Py0xOjA8dT8xOjB9dmFyIFo7MD09PShaPXkoay5nZXRGdWxsWWVhcigpLXouZ2V0RnVsbFllYXIoKSkpJiYwPT09KFo9eShrLmdldE1vbnRoKCktei5nZXRNb250aCgpKSkmJihaPXkoay5nZXREYXRlKCktei5nZXREYXRlKCkpKTtyZXR1cm4gWn1mdW5jdGlvbiBsKGspe3N3aXRjaChrLmdldERheSgpKXtjYXNlIDA6cmV0dXJuIG5ldyBEYXRlKGsuZ2V0RnVsbFllYXIoKS0xLDExLDI5KTtjYXNlIDE6cmV0dXJuIGs7Y2FzZSAyOnJldHVybiBuZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCksMCwzKTtjYXNlIDM6cmV0dXJuIG5ldyBEYXRlKGsuZ2V0RnVsbFllYXIoKSwNCjAsMik7Y2FzZSA0OnJldHVybiBuZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCksMCwxKTtjYXNlIDU6cmV0dXJuIG5ldyBEYXRlKGsuZ2V0RnVsbFllYXIoKS0xLDExLDMxKTtjYXNlIDY6cmV0dXJuIG5ldyBEYXRlKGsuZ2V0RnVsbFllYXIoKS0xLDExLDMwKX19ZnVuY3Rpb24gdChrKXt2YXIgej1rLko7Zm9yKGs9bmV3IERhdGUoKG5ldyBEYXRlKGsuSysxOTAwLDAsMSkpLmdldFRpbWUoKSk7MDx6Oyl7dmFyIHk9ay5nZXRNb250aCgpLFo9KGxlKGsuZ2V0RnVsbFllYXIoKSk/bWU6bmUpW3ldO2lmKHo+Wi1rLmdldERhdGUoKSl6LT1aLWsuZ2V0RGF0ZSgpKzEsay5zZXREYXRlKDEpLDExPnk/ay5zZXRNb250aCh5KzEpOihrLnNldE1vbnRoKDApLGsuc2V0RnVsbFllYXIoay5nZXRGdWxsWWVhcigpKzEpKTtlbHNle2suc2V0RGF0ZShrLmdldERhdGUoKSt6KTticmVha319eT1uZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCkrMSwwLDQpO3o9bChuZXcgRGF0ZShrLmdldEZ1bGxZZWFyKCksMCwNCjQpKTt5PWwoeSk7cmV0dXJuIDA+PWgoeixrKT8wPj1oKHksayk/ay5nZXRGdWxsWWVhcigpKzE6ay5nZXRGdWxsWWVhcigpOmsuZ2V0RnVsbFllYXIoKS0xfXZhciBwPWIoKVtlKzQwPj4yXTtlPXtDYjpiKClbZT4+Ml0sQmI6YigpW2UrND4+Ml0sYmE6YigpW2UrOD4+Ml0scmE6YigpW2UrMTI+PjJdLGRhOmIoKVtlKzE2Pj4yXSxLOmIoKVtlKzIwPj4yXSxDOmIoKVtlKzI0Pj4yXSxKOmIoKVtlKzI4Pj4yXSxYYjpiKClbZSszMj4+Ml0sQWI6YigpW2UrMzY+PjJdLERiOnA/cihwKToiIn07ZD1yKGQpO3A9eyIlYyI6IiVhICViICVkICVIOiVNOiVTICVZIiwiJUQiOiIlbS8lZC8leSIsIiVGIjoiJVktJW0tJWQiLCIlaCI6IiViIiwiJXIiOiIlSTolTTolUyAlcCIsIiVSIjoiJUg6JU0iLCIlVCI6IiVIOiVNOiVTIiwiJXgiOiIlbS8lZC8leSIsIiVYIjoiJUg6JU06JVMiLCIlRWMiOiIlYyIsIiVFQyI6IiVDIiwiJUV4IjoiJW0vJWQvJXkiLCIlRVgiOiIlSDolTTolUyIsIiVFeSI6IiV5IiwNCiIlRVkiOiIlWSIsIiVPZCI6IiVkIiwiJU9lIjoiJWUiLCIlT0giOiIlSCIsIiVPSSI6IiVJIiwiJU9tIjoiJW0iLCIlT00iOiIlTSIsIiVPUyI6IiVTIiwiJU91IjoiJXUiLCIlT1UiOiIlVSIsIiVPViI6IiVWIiwiJU93IjoiJXciLCIlT1ciOiIlVyIsIiVPeSI6IiV5In07Zm9yKHZhciB4IGluIHApZD1kLnJlcGxhY2UobmV3IFJlZ0V4cCh4LCJnIikscFt4XSk7dmFyIFU9IlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIpLFE9IkphbnVhcnkgRmVicnVhcnkgTWFyY2ggQXByaWwgTWF5IEp1bmUgSnVseSBBdWd1c3QgU2VwdGVtYmVyIE9jdG9iZXIgTm92ZW1iZXIgRGVjZW1iZXIiLnNwbGl0KCIgIik7cD17IiVhIjpmdW5jdGlvbihrKXtyZXR1cm4gVVtrLkNdLnN1YnN0cmluZygwLDMpfSwiJUEiOmZ1bmN0aW9uKGspe3JldHVybiBVW2suQ119LCIlYiI6ZnVuY3Rpb24oayl7cmV0dXJuIFFbay5kYV0uc3Vic3RyaW5nKDAsDQozKX0sIiVCIjpmdW5jdGlvbihrKXtyZXR1cm4gUVtrLmRhXX0sIiVDIjpmdW5jdGlvbihrKXtyZXR1cm4gZygoay5LKzE5MDApLzEwMHwwLDIpfSwiJWQiOmZ1bmN0aW9uKGspe3JldHVybiBnKGsucmEsMil9LCIlZSI6ZnVuY3Rpb24oayl7cmV0dXJuIGYoay5yYSwyLCIgIil9LCIlZyI6ZnVuY3Rpb24oayl7cmV0dXJuIHQoaykudG9TdHJpbmcoKS5zdWJzdHJpbmcoMil9LCIlRyI6ZnVuY3Rpb24oayl7cmV0dXJuIHQoayl9LCIlSCI6ZnVuY3Rpb24oayl7cmV0dXJuIGcoay5iYSwyKX0sIiVJIjpmdW5jdGlvbihrKXtrPWsuYmE7MD09az9rPTEyOjEyPGsmJihrLT0xMik7cmV0dXJuIGcoaywyKX0sIiVqIjpmdW5jdGlvbihrKXtmb3IodmFyIHo9MCx5PTA7eTw9ay5kYS0xO3orPShsZShrLksrMTkwMCk/bWU6bmUpW3krK10pO3JldHVybiBnKGsucmEreiwzKX0sIiVtIjpmdW5jdGlvbihrKXtyZXR1cm4gZyhrLmRhKzEsMil9LCIlTSI6ZnVuY3Rpb24oayl7cmV0dXJuIGcoay5CYiwNCjIpfSwiJW4iOmZ1bmN0aW9uKCl7cmV0dXJuIlxuIn0sIiVwIjpmdW5jdGlvbihrKXtyZXR1cm4gMDw9ay5iYSYmMTI+ay5iYT8iQU0iOiJQTSJ9LCIlUyI6ZnVuY3Rpb24oayl7cmV0dXJuIGcoay5DYiwyKX0sIiV0IjpmdW5jdGlvbigpe3JldHVybiJcdCJ9LCIldSI6ZnVuY3Rpb24oayl7cmV0dXJuIGsuQ3x8N30sIiVVIjpmdW5jdGlvbihrKXtyZXR1cm4gZyhNYXRoLmZsb29yKChrLkorNy1rLkMpLzcpLDIpfSwiJVYiOmZ1bmN0aW9uKGspe3ZhciB6PU1hdGguZmxvb3IoKGsuSis3LShrLkMrNiklNykvNyk7Mj49KGsuQyszNzEtay5KLTIpJTcmJnorKztpZih6KTUzPT16JiYoeT0oay5DKzM3MS1rLkopJTcsND09eXx8Mz09eSYmbGUoay5LKXx8KHo9MSkpO2Vsc2V7ej01Mjt2YXIgeT0oay5DKzctay5KLTEpJTc7KDQ9PXl8fDU9PXkmJmxlKGsuSyU0MDAtMSkpJiZ6Kyt9cmV0dXJuIGcoeiwyKX0sIiV3IjpmdW5jdGlvbihrKXtyZXR1cm4gay5DfSwiJVciOmZ1bmN0aW9uKGspe3JldHVybiBnKE1hdGguZmxvb3IoKGsuSisNCjctKGsuQys2KSU3KS83KSwyKX0sIiV5IjpmdW5jdGlvbihrKXtyZXR1cm4oay5LKzE5MDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpfSwiJVkiOmZ1bmN0aW9uKGspe3JldHVybiBrLksrMTkwMH0sIiV6IjpmdW5jdGlvbihrKXtrPWsuQWI7dmFyIHo9MDw9aztrPU1hdGguYWJzKGspLzYwO3JldHVybih6PyIrIjoiLSIpK1N0cmluZygiMDAwMCIrKGsvNjAqMTAwK2slNjApKS5zbGljZSgtNCl9LCIlWiI6ZnVuY3Rpb24oayl7cmV0dXJuIGsuRGJ9LCIlJSI6ZnVuY3Rpb24oKXtyZXR1cm4iJSJ9fTtkPWQucmVwbGFjZSgvJSUvZywiXHgwMFx4MDAiKTtmb3IoeCBpbiBwKWQuaW5jbHVkZXMoeCkmJihkPWQucmVwbGFjZShuZXcgUmVnRXhwKHgsImciKSxwW3hdKGUpKSk7ZD1kLnJlcGxhY2UoL1wwXDAvZywiJSIpO3g9TWIoZCwhMSk7aWYoeC5sZW5ndGg+YylyZXR1cm4gMDtvZSh4LGEpO3JldHVybiB4Lmxlbmd0aC0xfXcuaGIoKTsNCmZ1bmN0aW9uIGdjKGEsYyxkLGUpe2F8fChhPXRoaXMpO3RoaXMucGFyZW50PWE7dGhpcy5EPWEuRDt0aGlzLk09bnVsbDt0aGlzLmlkPSRiKys7dGhpcy5uYW1lPWM7dGhpcy5tb2RlPWQ7dGhpcy5oPXt9O3RoaXMuaj17fTt0aGlzLnJkZXY9ZX1PYmplY3QuZGVmaW5lUHJvcGVydGllcyhnYy5wcm90b3R5cGUse3JlYWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiAzNjU9PT0odGhpcy5tb2RlJjM2NSl9LHNldDpmdW5jdGlvbihhKXthP3RoaXMubW9kZXw9MzY1OnRoaXMubW9kZSY9LTM2Nn19LHdyaXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMTQ2PT09KHRoaXMubW9kZSYxNDYpfSxzZXQ6ZnVuY3Rpb24oYSl7YT90aGlzLm1vZGV8PTE0Njp0aGlzLm1vZGUmPS0xNDd9fX0pO2FiKCk7YWM9QXJyYXkoNDA5Nik7b2MoQiwiLyIpO3BjKCIvdG1wIiwxNjg5NSwwKTtwYygiL2hvbWUiLDE2ODk1LDApO3BjKCIvaG9tZS93ZWJfdXNlciIsMTY4OTUsMCk7DQooKCk9PntwYygiL2RldiIsMTY4OTUsMCk7UGIoMjU5LHtyZWFkOigpPT4wLHdyaXRlOihlLGYsZyxoKT0+aH0pO3FjKCIvZGV2L251bGwiLDI1OSk7T2IoMTI4MCxSYik7T2IoMTUzNixTYik7cWMoIi9kZXYvdHR5IiwxMjgwKTtxYygiL2Rldi90dHkxIiwxNTM2KTt2YXIgYT1uZXcgVWludDhBcnJheSgxMDI0KSxjPTAsZD0oKT0+ezA9PT1jJiYoYz1KYihhKS5ieXRlTGVuZ3RoKTtyZXR1cm4gYVstLWNdfTtiYigicmFuZG9tIixkKTtiYigidXJhbmRvbSIsZCk7cGMoIi9kZXYvc2htIiwxNjg5NSwwKTtwYygiL2Rldi9zaG0vdG1wIiwxNjg5NSwwKX0pKCk7DQooKCk9PntwYygiL3Byb2MiLDE2ODk1LDApO3ZhciBhPXBjKCIvcHJvYy9zZWxmIiwxNjg5NSwwKTtwYygiL3Byb2Mvc2VsZi9mZCIsMTY4OTUsMCk7b2Moe0Q6KCk9Pnt2YXIgYz1VYihhLCJmZCIsMTY4OTUsNzMpO2MuaD17bG9va3VwOihkLGUpPT57dmFyIGY9WmJbK2VdO2lmKCFmKXRocm93IG5ldyB2KDgpO2Q9e3BhcmVudDpudWxsLEQ6e0lhOiJmYWtlIn0saDp7cmVhZGxpbms6KCk9PmYucGF0aH19O3JldHVybiBkLnBhcmVudD1kfX07cmV0dXJuIGN9fSwiL3Byb2Mvc2VsZi9mZCIpfSkoKTtxfHwoa2IoKSxxZChhPT57cmQ9YTtsYigpfSwoKT0+e3JkPSExO2xiKCl9KSk7Zm9yKHZhciBDLHFlPW5ldyBGbG9hdDMyQXJyYXkoMjg4KSxyZT0wOzI4OD5yZTsrK3JlKWtlW3JlXT1xZS5zdWJhcnJheSgwLHJlKzEpOw0KdmFyIHNlPVtudWxsLENjLEZjLFBjLFJjLFRjLFVjLFZjLFdjLCRkLGFlLGJlLGNlLGRlLGVlXSx5ZT17X19hc3NlcnRfZmFpbDpmdW5jdGlvbihhLGMsZCxlKXtOYSgiQXNzZXJ0aW9uIGZhaWxlZDogIityKGEpKyIsIGF0OiAiK1tjP3IoYyk6InVua25vd24gZmlsZW5hbWUiLGQsZT9yKGUpOiJ1bmtub3duIGZ1bmN0aW9uIl0pfSxfX2Vtc2NyaXB0ZW5faW5pdF9tYWluX3RocmVhZF9qczpmdW5jdGlvbihhKXt0ZShhLCF5YSwxLCF4YSk7dy5OYSgpfSxfX2Vtc2NyaXB0ZW5fdGhyZWFkX2NsZWFudXA6ZnVuY3Rpb24oYSl7cT9wb3N0TWVzc2FnZSh7Y21kOiJjbGVhbnVwVGhyZWFkIix0aHJlYWQ6YX0pOkNiKGEpfSxfX3B0aHJlYWRfY3JlYXRlX2pzOlFjLF9fc3lzY2FsbF9mY250bDY0OlJjLF9fc3lzY2FsbF9pb2N0bDpUYyxfX3N5c2NhbGxfb3BlbmF0OlVjLF9fc3lzY2FsbF9ybWRpcjpWYyxfX3N5c2NhbGxfdW5saW5rYXQ6V2MsX2Vtc2NyaXB0ZW5fZGVmYXVsdF9wdGhyZWFkX3N0YWNrX3NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gNDE5NDMwNH0sDQpfZW1zY3JpcHRlbl9mZXRjaF9mcmVlOmZ1bmN0aW9uKGEpe3ZhciBjPXBkW2FdO2MmJihkZWxldGUgcGRbYV0sMDxjLnJlYWR5U3RhdGUmJjQ+Yy5yZWFkeVN0YXRlJiZjLmFib3J0KCkpfSxfZW1zY3JpcHRlbl9nZXRfbm93X2lzX21vbm90b25pYzpmdW5jdGlvbigpe3JldHVybiEwfSxfZW1zY3JpcHRlbl9ub3RpZnlfbWFpbGJveF9wb3N0bWVzc2FnZTpmdW5jdGlvbihhLGMpe2E9PWM/c2V0VGltZW91dCgoKT0+SmMoKSk6cT9wb3N0TWVzc2FnZSh7dGFyZ2V0VGhyZWFkOmEsY21kOiJjaGVja01haWxib3gifSk6KGE9dy5GW2FdKSYmYS5wb3N0TWVzc2FnZSh7Y21kOiJjaGVja01haWxib3gifSl9LF9lbXNjcmlwdGVuX3NldF9vZmZzY3JlZW5jYW52YXNfc2l6ZTpmdW5jdGlvbigpe3JldHVybi0xfSxfZW1zY3JpcHRlbl90aHJlYWRfbWFpbGJveF9hd2FpdDpZYyxfZW1zY3JpcHRlbl90aHJvd19sb25nam1wOmZ1bmN0aW9uKCl7dGhyb3cgSW5maW5pdHk7fSxhYm9ydDpmdW5jdGlvbigpe05hKCIiKX0sDQplbXNjcmlwdGVuX2FzbV9jb25zdF9pbnQ6ZnVuY3Rpb24oYSxjLGQpeyRjLmxlbmd0aD0wO3ZhciBlO2ZvcihkPj49MjtlPWlhKClbYysrXTspZCs9MTA1IT1lJmQsJGMucHVzaCgxMDU9PWU/YigpW2RdOnFhKClbZCsrPj4xXSksKytkO3JldHVybiB6YlthXS5hcHBseShudWxsLCRjKX0sZW1zY3JpcHRlbl9jaGVja19ibG9ja2luZ19hbGxvd2VkOmZ1bmN0aW9uKCl7fSxlbXNjcmlwdGVuX2RhdGVfbm93OmZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCl9LGVtc2NyaXB0ZW5fZXhpdF93aXRoX2xpdmVfcnVudGltZTpmdW5jdGlvbigpe1hhKz0xO3Rocm93InVud2luZCI7fSxlbXNjcmlwdGVuX2dldF9ub3c6Y2QsZW1zY3JpcHRlbl9sb2c6ZnVuY3Rpb24oYSxjLGQpe2M9Z2QoYyxkKTtjPXhiKGMsMCk7YSYyNCYmKGM9Yy5yZXBsYWNlKC9ccyskLywiIiksYys9KDA8Yy5sZW5ndGg/IlxuIjoiIikramQoYSkpO2EmMT9hJjQ/Y29uc29sZS5lcnJvcihjKTphJjI/Y29uc29sZS53YXJuKGMpOg0KYSY1MTI/Y29uc29sZS5pbmZvKGMpOmEmMjU2P2NvbnNvbGUuZGVidWcoYyk6Y29uc29sZS5sb2coYyk6YSY2P0xhKGMpOkthKGMpfSxlbXNjcmlwdGVuX21lbWNweV9iaWc6ZnVuY3Rpb24oYSxjLGQpe2lhKCkuY29weVdpdGhpbihhLGMsYytkKX0sZW1zY3JpcHRlbl9yZWNlaXZlX29uX21haW5fdGhyZWFkX2pzOmZ1bmN0aW9uKGEsYyxkKXtvZC5sZW5ndGg9YztkPj49Mztmb3IodmFyIGU9MDtlPGM7ZSsrKW9kW2VdPXFhKClbZCtlXTtyZXR1cm4oMD5hP3piWy1hLTFdOnNlW2FdKS5hcHBseShudWxsLG9kKX0sZW1zY3JpcHRlbl9yZXNpemVfaGVhcDpmdW5jdGlvbihhKXt2YXIgYz1pYSgpLmxlbmd0aDthPj4+PTA7aWYoYTw9Y3x8MjE0NzQ4MzY0ODxhKXJldHVybiExO2Zvcih2YXIgZD0xOzQ+PWQ7ZCo9Mil7dmFyIGU9YyooMSsuMi9kKTtlPU1hdGgubWluKGUsYSsxMDA2NjMyOTYpO3ZhciBmPU1hdGgsZz1mLm1pbjtlPU1hdGgubWF4KGEsZSk7ZSs9KDY1NTM2LWUlNjU1MzYpJQ0KNjU1MzY7YTp7dmFyIGg9Y2EuYnVmZmVyO3RyeXtjYS5ncm93KGcuY2FsbChmLDIxNDc0ODM2NDgsZSktaC5ieXRlTGVuZ3RoKzY1NTM1Pj4+MTYpO2hhKCk7dmFyIGw9MTticmVhayBhfWNhdGNoKHQpe31sPXZvaWQgMH1pZihsKXJldHVybiEwfXJldHVybiExfSxlbXNjcmlwdGVuX3J1bl9zY3JpcHQ6ZnVuY3Rpb24oYSl7ZXZhbChyKGEpKX0sZW1zY3JpcHRlbl9zZXRfaW50ZXJ2YWw6ZnVuY3Rpb24oYSxjLGQpe1hhKz0xO3JldHVybiBzZXRJbnRlcnZhbChmdW5jdGlvbigpe1hjKGZ1bmN0aW9uKCl7TmMoYSkoZCl9KX0sYyl9LGVtc2NyaXB0ZW5fc3RhcnRfZmV0Y2g6ZnVuY3Rpb24oYSxjLGQsZSxmKXtmdW5jdGlvbiBnKGFhKXtaP2FhKCk6WGMoYWEpfVhhKz0xO3ZhciBoPWErMTEyLGw9cihoKSx0PW0oKVtoKzM2Pj4yXSxwPW0oKVtoKzQwPj4yXSx4PW0oKVtoKzQ0Pj4yXSxVPW0oKVtoKzQ4Pj4yXSxRPW0oKVtoKzUyPj4yXSxrPSEhKFEmNCksej0hIShRJjMyKSx5PSEhKFEmDQoxNiksWj0hIShRJjY0KSx1PWFhPT57LS1YYTtnKCgpPT57dD9OYyh0KShhYSk6YyYmYyhhYSl9KX0sZmE9YWE9PntnKCgpPT57eD9OYyh4KShhYSk6ZSYmZShhYSl9KX0sQT1hYT0+ey0tWGE7ZygoKT0+e3A/TmMocCkoYWEpOmQmJmQoYWEpfSl9LEphPWFhPT57ZygoKT0+e1U/TmMoVSkoYWEpOmYmJmYoYWEpfSl9O1E9YWE9PntzZChhYSx1LEEsZmEsSmEpfTt2YXIgZWE9KGFhLG9vKT0+e3hkKGFhLG9vLnJlc3BvbnNlLHJiPT57LS1YYTtnKCgpPT57dD9OYyh0KShyYik6YyYmYyhyYil9KX0scmI9PnstLVhhO2coKCk9Pnt0P05jKHQpKHJiKTpjJiZjKHJiKX0pfSl9LEVhPWFhPT57c2QoYWEsZWEsQSxmYSxKYSl9O2lmKCJFTV9JREJfU1RPUkUiPT09bClsPW0oKVtoKzg0Pj4yXSx4ZChhLGlhKCkuc2xpY2UobCxsK20oKVtoKzg4Pj4yXSksdSxBKTtlbHNlIGlmKCJFTV9JREJfREVMRVRFIj09PWwpemQoYSx1LEEpO2Vsc2UgaWYoeSl7aWYoeilyZXR1cm4gMDtzZChhLGs/ZWE6dSwNCkEsZmEsSmEpfWVsc2UgeWQoYSx1LHo/QTprP0VhOlEpO3JldHVybiBhfSxlbXNjcmlwdGVuX3Vud2luZF90b19qc19ldmVudF9sb29wOmZ1bmN0aW9uKCl7dGhyb3cidW53aW5kIjt9LGVtc2NyaXB0ZW5fd2ViZ2xfY3JlYXRlX2NvbnRleHQ6ZnVuY3Rpb24oYSxjKXtjPj49Mjt2YXIgZD1iKClbYys2XTtjPXthbHBoYTohIWIoKVtjKzBdLGRlcHRoOiEhYigpW2MrMV0sc3RlbmNpbDohIWIoKVtjKzJdLGFudGlhbGlhczohIWIoKVtjKzNdLHByZW11bHRpcGxpZWRBbHBoYTohIWIoKVtjKzRdLHByZXNlcnZlRHJhd2luZ0J1ZmZlcjohIWIoKVtjKzVdLHBvd2VyUHJlZmVyZW5jZTpWZFtkXSxmYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0OiEhYigpW2MrN10sRmE6YigpW2MrOF0sUGI6YigpW2MrOV0semE6YigpW2MrMTBdLFlhOmIoKVtjKzExXSxUYjpiKClbYysxMl0sVWI6YigpW2MrMTNdfTthPTI8YT9yKGEpOmE7YT1XZFthXXx8KCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/DQpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGEpOnZvaWQgMCk7cmV0dXJuIWF8fGMuWWE/MDpPZChhLGMpfSxlbXNjcmlwdGVuX3dlYmdsX2Rlc3Ryb3lfY29udGV4dDpmdW5jdGlvbihhKXtSZD09YSYmKFJkPTApO1JkPT09SWRbYV0mJihSZD1udWxsKTtpZigib2JqZWN0Ij09dHlwZW9mIFVkKWZvcih2YXIgYz1JZFthXS5MLmNhbnZhcyxkPTA7ZDxUZC5sZW5ndGg7KytkKWlmKFRkW2RdLnRhcmdldD09Yyl7dmFyIGU9ZC0tLGY9VGRbZV07Zi50YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihmLk1iLGYuTGIsZi5aYik7VGQuc3BsaWNlKGUsMSl9SWRbYV0mJklkW2FdLkwuY2FudmFzJiYoSWRbYV0uTC5jYW52YXMuU2E9dm9pZCAwKTt3ZChJZFthXS5nYik7SWRbYV09bnVsbH0sZW1zY3JpcHRlbl93ZWJnbF9tYWtlX2NvbnRleHRfY3VycmVudDpmdW5jdGlvbihhKXtSZD1JZFthXTtuLkpiPUM9UmQmJlJkLkw7cmV0dXJuIWF8fEM/MDotNX0sZW52aXJvbl9nZXQ6JGQsZW52aXJvbl9zaXplc19nZXQ6YWUsDQpleGl0OkVjLGZkX2Nsb3NlOmJlLGZkX3JlYWQ6Y2UsZmRfc2VlazpkZSxmZF93cml0ZTplZSxnZXRlbnRyb3B5OmZ1bmN0aW9uKGEsYyl7SmIoaWEoKS5zdWJhcnJheShhLGErYykpO3JldHVybiAwfSxnbEF0dGFjaFNoYWRlcjpmdW5jdGlvbihhLGMpe0MuYXR0YWNoU2hhZGVyKEZkW2FdLEdkW2NdKX0sZ2xCaW5kQXR0cmliTG9jYXRpb246ZnVuY3Rpb24oYSxjLGQpe0MuYmluZEF0dHJpYkxvY2F0aW9uKEZkW2FdLGMscihkKSl9LGdsQmluZEJ1ZmZlcjpmdW5jdGlvbihhLGMpezM0OTYyPT1hP0MuVj1jOjM0OTYzPT1hJiYoQy5SPWMpOzM1MDUxPT1hP0Mud2E9YzozNTA1Mj09YSYmKEMueGE9Yyk7Qy5iaW5kQnVmZmVyKGEsRWRbY10pfSxnbEJpbmRWZXJ0ZXhBcnJheTpmdW5jdGlvbihhKXtDLmJpbmRWZXJ0ZXhBcnJheShIZFthXSk7YT1DLmdldFBhcmFtZXRlcigzNDk2NSk7Qy5SPWE/YS5uYW1lfDA6MH0sZ2xCdWZmZXJEYXRhOmZ1bmN0aW9uKGEsYyxkLGUpezI8PVJkLnZlcnNpb24/DQpkJiZjP0MuYnVmZmVyRGF0YShhLGlhKCksZSxkLGMpOkMuYnVmZmVyRGF0YShhLGMsZSk6Qy5idWZmZXJEYXRhKGEsZD9pYSgpLnN1YmFycmF5KGQsZCtjKTpjLGUpfSxnbENsZWFyOmZ1bmN0aW9uKGEpe0MuY2xlYXIoYSl9LGdsQ2xlYXJDb2xvcjpmdW5jdGlvbihhLGMsZCxlKXtDLmNsZWFyQ29sb3IoYSxjLGQsZSl9LGdsQ29tcGlsZVNoYWRlcjpmdW5jdGlvbihhKXtDLmNvbXBpbGVTaGFkZXIoR2RbYV0pfSxnbENyZWF0ZVByb2dyYW06ZnVuY3Rpb24oKXt2YXIgYT1NZChGZCksYz1DLmNyZWF0ZVByb2dyYW0oKTtjLm5hbWU9YTtjLlk9Yy5XPWMuWD0wO2Muc2E9MTtGZFthXT1jO3JldHVybiBhfSxnbENyZWF0ZVNoYWRlcjpmdW5jdGlvbihhKXt2YXIgYz1NZChHZCk7R2RbY109Qy5jcmVhdGVTaGFkZXIoYSk7cmV0dXJuIGN9LGdsRGVsZXRlQnVmZmVyczpmdW5jdGlvbihhLGMpe2Zvcih2YXIgZD0wO2Q8YTtkKyspe3ZhciBlPWIoKVtjKzQqZD4+Ml0sZj1FZFtlXTtmJiYoQy5kZWxldGVCdWZmZXIoZiksDQpmLm5hbWU9MCxFZFtlXT1udWxsLGU9PUMuViYmKEMuVj0wKSxlPT1DLlImJihDLlI9MCksZT09Qy53YSYmKEMud2E9MCksZT09Qy54YSYmKEMueGE9MCkpfX0sZ2xEZWxldGVQcm9ncmFtOmZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBjPUZkW2FdO2M/KEMuZGVsZXRlUHJvZ3JhbShjKSxjLm5hbWU9MCxGZFthXT1udWxsKTpLZCgxMjgxKX19LGdsRGVsZXRlU2hhZGVyOmZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBjPUdkW2FdO2M/KEMuZGVsZXRlU2hhZGVyKGMpLEdkW2FdPW51bGwpOktkKDEyODEpfX0sZ2xEZWxldGVWZXJ0ZXhBcnJheXM6ZnVuY3Rpb24oYSxjKXtmb3IodmFyIGQ9MDtkPGE7ZCsrKXt2YXIgZT1iKClbYys0KmQ+PjJdO0MuZGVsZXRlVmVydGV4QXJyYXkoSGRbZV0pO0hkW2VdPW51bGx9fSxnbERpc2FibGU6ZnVuY3Rpb24oYSl7Qy5kaXNhYmxlKGEpfSxnbERyYXdFbGVtZW50czpmdW5jdGlvbihhLGMsZCxlKXtpZighQy5SKXt2YXIgZj0xKkpkW2QtNTEyMF0qYzt2YXIgZz0NCk5kKGYpO3ZhciBoPVJkLlBbZ107aD9nPWg6KGg9Qy5nZXRQYXJhbWV0ZXIoMzQ5NjUpLFJkLlBbZ109Qy5jcmVhdGVCdWZmZXIoKSxDLmJpbmRCdWZmZXIoMzQ5NjMsUmQuUFtnXSksQy5idWZmZXJEYXRhKDM0OTYzLDE8PGcsMzUwNDgpLEMuYmluZEJ1ZmZlcigzNDk2MyxoKSxnPVJkLlBbZ10pO0MuYmluZEJ1ZmZlcigzNDk2MyxnKTtDLmJ1ZmZlclN1YkRhdGEoMzQ5NjMsMCxpYSgpLnN1YmFycmF5KGUsZStmKSk7ZT0wfVNkPSExO2ZvcihmPTA7ZjxSZC5HYTsrK2YpaWYoZz1SZC5VW2ZdLGcuZWEmJmcuZW5hYmxlZCl7U2Q9ITA7aD1nLnBhO2g9MDxoP2MqaDpnLnNpemUqSmRbZy50eXBlLTUxMjBdKmM7dmFyIGw9TmQoaCk7dmFyIHQ9UmQuYWFbbF0scD1SZC5TW2xdO1JkLlNbbF09UmQuU1tsXSsxJjYzO3ZhciB4PXRbcF07eD9sPXg6KHg9Qy5nZXRQYXJhbWV0ZXIoMzQ5NjQpLHRbcF09Qy5jcmVhdGVCdWZmZXIoKSxDLmJpbmRCdWZmZXIoMzQ5NjIsdFtwXSksQy5idWZmZXJEYXRhKDM0OTYyLA0KMTw8bCwzNTA0OCksQy5iaW5kQnVmZmVyKDM0OTYyLHgpLGw9dFtwXSk7Qy5iaW5kQnVmZmVyKDM0OTYyLGwpO0MuYnVmZmVyU3ViRGF0YSgzNDk2MiwwLGlhKCkuc3ViYXJyYXkoZy5nLGcuZytoKSk7Zy5SYS5jYWxsKEMsZixnLnNpemUsZy50eXBlLGcuS2EsZy5wYSwwKX1DLmRyYXdFbGVtZW50cyhhLGMsZCxlKTtTZCYmQy5iaW5kQnVmZmVyKDM0OTYyLEVkW0MuVl0pO0MuUnx8Qy5iaW5kQnVmZmVyKDM0OTYzLG51bGwpfSxnbERyYXdFbGVtZW50c0luc3RhbmNlZDpmdW5jdGlvbihhLGMsZCxlLGYpe0MuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGEsYyxkLGUsZil9LGdsRW5hYmxlOmZ1bmN0aW9uKGEpe0MuZW5hYmxlKGEpfSxnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5OmZ1bmN0aW9uKGEpe1JkLlVbYV0uZW5hYmxlZD0hMDtDLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGEpfSxnbEdlbkJ1ZmZlcnM6ZnVuY3Rpb24oYSxjKXtmZShhLGMsImNyZWF0ZUJ1ZmZlciIsRWQpfSxnbEdlblZlcnRleEFycmF5czpmdW5jdGlvbihhLA0KYyl7ZmUoYSxjLCJjcmVhdGVWZXJ0ZXhBcnJheSIsSGQpfSxnbEdldEFjdGl2ZUF0dHJpYjpmdW5jdGlvbihhLGMsZCxlLGYsZyxoKXtnZSgiZ2V0QWN0aXZlQXR0cmliIixhLGMsZCxlLGYsZyxoKX0sZ2xHZXRBY3RpdmVVbmlmb3JtOmZ1bmN0aW9uKGEsYyxkLGUsZixnLGgpe2dlKCJnZXRBY3RpdmVVbmlmb3JtIixhLGMsZCxlLGYsZyxoKX0sZ2xHZXRBdHRyaWJMb2NhdGlvbjpmdW5jdGlvbihhLGMpe3JldHVybiBDLmdldEF0dHJpYkxvY2F0aW9uKEZkW2FdLHIoYykpfSxnbEdldEJvb2xlYW52OmZ1bmN0aW9uKGEsYyl7aGUoYSxjKX0sZ2xHZXRFcnJvcjpmdW5jdGlvbigpe3ZhciBhPUMuZ2V0RXJyb3IoKXx8TGQ7TGQ9MDtyZXR1cm4gYX0sZ2xHZXRQcm9ncmFtSW5mb0xvZzpmdW5jdGlvbihhLGMsZCxlKXthPUMuZ2V0UHJvZ3JhbUluZm9Mb2coRmRbYV0pO251bGw9PT1hJiYoYT0iKHVua25vd24gZXJyb3IpIik7Yz0wPGMmJmU/dmQoYSxlLGMpOjA7ZCYmKGIoKVtkPj4yXT1jKX0sDQpnbEdldFByb2dyYW1pdjpmdW5jdGlvbihhLGMsZCl7aWYoZClpZihhPj1EZClLZCgxMjgxKTtlbHNlIGlmKGE9RmRbYV0sMzU3MTY9PWMpYT1DLmdldFByb2dyYW1JbmZvTG9nKGEpLG51bGw9PT1hJiYoYT0iKHVua25vd24gZXJyb3IpIiksYigpW2Q+PjJdPWEubGVuZ3RoKzE7ZWxzZSBpZigzNTcxOT09Yyl7aWYoIWEuWSlmb3IoYz0wO2M8Qy5nZXRQcm9ncmFtUGFyYW1ldGVyKGEsMzU3MTgpOysrYylhLlk9TWF0aC5tYXgoYS5ZLEMuZ2V0QWN0aXZlVW5pZm9ybShhLGMpLm5hbWUubGVuZ3RoKzEpO2IoKVtkPj4yXT1hLll9ZWxzZSBpZigzNTcyMj09Yyl7aWYoIWEuVylmb3IoYz0wO2M8Qy5nZXRQcm9ncmFtUGFyYW1ldGVyKGEsMzU3MjEpOysrYylhLlc9TWF0aC5tYXgoYS5XLEMuZ2V0QWN0aXZlQXR0cmliKGEsYykubmFtZS5sZW5ndGgrMSk7YigpW2Q+PjJdPWEuV31lbHNlIGlmKDM1MzgxPT1jKXtpZighYS5YKWZvcihjPTA7YzxDLmdldFByb2dyYW1QYXJhbWV0ZXIoYSwzNTM4Mik7KytjKWEuWD0NCk1hdGgubWF4KGEuWCxDLmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoYSxjKS5sZW5ndGgrMSk7YigpW2Q+PjJdPWEuWH1lbHNlIGIoKVtkPj4yXT1DLmdldFByb2dyYW1QYXJhbWV0ZXIoYSxjKTtlbHNlIEtkKDEyODEpfSxnbEdldFNoYWRlckluZm9Mb2c6ZnVuY3Rpb24oYSxjLGQsZSl7YT1DLmdldFNoYWRlckluZm9Mb2coR2RbYV0pO251bGw9PT1hJiYoYT0iKHVua25vd24gZXJyb3IpIik7Yz0wPGMmJmU/dmQoYSxlLGMpOjA7ZCYmKGIoKVtkPj4yXT1jKX0sZ2xHZXRTaGFkZXJpdjpmdW5jdGlvbihhLGMsZCl7ZD8zNTcxNj09Yz8oYT1DLmdldFNoYWRlckluZm9Mb2coR2RbYV0pLG51bGw9PT1hJiYoYT0iKHVua25vd24gZXJyb3IpIiksYT1hP2EubGVuZ3RoKzE6MCxiKClbZD4+Ml09YSk6MzU3MjA9PWM/KGE9KGE9Qy5nZXRTaGFkZXJTb3VyY2UoR2RbYV0pKT9hLmxlbmd0aCsxOjAsYigpW2Q+PjJdPWEpOmIoKVtkPj4yXT1DLmdldFNoYWRlclBhcmFtZXRlcihHZFthXSxjKToNCktkKDEyODEpfSxnbEdldFVuaWZvcm1Mb2NhdGlvbjpmdW5jdGlvbihhLGMpe2M9cihjKTtpZihhPUZkW2FdKXt2YXIgZD1hLGU9ZC5ULGY9ZC5RYSxnO2lmKCFlKWZvcihkLlQ9ZT17fSxkLlBhPXt9LGc9MDtnPEMuZ2V0UHJvZ3JhbVBhcmFtZXRlcihkLDM1NzE4KTsrK2cpe3ZhciBoPUMuZ2V0QWN0aXZlVW5pZm9ybShkLGcpO3ZhciBsPWgubmFtZTtoPWguc2l6ZTt2YXIgdD1pZShsKTt0PTA8dD9sLnNsaWNlKDAsdCk6bDt2YXIgcD1kLnNhO2Quc2ErPWg7Zlt0XT1baCxwXTtmb3IobD0wO2w8aDsrK2wpZVtwXT1sLGQuUGFbcCsrXT10fWQ9YS5UO2U9MDtmPWM7Zz1pZShjKTswPGcmJihlPXBhcnNlSW50KGMuc2xpY2UoZysxKSk+Pj4wLGY9Yy5zbGljZSgwLGcpKTtpZigoZj1hLlFhW2ZdKSYmZTxmWzBdJiYoZSs9ZlsxXSxkW2VdPWRbZV18fEMuZ2V0VW5pZm9ybUxvY2F0aW9uKGEsYykpKXJldHVybiBlfWVsc2UgS2QoMTI4MSk7cmV0dXJuLTF9LGdsTGluZVdpZHRoOmZ1bmN0aW9uKGEpe0MubGluZVdpZHRoKGEpfSwNCmdsTGlua1Byb2dyYW06ZnVuY3Rpb24oYSl7YT1GZFthXTtDLmxpbmtQcm9ncmFtKGEpO2EuVD0wO2EuUWE9e319LGdsU2hhZGVyU291cmNlOmZ1bmN0aW9uKGEsYyxkLGUpe2Zvcih2YXIgZj0iIixnPTA7ZzxjOysrZyl7dmFyIGg9ZT9iKClbZSs0Kmc+PjJdOi0xO2YrPXIoYigpW2QrNCpnPj4yXSwwPmg/dm9pZCAwOmgpfUMuc2hhZGVyU291cmNlKEdkW2FdLGYpfSxnbFVuaWZvcm0xaTpmdW5jdGlvbihhLGMpe0MudW5pZm9ybTFpKGplKGEpLGMpfSxnbFVuaWZvcm00ZjpmdW5jdGlvbihhLGMsZCxlLGYpe0MudW5pZm9ybTRmKGplKGEpLGMsZCxlLGYpfSxnbFVuaWZvcm00ZnY6ZnVuY3Rpb24oYSxjLGQpe2lmKDI8PVJkLnZlcnNpb24pYyYmQy51bmlmb3JtNGZ2KGplKGEpLG9hKCksZD4+Miw0KmMpO2Vsc2V7aWYoNzI+PWMpe3ZhciBlPWtlWzQqYy0xXSxmPW9hKCk7ZD4+PTI7Zm9yKHZhciBnPTA7Zzw0KmM7Zys9NCl7dmFyIGg9ZCtnO2VbZ109ZltoXTtlW2crMV09ZltoKzFdOw0KZVtnKzJdPWZbaCsyXTtlW2crM109ZltoKzNdfX1lbHNlIGU9b2EoKS5zdWJhcnJheShkPj4yLGQrMTYqYz4+Mik7Qy51bmlmb3JtNGZ2KGplKGEpLGUpfX0sZ2xVbmlmb3JtTWF0cml4NGZ2OmZ1bmN0aW9uKGEsYyxkLGUpe2lmKDI8PVJkLnZlcnNpb24pYyYmQy51bmlmb3JtTWF0cml4NGZ2KGplKGEpLCEhZCxvYSgpLGU+PjIsMTYqYyk7ZWxzZXtpZigxOD49Yyl7dmFyIGY9a2VbMTYqYy0xXSxnPW9hKCk7ZT4+PTI7Zm9yKHZhciBoPTA7aDwxNipjO2grPTE2KXt2YXIgbD1lK2g7ZltoXT1nW2xdO2ZbaCsxXT1nW2wrMV07ZltoKzJdPWdbbCsyXTtmW2grM109Z1tsKzNdO2ZbaCs0XT1nW2wrNF07ZltoKzVdPWdbbCs1XTtmW2grNl09Z1tsKzZdO2ZbaCs3XT1nW2wrN107ZltoKzhdPWdbbCs4XTtmW2grOV09Z1tsKzldO2ZbaCsxMF09Z1tsKzEwXTtmW2grMTFdPWdbbCsxMV07ZltoKzEyXT1nW2wrMTJdO2ZbaCsxM109Z1tsKzEzXTtmW2grMTRdPWdbbCsxNF07ZltoKzE1XT1nW2wrDQoxNV19fWVsc2UgZj1vYSgpLnN1YmFycmF5KGU+PjIsZSs2NCpjPj4yKTtDLnVuaWZvcm1NYXRyaXg0ZnYoamUoYSksISFkLGYpfX0sZ2xVc2VQcm9ncmFtOmZ1bmN0aW9uKGEpe2E9RmRbYV07Qy51c2VQcm9ncmFtKGEpO0MuV2E9YX0sZ2xWYWxpZGF0ZVByb2dyYW06ZnVuY3Rpb24oYSl7Qy52YWxpZGF0ZVByb2dyYW0oRmRbYV0pfSxnbFZlcnRleEF0dHJpYkRpdmlzb3I6ZnVuY3Rpb24oYSxjKXtDLnZlcnRleEF0dHJpYkRpdmlzb3IoYSxjKX0sZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyOmZ1bmN0aW9uKGEsYyxkLGUsZixnKXt2YXIgaD1SZC5VW2FdO0MuVj8oaC5lYT0hMSxDLnZlcnRleEF0dHJpYlBvaW50ZXIoYSxjLGQsISFlLGYsZykpOihoLnNpemU9YyxoLnR5cGU9ZCxoLkthPWUsaC5wYT1mLGguZz1nLGguZWE9ITAsaC5SYT1mdW5jdGlvbihsLHQscCx4LFUsUSl7dGhpcy52ZXJ0ZXhBdHRyaWJQb2ludGVyKGwsdCxwLHgsVSxRKX0pfSxpbnZva2VfaWk6dWUsaW52b2tlX2lpaWk6dmUsDQppbnZva2Vfdmk6d2UsaW52b2tlX3ZpaTp4ZSxtZW1vcnk6Y2F8fG4ud2FzbU1lbW9yeSxzdHJmdGltZV9sOmZ1bmN0aW9uKGEsYyxkLGUpe3JldHVybiBwZShhLGMsZCxlKX19Ow0KKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShkLGUpe2Q9ZC5leHBvcnRzO24uYXNtPWQ7dy5PYS5wdXNoKG4uYXNtLl9lbXNjcmlwdGVuX3Rsc19pbml0KTtUYT1uLmFzbS5fX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlO1ZhLnVuc2hpZnQobi5hc20uX193YXNtX2NhbGxfY3RvcnMpO09hPWU7dy5tYigoKT0+bGIoKSk7cmV0dXJuIGR9dmFyIGM9e2Vudjp5ZSx3YXNpX3NuYXBzaG90X3ByZXZpZXcxOnllfTtrYigpO2lmKG4uaW5zdGFudGlhdGVXYXNtKXRyeXtyZXR1cm4gbi5pbnN0YW50aWF0ZVdhc20oYyxhKX1jYXRjaChkKXtMYSgiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIitkKSx0YShkKX1zYihjLGZ1bmN0aW9uKGQpe2EoZC5pbnN0YW5jZSxkLm1vZHVsZSl9KS5jYXRjaCh0YSk7cmV0dXJue319KSgpOw0KdmFyIHplPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZFJ4T2JqZWN0X2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybih6ZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWRSeE9iamVjdF9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kUnhPYmplY3RfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZFJ4T2JqZWN0X2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybihBZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWRSeE9iamVjdF9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kUnhPYmplY3RfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZFJ4T2JqZWN0X2dldEpzb25fMD1mdW5jdGlvbigpe3JldHVybihCZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWRSeE9iamVjdF9nZXRKc29uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kUnhPYmplY3RfZ2V0SnNvbl8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sQ2U9bi5fZW1zY3JpcHRlbl9iaW5kX01kUnhPYmplY3Rfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKENlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZFJ4T2JqZWN0X3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRSeE9iamVjdF9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfZ2V0T2JqZWN0SURfMD1mdW5jdGlvbigpe3JldHVybihEZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9nZXRPYmplY3RJRF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfRXJhc2VfMD1mdW5jdGlvbigpe3JldHVybihFZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9FcmFzZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X0VyYXNlXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxGZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKEZlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9DbG9uZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEdlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X0Nsb25lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9tb3ZlR3JpcFBvaW50c0F0XzQ9ZnVuY3Rpb24oKXtyZXR1cm4oSGU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfbW92ZUdyaXBQb2ludHNBdF80PQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEllPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihJZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEplPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybihKZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3RfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEtlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X2dldEpzb25fMD1mdW5jdGlvbigpe3JldHVybihLZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9nZXRKc29uXzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJPYmplY3Rfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKExlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiT2JqZWN0X3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk9iamVjdF9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTWU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfZ2V0T2JqZWN0SURfMD1mdW5jdGlvbigpe3JldHVybihNZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9nZXRPYmplY3RJRF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfRXJhc2VfMD1mdW5jdGlvbigpe3JldHVybihOZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9FcmFzZV8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfRXJhc2VfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKE9lPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9DbG9uZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFBlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X0Nsb25lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9tb3ZlR3JpcFBvaW50c0F0XzQ9ZnVuY3Rpb24oKXtyZXR1cm4oUWU9DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9tb3ZlR3JpcFBvaW50c0F0XzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihSZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybihTZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFRlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X2dldEpzb25fMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKFRlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJFbnRpdHlfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKFVlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRW50aXR5X3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkVudGl0eV9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVmU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRTdGFydFBhcmFtXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVmU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRTdGFydFBhcmFtXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRTdGFydFBhcmFtXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sV2U9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRFbmRQYXJhbV8wPQ0KZnVuY3Rpb24oKXtyZXR1cm4oV2U9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRFbmRQYXJhbV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0RW5kUGFyYW1fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldERpc3RBdFBhcmFtXzE9ZnVuY3Rpb24oKXtyZXR1cm4oWGU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXREaXN0QXRQYXJhbV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0RGlzdEF0UGFyYW1fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxZZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldFBhcmFtQXREaXN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oWWU9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRQYXJhbUF0RGlzdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0UGFyYW1BdERpc3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwNClplPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0RGlzdEF0UG9pbnRfMT1mdW5jdGlvbigpe3JldHVybihaZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldERpc3RBdFBvaW50XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXREaXN0QXRQb2ludF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRlPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0UG9pbnRBdERpc3RfMT1mdW5jdGlvbigpe3JldHVybigkZT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldFBvaW50QXREaXN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRQb2ludEF0RGlzdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0T2JqZWN0SURfMD1mdW5jdGlvbigpe3JldHVybihhZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldE9iamVjdElEXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9nZXRPYmplY3RJRF8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sYmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGJmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGNmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfQ29ubmVjdGlvblRlbXBPYmplY3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDdXJ2ZV9DbG9uZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGRmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfQ2xvbmVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX0Nsb25lXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxlZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihlZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihmZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldE9iamVjdE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxnZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybihnZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldER4ZjBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkN1cnZlX2dldER4ZjBfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKGhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGpmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGpmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfc2V0SnNvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ3VydmVfc2V0SnNvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX01kRGJEaW1lbnNpb25fMD1mdW5jdGlvbigpe3JldHVybihrZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9NZERiRGltZW5zaW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fTWREYkRpbWVuc2lvbl8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sbGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFBvc2l0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4obGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFBvc2l0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFBvc2l0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0VGV4dFBvc2l0aW9uXzE9ZnVuY3Rpb24oKXtyZXR1cm4obWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0VGV4dFBvc2l0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0VGV4dFBvc2l0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25faXNVc2luZ0RlZmF1bHRUZXh0UG9zaXRpb25fMD1mdW5jdGlvbigpe3JldHVybihuZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9pc1VzaW5nRGVmYXVsdFRleHRQb3NpdGlvbl8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25faXNVc2luZ0RlZmF1bHRUZXh0UG9zaXRpb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl91c2VTZXRUZXh0UG9zaXRpb25fMD1mdW5jdGlvbigpe3JldHVybihvZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl91c2VTZXRUZXh0UG9zaXRpb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl91c2VTZXRUZXh0UG9zaXRpb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxwZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl91c2VEZWZhdWx0VGV4dFBvc2l0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdXNlRGVmYXVsdFRleHRQb3NpdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3VzZURlZmF1bHRUZXh0UG9zaXRpb25fMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2VsZXZhdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKHFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2VsZXZhdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2VsZXZhdGlvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldEVsZXZhdGlvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKHJmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldEVsZXZhdGlvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldEVsZXZhdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHNmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2RpbWVuc2lvblRleHRfMD1mdW5jdGlvbigpe3JldHVybihzZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9kaW1lbnNpb25UZXh0XzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9kaW1lbnNpb25UZXh0XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0RGltZW5zaW9uVGV4dF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHRmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldERpbWVuc2lvblRleHRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXREaW1lbnNpb25UZXh0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFJvdGF0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4odWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFJvdGF0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dFJvdGF0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0VGV4dFJvdGF0aW9uXzE9DQpmdW5jdGlvbigpe3JldHVybih2Zj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXRUZXh0Um90YXRpb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXRUZXh0Um90YXRpb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3Zj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9kaW1lbnNpb25TdHlsZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHdmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2RpbWVuc2lvblN0eWxlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fZGltZW5zaW9uU3R5bGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4Zj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXREaW1lbnNpb25TdHlsZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldERpbWVuc2lvblN0eWxlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0RGltZW5zaW9uU3R5bGVfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHlmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3RleHRBdHRhY2htZW50XzA9ZnVuY3Rpb24oKXtyZXR1cm4oeWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fdGV4dEF0dGFjaG1lbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl90ZXh0QXR0YWNobWVudF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHpmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldFRleHRBdHRhY2htZW50XzE9ZnVuY3Rpb24oKXtyZXR1cm4oemY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0VGV4dEF0dGFjaG1lbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXRUZXh0QXR0YWNobWVudF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2hvcml6b250YWxSb3RhdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKEFmPQ0Kbi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25faG9yaXpvbnRhbFJvdGF0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25faG9yaXpvbnRhbFJvdGF0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0SG9yaXpvbnRhbFJvdGF0aW9uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oQmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0SG9yaXpvbnRhbFJvdGF0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0SG9yaXpvbnRhbFJvdGF0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fcmVjb21wdXRlRGltQmxvY2tfMT1mdW5jdGlvbigpe3JldHVybihDZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9yZWNvbXB1dGVEaW1CbG9ja18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3JlY29tcHV0ZURpbUJsb2NrXzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxEZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJJbnRfMT1mdW5jdGlvbigpe3JldHVybihEZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJJbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJJbnRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9TZXREaW1WYXJJbnRfMj1mdW5jdGlvbigpe3JldHVybihFZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9TZXREaW1WYXJJbnRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9TZXREaW1WYXJJbnRfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJEb3VibGVfMT1mdW5jdGlvbigpe3JldHVybihGZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJEb3VibGVfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0dldERpbVZhckRvdWJsZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX1NldERpbVZhckRvdWJsZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKEdmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX1NldERpbVZhckRvdWJsZV8yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX1NldERpbVZhckRvdWJsZV8yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0dldERpbVZhclN0cmluZ18xPWZ1bmN0aW9uKCl7cmV0dXJuKEhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0dldERpbVZhclN0cmluZ18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0dldERpbVZhclN0cmluZ18xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX1NldERpbVZhclN0cmluZ18yPQ0KZnVuY3Rpb24oKXtyZXR1cm4oSWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fU2V0RGltVmFyU3RyaW5nXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fU2V0RGltVmFyU3RyaW5nXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fR2V0RGltVmFyT2JqZWN0SWRfMT1mdW5jdGlvbigpe3JldHVybihKZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9HZXREaW1WYXJPYmplY3RJZF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0dldERpbVZhck9iamVjdElkXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fU2V0RGltVmFyT2JqZWN0SWRfMj1mdW5jdGlvbigpe3JldHVybihLZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9TZXREaW1WYXJPYmplY3RJZF8yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX1NldERpbVZhck9iamVjdElkXzIpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxMZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKExmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2dldE9iamVjdElEXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fZ2V0T2JqZWN0SURfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1mPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0VyYXNlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fRXJhc2VfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKE5mPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9Db25uZWN0aW9uVGVtcE9iamVjdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9mPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX0Nsb25lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oT2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fQ2xvbmVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9DbG9uZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihQZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9tb3ZlR3JpcFBvaW50c0F0XzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2dldE9iamVjdE5hbWVfMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKFFmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2dldE9iamVjdE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9nZXRPYmplY3ROYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2dldER4ZjBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9nZXREeGYwXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFNmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sDQpUZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oVGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fc2V0SnNvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX3NldEpzb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVZj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRpbWVuc2lvbl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFVmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGltZW5zaW9uX19fZGVzdHJveV9fXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEaW1lbnNpb25fX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWZj1uLl9lbXNjcmlwdGVuX2JpbmRfVm9pZFB0cl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFZmPW4uX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX1ZvaWRQdHJfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFdmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfTWRDbUNvbG9yXzA9ZnVuY3Rpb24oKXtyZXR1cm4oV2Y9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9NZENtQ29sb3JfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX01kQ21Db2xvcl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0Q29sb3JJbmRleF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFhmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0Q29sb3JJbmRleF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0Q29sb3JJbmRleF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFlmPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0UkdCXzM9ZnVuY3Rpb24oKXtyZXR1cm4oWWY9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRSR0JfMz1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX3NldFJHQl8zKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sWmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfcmVkXzA9ZnVuY3Rpb24oKXtyZXR1cm4oWmY9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfcmVkXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfcmVkXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfcmVkXzE9ZnVuY3Rpb24oKXtyZXR1cm4oJGY9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfcmVkXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfcmVkXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfZ3JlZW5fMD1mdW5jdGlvbigpe3JldHVybihhZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX2dldF9ncmVlbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X2dyZWVuXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxiZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX3NldF9ncmVlbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGJnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X2dyZWVuXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfZ3JlZW5fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX2dldF9ibHVlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oY2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfYmx1ZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X2JsdWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX3NldF9ibHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oZGc9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfYmx1ZV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X2JsdWVfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGVnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X21ldGhvZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGVnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X21ldGhvZF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X21ldGhvZF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGZnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X21ldGhvZF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGZnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X21ldGhvZF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X21ldGhvZF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGdnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X25fMD1mdW5jdGlvbigpe3JldHVybihnZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX2dldF9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfbl8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0saGc9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGhnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX3NldF9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9nZXRfY29sb3JJbmRleF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGlnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfZ2V0X2NvbG9ySW5kZXhfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX2dldF9jb2xvckluZGV4XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samc9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9zZXRfY29sb3JJbmRleF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGpnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3Jfc2V0X2NvbG9ySW5kZXhfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX3NldF9jb2xvckluZGV4XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxrZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRDbUNvbG9yX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oa2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kQ21Db2xvcl9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZENtQ29sb3JfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxsZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMD1mdW5jdGlvbigpe3JldHVybihsZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMz1mdW5jdGlvbigpe3JldHVybihtZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMz1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfTWRHZVBvaW50M2RfMykuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LG5nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeF8wPWZ1bmN0aW9uKCl7cmV0dXJuKG5nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG9nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9zZXRfeF8xPWZ1bmN0aW9uKCl7cmV0dXJuKG9nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9zZXRfeF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9zZXRfeF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHBnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlUG9pbnQzZF9nZXRfeV8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0scWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF95XzE9ZnVuY3Rpb24oKXtyZXR1cm4ocWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF95XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF95XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX2dldF96XzA9ZnVuY3Rpb24oKXtyZXR1cm4ocmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX2dldF96XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX2dldF96XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF96XzE9ZnVuY3Rpb24oKXtyZXR1cm4oc2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF96XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX3NldF96XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSx0Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih0Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVBvaW50M2RfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx1Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX01kR2VWZWN0b3IzZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHVnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfTWRHZVZlY3RvcjNkXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9NZEdlVmVjdG9yM2RfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX01kR2VWZWN0b3IzZF8zPWZ1bmN0aW9uKCl7cmV0dXJuKHZnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfTWRHZVZlY3RvcjNkXzM9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX01kR2VWZWN0b3IzZF8zKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfZ2V0X3hfMD1mdW5jdGlvbigpe3JldHVybih3Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX2dldF94XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9nZXRfeF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2Rfc2V0X3hfMT1mdW5jdGlvbigpe3JldHVybih4Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX3NldF94XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9zZXRfeF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHlnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfZ2V0X3lfMD1mdW5jdGlvbigpe3JldHVybih5Zz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX2dldF95XzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX2dldF95XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0semc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9zZXRfeV8xPWZ1bmN0aW9uKCl7cmV0dXJuKHpnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2Rfc2V0X3lfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX3NldF95XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9nZXRfel8wPWZ1bmN0aW9uKCl7cmV0dXJuKEFnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfZ2V0X3pfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX2dldF96XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9zZXRfel8xPWZ1bmN0aW9uKCl7cmV0dXJuKEJnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2Rfc2V0X3pfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2Rfc2V0X3pfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxDZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQ2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VWZWN0b3IzZF9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxEZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX01kR2VNYXRyaXgzZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKERnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfTWRHZU1hdHJpeDNkXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9NZEdlTWF0cml4M2RfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3NldFRvSWRlbnRpdHlfMD1mdW5jdGlvbigpe3JldHVybihFZz0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9JZGVudGl0eV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9JZGVudGl0eV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfcHJlTXVsdEJ5XzE9ZnVuY3Rpb24oKXtyZXR1cm4oRmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9wcmVNdWx0QnlfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3ByZU11bHRCeV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfcG9zdE11bHRCeV8xPWZ1bmN0aW9uKCl7cmV0dXJuKEdnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfcG9zdE11bHRCeV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfcG9zdE11bHRCeV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9Qcm9kdWN0XzI9DQpmdW5jdGlvbigpe3JldHVybihIZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3NldFRvUHJvZHVjdF8yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9Qcm9kdWN0XzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9pbnZlcnRfMD1mdW5jdGlvbigpe3JldHVybihJZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX2ludmVydF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfaW52ZXJ0XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9pc1Npbmd1bGFyXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9pc1Npbmd1bGFyXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9pc1Npbmd1bGFyXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sDQpLZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3RyYW5zcG9zZUl0XzA9ZnVuY3Rpb24oKXtyZXR1cm4oS2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF90cmFuc3Bvc2VJdF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfdHJhbnNwb3NlSXRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX2lzRXF1YWxUb18xPWZ1bmN0aW9uKCl7cmV0dXJuKExnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfaXNFcXVhbFRvXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9pc0VxdWFsVG9fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX2RldF8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfZGV0XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9kZXRfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LE5nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0Q29vcmRTeXN0ZW1fND1mdW5jdGlvbigpe3JldHVybihOZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3NldENvb3JkU3lzdGVtXzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9zZXRDb29yZFN5c3RlbV80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9UcmFuc2xhdGlvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKE9nPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9UcmFuc2xhdGlvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9UcmFuc2xhdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9Sb3RhdGlvbl8zPWZ1bmN0aW9uKCl7cmV0dXJuKFBnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9Sb3RhdGlvbl8zPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9zZXRUb1JvdGF0aW9uXzMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9zZXRUb1NjYWxpbmdfMj1mdW5jdGlvbigpe3JldHVybihRZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3NldFRvU2NhbGluZ18yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2V0VG9TY2FsaW5nXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9zY2FsZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2Rfc2NhbGVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX3NjYWxlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9nZXREYXRhXzI9ZnVuY3Rpb24oKXtyZXR1cm4oU2c9DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX2dldERhdGFfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX2dldERhdGFfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxUZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWRHZU1hdHJpeDNkX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVGc9bi5fZW1zY3JpcHRlbl9iaW5kX01kR2VNYXRyaXgzZF9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZEdlTWF0cml4M2RfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfTWREYkxheWVyVGFibGVSZWNvcmRfMD1mdW5jdGlvbigpe3JldHVybihVZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfTWREYkxheWVyVGFibGVSZWNvcmRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfTWREYkxheWVyVGFibGVSZWNvcmRfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFZnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9nZXROYW1lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2dldE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFdnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXROYW1lXzE9ZnVuY3Rpb24oKXtyZXR1cm4oV2c9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldE5hbWVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0TmFtZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9pc0Zyb3plbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFhnPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9pc0Zyb3plbl8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2lzRnJvemVuXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldElzRnJvemVuXzE9ZnVuY3Rpb24oKXtyZXR1cm4oWWc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldElzRnJvemVuXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldElzRnJvemVuXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2lzT2ZmXzA9ZnVuY3Rpb24oKXtyZXR1cm4oWmc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2lzT2ZmXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2lzT2ZmXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGc9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldElzT2ZmXzE9DQpmdW5jdGlvbigpe3JldHVybigkZz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SXNPZmZfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SXNPZmZfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxhaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfaXNMb2NrZWRfMD1mdW5jdGlvbigpe3JldHVybihhaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfaXNMb2NrZWRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfaXNMb2NrZWRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SXNMb2NrZWRfMT1mdW5jdGlvbigpe3JldHVybihiaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SXNMb2NrZWRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SXNMb2NrZWRfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGNoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9jb2xvcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKGNoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9jb2xvcl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9jb2xvcl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGRoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRDb2xvcl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGRoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRDb2xvcl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRDb2xvcl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9saW5ldHlwZU9iamVjdElkXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2xpbmV0eXBlT2JqZWN0SWRfMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9saW5ldHlwZU9iamVjdElkXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldExpbmV0eXBlT2JqZWN0SWRfMT1mdW5jdGlvbigpe3JldHVybihmaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0TGluZXR5cGVPYmplY3RJZF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRMaW5ldHlwZU9iamVjdElkXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2xpbmVXZWlnaHRfMD1mdW5jdGlvbigpe3JldHVybihnaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfbGluZVdlaWdodF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9saW5lV2VpZ2h0XzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxoaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0TGluZVdlaWdodF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGhoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRMaW5lV2VpZ2h0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldExpbmVXZWlnaHRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxpaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0T2JqZWN0SURfMD1mdW5jdGlvbigpe3JldHVybihpaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0T2JqZWN0SURfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfRXJhc2VfMD1mdW5jdGlvbigpe3JldHVybihqaD0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9FcmFzZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9FcmFzZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGtoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9Db25uZWN0aW9uVGVtcE9iamVjdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9Db25uZWN0aW9uVGVtcE9iamVjdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9DbG9uZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGxoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9DbG9uZV8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sbWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihtaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfbW92ZUdyaXBQb2ludHNBdF80PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9tb3ZlR3JpcFBvaW50c0F0XzQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihuaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9nZXRPYmplY3ROYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2dldER4ZjBfMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKG9oPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2dldER4ZjBfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxwaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKHBoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9nZXRKc29uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX2dldEpzb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVSZWNvcmRfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKHFoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlUmVjb3JkX3NldEpzb25fMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZVJlY29yZF9fX2Rlc3Ryb3lfX18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHNoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHNoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXRPYmplY3RJRF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXRPYmplY3RJRF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHRoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9FcmFzZV8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4odWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nsb25lXzA9ZnVuY3Rpb24oKXtyZXR1cm4odmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nsb25lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX0Nsb25lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX21vdmVHcmlwUG9pbnRzQXRfND0NCmZ1bmN0aW9uKCl7cmV0dXJuKHdoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9tb3ZlR3JpcFBvaW50c0F0XzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4aD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHhoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx5aD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVfZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHloPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX2dldER4ZjBfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHpoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9nZXRKc29uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oemg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGF5ZXJUYWJsZV9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oQWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMYXllclRhYmxlX3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxheWVyVGFibGVfc2V0SnNvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9nZXRPYmplY3RJRF8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0VyYXNlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQ2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0VyYXNlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oRGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX0Nsb25lXzA9DQpmdW5jdGlvbigpe3JldHVybihFaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfQ2xvbmVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfbW92ZUdyaXBQb2ludHNBdF80PWZ1bmN0aW9uKCl7cmV0dXJuKEZoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9tb3ZlR3JpcFBvaW50c0F0XzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEdoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LEhoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9nZXREeGYwXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX2dldER4ZjBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEloPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9nZXRKc29uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmV0eXBlVGFibGVfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEpoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5ldHlwZVRhYmxlX3NldEpzb25fMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZXR5cGVUYWJsZV9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEtoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKExoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPQ0KZnVuY3Rpb24oKXtyZXR1cm4oTWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX0Nsb25lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihPaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRTdHlsZVRhYmxlX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFBoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFBoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFFoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dFN0eWxlVGFibGVfZ2V0SnNvbl8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oU2g9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0U3R5bGVUYWJsZV9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRMYXllclRhYmxlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRMYXllclRhYmxlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRMYXllclRhYmxlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRMaW5ldHlwZVRhYmxlXzA9DQpmdW5jdGlvbigpe3JldHVybihVaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldExpbmV0eXBlVGFibGVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldExpbmV0eXBlVGFibGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldFRleHRTdHlsZVRhYmxlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRUZXh0U3R5bGVUYWJsZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0VGV4dFN0eWxlVGFibGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldEN1cnJlbnRseUxpbmVUeXBlU2NhbGVfMD1mdW5jdGlvbigpe3JldHVybihXaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldEN1cnJlbnRseUxpbmVUeXBlU2NhbGVfMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5TGluZVR5cGVTY2FsZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5TGluZVR5cGVTY2FsZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFhoPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5TGluZVR5cGVTY2FsZV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5TGluZVR5cGVTY2FsZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFloPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5TGF5ZXJOYW1lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oWWg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlMYXllck5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldEN1cnJlbnRseUxheWVyTmFtZV8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sWmg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9TZXRDdXJyZW50bHlMYXllck5hbWVfMT1mdW5jdGlvbigpe3JldHVybihaaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX1NldEN1cnJlbnRseUxheWVyTmFtZV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5TGF5ZXJOYW1lXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGg9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlMaW5lVHlwZU5hbWVfMD1mdW5jdGlvbigpe3JldHVybigkaD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldEN1cnJlbnRseUxpbmVUeXBlTmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5TGluZVR5cGVOYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWk9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9TZXRDdXJyZW50bHlMaW5lVHlwZU5hbWVfMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKGFpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5TGluZVR5cGVOYW1lXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9TZXRDdXJyZW50bHlMaW5lVHlwZU5hbWVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxiaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX0dldEN1cnJlbnRseVRydWVDb2xvcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKGJpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5VHJ1ZUNvbG9yXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlUcnVlQ29sb3JfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX1NldEN1cnJlbnRseVRydWVDb2xvcl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGNpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5VHJ1ZUNvbG9yXzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX1NldEN1cnJlbnRseVRydWVDb2xvcl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5Q29sb3JJbmRleF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5Q29sb3JJbmRleF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfR2V0Q3VycmVudGx5Q29sb3JJbmRleF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5Q29sb3JJbmRleF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGVpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5Q29sb3JJbmRleF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5Q29sb3JJbmRleF8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sZmk9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlUZXh0U3R5bGVOYW1lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZmk9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlUZXh0U3R5bGVOYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9HZXRDdXJyZW50bHlUZXh0U3R5bGVOYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ2k9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9TZXRDdXJyZW50bHlUZXh0U3R5bGVfMT1mdW5jdGlvbigpe3JldHVybihnaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX1NldEN1cnJlbnRseVRleHRTdHlsZV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2VfU2V0Q3VycmVudGx5VGV4dFN0eWxlXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saGk9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJEYXRhYmFzZV9nZXRPYmplY3ROYW1lXzA9DQpmdW5jdGlvbigpe3JldHVybihoaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldE9iamVjdE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxpaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybihpaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldER4ZjBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldER4ZjBfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldEpzb25fMD1mdW5jdGlvbigpe3JldHVybihqaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkRhdGFiYXNlX2dldEpzb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxraT0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2Vfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGtpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2Vfc2V0SnNvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiRGF0YWJhc2Vfc2V0SnNvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF91cGRhdGVEaXNwbGF5XzI9ZnVuY3Rpb24oKXtyZXR1cm4obGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3VwZGF0ZURpc3BsYXlfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfdXBkYXRlRGlzcGxheV8yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1pPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF90ZXN0XzA9ZnVuY3Rpb24oKXtyZXR1cm4obWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3Rlc3RfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfdGVzdF8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sbmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X29wZW5XZWJGaWxlXzM9ZnVuY3Rpb24oKXtyZXR1cm4obmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X29wZW5XZWJGaWxlXzM9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X29wZW5XZWJGaWxlXzMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb2k9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3NhdmVGaWxlVG9VcmxfMT1mdW5jdGlvbigpe3JldHVybihvaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3Rfc2F2ZUZpbGVUb1VybF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9zYXZlRmlsZVRvVXJsXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3NhdmVGaWxlXzE9ZnVuY3Rpb24oKXtyZXR1cm4ocGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3NhdmVGaWxlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3NhdmVGaWxlXzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxxaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfZ2V0Vmlld0RhdGFKc29uUGFyYW1fMD1mdW5jdGlvbigpe3JldHVybihxaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfZ2V0Vmlld0RhdGFKc29uUGFyYW1fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfZ2V0Vmlld0RhdGFKc29uUGFyYW1fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxyaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfdXBkYXRhQXBwRGF0YV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHJpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF91cGRhdGFBcHBEYXRhXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X3VwZGF0YUFwcERhdGFfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RGF0YWJhc2VfMD1mdW5jdGlvbigpe3JldHVybihzaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RGF0YWJhc2VfMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREYXRhYmFzZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXRTeXNWYXJTdHJpbmdfMT1mdW5jdGlvbigpe3JldHVybih0aT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0U3lzVmFyU3RyaW5nXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldFN5c1ZhclN0cmluZ18xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHVpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRTeXNWYXJTdHJpbmdfMj1mdW5jdGlvbigpe3JldHVybih1aT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0U3lzVmFyU3RyaW5nXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldFN5c1ZhclN0cmluZ18yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHZpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXRTeXNWYXJEb3VibGVfMT1mdW5jdGlvbigpe3JldHVybih2aT0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXRTeXNWYXJEb3VibGVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0U3lzVmFyRG91YmxlXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd2k9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldFN5c1ZhckRvdWJsZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHdpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRTeXNWYXJEb3VibGVfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0U3lzVmFyRG91YmxlXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldFN5c1ZhckxvbmdfMT1mdW5jdGlvbigpe3JldHVybih4aT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0U3lzVmFyTG9uZ18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXRTeXNWYXJMb25nXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldFN5c1ZhckxvbmdfMj0NCmZ1bmN0aW9uKCl7cmV0dXJuKHlpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRTeXNWYXJMb25nXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldFN5c1ZhckxvbmdfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx6aT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfZmlyZUV2ZW50V2luZG93U2l6ZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHppPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9maXJlRXZlbnRXaW5kb3dTaXplXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X2ZpcmVFdmVudFdpbmRvd1NpemVfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxBaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfZmlyZUV2ZW50Q29tbWFuZFN0YXJ0XzA9ZnVuY3Rpb24oKXtyZXR1cm4oQWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X2ZpcmVFdmVudENvbW1hbmRTdGFydF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9maXJlRXZlbnRDb21tYW5kU3RhcnRfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LEJpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9JbnRlbGxpU2VsZWN0X1BvaW50U2VsZWN0XzI9ZnVuY3Rpb24oKXtyZXR1cm4oQmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0ludGVsbGlTZWxlY3RfUG9pbnRTZWxlY3RfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfSW50ZWxsaVNlbGVjdF9Qb2ludFNlbGVjdF8yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LENpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9JbnRlbGxpU2VsZWN0X2dldEdyaWREYXRhXzE9ZnVuY3Rpb24oKXtyZXR1cm4oQ2k9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0ludGVsbGlTZWxlY3RfZ2V0R3JpZERhdGFfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfSW50ZWxsaVNlbGVjdF9nZXRHcmlkRGF0YV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9FbnRpdHlUZW1wV29yZERyYXdfb25KaWdDb21tYW5kRW5kXzA9DQpmdW5jdGlvbigpe3JldHVybihEaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRW50aXR5VGVtcFdvcmREcmF3X29uSmlnQ29tbWFuZEVuZF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9FbnRpdHlUZW1wV29yZERyYXdfb25KaWdDb21tYW5kRW5kXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0VudGl0eVRlbXBXb3JkRHJhd19vbkppZ0RyYXdFbnRpdHlEaXNwbGF5XzE9ZnVuY3Rpb24oKXtyZXR1cm4oRWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0VudGl0eVRlbXBXb3JkRHJhd19vbkppZ0RyYXdFbnRpdHlEaXNwbGF5XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0VudGl0eVRlbXBXb3JkRHJhd19vbkppZ0RyYXdFbnRpdHlEaXNwbGF5XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0VudGl0eVRlbXBXb3JkRHJhd19vblJlYWR5SmlnVXBkYXRlRGlzcGxhXzA9DQpmdW5jdGlvbigpe3JldHVybihGaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRW50aXR5VGVtcFdvcmREcmF3X29uUmVhZHlKaWdVcGRhdGVEaXNwbGFfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRW50aXR5VGVtcFdvcmREcmF3X29uUmVhZHlKaWdVcGRhdGVEaXNwbGFfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRW50aXR5VGVtcFdvcmREcmF3X29uSmlnQ2xlYXJEaXNwbGF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oR2k9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0VudGl0eVRlbXBXb3JkRHJhd19vbkppZ0NsZWFyRGlzcGxheV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9FbnRpdHlUZW1wV29yZERyYXdfb25KaWdDbGVhckRpc3BsYXlfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0NvbG9yXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSGk9DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0NvbG9yXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdDb2xvcl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREcmF3Q29sb3JfMD1mdW5jdGlvbigpe3JldHVybihJaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0NvbG9yXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdDb2xvcl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEppPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGRMYXllcl8xPWZ1bmN0aW9uKCl7cmV0dXJuKEppPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGRMYXllcl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGRMYXllcl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEtpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXREcmF3TGF5ZXJfMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKEtpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXREcmF3TGF5ZXJfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xheWVyXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMYXllcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKExpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREcmF3TGF5ZXJfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xheWVyXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0FkZFRleHRTdHlsZV80PWZ1bmN0aW9uKCl7cmV0dXJuKE1pPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGRUZXh0U3R5bGVfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfQWRkVGV4dFN0eWxlXzQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdUZXh0U3R5bGVfMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKE5pPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXREcmF3VGV4dFN0eWxlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdUZXh0U3R5bGVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd1RleHRTdHlsZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKE9pPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREcmF3VGV4dFN0eWxlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdUZXh0U3R5bGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfQWRkTGluZXR5cGVfMj1mdW5jdGlvbigpe3JldHVybihQaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfQWRkTGluZXR5cGVfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfQWRkTGluZXR5cGVfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSwNClFpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGRMaW5ldHlwZUV4XzM9ZnVuY3Rpb24oKXtyZXR1cm4oUWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0FkZExpbmV0eXBlRXhfMz1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfQWRkTGluZXR5cGVFeF8zKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGREaW1TdHlsZV81PWZ1bmN0aW9uKCl7cmV0dXJuKFJpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGREaW1TdHlsZV81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9BZGREaW1TdHlsZV81KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXREcmF3TGluZXR5cGVfMT1mdW5jdGlvbigpe3JldHVybihTaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xpbmV0eXBlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdMaW5ldHlwZV8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sVGk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMaW5ldHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREcmF3TGluZXR5cGVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmV0eXBlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdMaW5lV2VpZ2h0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oVWk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdMaW5lV2VpZ2h0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdMaW5lV2VpZ2h0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMaW5lV2VpZ2h0XzA9ZnVuY3Rpb24oKXtyZXR1cm4oVmk9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMaW5lV2VpZ2h0XzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmVXZWlnaHRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xpbmVUeXBlU2NhbGVfMT1mdW5jdGlvbigpe3JldHVybihXaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xpbmVUeXBlU2NhbGVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xpbmVUeXBlU2NhbGVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmVUeXBlU2NhbGVfMD1mdW5jdGlvbigpe3JldHVybihYaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmVUeXBlU2NhbGVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmVUeXBlU2NhbGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxZaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0RpbVN0eWxlXzE9DQpmdW5jdGlvbigpe3JldHVybihZaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0RpbVN0eWxlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdEaW1TdHlsZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFppPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9HZXREcmF3RGltU3R5bGVfMD1mdW5jdGlvbigpe3JldHVybihaaT1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0RpbVN0eWxlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdEaW1TdHlsZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRQYXR0ZXJuRGVmaW5pdGlvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKCRpPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRQYXR0ZXJuRGVmaW5pdGlvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXRQYXR0ZXJuRGVmaW5pdGlvbl8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sYWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldFBhdHRlcm5EZWZpbml0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oYWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldFBhdHRlcm5EZWZpbml0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldFBhdHRlcm5EZWZpbml0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1NldERyYXdMaW5lV2lkdGhfMT1mdW5jdGlvbigpe3JldHVybihiaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfU2V0RHJhd0xpbmVXaWR0aF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9TZXREcmF3TGluZVdpZHRoXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMaW5lV2lkdGhfMD1mdW5jdGlvbigpe3JldHVybihjaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfR2V0RHJhd0xpbmVXaWR0aF8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0dldERyYXdMaW5lV2lkdGhfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0xpbmVfNj1mdW5jdGlvbigpe3JldHVybihkaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0xpbmVfNj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0xpbmVfNikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0FyY181PWZ1bmN0aW9uKCl7cmV0dXJuKGVqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3QXJjXzU9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdBcmNfNSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0FyYzJfNj1mdW5jdGlvbigpe3JldHVybihmaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0FyYzJfNj0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3QXJjMl82KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGdqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3Q2lyY2xlXzM9ZnVuY3Rpb24oKXtyZXR1cm4oZ2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdDaXJjbGVfMz1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0NpcmNsZV8zKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RWxsaXBzZV81PWZ1bmN0aW9uKCl7cmV0dXJuKGhqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RWxsaXBzZV81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RWxsaXBzZV81KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGlqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RWxsaXBzZUFyY183PWZ1bmN0aW9uKCl7cmV0dXJuKGlqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RWxsaXBzZUFyY183PQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdFbGxpcHNlQXJjXzcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdQb2ludF8yPWZ1bmN0aW9uKCl7cmV0dXJuKGpqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3UG9pbnRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1BvaW50XzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdTb2xpZF84PWZ1bmN0aW9uKCl7cmV0dXJuKGtqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3U29saWRfOD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1NvbGlkXzgpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdNVGV4dF83PWZ1bmN0aW9uKCl7cmV0dXJuKGxqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3TVRleHRfNz0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3TVRleHRfNykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1RleHRfNz1mdW5jdGlvbigpe3JldHVybihtaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1RleHRfNz1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1RleHRfNykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxuaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0Jsb2NrUmVmZXJlbmNlXzU9ZnVuY3Rpb24oKXtyZXR1cm4obmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdCbG9ja1JlZmVyZW5jZV81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3QmxvY2tSZWZlcmVuY2VfNSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0RpbUFsaWduZWRfNj1mdW5jdGlvbigpe3JldHVybihvaj0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltQWxpZ25lZF82PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltQWxpZ25lZF82KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltQW5ndWxhcl84PWZ1bmN0aW9uKCl7cmV0dXJuKHBqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltQW5ndWxhcl84PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltQW5ndWxhcl84KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltRGlhbWV0cmljXzU9ZnVuY3Rpb24oKXtyZXR1cm4ocWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdEaW1EaWFtZXRyaWNfNT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0RpbURpYW1ldHJpY181KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltUm90YXRlZF83PQ0KZnVuY3Rpb24oKXtyZXR1cm4ocmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdEaW1Sb3RhdGVkXzc9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdEaW1Sb3RhdGVkXzcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdEaW1PcmRpbmF0ZV81PWZ1bmN0aW9uKCl7cmV0dXJuKHNqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltT3JkaW5hdGVfNT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0RpbU9yZGluYXRlXzUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdEaW1SYWRpYWxfNT1mdW5jdGlvbigpe3JldHVybih0aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd0RpbVJhZGlhbF81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RGltUmFkaWFsXzUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sDQp1aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfUGF0aE1vdmVUb18yPWZ1bmN0aW9uKCl7cmV0dXJuKHVqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9QYXRoTW92ZVRvXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhNb3ZlVG9fMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfUGF0aE1vdmVUb0V4XzU9ZnVuY3Rpb24oKXtyZXR1cm4odmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhNb3ZlVG9FeF81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9QYXRoTW92ZVRvRXhfNSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfUGF0aExpbmVUb18yPWZ1bmN0aW9uKCl7cmV0dXJuKHdqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9QYXRoTGluZVRvXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhMaW5lVG9fMikuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHhqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9QYXRoTGluZVRvRXhfNT1mdW5jdGlvbigpe3JldHVybih4aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfUGF0aExpbmVUb0V4XzU9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhMaW5lVG9FeF81KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHlqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3UGF0aFRvUG9seWxpbmVfMD1mdW5jdGlvbigpe3JldHVybih5aj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1BhdGhUb1BvbHlsaW5lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdQYXRoVG9Qb2x5bGluZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHpqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3UGF0aFRvU3BsaW5lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oemo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdQYXRoVG9TcGxpbmVfMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3UGF0aFRvU3BsaW5lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhNYWtlQ2xvc2VkXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhNYWtlQ2xvc2VkXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X1BhdGhNYWtlQ2xvc2VkXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdQYXRoVG9IYXRjaF8xPWZ1bmN0aW9uKCl7cmV0dXJuKEJqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3UGF0aFRvSGF0Y2hfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNPYmplY3RfRHJhd1BhdGhUb0hhdGNoXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdFbnRpdHlfMT1mdW5jdGlvbigpe3JldHVybihDaj0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NY09iamVjdF9EcmF3RW50aXR5XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jT2JqZWN0X0RyYXdFbnRpdHlfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxEaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfTWNBcHBfMD1mdW5jdGlvbigpe3JldHVybihEaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfTWNBcHBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNBcHBfTWNBcHBfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfSW5pdF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEVqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9Jbml0XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jQXBwX0luaXRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfQ3JlYXRlTXhEcmF3XzU9ZnVuY3Rpb24oKXtyZXR1cm4oRmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX0NyZWF0ZU14RHJhd181PQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01jQXBwX0NyZWF0ZU14RHJhd181KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9HZXRDdXJyZW50TXhEcmF3XzA9ZnVuY3Rpb24oKXtyZXR1cm4oR2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX0dldEN1cnJlbnRNeERyYXdfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNBcHBfR2V0Q3VycmVudE14RHJhd18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9EZXN0cm95T2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oSGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX0Rlc3Ryb3lPYmplY3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNBcHBfRGVzdHJveU9iamVjdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9tY2VkUkdCMkluZGV4XzQ9ZnVuY3Rpb24oKXtyZXR1cm4oSWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX21jZWRSR0IySW5kZXhfND0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0FwcF9tY2VkUkdCMkluZGV4XzQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9PYmplY3ROYW1lXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9PYmplY3ROYW1lXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9PYmplY3ROYW1lXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9NZERiTGluZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKEtqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9PYmplY3RJZFRvTWREYkxpbmVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNBcHBfT2JqZWN0SWRUb01kRGJMaW5lXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9NZERiVGV4dF8xPQ0KZnVuY3Rpb24oKXtyZXR1cm4oTGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9NZERiVGV4dF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0FwcF9PYmplY3RJZFRvTWREYlRleHRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfT2JqZWN0SWRUb01kT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oTWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jQXBwX09iamVjdElkVG9NZE9iamVjdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0FwcF9PYmplY3RJZFRvTWRPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfZ2V0TGFzdENhbGxSZXN1bHRfMD1mdW5jdGlvbigpe3JldHVybihOaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNBcHBfZ2V0TGFzdENhbGxSZXN1bHRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNBcHBfZ2V0TGFzdENhbGxSZXN1bHRfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LE9qPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKE9qPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0FwcF9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0FwcF9fX2Rlc3Ryb3lfX18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfTWNEcmF3UmVzYnVmXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9NY0RyYXdSZXNidWZfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX01jRHJhd1Jlc2J1Zl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQ2xlYXJfMD1mdW5jdGlvbigpe3JldHVybihRaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0NsZWFyXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9DbGVhcl8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sUmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9HZXRDb3VudF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfR2V0Q291bnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0dldENvdW50XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2o9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BdERvdWJsZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFNqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQXREb3VibGVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0RG91YmxlXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BdGxvbmdfMT1mdW5jdGlvbigpe3JldHVybihUaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0bG9uZ18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQXRsb25nXzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxVaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0T2JqZWN0SWRfMT1mdW5jdGlvbigpe3JldHVybihVaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0T2JqZWN0SWRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0T2JqZWN0SWRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0U3RyaW5nXzE9ZnVuY3Rpb24oKXtyZXR1cm4oVmo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BdFN0cmluZ18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQXRTdHJpbmdfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0UG9pbnRfMT1mdW5jdGlvbigpe3JldHVybihXaj1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0UG9pbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0F0UG9pbnRfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFhqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfSXRlbURhdGFUeXBlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oWGo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9JdGVtRGF0YVR5cGVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0l0ZW1EYXRhVHlwZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFlqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkRG91YmxlXzI9ZnVuY3Rpb24oKXtyZXR1cm4oWWo9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BZGREb3VibGVfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0FkZERvdWJsZV8yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFpqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkbG9uZ18yPWZ1bmN0aW9uKCl7cmV0dXJuKFpqPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkbG9uZ18yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkbG9uZ18yKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sYWs9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BZGRPYmplY3RJZF8yPWZ1bmN0aW9uKCl7cmV0dXJuKGFrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkT2JqZWN0SWRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0FkZE9iamVjdElkXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYms9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BZGRTdHJpbmdfMj1mdW5jdGlvbigpe3JldHVybihiaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0FkZFN0cmluZ18yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkU3RyaW5nXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2s9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9BZGRQb2ludF8yPWZ1bmN0aW9uKCl7cmV0dXJuKGNrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfQWRkUG9pbnRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX0FkZFBvaW50XzIpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxkaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX1JlbW92ZUFsbF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGRrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfUmVtb3ZlQWxsXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9SZW1vdmVBbGxfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX1JlbW92ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKGVrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfUmVtb3ZlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9SZW1vdmVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihmaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX2dldE9iamVjdE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGdrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGdrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKGhrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGlrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKGlrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfc2V0SnNvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfc2V0SnNvbl8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sams9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1Jlc2J1Zl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKGprPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdSZXNidWZfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3UmVzYnVmX19fZGVzdHJveV9fXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2s9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1V0aWxpdHlfTWNEcmF3VXRpbGl0eV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGtrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdVdGlsaXR5X01jRHJhd1V0aWxpdHlfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9NY0RyYXdVdGlsaXR5XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbGs9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1V0aWxpdHlfZmluZEVudEF0UG9pbnRfNT1mdW5jdGlvbigpe3JldHVybihsaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9maW5kRW50QXRQb2ludF81PQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01jRHJhd1V0aWxpdHlfZmluZEVudEF0UG9pbnRfNSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9lcmFzZUVudGl0eV8xPWZ1bmN0aW9uKCl7cmV0dXJuKG1rPW4uX2Vtc2NyaXB0ZW5fYmluZF9NY0RyYXdVdGlsaXR5X2VyYXNlRW50aXR5XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01jRHJhd1V0aWxpdHlfZXJhc2VFbnRpdHlfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxuaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9oaWdobGlnaHRFbnRpdHlfMj1mdW5jdGlvbigpe3JldHVybihuaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9oaWdobGlnaHRFbnRpdHlfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9oaWdobGlnaHRFbnRpdHlfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9fX2Rlc3Ryb3lfX18wPQ0KZnVuY3Rpb24oKXtyZXR1cm4ob2s9bi5fZW1zY3JpcHRlbl9iaW5kX01jRHJhd1V0aWxpdHlfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWNEcmF3VXRpbGl0eV9fX2Rlc3Ryb3lfX18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9NZERiTGluZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHBrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9NZERiTGluZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9NZERiTGluZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9zdGFydFBvaW50XzA9ZnVuY3Rpb24oKXtyZXR1cm4ocWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX3N0YXJ0UG9pbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfc3RhcnRQb2ludF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9zZXRTdGFydFBvaW50XzE9DQpmdW5jdGlvbigpe3JldHVybihyaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfc2V0U3RhcnRQb2ludF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9zZXRTdGFydFBvaW50XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2VuZFBvaW50XzA9ZnVuY3Rpb24oKXtyZXR1cm4oc2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2VuZFBvaW50XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2VuZFBvaW50XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX3NldEVuZFBvaW50XzE9ZnVuY3Rpb24oKXtyZXR1cm4odGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX3NldEVuZFBvaW50XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX3NldEVuZFBvaW50XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldFN0YXJ0UGFyYW1fMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKHVrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRTdGFydFBhcmFtXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldFN0YXJ0UGFyYW1fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2az1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RW5kUGFyYW1fMD1mdW5jdGlvbigpe3JldHVybih2az1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RW5kUGFyYW1fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RW5kUGFyYW1fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3az1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RGlzdEF0UGFyYW1fMT1mdW5jdGlvbigpe3JldHVybih3az1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RGlzdEF0UGFyYW1fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RGlzdEF0UGFyYW1fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4az0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQYXJhbUF0RGlzdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHhrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQYXJhbUF0RGlzdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQYXJhbUF0RGlzdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHlrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXREaXN0QXRQb2ludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHlrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXREaXN0QXRQb2ludF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXREaXN0QXRQb2ludF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHprPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQb2ludEF0RGlzdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHprPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQb2ludEF0RGlzdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRQb2ludEF0RGlzdF8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sQWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldE9iamVjdElEXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldE9iamVjdElEXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQms9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0VyYXNlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQms9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0VyYXNlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oQ2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxEaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfQ2xvbmVfMD1mdW5jdGlvbigpe3JldHVybihEaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfQ2xvbmVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfbW92ZUdyaXBQb2ludHNBdF80PWZ1bmN0aW9uKCl7cmV0dXJuKEVrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9tb3ZlR3JpcFBvaW50c0F0XzQ9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEZrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LEdrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXREeGYwXzA9ZnVuY3Rpb24oKXtyZXR1cm4oR2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldER4ZjBfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9nZXRKc29uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX2dldEpzb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTGluZV9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkxpbmVfc2V0SnNvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LA0KSms9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSms9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX19fZGVzdHJveV9fXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJMaW5lX19fZGVzdHJveV9fXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X01kRGJUZXh0XzA9ZnVuY3Rpb24oKXtyZXR1cm4oS2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X01kRGJUZXh0XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X01kRGJUZXh0XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3Bvc2l0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3Bvc2l0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3Bvc2l0aW9uXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxNaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0UG9zaXRpb25fMT1mdW5jdGlvbigpe3JldHVybihNaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0UG9zaXRpb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0UG9zaXRpb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfYWxpZ25tZW50UG9pbnRfMD1mdW5jdGlvbigpe3JldHVybihOaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfYWxpZ25tZW50UG9pbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfYWxpZ25tZW50UG9pbnRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0QWxpZ25tZW50UG9pbnRfMT1mdW5jdGlvbigpe3JldHVybihPaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0QWxpZ25tZW50UG9pbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0QWxpZ25tZW50UG9pbnRfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFBrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9vYmxpcXVlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X29ibGlxdWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfb2JsaXF1ZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRPYmxpcXVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oUWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldE9ibGlxdWVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0T2JsaXF1ZV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9yb3RhdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9yb3RhdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9yb3RhdGlvbl8wKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sU2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldFJvdGF0aW9uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oU2s9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldFJvdGF0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldFJvdGF0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X2hlaWdodF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFRrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9oZWlnaHRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfaGVpZ2h0XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldEhlaWdodF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFVrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRIZWlnaHRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0SGVpZ2h0XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxWaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfd2lkdGhGYWN0b3JfMD1mdW5jdGlvbigpe3JldHVybihWaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfd2lkdGhGYWN0b3JfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfd2lkdGhGYWN0b3JfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0V2lkdGhGYWN0b3JfMT1mdW5jdGlvbigpe3JldHVybihXaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0V2lkdGhGYWN0b3JfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0V2lkdGhGYWN0b3JfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYaz1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfdGV4dFN0cmluZ18wPWZ1bmN0aW9uKCl7cmV0dXJuKFhrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF90ZXh0U3RyaW5nXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3RleHRTdHJpbmdfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFlrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRUZXh0U3RyaW5nXzE9ZnVuY3Rpb24oKXtyZXR1cm4oWWs9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldFRleHRTdHJpbmdfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0VGV4dFN0cmluZ18xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFprPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9ob3Jpem9udGFsTW9kZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFprPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9ob3Jpem9udGFsTW9kZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9ob3Jpem9udGFsTW9kZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRIb3Jpem9udGFsTW9kZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKCRrPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRIb3Jpem9udGFsTW9kZV8xPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldEhvcml6b250YWxNb2RlXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3ZlcnRpY2FsTW9kZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGFsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF92ZXJ0aWNhbE1vZGVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfdmVydGljYWxNb2RlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldFZlcnRpY2FsTW9kZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKGJsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRWZXJ0aWNhbE1vZGVfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0VmVydGljYWxNb2RlXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X2dldE9iamVjdElEXzA9ZnVuY3Rpb24oKXtyZXR1cm4oY2w9DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfZ2V0T2JqZWN0SURfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxkbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfRXJhc2VfMD1mdW5jdGlvbigpe3JldHVybihkbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfRXJhc2VfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfQ29ubmVjdGlvblRlbXBPYmplY3RfMT1mdW5jdGlvbigpe3JldHVybihlbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfQ29ubmVjdGlvblRlbXBPYmplY3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfQ2xvbmVfMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKGZsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9DbG9uZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGdsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9tb3ZlR3JpcFBvaW50c0F0XzQ9ZnVuY3Rpb24oKXtyZXR1cm4oZ2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGhsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9nZXRPYmplY3ROYW1lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X2dldE9iamVjdE5hbWVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGlsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9nZXREeGYwXzA9DQpmdW5jdGlvbigpe3JldHVybihpbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9nZXREeGYwXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X2dldEpzb25fMD1mdW5jdGlvbigpe3JldHVybihqbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X3NldEpzb25fMT1mdW5jdGlvbigpe3JldHVybihrbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfc2V0SnNvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiVGV4dF9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJUZXh0X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4obGw9DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlRleHRfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9NZERiQ2lyY2xlXzA9ZnVuY3Rpb24oKXtyZXR1cm4obWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfTWREYkNpcmNsZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX01kRGJDaXJjbGVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxubD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9jZW50ZXJfMD1mdW5jdGlvbigpe3JldHVybihubD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9jZW50ZXJfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9jZW50ZXJfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxvbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9zZXRDZW50ZXJfMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKG9sPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3NldENlbnRlcl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3NldENlbnRlcl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHBsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3JhZGl1c18wPWZ1bmN0aW9uKCl7cmV0dXJuKHBsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3JhZGl1c18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3JhZGl1c18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHFsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3NldFJhZGl1c18xPWZ1bmN0aW9uKCl7cmV0dXJuKHFsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3NldFJhZGl1c18xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX3NldFJhZGl1c18xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHJsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldFN0YXJ0UGFyYW1fMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKHJsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldFN0YXJ0UGFyYW1fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRTdGFydFBhcmFtXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0RW5kUGFyYW1fMD1mdW5jdGlvbigpe3JldHVybihzbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRFbmRQYXJhbV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldEVuZFBhcmFtXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0RGlzdEF0UGFyYW1fMT1mdW5jdGlvbigpe3JldHVybih0bD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXREaXN0QXRQYXJhbV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldERpc3RBdFBhcmFtXzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSx1bD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRQYXJhbUF0RGlzdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHVsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldFBhcmFtQXREaXN0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0UGFyYW1BdERpc3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2bD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXREaXN0QXRQb2ludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHZsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldERpc3RBdFBvaW50XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0RGlzdEF0UG9pbnRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx3bD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRQb2ludEF0RGlzdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKHdsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldFBvaW50QXREaXN0XzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRQb2ludEF0RGlzdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHhsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldE9iamVjdElEXzA9ZnVuY3Rpb24oKXtyZXR1cm4oeGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRPYmplY3RJRF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHlsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX0VyYXNlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oeWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9FcmFzZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHpsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oemw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfQ29ubmVjdGlvblRlbXBPYmplY3RfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfQ2xvbmVfMD1mdW5jdGlvbigpe3JldHVybihBbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX0Nsb25lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfbW92ZUdyaXBQb2ludHNBdF80PWZ1bmN0aW9uKCl7cmV0dXJuKEJsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9tb3ZlR3JpcFBvaW50c0F0XzQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKENsPQ0Kbi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldE9iamVjdE5hbWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxEbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXREeGYwXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldER4ZjBfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9nZXRKc29uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX2dldEpzb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9zZXRKc29uXzE9DQpmdW5jdGlvbigpe3JldHVybihGbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfc2V0SnNvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQ2lyY2xlX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oR2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJDaXJjbGVfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkNpcmNsZV9fX2Rlc3Ryb3lfX18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfTWREYlBvbHlsaW5lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oSGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9NZERiUG9seWxpbmVfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX01kRGJQb2x5bGluZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LA0KSWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9zZXRDbG9zZWRfMT1mdW5jdGlvbigpe3JldHVybihJbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldENsb3NlZF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfc2V0Q2xvc2VkXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9zZXRDb25zdGFudFdpZHRoXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9zZXRDb25zdGFudFdpZHRoXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9zZXRDb25zdGFudFdpZHRoXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9pc0Nsb3NlZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEtsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfaXNDbG9zZWRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2lzQ2xvc2VkXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxMbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldENvbnN0YW50V2lkdGhfMD1mdW5jdGlvbigpe3JldHVybihMbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldENvbnN0YW50V2lkdGhfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldENvbnN0YW50V2lkdGhfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2FkZFZlcnRleEF0XzU9ZnVuY3Rpb24oKXtyZXR1cm4oTWw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9hZGRWZXJ0ZXhBdF81PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfYWRkVmVydGV4QXRfNSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxObD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3JlbW92ZVZlcnRleEF0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oTmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9yZW1vdmVWZXJ0ZXhBdF8xPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9yZW1vdmVWZXJ0ZXhBdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE9sPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfbnVtVmVydHNfMD1mdW5jdGlvbigpe3JldHVybihPbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX251bVZlcnRzXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9udW1WZXJ0c18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UG9pbnRBdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFBsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UG9pbnRBdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UG9pbnRBdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0QnVsZ2VBdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFFsPQ0Kbi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRCdWxnZUF0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRCdWxnZUF0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRTdGFydFdpZHRoc0F0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oUmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRTdGFydFdpZHRoc0F0XzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRTdGFydFdpZHRoc0F0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sU2w9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRFbmRXaWR0aHNBdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFNsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0RW5kV2lkdGhzQXRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldEVuZFdpZHRoc0F0XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxUbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldFBvaW50QXRfMj1mdW5jdGlvbigpe3JldHVybihUbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldFBvaW50QXRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldFBvaW50QXRfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEJ1bGdlQXRfMj1mdW5jdGlvbigpe3JldHVybihVbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEJ1bGdlQXRfMj1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEJ1bGdlQXRfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldFN0YXJ0UGFyYW1fMD1mdW5jdGlvbigpe3JldHVybihWbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldFN0YXJ0UGFyYW1fMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0U3RhcnRQYXJhbV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFdsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0RW5kUGFyYW1fMD1mdW5jdGlvbigpe3JldHVybihXbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldEVuZFBhcmFtXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRFbmRQYXJhbV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0RGlzdEF0UGFyYW1fMT1mdW5jdGlvbigpe3JldHVybihYbD1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldERpc3RBdFBhcmFtXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXREaXN0QXRQYXJhbV8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFlsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UGFyYW1BdERpc3RfMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKFlsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UGFyYW1BdERpc3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldFBhcmFtQXREaXN0XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXREaXN0QXRQb2ludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKFpsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0RGlzdEF0UG9pbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldERpc3RBdFBvaW50XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJGw9bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRQb2ludEF0RGlzdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKCRsPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0UG9pbnRBdERpc3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldFBvaW50QXREaXN0XzEpLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSxhbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX2dldE9iamVjdElEXzA9ZnVuY3Rpb24oKXtyZXR1cm4oYW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRPYmplY3RJRF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0T2JqZWN0SURfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxibT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX0VyYXNlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oYm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9FcmFzZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfRXJhc2VfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX0Nvbm5lY3Rpb25UZW1wT2JqZWN0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oY209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGRtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfQ2xvbmVfMD1mdW5jdGlvbigpe3JldHVybihkbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX0Nsb25lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9DbG9uZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfbW92ZUdyaXBQb2ludHNBdF80PWZ1bmN0aW9uKCl7cmV0dXJuKGVtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfbW92ZUdyaXBQb2ludHNBdF80PW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGZtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfZ2V0T2JqZWN0TmFtZV8wPQ0KZnVuY3Rpb24oKXtyZXR1cm4oZm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRPYmplY3ROYW1lXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRPYmplY3ROYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXREeGYwXzA9ZnVuY3Rpb24oKXtyZXR1cm4oZ209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXREeGYwXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXREeGYwXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRKc29uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oaG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRKc29uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saW09DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEpzb25fMT1mdW5jdGlvbigpe3JldHVybihpbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEpzb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX3NldEpzb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYlBvbHlsaW5lX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oam09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJQb2x5bGluZV9fX2Rlc3Ryb3lfX18wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiUG9seWxpbmVfX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxrbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX01kRGJCbG9ja1JlZmVyZW5jZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKGttPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfTWREYkJsb2NrUmVmZXJlbmNlXzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX01kRGJCbG9ja1JlZmVyZW5jZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGxtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfYmxvY2tUYWJsZVJlY29yZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKGxtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfYmxvY2tUYWJsZVJlY29yZF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfYmxvY2tUYWJsZVJlY29yZF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0QmxvY2tUYWJsZVJlY29yZF8xPWZ1bmN0aW9uKCl7cmV0dXJuKG1tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0QmxvY2tUYWJsZVJlY29yZF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0QmxvY2tUYWJsZVJlY29yZF8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sbm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9wb3NpdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKG5tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfcG9zaXRpb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3Bvc2l0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRQb3NpdGlvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKG9tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0UG9zaXRpb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldFBvc2l0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zY2FsZUZhY3RvcnNfMD1mdW5jdGlvbigpe3JldHVybihwbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NjYWxlRmFjdG9yc18wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zY2FsZUZhY3RvcnNfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldFNjYWxlRmFjdG9yc18xPWZ1bmN0aW9uKCl7cmV0dXJuKHFtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0U2NhbGVGYWN0b3JzXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRTY2FsZUZhY3RvcnNfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxybT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3JvdGF0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9yb3RhdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfcm90YXRpb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldFJvdGF0aW9uXzE9DQpmdW5jdGlvbigpe3JldHVybihzbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldFJvdGF0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRSb3RhdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfYmxvY2tUcmFuc2Zvcm1fMD1mdW5jdGlvbigpe3JldHVybih0bT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX2Jsb2NrVHJhbnNmb3JtXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9ibG9ja1RyYW5zZm9ybV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHVtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2Vfc2V0QmxvY2tUcmFuc2Zvcm1fMT1mdW5jdGlvbigpe3JldHVybih1bT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldEJsb2NrVHJhbnNmb3JtXzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX3NldEJsb2NrVHJhbnNmb3JtXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHdtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHhtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPQ0KZnVuY3Rpb24oKXtyZXR1cm4oeW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9Db25uZWN0aW9uVGVtcE9iamVjdF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx6bT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX0Nsb25lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oem09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxBbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihBbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LEJtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0T2JqZWN0TmFtZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEJtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LENtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKENtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKERtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfZ2V0SnNvbl8wPQ0Kbi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9nZXRKc29uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRKc29uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oRW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJCbG9ja1JlZmVyZW5jZV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKEZtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQmxvY2tSZWZlcmVuY2VfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkJsb2NrUmVmZXJlbmNlX19fZGVzdHJveV9fXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sR209bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX01kRGJBbGlnbmVkRGltZW5zaW9uXzA9DQpmdW5jdGlvbigpe3JldHVybihHbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fTWREYkFsaWduZWREaW1lbnNpb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fTWREYkFsaWduZWREaW1lbnNpb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25feExpbmUxUG9pbnRfMD1mdW5jdGlvbigpe3JldHVybihIbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25feExpbmUxUG9pbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25feExpbmUxUG9pbnRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0WExpbmUxUG9pbnRfMT1mdW5jdGlvbigpe3JldHVybihJbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0WExpbmUxUG9pbnRfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRYTGluZTFQb2ludF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEptPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl94TGluZTJQb2ludF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEptPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl94TGluZTJQb2ludF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl94TGluZTJQb2ludF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEttPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRYTGluZTJQb2ludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKEttPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRYTGluZTJQb2ludF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRYTGluZTJQb2ludF8xKS5hcHBseShudWxsLA0KYXJndW1lbnRzKX0sTG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2RpbUxpbmVQb2ludF8wPWZ1bmN0aW9uKCl7cmV0dXJuKExtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9kaW1MaW5lUG9pbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZGltTGluZVBvaW50XzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldERpbUxpbmVQb2ludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKE1tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXREaW1MaW5lUG9pbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0RGltTGluZVBvaW50XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX29ibGlxdWVfMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKE5tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9vYmxpcXVlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX29ibGlxdWVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0T2JsaXF1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKE9tPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRPYmxpcXVlXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldE9ibGlxdWVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdGV4dFBvc2l0aW9uXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3RleHRQb3NpdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl90ZXh0UG9zaXRpb25fMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFFtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRUZXh0UG9zaXRpb25fMT1mdW5jdGlvbigpe3JldHVybihRbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0VGV4dFBvc2l0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldFRleHRQb3NpdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9pc1VzaW5nRGVmYXVsdFRleHRQb3NpdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9pc1VzaW5nRGVmYXVsdFRleHRQb3NpdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9pc1VzaW5nRGVmYXVsdFRleHRQb3NpdGlvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl91c2VTZXRUZXh0UG9zaXRpb25fMD0NCmZ1bmN0aW9uKCl7cmV0dXJuKFNtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl91c2VTZXRUZXh0UG9zaXRpb25fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdXNlU2V0VGV4dFBvc2l0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3VzZURlZmF1bHRUZXh0UG9zaXRpb25fMD1mdW5jdGlvbigpe3JldHVybihUbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdXNlRGVmYXVsdFRleHRQb3NpdGlvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl91c2VEZWZhdWx0VGV4dFBvc2l0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVW09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2VsZXZhdGlvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFVtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9lbGV2YXRpb25fMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9lbGV2YXRpb25fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0RWxldmF0aW9uXzE9ZnVuY3Rpb24oKXtyZXR1cm4oVm09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldEVsZXZhdGlvbl8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRFbGV2YXRpb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZGltZW5zaW9uVGV4dF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFdtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9kaW1lbnNpb25UZXh0XzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2RpbWVuc2lvblRleHRfMCkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LFhtPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXREaW1lbnNpb25UZXh0XzE9ZnVuY3Rpb24oKXtyZXR1cm4oWG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldERpbWVuc2lvblRleHRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0RGltZW5zaW9uVGV4dF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFltPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl90ZXh0Um90YXRpb25fMD1mdW5jdGlvbigpe3JldHVybihZbT1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdGV4dFJvdGF0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3RleHRSb3RhdGlvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFptPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRUZXh0Um90YXRpb25fMT0NCmZ1bmN0aW9uKCl7cmV0dXJuKFptPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRUZXh0Um90YXRpb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0VGV4dFJvdGF0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sJG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2RpbWVuc2lvblN0eWxlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oJG09bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2RpbWVuc2lvblN0eWxlXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2RpbWVuc2lvblN0eWxlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYW49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldERpbWVuc2lvblN0eWxlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oYW49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldERpbWVuc2lvblN0eWxlXzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0RGltZW5zaW9uU3R5bGVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxibj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdGV4dEF0dGFjaG1lbnRfMD1mdW5jdGlvbigpe3JldHVybihibj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdGV4dEF0dGFjaG1lbnRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fdGV4dEF0dGFjaG1lbnRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxjbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0VGV4dEF0dGFjaG1lbnRfMT1mdW5jdGlvbigpe3JldHVybihjbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0VGV4dEF0dGFjaG1lbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0VGV4dEF0dGFjaG1lbnRfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGRuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9ob3Jpem9udGFsUm90YXRpb25fMD1mdW5jdGlvbigpe3JldHVybihkbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25faG9yaXpvbnRhbFJvdGF0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2hvcml6b250YWxSb3RhdGlvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGVuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRIb3Jpem9udGFsUm90YXRpb25fMT1mdW5jdGlvbigpe3JldHVybihlbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0SG9yaXpvbnRhbFJvdGF0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldEhvcml6b250YWxSb3RhdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGZuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9yZWNvbXB1dGVEaW1CbG9ja18xPQ0KZnVuY3Rpb24oKXtyZXR1cm4oZm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3JlY29tcHV0ZURpbUJsb2NrXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3JlY29tcHV0ZURpbUJsb2NrXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX0dldERpbVZhckludF8xPWZ1bmN0aW9uKCl7cmV0dXJuKGduPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9HZXREaW1WYXJJbnRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fR2V0RGltVmFySW50XzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhckludF8yPWZ1bmN0aW9uKCl7cmV0dXJuKGhuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9TZXREaW1WYXJJbnRfMj0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9TZXREaW1WYXJJbnRfMikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fR2V0RGltVmFyRG91YmxlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oam49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX0dldERpbVZhckRvdWJsZV8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9HZXREaW1WYXJEb3VibGVfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxrbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fU2V0RGltVmFyRG91YmxlXzI9ZnVuY3Rpb24oKXtyZXR1cm4oa249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhckRvdWJsZV8yPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9TZXREaW1WYXJEb3VibGVfMikuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LGxuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9HZXREaW1WYXJTdHJpbmdfMT1mdW5jdGlvbigpe3JldHVybihsbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fR2V0RGltVmFyU3RyaW5nXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX0dldERpbVZhclN0cmluZ18xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1uPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9TZXREaW1WYXJTdHJpbmdfMj1mdW5jdGlvbigpe3JldHVybihtbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fU2V0RGltVmFyU3RyaW5nXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhclN0cmluZ18yKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5uPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9HZXREaW1WYXJPYmplY3RJZF8xPQ0KZnVuY3Rpb24oKXtyZXR1cm4obm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX0dldERpbVZhck9iamVjdElkXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX0dldERpbVZhck9iamVjdElkXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sb249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhck9iamVjdElkXzI9ZnVuY3Rpb24oKXtyZXR1cm4ob249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhck9iamVjdElkXzI9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX1NldERpbVZhck9iamVjdElkXzIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2dldE9iamVjdElEXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2dldE9iamVjdElEXzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZ2V0T2JqZWN0SURfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fRXJhc2VfMD1mdW5jdGlvbigpe3JldHVybihxbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fRXJhc2VfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxybj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fQ29ubmVjdGlvblRlbXBPYmplY3RfMT1mdW5jdGlvbigpe3JldHVybihybj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fQ29ubmVjdGlvblRlbXBPYmplY3RfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCwNCmFyZ3VtZW50cyl9LHNuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9DbG9uZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHNuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9DbG9uZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9tb3ZlR3JpcFBvaW50c0F0XzQ9ZnVuY3Rpb24oKXtyZXR1cm4odG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fbW92ZUdyaXBQb2ludHNBdF80KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHVuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9nZXRPYmplY3ROYW1lXzA9ZnVuY3Rpb24oKXtyZXR1cm4odW49DQpuLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9nZXRPYmplY3ROYW1lXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2dldER4ZjBfMD1mdW5jdGlvbigpe3JldHVybih2bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9nZXREeGYwXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX2dldEpzb25fMD1mdW5jdGlvbigpe3JldHVybih3bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9nZXRKc29uXzApLmFwcGx5KG51bGwsDQphcmd1bWVudHMpfSx4bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKHhuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiQWxpZ25lZERpbWVuc2lvbl9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJBbGlnbmVkRGltZW5zaW9uX3NldEpzb25fMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx5bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih5bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYkFsaWduZWREaW1lbnNpb25fX19kZXN0cm95X19fMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx6bj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X01kRGJNVGV4dF8wPWZ1bmN0aW9uKCl7cmV0dXJuKHpuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfTWREYk1UZXh0XzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X01kRGJNVGV4dF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfbG9jYXRpb25fMD1mdW5jdGlvbigpe3JldHVybihBbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2xvY2F0aW9uXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9sb2NhdGlvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0TG9jYXRpb25fMT1mdW5jdGlvbigpe3JldHVybihCbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldExvY2F0aW9uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9zZXRMb2NhdGlvbl8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LENuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfcm90YXRpb25fMD1mdW5jdGlvbigpe3JldHVybihDbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3JvdGF0aW9uXzA9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3JvdGF0aW9uXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9zZXRSb3RhdGlvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKERuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0Um90YXRpb25fMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldFJvdGF0aW9uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRW49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF93aWR0aF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEVuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfd2lkdGhfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3dpZHRoXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9zZXRXaWR0aF8xPWZ1bmN0aW9uKCl7cmV0dXJuKEZuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0V2lkdGhfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0V2lkdGhfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxHbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3RleHRIZWlnaHRfMD1mdW5jdGlvbigpe3JldHVybihHbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3RleHRIZWlnaHRfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3RleHRIZWlnaHRfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldFRleHRIZWlnaHRfMT1mdW5jdGlvbigpe3JldHVybihIbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldFRleHRIZWlnaHRfMT1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldFRleHRIZWlnaHRfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2F0dGFjaG1lbnRfMD1mdW5jdGlvbigpe3JldHVybihJbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2F0dGFjaG1lbnRfMD0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfYXR0YWNobWVudF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEpuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0QXR0YWNobWVudF8xPWZ1bmN0aW9uKCl7cmV0dXJuKEpuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0QXR0YWNobWVudF8xPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0QXR0YWNobWVudF8xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEtuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfY29udGVudHNfMD1mdW5jdGlvbigpe3JldHVybihLbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2NvbnRlbnRzXzA9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9jb250ZW50c18wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0Q29udGVudHNfMT1mdW5jdGlvbigpe3JldHVybihMbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldENvbnRlbnRzXzE9DQpuLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X3NldENvbnRlbnRzXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTW49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9nZXRPYmplY3RJRF8wPWZ1bmN0aW9uKCl7cmV0dXJuKE1uPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0T2JqZWN0SURfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2dldE9iamVjdElEXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9FcmFzZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKE5uPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfRXJhc2VfMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X0VyYXNlXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sT249bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9Db25uZWN0aW9uVGVtcE9iamVjdF8xPWZ1bmN0aW9uKCl7cmV0dXJuKE9uPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfQ29ubmVjdGlvblRlbXBPYmplY3RfMT0NCm4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfQ29ubmVjdGlvblRlbXBPYmplY3RfMSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxQbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X0Nsb25lXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUG49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9DbG9uZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfQ2xvbmVfMCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X21vdmVHcmlwUG9pbnRzQXRfND1mdW5jdGlvbigpe3JldHVybihRbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X21vdmVHcmlwUG9pbnRzQXRfND1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X21vdmVHcmlwUG9pbnRzQXRfNCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxSbj1uLl9lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X2dldE9iamVjdE5hbWVfMD1mdW5jdGlvbigpe3JldHVybihSbj0NCm4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0T2JqZWN0TmFtZV8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0T2JqZWN0TmFtZV8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0RHhmMF8wPWZ1bmN0aW9uKCl7cmV0dXJuKFNuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0RHhmMF8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0RHhmMF8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFRuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0SnNvbl8wPWZ1bmN0aW9uKCl7cmV0dXJuKFRuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0SnNvbl8wPW4uYXNtLmVtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfZ2V0SnNvbl8wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFVuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfc2V0SnNvbl8xPWZ1bmN0aW9uKCl7cmV0dXJuKFVuPQ0Kbi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9zZXRKc29uXzE9bi5hc20uZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9zZXRKc29uXzEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVm49bi5fZW1zY3JpcHRlbl9iaW5kX01kRGJNVGV4dF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFZuPW4uX2Vtc2NyaXB0ZW5fYmluZF9NZERiTVRleHRfX19kZXN0cm95X19fMD1uLmFzbS5lbXNjcmlwdGVuX2JpbmRfTWREYk1UZXh0X19fZGVzdHJveV9fXzApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGQ9bi5fbWFsbG9jPWZ1bmN0aW9uKCl7cmV0dXJuKHRkPW4uX21hbGxvYz1uLmFzbS5tYWxsb2MpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd2Q9bi5fZnJlZT1mdW5jdGlvbigpe3JldHVybih3ZD1uLl9mcmVlPW4uYXNtLmZyZWUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07DQpmdW5jdGlvbiBTYygpe3JldHVybihTYz1uLmFzbS5fX2Vycm5vX2xvY2F0aW9uKS5hcHBseShudWxsLGFyZ3VtZW50cyl9bi5fX2Vtc2NyaXB0ZW5fdGxzX2luaXQ9ZnVuY3Rpb24oKXtyZXR1cm4obi5fX2Vtc2NyaXB0ZW5fdGxzX2luaXQ9bi5hc20uX2Vtc2NyaXB0ZW5fdGxzX2luaXQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07dmFyIEljPW4uX3B0aHJlYWRfc2VsZj1mdW5jdGlvbigpe3JldHVybihJYz1uLl9wdGhyZWFkX3NlbGY9bi5hc20ucHRocmVhZF9zZWxmKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRlPW4uX19lbXNjcmlwdGVuX3RocmVhZF9pbml0PWZ1bmN0aW9uKCl7cmV0dXJuKHRlPW4uX19lbXNjcmlwdGVuX3RocmVhZF9pbml0PW4uYXNtLl9lbXNjcmlwdGVuX3RocmVhZF9pbml0KS5hcHBseShudWxsLGFyZ3VtZW50cyl9Ow0Kbi5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQ9ZnVuY3Rpb24oKXtyZXR1cm4obi5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQ9bi5hc20uX2Vtc2NyaXB0ZW5fdGhyZWFkX2NyYXNoZWQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07ZnVuY3Rpb24gbmQoKXtyZXR1cm4obmQ9bi5hc20uX2Vtc2NyaXB0ZW5fcnVuX2luX21haW5fcnVudGltZV90aHJlYWRfanMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBIYygpe3JldHVybihIYz1uLmFzbS5fZW1zY3JpcHRlbl90aHJlYWRfZnJlZV9kYXRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9DQp2YXIgT2M9bi5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQ9ZnVuY3Rpb24oKXtyZXR1cm4oT2M9bi5fX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQ9bi5hc20uX2Vtc2NyaXB0ZW5fdGhyZWFkX2V4aXQpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmM9bi5fX2Vtc2NyaXB0ZW5fY2hlY2tfbWFpbGJveD1mdW5jdGlvbigpe3JldHVybihaYz1uLl9fZW1zY3JpcHRlbl9jaGVja19tYWlsYm94PW4uYXNtLl9lbXNjcmlwdGVuX2NoZWNrX21haWxib3gpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07ZnVuY3Rpb24gV24oKXtyZXR1cm4oV249bi5hc20uc2V0VGhyZXcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBLYygpe3JldHVybihLYz1uLmFzbS5lbXNjcmlwdGVuX3N0YWNrX3NldF9saW1pdHMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBsZCgpe3JldHVybihsZD1uLmFzbS5zdGFja1NhdmUpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0NCmZ1bmN0aW9uIExjKCl7cmV0dXJuKExjPW4uYXNtLnN0YWNrUmVzdG9yZSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIG1kKCl7cmV0dXJuKG1kPW4uYXNtLnN0YWNrQWxsb2MpLmFwcGx5KG51bGwsYXJndW1lbnRzKX1uLmR5bkNhbGxfaWlqaj1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfaWlqaj1uLmFzbS5keW5DYWxsX2lpamopLmFwcGx5KG51bGwsYXJndW1lbnRzKX07bi5keW5DYWxsX2lpaj1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfaWlqPW4uYXNtLmR5bkNhbGxfaWlqKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O24uZHluQ2FsbF9paWlpaWppPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9paWlpaWppPW4uYXNtLmR5bkNhbGxfaWlpaWlqaSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtuLmR5bkNhbGxfaWlqaT1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfaWlqaT1uLmFzbS5keW5DYWxsX2lpamkpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07DQpuLmR5bkNhbGxfaWlpaWlpamppPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9paWlpaWlqamk9bi5hc20uZHluQ2FsbF9paWlpaWlqamkpLmFwcGx5KG51bGwsYXJndW1lbnRzKX07bi5keW5DYWxsX2ppPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9qaT1uLmFzbS5keW5DYWxsX2ppKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O24uZHluQ2FsbF92aWo9ZnVuY3Rpb24oKXtyZXR1cm4obi5keW5DYWxsX3Zpaj1uLmFzbS5keW5DYWxsX3ZpaikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtuLmR5bkNhbGxfaWlpaj1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfaWlpaj1uLmFzbS5keW5DYWxsX2lpaWopLmFwcGx5KG51bGwsYXJndW1lbnRzKX07bi5keW5DYWxsX2lpaWlpaj1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfaWlpaWlqPW4uYXNtLmR5bkNhbGxfaWlpaWlqKS5hcHBseShudWxsLGFyZ3VtZW50cyl9Ow0Kbi5keW5DYWxsX2lpaWpqaWRkZGRkZGlpPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9paWlqamlkZGRkZGRpaT1uLmFzbS5keW5DYWxsX2lpaWpqaWRkZGRkZGlpKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O24uZHluQ2FsbF9paWlpZGRkZGlpaWlpaWpqaWlpaWlpPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9paWlpZGRkZGlpaWlpaWpqaWlpaWlpPW4uYXNtLmR5bkNhbGxfaWlpaWRkZGRpaWlpaWlqamlpaWlpaSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtuLmR5bkNhbGxfdmlpaj1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfdmlpaj1uLmFzbS5keW5DYWxsX3ZpaWopLmFwcGx5KG51bGwsYXJndW1lbnRzKX07bi5keW5DYWxsX2ppamk9ZnVuY3Rpb24oKXtyZXR1cm4obi5keW5DYWxsX2ppamk9bi5hc20uZHluQ2FsbF9qaWppKS5hcHBseShudWxsLGFyZ3VtZW50cyl9Ow0Kbi5keW5DYWxsX3ZpaWppaT1mdW5jdGlvbigpe3JldHVybihuLmR5bkNhbGxfdmlpamlpPW4uYXNtLmR5bkNhbGxfdmlpamlpKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O24uZHluQ2FsbF9paWlpaWpqPWZ1bmN0aW9uKCl7cmV0dXJuKG4uZHluQ2FsbF9paWlpaWpqPW4uYXNtLmR5bkNhbGxfaWlpaWlqaikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtuLmR5bkNhbGxfaWlpaWlpamo9ZnVuY3Rpb24oKXtyZXR1cm4obi5keW5DYWxsX2lpaWlpaWpqPW4uYXNtLmR5bkNhbGxfaWlpaWlpamopLmFwcGx5KG51bGwsYXJndW1lbnRzKX07bi5fX19zdGFydF9lbV9qcz0yNTI5OTI7bi5fX19zdG9wX2VtX2pzPTI1MzA5MDtmdW5jdGlvbiB4ZShhLGMsZCl7dmFyIGU9bGQoKTt0cnl7TmMoYSkoYyxkKX1jYXRjaChmKXtMYyhlKTtpZihmIT09ZiswKXRocm93IGY7V24oMSwwKX19DQpmdW5jdGlvbiB3ZShhLGMpe3ZhciBkPWxkKCk7dHJ5e05jKGEpKGMpfWNhdGNoKGUpe0xjKGQpO2lmKGUhPT1lKzApdGhyb3cgZTtXbigxLDApfX1mdW5jdGlvbiB1ZShhLGMpe3ZhciBkPWxkKCk7dHJ5e3JldHVybiBOYyhhKShjKX1jYXRjaChlKXtMYyhkKTtpZihlIT09ZSswKXRocm93IGU7V24oMSwwKX19ZnVuY3Rpb24gdmUoYSxjLGQsZSl7dmFyIGY9bGQoKTt0cnl7cmV0dXJuIE5jKGEpKGMsZCxlKX1jYXRjaChnKXtMYyhmKTtpZihnIT09ZyswKXRocm93IGc7V24oMSwwKX19bi5rZWVwUnVudGltZUFsaXZlPVlhO24ud2FzbU1lbW9yeT1jYTtuLkV4aXRTdGF0dXM9QWI7bi5QVGhyZWFkPXc7dmFyIFhuO2piPWZ1bmN0aW9uIFluKCl7WG58fFpuKCk7WG58fChqYj1Zbil9Ow0KZnVuY3Rpb24gWm4oKXtmdW5jdGlvbiBhKCl7aWYoIVhuJiYoWG49ITAsbi5jYWxsZWRSdW49ITAsIVBhKSl7WmEoKTtzYShuKTtpZihuLm9uUnVudGltZUluaXRpYWxpemVkKW4ub25SdW50aW1lSW5pdGlhbGl6ZWQoKTtpZighcSl7aWYobi5wb3N0UnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2Ygbi5wb3N0UnVuJiYobi5wb3N0UnVuPVtuLnBvc3RSdW5dKTtuLnBvc3RSdW4ubGVuZ3RoOyl7dmFyIGM9bi5wb3N0UnVuLnNoaWZ0KCk7V2EudW5zaGlmdChjKX1mYihXYSl9fX1pZighKDA8aGIpKWlmKHEpc2EobiksWmEoKSxzdGFydFdvcmtlcihuKTtlbHNle2lmKG4ucHJlUnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2Ygbi5wcmVSdW4mJihuLnByZVJ1bj1bbi5wcmVSdW5dKTtuLnByZVJ1bi5sZW5ndGg7KWdiKCk7ZmIoVWEpOzA8aGJ8fChuLnNldFN0YXR1cz8obi5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe24uc2V0U3RhdHVzKCIiKX0sDQoxKTthKCl9LDEpKTphKCkpfX1pZihuLnByZUluaXQpZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBuLnByZUluaXQmJihuLnByZUluaXQ9W24ucHJlSW5pdF0pOzA8bi5wcmVJbml0Lmxlbmd0aDspbi5wcmVJbml0LnBvcCgpKCk7Wm4oKTtmdW5jdGlvbiAkbigpe30kbi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSgkbi5wcm90b3R5cGUpOyRuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0kbjskbi5wcm90b3R5cGUubD0kbjskbi5tPXt9O24uV3JhcHBlck9iamVjdD0kbjtmdW5jdGlvbiBhbyhhKXtyZXR1cm4oYXx8JG4pLm19bi5nZXRDYWNoZT1hbztmdW5jdGlvbiBEKGEsYyl7dmFyIGQ9YW8oYyksZT1kW2FdO2lmKGUpcmV0dXJuIGU7ZT1PYmplY3QuY3JlYXRlKChjfHwkbikucHJvdG90eXBlKTtlLmc9YTtyZXR1cm4gZFthXT1lfW4ud3JhcFBvaW50ZXI9RDtuLmNhc3RPYmplY3Q9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gRChhLmcsYyl9O24uTlVMTD1EKDApOw0Kbi5kZXN0cm95PWZ1bmN0aW9uKGEpe2lmKCFhLl9fZGVzdHJveV9fKXRocm93IkVycm9yOiBDYW5ub3QgZGVzdHJveSBvYmplY3QuIChEaWQgeW91IGNyZWF0ZSBpdCB5b3Vyc2VsZj8pIjthLl9fZGVzdHJveV9fKCk7ZGVsZXRlIGFvKGEubClbYS5nXX07bi5jb21wYXJlPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGEuZz09PWMuZ307bi5nZXRQb2ludGVyPWZ1bmN0aW9uKGEpe3JldHVybiBhLmd9O24uZ2V0Q2xhc3M9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubH07dmFyIGJvPTAsY289MCxlbz0wLGZvPVtdLGdvPTA7ZnVuY3Rpb24gRSgpe2lmKGdvKXtmb3IodmFyIGE9MDthPGZvLmxlbmd0aDthKyspbi5fZnJlZShmb1thXSk7Zm8ubGVuZ3RoPTA7bi5fZnJlZShibyk7Ym89MDtjbys9Z287Z289MH1ib3x8KGNvKz0xMjgsKGJvPW4uX21hbGxvYyhjbykpfHxOYSgpKTtlbz0wfQ0KZnVuY3Rpb24gaG8oYSxjKXtib3x8TmEoKTthPWEubGVuZ3RoKmMuQllURVNfUEVSX0VMRU1FTlQ7YT1hKzcmLTg7ZW8rYT49Y28/KDA8YXx8TmEoKSxnbys9YSxjPW4uX21hbGxvYyhhKSxmby5wdXNoKGMpKTooYz1ibytlbyxlbys9YSk7cmV0dXJuIGN9ZnVuY3Rpb24gaW8oYSxjLGQpe2Q+Pj49MDtzd2l0Y2goYy5CWVRFU19QRVJfRUxFTUVOVCl7Y2FzZSAyOmQ+Pj49MTticmVhaztjYXNlIDQ6ZD4+Pj0yO2JyZWFrO2Nhc2UgODpkPj4+PTN9Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDtlKyspY1tkK2VdPWFbZV19ZnVuY3Rpb24gRihhKXtpZigic3RyaW5nIj09PXR5cGVvZiBhKXthPU1iKGEpO3ZhciBjPWhvKGEsYmEoKSk7aW8oYSxiYSgpLGMpO3JldHVybiBjfXJldHVybiBhfWZ1bmN0aW9uIGpvKGEpe2lmKCJvYmplY3QiPT09dHlwZW9mIGEpe3ZhciBjPWhvKGEscWEoKSk7aW8oYSxxYSgpLGMpO3JldHVybiBjfXJldHVybiBhfQ0KZnVuY3Rpb24ga28oKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWRSeE9iamVjdCwgbm8gY29uc3RydWN0b3IgaW4gSURMIjt9a28ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJG4ucHJvdG90eXBlKTtrby5wcm90b3R5cGUuY29uc3RydWN0b3I9a287a28ucHJvdG90eXBlLmw9a287a28ubT17fTtuLk1kUnhPYmplY3Q9a287a28ucHJvdG90eXBlLmdldE9iamVjdE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcih6ZSh0aGlzLmcpKX07a28ucHJvdG90eXBlLmdldER4ZjA9ZnVuY3Rpb24oKXtyZXR1cm4gcihBZSh0aGlzLmcpKX07a28ucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihCZSh0aGlzLmcpKX07a28ucHJvdG90eXBlLnNldEpzb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFDZShjLGEpfTsNCmZ1bmN0aW9uIEcoKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWREYk9iamVjdCwgbm8gY29uc3RydWN0b3IgaW4gSURMIjt9Ry5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShrby5wcm90b3R5cGUpO0cucHJvdG90eXBlLmNvbnN0cnVjdG9yPUc7Ry5wcm90b3R5cGUubD1HO0cubT17fTtuLk1kRGJPYmplY3Q9RztHLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBEZSh0aGlzLmcpfTtHLnByb3RvdHlwZS5FcmFzZT1mdW5jdGlvbigpe3JldHVybiEhRWUodGhpcy5nKX07Ry5wcm90b3R5cGUuQ29ubmVjdGlvblRlbXBPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFGZShjLGEpfTtHLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKEdlKHRoaXMuZyksRyl9Ow0KRy5wcm90b3R5cGUubW92ZUdyaXBQb2ludHNBdD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtyZXR1cm4hIUhlKGYsYSxjLGQsZSl9O0cucHJvdG90eXBlLmdldE9iamVjdE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihJZSh0aGlzLmcpKX07Ry5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKEplKHRoaXMuZykpfTtHLnByb3RvdHlwZS5nZXRKc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHIoS2UodGhpcy5nKSl9O0cucHJvdG90eXBlLnNldEpzb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFMZShjLGEpfTsNCmZ1bmN0aW9uIGxvKCl7dGhyb3ciY2Fubm90IGNvbnN0cnVjdCBhIE1kRGJFbnRpdHksIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fWxvLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTtsby5wcm90b3R5cGUuY29uc3RydWN0b3I9bG87bG8ucHJvdG90eXBlLmw9bG87bG8ubT17fTtuLk1kRGJFbnRpdHk9bG87bG8ucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIE1lKHRoaXMuZyl9O2xvLnByb3RvdHlwZS5FcmFzZT1mdW5jdGlvbigpe3JldHVybiEhTmUodGhpcy5nKX07bG8ucHJvdG90eXBlLkNvbm5lY3Rpb25UZW1wT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhT2UoYyxhKX07bG8ucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoUGUodGhpcy5nKSxHKX07DQpsby5wcm90b3R5cGUubW92ZUdyaXBQb2ludHNBdD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtyZXR1cm4hIVFlKGYsYSxjLGQsZSl9O2xvLnByb3RvdHlwZS5nZXRPYmplY3ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHIoUmUodGhpcy5nKSl9O2xvLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoU2UodGhpcy5nKSl9O2xvLnByb3RvdHlwZS5nZXRKc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHIoVGUodGhpcy5nKSl9O2xvLnByb3RvdHlwZS5zZXRKc29uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO3JldHVybiEhVWUoYyxhKX07DQpmdW5jdGlvbiBtbygpe3Rocm93ImNhbm5vdCBjb25zdHJ1Y3QgYSBNZERiQ3VydmUsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fW1vLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGxvLnByb3RvdHlwZSk7bW8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW1vO21vLnByb3RvdHlwZS5sPW1vO21vLm09e307bi5NZERiQ3VydmU9bW87bW8ucHJvdG90eXBlLmdldFN0YXJ0UGFyYW09ZnVuY3Rpb24oKXtyZXR1cm4gVmUodGhpcy5nKX07bW8ucHJvdG90eXBlLmdldEVuZFBhcmFtPWZ1bmN0aW9uKCl7cmV0dXJuIFdlKHRoaXMuZyl9O21vLnByb3RvdHlwZS5nZXREaXN0QXRQYXJhbT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gWGUoYyxhKX07bW8ucHJvdG90eXBlLmdldFBhcmFtQXREaXN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBZZShjLGEpfTsNCm1vLnByb3RvdHlwZS5nZXREaXN0QXRQb2ludD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gWmUoYyxhKX07bW8ucHJvdG90eXBlLmdldFBvaW50QXREaXN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKCRlKGMsYSksSCl9O21vLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBhZih0aGlzLmcpfTttby5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWJmKHRoaXMuZyl9O21vLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIWNmKGMsYSl9O21vLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKGRmKHRoaXMuZyksRyl9Ow0KbW8ucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISFlZihmLGEsYyxkLGUpfTttby5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKGZmKHRoaXMuZykpfTttby5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKGdmKHRoaXMuZykpfTttby5wcm90b3R5cGUuZ2V0SnNvbj1mdW5jdGlvbigpe3JldHVybiByKGhmKHRoaXMuZykpfTttby5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIWpmKGMsYSl9Ow0KZnVuY3Rpb24gSSgpe3RoaXMuZz1rZigpO2FvKEkpW3RoaXMuZ109dGhpc31JLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGxvLnByb3RvdHlwZSk7SS5wcm90b3R5cGUuY29uc3RydWN0b3I9STtJLnByb3RvdHlwZS5sPUk7SS5tPXt9O24uTWREYkRpbWVuc2lvbj1JO0kucHJvdG90eXBlLnRleHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBEKGxmKHRoaXMuZyksSCl9O0kucHJvdG90eXBlLnNldFRleHRQb3NpdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIW1mKGMsYSl9O0kucHJvdG90eXBlLmlzVXNpbmdEZWZhdWx0VGV4dFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuISFuZih0aGlzLmcpfTtJLnByb3RvdHlwZS51c2VTZXRUZXh0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4hIW9mKHRoaXMuZyl9O0kucHJvdG90eXBlLnVzZURlZmF1bHRUZXh0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4hIXBmKHRoaXMuZyl9Ow0KSS5wcm90b3R5cGUuZWxldmF0aW9uPUkucHJvdG90eXBlLmVsZXZhdGlvbj1mdW5jdGlvbigpe3JldHVybiBxZih0aGlzLmcpfTtJLnByb3RvdHlwZS5zZXRFbGV2YXRpb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFyZihjLGEpfTtJLnByb3RvdHlwZS5kaW1lbnNpb25UZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHIoc2YodGhpcy5nKSl9O0kucHJvdG90eXBlLnNldERpbWVuc2lvblRleHQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISF0ZihjLGEpfTtJLnByb3RvdHlwZS50ZXh0Um90YXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdWYodGhpcy5nKX07SS5wcm90b3R5cGUuc2V0VGV4dFJvdGF0aW9uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhdmYoYyxhKX07DQpJLnByb3RvdHlwZS5kaW1lbnNpb25TdHlsZT1mdW5jdGlvbigpe3JldHVybiB3Zih0aGlzLmcpfTtJLnByb3RvdHlwZS5zZXREaW1lbnNpb25TdHlsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXhmKGMsYSl9O0kucHJvdG90eXBlLnRleHRBdHRhY2htZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHlmKHRoaXMuZyl9O0kucHJvdG90eXBlLnNldFRleHRBdHRhY2htZW50PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhemYoYyxhKX07SS5wcm90b3R5cGUuaG9yaXpvbnRhbFJvdGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEFmKHRoaXMuZyl9O0kucHJvdG90eXBlLnNldEhvcml6b250YWxSb3RhdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUJmKGMsYSl9Ow0KSS5wcm90b3R5cGUucmVjb21wdXRlRGltQmxvY2s9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFDZihjLGEpfTtJLnByb3RvdHlwZS5HZXREaW1WYXJJbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIERmKGMsYSl9O0kucHJvdG90eXBlLlNldERpbVZhckludD1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7cmV0dXJuISFFZihkLGEsYyl9O0kucHJvdG90eXBlLkdldERpbVZhckRvdWJsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gRmYoYyxhKX07DQpJLnByb3RvdHlwZS5TZXREaW1WYXJEb3VibGU9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO3JldHVybiEhR2YoZCxhLGMpfTtJLnByb3RvdHlwZS5HZXREaW1WYXJTdHJpbmc9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHIoSGYoYyxhKSl9O0kucHJvdG90eXBlLlNldERpbVZhclN0cmluZz1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZztFKCk7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5nOkYoYyk7cmV0dXJuISFJZihkLGEsYyl9O0kucHJvdG90eXBlLkdldERpbVZhck9iamVjdElkPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBKZihjLGEpfTsNCkkucHJvdG90eXBlLlNldERpbVZhck9iamVjdElkPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtyZXR1cm4hIUtmKGQsYSxjKX07SS5wcm90b3R5cGUuZ2V0T2JqZWN0SUQ9ZnVuY3Rpb24oKXtyZXR1cm4gTGYodGhpcy5nKX07SS5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIU1mKHRoaXMuZyl9O0kucHJvdG90eXBlLkNvbm5lY3Rpb25UZW1wT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhTmYoYyxhKX07SS5wcm90b3R5cGUuQ2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gRChPZih0aGlzLmcpLEcpfTsNCkkucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISFQZihmLGEsYyxkLGUpfTtJLnByb3RvdHlwZS5nZXRPYmplY3ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHIoUWYodGhpcy5nKSl9O0kucHJvdG90eXBlLmdldER4ZjA9ZnVuY3Rpb24oKXtyZXR1cm4gcihSZih0aGlzLmcpKX07SS5wcm90b3R5cGUuZ2V0SnNvbj1mdW5jdGlvbigpe3JldHVybiByKFNmKHRoaXMuZykpfTtJLnByb3RvdHlwZS5zZXRKc29uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO3JldHVybiEhVGYoYyxhKX07SS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtVZih0aGlzLmcpfTsNCmZ1bmN0aW9uIG5vKCl7dGhyb3ciY2Fubm90IGNvbnN0cnVjdCBhIFZvaWRQdHIsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fW5vLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKCRuLnByb3RvdHlwZSk7bm8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPW5vO25vLnByb3RvdHlwZS5sPW5vO25vLm09e307bi5Wb2lkUHRyPW5vO25vLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1ZmKHRoaXMuZyl9O2Z1bmN0aW9uIEooKXt0aGlzLmc9V2YoKTthbyhKKVt0aGlzLmddPXRoaXN9Si5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSgkbi5wcm90b3R5cGUpO0oucHJvdG90eXBlLmNvbnN0cnVjdG9yPUo7Si5wcm90b3R5cGUubD1KO0oubT17fTtuLk1kQ21Db2xvcj1KO0oucHJvdG90eXBlLnNldENvbG9ySW5kZXg9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7WGYoYyxhKX07DQpKLnByb3RvdHlwZS5zZXRSR0I9ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtZZihlLGEsYyxkKX07Si5wcm90b3R5cGUuZ2V0X3JlZD1KLnByb3RvdHlwZS5mYj1mdW5jdGlvbigpe3JldHVybiBaZih0aGlzLmcpfTtKLnByb3RvdHlwZS5zZXRfcmVkPUoucHJvdG90eXBlLnhiPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpOyRmKGMsYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwicmVkIix7Z2V0OkoucHJvdG90eXBlLmZiLHNldDpKLnByb3RvdHlwZS54Yn0pO0oucHJvdG90eXBlLmdldF9ncmVlbj1KLnByb3RvdHlwZS5iYj1mdW5jdGlvbigpe3JldHVybiBhZyh0aGlzLmcpfTsNCkoucHJvdG90eXBlLnNldF9ncmVlbj1KLnByb3RvdHlwZS51Yj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtiZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsImdyZWVuIix7Z2V0OkoucHJvdG90eXBlLmJiLHNldDpKLnByb3RvdHlwZS51Yn0pO0oucHJvdG90eXBlLmdldF9ibHVlPUoucHJvdG90eXBlLiRhPWZ1bmN0aW9uKCl7cmV0dXJuIGNnKHRoaXMuZyl9O0oucHJvdG90eXBlLnNldF9ibHVlPUoucHJvdG90eXBlLnNiPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2RnKGMsYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShKLnByb3RvdHlwZSwiYmx1ZSIse2dldDpKLnByb3RvdHlwZS4kYSxzZXQ6Si5wcm90b3R5cGUuc2J9KTtKLnByb3RvdHlwZS5nZXRfbWV0aG9kPUoucHJvdG90eXBlLmNiPWZ1bmN0aW9uKCl7cmV0dXJuIGVnKHRoaXMuZyl9Ow0KSi5wcm90b3R5cGUuc2V0X21ldGhvZD1KLnByb3RvdHlwZS52Yj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtmZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsIm1ldGhvZCIse2dldDpKLnByb3RvdHlwZS5jYixzZXQ6Si5wcm90b3R5cGUudmJ9KTtKLnByb3RvdHlwZS5nZXRfbj1KLnByb3RvdHlwZS5lYj1mdW5jdGlvbigpe3JldHVybiBnZyh0aGlzLmcpfTtKLnByb3RvdHlwZS5zZXRfbj1KLnByb3RvdHlwZS53Yj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtoZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsIm4iLHtnZXQ6Si5wcm90b3R5cGUuZWIsc2V0OkoucHJvdG90eXBlLndifSk7Si5wcm90b3R5cGUuZ2V0X2NvbG9ySW5kZXg9Si5wcm90b3R5cGUuYWI9ZnVuY3Rpb24oKXtyZXR1cm4gaWcodGhpcy5nKX07DQpKLnByb3RvdHlwZS5zZXRfY29sb3JJbmRleD1KLnByb3RvdHlwZS50Yj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtqZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSi5wcm90b3R5cGUsImNvbG9ySW5kZXgiLHtnZXQ6Si5wcm90b3R5cGUuYWIsc2V0OkoucHJvdG90eXBlLnRifSk7Si5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtrZyh0aGlzLmcpfTsNCmZ1bmN0aW9uIEgoYSxjLGQpe2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO3RoaXMuZz12b2lkIDA9PT1hP2xnKCk6dm9pZCAwPT09Yz9fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX01kR2VQb2ludDNkXzEoYSk6dm9pZCAwPT09ZD9fZW1zY3JpcHRlbl9iaW5kX01kR2VQb2ludDNkX01kR2VQb2ludDNkXzIoYSxjKTptZyhhLGMsZCk7YW8oSClbdGhpcy5nXT10aGlzfUgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJG4ucHJvdG90eXBlKTtILnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1IO0gucHJvdG90eXBlLmw9SDtILm09e307bi5NZEdlUG9pbnQzZD1IO0gucHJvdG90eXBlLmdldF94PUgucHJvdG90eXBlLmdhPWZ1bmN0aW9uKCl7cmV0dXJuIG5nKHRoaXMuZyl9Ow0KSC5wcm90b3R5cGUuc2V0X3g9SC5wcm90b3R5cGUubWE9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7b2coYyxhKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KEgucHJvdG90eXBlLCJ4Iix7Z2V0OkgucHJvdG90eXBlLmdhLHNldDpILnByb3RvdHlwZS5tYX0pO0gucHJvdG90eXBlLmdldF95PUgucHJvdG90eXBlLmhhPWZ1bmN0aW9uKCl7cmV0dXJuIHBnKHRoaXMuZyl9O0gucHJvdG90eXBlLnNldF95PUgucHJvdG90eXBlLm5hPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3FnKGMsYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShILnByb3RvdHlwZSwieSIse2dldDpILnByb3RvdHlwZS5oYSxzZXQ6SC5wcm90b3R5cGUubmF9KTtILnByb3RvdHlwZS5nZXRfej1ILnByb3RvdHlwZS5pYT1mdW5jdGlvbigpe3JldHVybiByZyh0aGlzLmcpfTsNCkgucHJvdG90eXBlLnNldF96PUgucHJvdG90eXBlLm9hPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3NnKGMsYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShILnByb3RvdHlwZSwieiIse2dldDpILnByb3RvdHlwZS5pYSxzZXQ6SC5wcm90b3R5cGUub2F9KTtILnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3RnKHRoaXMuZyl9Ow0KZnVuY3Rpb24gSyhhLGMsZCl7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7dGhpcy5nPXZvaWQgMD09PWE/dWcoKTp2b2lkIDA9PT1jP19lbXNjcmlwdGVuX2JpbmRfTWRHZVZlY3RvcjNkX01kR2VWZWN0b3IzZF8xKGEpOnZvaWQgMD09PWQ/X2Vtc2NyaXB0ZW5fYmluZF9NZEdlVmVjdG9yM2RfTWRHZVZlY3RvcjNkXzIoYSxjKTp2ZyhhLGMsZCk7YW8oSylbdGhpcy5nXT10aGlzfUsucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJG4ucHJvdG90eXBlKTtLLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1LO0sucHJvdG90eXBlLmw9SztLLm09e307bi5NZEdlVmVjdG9yM2Q9SztLLnByb3RvdHlwZS5nZXRfeD1LLnByb3RvdHlwZS5nYT1mdW5jdGlvbigpe3JldHVybiB3Zyh0aGlzLmcpfTsNCksucHJvdG90eXBlLnNldF94PUsucHJvdG90eXBlLm1hPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3hnKGMsYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShLLnByb3RvdHlwZSwieCIse2dldDpLLnByb3RvdHlwZS5nYSxzZXQ6Sy5wcm90b3R5cGUubWF9KTtLLnByb3RvdHlwZS5nZXRfeT1LLnByb3RvdHlwZS5oYT1mdW5jdGlvbigpe3JldHVybiB5Zyh0aGlzLmcpfTtLLnByb3RvdHlwZS5zZXRfeT1LLnByb3RvdHlwZS5uYT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTt6ZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsInkiLHtnZXQ6Sy5wcm90b3R5cGUuaGEsc2V0OksucHJvdG90eXBlLm5hfSk7Sy5wcm90b3R5cGUuZ2V0X3o9Sy5wcm90b3R5cGUuaWE9ZnVuY3Rpb24oKXtyZXR1cm4gQWcodGhpcy5nKX07DQpLLnByb3RvdHlwZS5zZXRfej1LLnByb3RvdHlwZS5vYT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtCZyhjLGEpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSy5wcm90b3R5cGUsInoiLHtnZXQ6Sy5wcm90b3R5cGUuaWEsc2V0OksucHJvdG90eXBlLm9hfSk7Sy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtDZyh0aGlzLmcpfTtmdW5jdGlvbiBMKCl7dGhpcy5nPURnKCk7YW8oTClbdGhpcy5nXT10aGlzfUwucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJG4ucHJvdG90eXBlKTtMLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1MO0wucHJvdG90eXBlLmw9TDtMLm09e307bi5NZEdlTWF0cml4M2Q9TDtMLnByb3RvdHlwZS5zZXRUb0lkZW50aXR5PWZ1bmN0aW9uKCl7RWcodGhpcy5nKX07DQpMLnByb3RvdHlwZS5wcmVNdWx0Qnk9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7RmcoYyxhKX07TC5wcm90b3R5cGUucG9zdE11bHRCeT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtHZyhjLGEpfTtMLnByb3RvdHlwZS5zZXRUb1Byb2R1Y3Q9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO0hnKGQsYSxjKX07TC5wcm90b3R5cGUuaW52ZXJ0PWZ1bmN0aW9uKCl7SWcodGhpcy5nKX07TC5wcm90b3R5cGUuaXNTaW5ndWxhcj1mdW5jdGlvbigpe3JldHVybiEhSmcodGhpcy5nKX07TC5wcm90b3R5cGUudHJhbnNwb3NlSXQ9ZnVuY3Rpb24oKXtLZyh0aGlzLmcpfTsNCkwucHJvdG90eXBlLmlzRXF1YWxUbz1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUxnKGMsYSl9O0wucHJvdG90eXBlLmRldD1mdW5jdGlvbigpe3JldHVybiBNZyh0aGlzLmcpfTtMLnByb3RvdHlwZS5zZXRDb29yZFN5c3RlbT1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtOZyhmLGEsYyxkLGUpfTtMLnByb3RvdHlwZS5zZXRUb1RyYW5zbGF0aW9uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO09nKGMsYSl9Ow0KTC5wcm90b3R5cGUuc2V0VG9Sb3RhdGlvbj1mdW5jdGlvbihhLGMsZCl7dmFyIGU9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO1BnKGUsYSxjLGQpfTtMLnByb3RvdHlwZS5zZXRUb1NjYWxpbmc9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO1FnKGQsYSxjKX07TC5wcm90b3R5cGUuc2NhbGU9TC5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gUmcodGhpcy5nKX07DQpMLnByb3RvdHlwZS5nZXREYXRhPUwucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO3JldHVybiBTZyhkLGEsYyl9O0wucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7VGcodGhpcy5nKX07ZnVuY3Rpb24gTSgpe3RoaXMuZz1VZygpO2FvKE0pW3RoaXMuZ109dGhpc31NLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTtNLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1NO00ucHJvdG90eXBlLmw9TTtNLm09e307bi5NZERiTGF5ZXJUYWJsZVJlY29yZD1NO00ucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihWZyh0aGlzLmcpKX07DQpNLnByb3RvdHlwZS5zZXROYW1lPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO3JldHVybiEhV2coYyxhKX07TS5wcm90b3R5cGUuaXNGcm96ZW49TS5wcm90b3R5cGUuaXNGcm96ZW49ZnVuY3Rpb24oKXtyZXR1cm4hIVhnKHRoaXMuZyl9O00ucHJvdG90eXBlLnNldElzRnJvemVuPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhWWcoYyxhKX07TS5wcm90b3R5cGUuaXNPZmY9ZnVuY3Rpb24oKXtyZXR1cm4hIVpnKHRoaXMuZyl9O00ucHJvdG90eXBlLnNldElzT2ZmPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhJGcoYyxhKX07TS5wcm90b3R5cGUuaXNMb2NrZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIWFoKHRoaXMuZyl9Ow0KTS5wcm90b3R5cGUuc2V0SXNMb2NrZWQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFiaChjLGEpfTtNLnByb3RvdHlwZS5jb2xvcj1NLnByb3RvdHlwZS5jb2xvcj1mdW5jdGlvbigpe3JldHVybiBEKGNoKHRoaXMuZyksSil9O00ucHJvdG90eXBlLnNldENvbG9yPU0ucHJvdG90eXBlLnNldENvbG9yPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhZGgoYyxhKX07TS5wcm90b3R5cGUubGluZXR5cGVPYmplY3RJZD1mdW5jdGlvbigpe3JldHVybiBlaCh0aGlzLmcpfTtNLnByb3RvdHlwZS5zZXRMaW5ldHlwZU9iamVjdElkPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhZmgoYyxhKX07TS5wcm90b3R5cGUubGluZVdlaWdodD1mdW5jdGlvbigpe3JldHVybiBnaCh0aGlzLmcpfTsNCk0ucHJvdG90eXBlLnNldExpbmVXZWlnaHQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFoaChjLGEpfTtNLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBpaCh0aGlzLmcpfTtNLnByb3RvdHlwZS5FcmFzZT1mdW5jdGlvbigpe3JldHVybiEhamgodGhpcy5nKX07TS5wcm90b3R5cGUuQ29ubmVjdGlvblRlbXBPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFraChjLGEpfTtNLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKGxoKHRoaXMuZyksRyl9Ow0KTS5wcm90b3R5cGUubW92ZUdyaXBQb2ludHNBdD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtyZXR1cm4hIW1oKGYsYSxjLGQsZSl9O00ucHJvdG90eXBlLmdldE9iamVjdE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihuaCh0aGlzLmcpKX07TS5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKG9oKHRoaXMuZykpfTtNLnByb3RvdHlwZS5nZXRKc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHIocGgodGhpcy5nKSl9O00ucHJvdG90eXBlLnNldEpzb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFxaChjLGEpfTtNLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3JoKHRoaXMuZyl9Ow0KZnVuY3Rpb24gcG8oKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWREYkxheWVyVGFibGUsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fXBvLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTtwby5wcm90b3R5cGUuY29uc3RydWN0b3I9cG87cG8ucHJvdG90eXBlLmw9cG87cG8ubT17fTtuLk1kRGJMYXllclRhYmxlPXBvO3BvLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBzaCh0aGlzLmcpfTtwby5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIXRoKHRoaXMuZyl9O3BvLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXVoKGMsYSl9O3BvLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKHZoKHRoaXMuZyksRyl9Ow0KcG8ucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISF3aChmLGEsYyxkLGUpfTtwby5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKHhoKHRoaXMuZykpfTtwby5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKHloKHRoaXMuZykpfTtwby5wcm90b3R5cGUuZ2V0SnNvbj1mdW5jdGlvbigpe3JldHVybiByKHpoKHRoaXMuZykpfTtwby5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIUFoKGMsYSl9Ow0KZnVuY3Rpb24gcW8oKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWREYkxpbmV0eXBlVGFibGUsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fXFvLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEcucHJvdG90eXBlKTtxby5wcm90b3R5cGUuY29uc3RydWN0b3I9cW87cW8ucHJvdG90eXBlLmw9cW87cW8ubT17fTtuLk1kRGJMaW5ldHlwZVRhYmxlPXFvO3FvLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBCaCh0aGlzLmcpfTtxby5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIUNoKHRoaXMuZyl9O3FvLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIURoKGMsYSl9O3FvLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKEVoKHRoaXMuZyksRyl9Ow0KcW8ucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISFGaChmLGEsYyxkLGUpfTtxby5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKEdoKHRoaXMuZykpfTtxby5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKEhoKHRoaXMuZykpfTtxby5wcm90b3R5cGUuZ2V0SnNvbj1mdW5jdGlvbigpe3JldHVybiByKEloKHRoaXMuZykpfTtxby5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIUpoKGMsYSl9Ow0KZnVuY3Rpb24gcm8oKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWREYlRleHRTdHlsZVRhYmxlLCBubyBjb25zdHJ1Y3RvciBpbiBJREwiO31yby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShHLnByb3RvdHlwZSk7cm8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPXJvO3JvLnByb3RvdHlwZS5sPXJvO3JvLm09e307bi5NZERiVGV4dFN0eWxlVGFibGU9cm87cm8ucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIEtoKHRoaXMuZyl9O3JvLnByb3RvdHlwZS5FcmFzZT1mdW5jdGlvbigpe3JldHVybiEhTGgodGhpcy5nKX07cm8ucHJvdG90eXBlLkNvbm5lY3Rpb25UZW1wT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhTWgoYyxhKX07cm8ucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoTmgodGhpcy5nKSxHKX07DQpyby5wcm90b3R5cGUubW92ZUdyaXBQb2ludHNBdD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtyZXR1cm4hIU9oKGYsYSxjLGQsZSl9O3JvLnByb3RvdHlwZS5nZXRPYmplY3ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHIoUGgodGhpcy5nKSl9O3JvLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoUWgodGhpcy5nKSl9O3JvLnByb3RvdHlwZS5nZXRKc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHIoUmgodGhpcy5nKSl9O3JvLnByb3RvdHlwZS5zZXRKc29uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO3JldHVybiEhU2goYyxhKX07DQpmdW5jdGlvbiBOKCl7dGhyb3ciY2Fubm90IGNvbnN0cnVjdCBhIE1kRGJEYXRhYmFzZSwgbm8gY29uc3RydWN0b3IgaW4gSURMIjt9Ti5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShrby5wcm90b3R5cGUpO04ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU47Ti5wcm90b3R5cGUubD1OO04ubT17fTtuLk1kRGJEYXRhYmFzZT1OO04ucHJvdG90eXBlLkdldExheWVyVGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gRChUaCh0aGlzLmcpLHBvKX07Ti5wcm90b3R5cGUuR2V0TGluZXR5cGVUYWJsZT1mdW5jdGlvbigpe3JldHVybiBEKFVoKHRoaXMuZykscW8pfTtOLnByb3RvdHlwZS5HZXRUZXh0U3R5bGVUYWJsZT1mdW5jdGlvbigpe3JldHVybiBEKFZoKHRoaXMuZykscm8pfTtOLnByb3RvdHlwZS5HZXRDdXJyZW50bHlMaW5lVHlwZVNjYWxlPWZ1bmN0aW9uKCl7cmV0dXJuIFdoKHRoaXMuZyl9Ow0KTi5wcm90b3R5cGUuU2V0Q3VycmVudGx5TGluZVR5cGVTY2FsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtYaChjLGEpfTtOLnByb3RvdHlwZS5HZXRDdXJyZW50bHlMYXllck5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihZaCh0aGlzLmcpKX07Ti5wcm90b3R5cGUuU2V0Q3VycmVudGx5TGF5ZXJOYW1lPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO1poKGMsYSl9O04ucHJvdG90eXBlLkdldEN1cnJlbnRseUxpbmVUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybiByKCRoKHRoaXMuZykpfTtOLnByb3RvdHlwZS5TZXRDdXJyZW50bHlMaW5lVHlwZU5hbWU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7YWkoYyxhKX07DQpOLnByb3RvdHlwZS5HZXRDdXJyZW50bHlUcnVlQ29sb3I9ZnVuY3Rpb24oKXtyZXR1cm4gRChiaSh0aGlzLmcpLEopfTtOLnByb3RvdHlwZS5TZXRDdXJyZW50bHlUcnVlQ29sb3I9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7Y2koYyxhKX07Ti5wcm90b3R5cGUuR2V0Q3VycmVudGx5Q29sb3JJbmRleD1mdW5jdGlvbigpe3JldHVybiBkaSh0aGlzLmcpfTtOLnByb3RvdHlwZS5TZXRDdXJyZW50bHlDb2xvckluZGV4PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2VpKGMsYSl9O04ucHJvdG90eXBlLkdldEN1cnJlbnRseVRleHRTdHlsZU5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihmaSh0aGlzLmcpKX07DQpOLnByb3RvdHlwZS5TZXRDdXJyZW50bHlUZXh0U3R5bGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7Z2koYyxhKX07Ti5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKGhpKHRoaXMuZykpfTtOLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoaWkodGhpcy5nKSl9O04ucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihqaSh0aGlzLmcpKX07Ti5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIWtpKGMsYSl9O2Z1bmN0aW9uIE8oKXt0aHJvdyJjYW5ub3QgY29uc3RydWN0IGEgTWNPYmplY3QsIG5vIGNvbnN0cnVjdG9yIGluIElETCI7fU8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoJG4ucHJvdG90eXBlKTsNCk8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU87Ty5wcm90b3R5cGUubD1PO08ubT17fTtuLk1jT2JqZWN0PU87Ty5wcm90b3R5cGUudXBkYXRlRGlzcGxheT1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZztFKCk7Im9iamVjdCI9PXR5cGVvZiBhJiYoYT1qbyhhKSk7Im9iamVjdCI9PXR5cGVvZiBjJiYoYz1qbyhjKSk7cmV0dXJuISFsaShkLGEsYyl9O08ucHJvdG90eXBlLnRlc3Q9Ty5wcm90b3R5cGUudGVzdD1mdW5jdGlvbigpe21pKHRoaXMuZyl9O08ucHJvdG90eXBlLm9wZW5XZWJGaWxlPWZ1bmN0aW9uKGEsYyxkKXt2YXIgZT10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7cmV0dXJuISFuaShlLGEsYyxkKX07DQpPLnByb3RvdHlwZS5zYXZlRmlsZVRvVXJsPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO3JldHVybiEhb2koYyxhKX07Ty5wcm90b3R5cGUuc2F2ZUZpbGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFwaShjLGEpfTtPLnByb3RvdHlwZS5nZXRWaWV3RGF0YUpzb25QYXJhbT1mdW5jdGlvbigpe3JldHVybiByKHFpKHRoaXMuZykpfTtPLnByb3RvdHlwZS51cGRhdGFBcHBEYXRhPWZ1bmN0aW9uKCl7cmkodGhpcy5nKX07Ty5wcm90b3R5cGUuR2V0RGF0YWJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4gRChzaSh0aGlzLmcpLE4pfTtPLnByb3RvdHlwZS5HZXRTeXNWYXJTdHJpbmc9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuIHIodGkoYyxhKSl9Ow0KTy5wcm90b3R5cGUuU2V0U3lzVmFyU3RyaW5nPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7Yz1jJiYib2JqZWN0Ij09PXR5cGVvZiBjP2MuZzpGKGMpO3JldHVybiEhdWkoZCxhLGMpfTtPLnByb3RvdHlwZS5HZXRTeXNWYXJEb3VibGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuIHZpKGMsYSl9O08ucHJvdG90eXBlLlNldFN5c1ZhckRvdWJsZT1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7cmV0dXJuISF3aShkLGEsYyl9O08ucHJvdG90eXBlLkdldFN5c1Zhckxvbmc9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuIHhpKGMsYSl9Ow0KTy5wcm90b3R5cGUuU2V0U3lzVmFyTG9uZz1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7cmV0dXJuISF5aShkLGEsYyl9O08ucHJvdG90eXBlLmZpcmVFdmVudFdpbmRvd1NpemU9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO3ppKGQsYSxjKX07Ty5wcm90b3R5cGUuZmlyZUV2ZW50Q29tbWFuZFN0YXJ0PWZ1bmN0aW9uKCl7QWkodGhpcy5nKX07Ty5wcm90b3R5cGUuSW50ZWxsaVNlbGVjdF9Qb2ludFNlbGVjdD1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7cmV0dXJuIEJpKGQsYSxjKX07DQpPLnByb3RvdHlwZS5JbnRlbGxpU2VsZWN0X2dldEdyaWREYXRhPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiByKENpKGMsYSkpfTtPLnByb3RvdHlwZS5FbnRpdHlUZW1wV29yZERyYXdfb25KaWdDb21tYW5kRW5kPWZ1bmN0aW9uKCl7RGkodGhpcy5nKX07Ty5wcm90b3R5cGUuRW50aXR5VGVtcFdvcmREcmF3X29uSmlnRHJhd0VudGl0eURpc3BsYXk9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7RWkoYyxhKX07Ty5wcm90b3R5cGUuRW50aXR5VGVtcFdvcmREcmF3X29uUmVhZHlKaWdVcGRhdGVEaXNwbGE9ZnVuY3Rpb24oKXtGaSh0aGlzLmcpfTtPLnByb3RvdHlwZS5FbnRpdHlUZW1wV29yZERyYXdfb25KaWdDbGVhckRpc3BsYXk9ZnVuY3Rpb24oKXtHaSh0aGlzLmcpfTsNCk8ucHJvdG90eXBlLlNldERyYXdDb2xvcj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtIaShjLGEpfTtPLnByb3RvdHlwZS5HZXREcmF3Q29sb3I9ZnVuY3Rpb24oKXtyZXR1cm4gRChJaSh0aGlzLmcpLEopfTtPLnByb3RvdHlwZS5BZGRMYXllcj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtKaShjLGEpfTtPLnByb3RvdHlwZS5TZXREcmF3TGF5ZXI9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7S2koYyxhKX07Ty5wcm90b3R5cGUuR2V0RHJhd0xheWVyPWZ1bmN0aW9uKCl7cmV0dXJuIHIoTGkodGhpcy5nKSl9Ow0KTy5wcm90b3R5cGUuQWRkVGV4dFN0eWxlPWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLmc6RihjKTtkPWQmJiJvYmplY3QiPT09dHlwZW9mIGQ/ZC5nOkYoZCk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtNaShmLGEsYyxkLGUpfTtPLnByb3RvdHlwZS5TZXREcmF3VGV4dFN0eWxlPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO05pKGMsYSl9O08ucHJvdG90eXBlLkdldERyYXdUZXh0U3R5bGU9ZnVuY3Rpb24oKXtyZXR1cm4gcihPaSh0aGlzLmcpKX07DQpPLnByb3RvdHlwZS5BZGRMaW5ldHlwZT1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLmc6RihjKTtQaShkLGEsYyl9O08ucHJvdG90eXBlLkFkZExpbmV0eXBlRXg9ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLmc6RihjKTtkPWQmJiJvYmplY3QiPT09dHlwZW9mIGQ/ZC5nOkYoZCk7UWkoZSxhLGMsZCl9Ow0KTy5wcm90b3R5cGUuQWRkRGltU3R5bGU9ZnVuY3Rpb24oYSxjLGQsZSxmKXt2YXIgZz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtjPWMmJiJvYmplY3QiPT09dHlwZW9mIGM/Yy5nOkYoYyk7ZD1kJiYib2JqZWN0Ij09PXR5cGVvZiBkP2QuZzpGKGQpO2U9ZSYmIm9iamVjdCI9PT10eXBlb2YgZT9lLmc6RihlKTtmPWYmJiJvYmplY3QiPT09dHlwZW9mIGY/Zi5nOkYoZik7UmkoZyxhLGMsZCxlLGYpfTtPLnByb3RvdHlwZS5TZXREcmF3TGluZXR5cGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7U2koYyxhKX07Ty5wcm90b3R5cGUuR2V0RHJhd0xpbmV0eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIHIoVGkodGhpcy5nKSl9Ow0KTy5wcm90b3R5cGUuU2V0RHJhd0xpbmVXZWlnaHQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7VWkoYyxhKX07Ty5wcm90b3R5cGUuR2V0RHJhd0xpbmVXZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gVmkodGhpcy5nKX07Ty5wcm90b3R5cGUuU2V0RHJhd0xpbmVUeXBlU2NhbGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7V2koYyxhKX07Ty5wcm90b3R5cGUuR2V0RHJhd0xpbmVUeXBlU2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gWGkodGhpcy5nKX07Ty5wcm90b3R5cGUuU2V0RHJhd0RpbVN0eWxlPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpO1lpKGMsYSl9O08ucHJvdG90eXBlLkdldERyYXdEaW1TdHlsZT1mdW5jdGlvbigpe3JldHVybiByKFppKHRoaXMuZykpfTsNCk8ucHJvdG90eXBlLlNldFBhdHRlcm5EZWZpbml0aW9uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZztFKCk7YT1hJiYib2JqZWN0Ij09PXR5cGVvZiBhP2EuZzpGKGEpOyRpKGMsYSl9O08ucHJvdG90eXBlLkdldFBhdHRlcm5EZWZpbml0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHIoYWoodGhpcy5nKSl9O08ucHJvdG90eXBlLlNldERyYXdMaW5lV2lkdGg9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YmooYyxhKX07Ty5wcm90b3R5cGUuR2V0RHJhd0xpbmVXaWR0aD1mdW5jdGlvbigpe3JldHVybiBjaih0aGlzLmcpfTsNCk8ucHJvdG90eXBlLkRyYXdMaW5lPWZ1bmN0aW9uKGEsYyxkLGUsZixnKXt2YXIgaD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiYoZj1mLmcpO2cmJiJvYmplY3QiPT09dHlwZW9mIGcmJihnPWcuZyk7cmV0dXJuIGRqKGgsYSxjLGQsZSxmLGcpfTsNCk8ucHJvdG90eXBlLkRyYXdBcmM9ZnVuY3Rpb24oYSxjLGQsZSxmKXt2YXIgZz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiYoZj1mLmcpO3JldHVybiBlaihnLGEsYyxkLGUsZil9Ow0KTy5wcm90b3R5cGUuRHJhd0FyYzI9ZnVuY3Rpb24oYSxjLGQsZSxmLGcpe3ZhciBoPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7ZyYmIm9iamVjdCI9PT10eXBlb2YgZyYmKGc9Zy5nKTtyZXR1cm4gZmooaCxhLGMsZCxlLGYsZyl9O08ucHJvdG90eXBlLkRyYXdDaXJjbGU9ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtyZXR1cm4gZ2ooZSxhLGMsZCl9Ow0KTy5wcm90b3R5cGUuRHJhd0VsbGlwc2U9ZnVuY3Rpb24oYSxjLGQsZSxmKXt2YXIgZz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiYoZj1mLmcpO3JldHVybiBoaihnLGEsYyxkLGUsZil9Ow0KTy5wcm90b3R5cGUuRHJhd0VsbGlwc2VBcmM9ZnVuY3Rpb24oYSxjLGQsZSxmLGcsaCl7dmFyIGw9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7ZiYmIm9iamVjdCI9PT10eXBlb2YgZiYmKGY9Zi5nKTtnJiYib2JqZWN0Ij09PXR5cGVvZiBnJiYoZz1nLmcpO2gmJiJvYmplY3QiPT09dHlwZW9mIGgmJihoPWguZyk7cmV0dXJuIGlqKGwsYSxjLGQsZSxmLGcsaCl9O08ucHJvdG90eXBlLkRyYXdQb2ludD1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7cmV0dXJuIGpqKGQsYSxjKX07DQpPLnByb3RvdHlwZS5EcmF3U29saWQ9ZnVuY3Rpb24oYSxjLGQsZSxmLGcsaCxsKXt2YXIgdD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiYoZj1mLmcpO2cmJiJvYmplY3QiPT09dHlwZW9mIGcmJihnPWcuZyk7aCYmIm9iamVjdCI9PT10eXBlb2YgaCYmKGg9aC5nKTtsJiYib2JqZWN0Ij09PXR5cGVvZiBsJiYobD1sLmcpO3JldHVybiBraih0LGEsYyxkLGUsZixnLGgsbCl9Ow0KTy5wcm90b3R5cGUuRHJhd01UZXh0PWZ1bmN0aW9uKGEsYyxkLGUsZixnLGgpe3ZhciBsPXRoaXMuZztFKCk7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2Q9ZCYmIm9iamVjdCI9PT10eXBlb2YgZD9kLmc6RihkKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7ZyYmIm9iamVjdCI9PT10eXBlb2YgZyYmKGc9Zy5nKTtoJiYib2JqZWN0Ij09PXR5cGVvZiBoJiYoaD1oLmcpO3JldHVybiBsaihsLGEsYyxkLGUsZixnLGgpfTsNCk8ucHJvdG90eXBlLkRyYXdUZXh0PWZ1bmN0aW9uKGEsYyxkLGUsZixnLGgpe3ZhciBsPXRoaXMuZztFKCk7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2Q9ZCYmIm9iamVjdCI9PT10eXBlb2YgZD9kLmc6RihkKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7ZyYmIm9iamVjdCI9PT10eXBlb2YgZyYmKGc9Zy5nKTtoJiYib2JqZWN0Ij09PXR5cGVvZiBoJiYoaD1oLmcpO3JldHVybiBtaihsLGEsYyxkLGUsZixnLGgpfTsNCk8ucHJvdG90eXBlLkRyYXdCbG9ja1JlZmVyZW5jZT1mdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPXRoaXMuZztFKCk7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2Q9ZCYmIm9iamVjdCI9PT10eXBlb2YgZD9kLmc6RihkKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7cmV0dXJuIG5qKGcsYSxjLGQsZSxmKX07DQpPLnByb3RvdHlwZS5EcmF3RGltQWxpZ25lZD1mdW5jdGlvbihhLGMsZCxlLGYsZyl7dmFyIGg9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7ZiYmIm9iamVjdCI9PT10eXBlb2YgZiYmKGY9Zi5nKTtnJiYib2JqZWN0Ij09PXR5cGVvZiBnJiYoZz1nLmcpO3JldHVybiBvaihoLGEsYyxkLGUsZixnKX07DQpPLnByb3RvdHlwZS5EcmF3RGltQW5ndWxhcj1mdW5jdGlvbihhLGMsZCxlLGYsZyxoLGwpe3ZhciB0PXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7ZyYmIm9iamVjdCI9PT10eXBlb2YgZyYmKGc9Zy5nKTtoJiYib2JqZWN0Ij09PXR5cGVvZiBoJiYoaD1oLmcpO2wmJiJvYmplY3QiPT09dHlwZW9mIGwmJihsPWwuZyk7cmV0dXJuIHBqKHQsYSxjLGQsZSxmLGcsaCxsKX07DQpPLnByb3RvdHlwZS5EcmF3RGltRGlhbWV0cmljPWZ1bmN0aW9uKGEsYyxkLGUsZil7dmFyIGc9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7ZiYmIm9iamVjdCI9PT10eXBlb2YgZiYmKGY9Zi5nKTtyZXR1cm4gcWooZyxhLGMsZCxlLGYpfTsNCk8ucHJvdG90eXBlLkRyYXdEaW1Sb3RhdGVkPWZ1bmN0aW9uKGEsYyxkLGUsZixnLGgpe3ZhciBsPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7ZyYmIm9iamVjdCI9PT10eXBlb2YgZyYmKGc9Zy5nKTtoJiYib2JqZWN0Ij09PXR5cGVvZiBoJiYoaD1oLmcpO3JldHVybiByaihsLGEsYyxkLGUsZixnLGgpfTsNCk8ucHJvdG90eXBlLkRyYXdEaW1PcmRpbmF0ZT1mdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7cmV0dXJuIHNqKGcsYSxjLGQsZSxmKX07Ty5wcm90b3R5cGUuRHJhd0RpbVJhZGlhbD1mdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7cmV0dXJuIHRqKGcsYSxjLGQsZSxmKX07DQpPLnByb3RvdHlwZS5QYXRoTW92ZVRvPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTt1aihkLGEsYyl9O08ucHJvdG90eXBlLlBhdGhNb3ZlVG9FeD1mdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7dmooZyxhLGMsZCxlLGYpfTtPLnByb3RvdHlwZS5QYXRoTGluZVRvPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTt3aihkLGEsYyl9Ow0KTy5wcm90b3R5cGUuUGF0aExpbmVUb0V4PWZ1bmN0aW9uKGEsYyxkLGUsZil7dmFyIGc9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7ZiYmIm9iamVjdCI9PT10eXBlb2YgZiYmKGY9Zi5nKTt4aihnLGEsYyxkLGUsZil9O08ucHJvdG90eXBlLkRyYXdQYXRoVG9Qb2x5bGluZT1mdW5jdGlvbigpe3JldHVybiB5aih0aGlzLmcpfTtPLnByb3RvdHlwZS5EcmF3UGF0aFRvU3BsaW5lPWZ1bmN0aW9uKCl7cmV0dXJuIHpqKHRoaXMuZyl9O08ucHJvdG90eXBlLlBhdGhNYWtlQ2xvc2VkPWZ1bmN0aW9uKCl7QWoodGhpcy5nKX07DQpPLnByb3RvdHlwZS5EcmF3UGF0aFRvSGF0Y2g9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIEJqKGMsYSl9O08ucHJvdG90eXBlLkRyYXdFbnRpdHk9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIENqKGMsYSl9O2Z1bmN0aW9uIHNvKCl7dGhpcy5nPURqKCk7YW8oc28pW3RoaXMuZ109dGhpc31zby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSgkbi5wcm90b3R5cGUpO3NvLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1zbztzby5wcm90b3R5cGUubD1zbztzby5tPXt9O24uTWNBcHA9c287c28ucHJvdG90eXBlLkluaXQ9ZnVuY3Rpb24oKXtFaih0aGlzLmcpfTsNCnNvLnByb3RvdHlwZS5DcmVhdGVNeERyYXc9ZnVuY3Rpb24oYSxjLGQsZSxmKXt2YXIgZz10aGlzLmc7RSgpO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkPWQmJiJvYmplY3QiPT09dHlwZW9mIGQ/ZC5nOkYoZCk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiYoZj1mLmcpO3JldHVybiBEKEZqKGcsYSxjLGQsZSxmKSxPKX07c28ucHJvdG90eXBlLkdldEN1cnJlbnRNeERyYXc9ZnVuY3Rpb24oKXtyZXR1cm4gRChHaih0aGlzLmcpLE8pfTtzby5wcm90b3R5cGUuRGVzdHJveU9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtIaihjLGEpfTsNCnNvLnByb3RvdHlwZS5tY2VkUkdCMkluZGV4PWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO3JldHVybiBJaihmLGEsYyxkLGUpfTtzby5wcm90b3R5cGUuT2JqZWN0SWRUb09iamVjdE5hbWU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHIoSmooYyxhKSl9O3NvLnByb3RvdHlwZS5PYmplY3RJZFRvTWREYkxpbmU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIEQoS2ooYyxhKSxQKX07DQpzby5wcm90b3R5cGUuT2JqZWN0SWRUb01kRGJUZXh0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKExqKGMsYSksUil9O3NvLnByb3RvdHlwZS5PYmplY3RJZFRvTWRPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIEQoTWooYyxhKSxHKX07c28ucHJvdG90eXBlLmdldExhc3RDYWxsUmVzdWx0PWZ1bmN0aW9uKCl7cmV0dXJuIE5qKHRoaXMuZyl9O3NvLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe09qKHRoaXMuZyl9O2Z1bmN0aW9uIFMoKXt0aGlzLmc9UGooKTthbyhTKVt0aGlzLmddPXRoaXN9Uy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShrby5wcm90b3R5cGUpO1MucHJvdG90eXBlLmNvbnN0cnVjdG9yPVM7Uy5wcm90b3R5cGUubD1TO1MubT17fTtuLk1jRHJhd1Jlc2J1Zj1TO1MucHJvdG90eXBlLkNsZWFyPWZ1bmN0aW9uKCl7UWoodGhpcy5nKX07DQpTLnByb3RvdHlwZS5HZXRDb3VudD1mdW5jdGlvbigpe3JldHVybiBSaih0aGlzLmcpfTtTLnByb3RvdHlwZS5BdERvdWJsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gU2ooYyxhKX07Uy5wcm90b3R5cGUuQXRsb25nPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBUaihjLGEpfTtTLnByb3RvdHlwZS5BdE9iamVjdElkPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBVaihjLGEpfTtTLnByb3RvdHlwZS5BdFN0cmluZz1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gcihWaihjLGEpKX07DQpTLnByb3RvdHlwZS5BdFBvaW50PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKFdqKGMsYSksSCl9O1MucHJvdG90eXBlLkl0ZW1EYXRhVHlwZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gWGooYyxhKX07Uy5wcm90b3R5cGUuQWRkRG91YmxlPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtZaihkLGEsYyl9O1MucHJvdG90eXBlLkFkZGxvbmc9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO1pqKGQsYSxjKX07DQpTLnByb3RvdHlwZS5BZGRPYmplY3RJZD1mdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7YWsoZCxhLGMpfTtTLnByb3RvdHlwZS5BZGRTdHJpbmc9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2JrKGQsYSxjKX07Uy5wcm90b3R5cGUuQWRkUG9pbnQ9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2NrKGQsYSxjKX07Uy5wcm90b3R5cGUuUmVtb3ZlQWxsPWZ1bmN0aW9uKCl7ZGsodGhpcy5nKX07DQpTLnByb3RvdHlwZS5SZW1vdmU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7ZWsoYyxhKX07Uy5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKGZrKHRoaXMuZykpfTtTLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoZ2sodGhpcy5nKSl9O1MucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihoayh0aGlzLmcpKX07Uy5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIWlrKGMsYSl9O1MucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7amsodGhpcy5nKX07ZnVuY3Rpb24gdG8oKXt0aGlzLmc9a2soKTthbyh0bylbdGhpcy5nXT10aGlzfXRvLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKCRuLnByb3RvdHlwZSk7DQp0by5wcm90b3R5cGUuY29uc3RydWN0b3I9dG87dG8ucHJvdG90eXBlLmw9dG87dG8ubT17fTtuLk1jRHJhd1V0aWxpdHk9dG87dG8ucHJvdG90eXBlLmZpbmRFbnRBdFBvaW50PWZ1bmN0aW9uKGEsYyxkLGUsZil7dmFyIGc9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7ZiYmIm9iamVjdCI9PT10eXBlb2YgZiYmKGY9Zi5nKTtyZXR1cm4gbGsoZyxhLGMsZCxlLGYpfTt0by5wcm90b3R5cGUuZXJhc2VFbnRpdHk9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFtayhjLGEpfTsNCnRvLnByb3RvdHlwZS5oaWdobGlnaHRFbnRpdHk9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO3JldHVybiEhbmsoZCxhLGMpfTt0by5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtvayh0aGlzLmcpfTtmdW5jdGlvbiBQKCl7dGhpcy5nPXBrKCk7YW8oUClbdGhpcy5nXT10aGlzfVAucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobW8ucHJvdG90eXBlKTtQLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1QO1AucHJvdG90eXBlLmw9UDtQLm09e307bi5NZERiTGluZT1QO1AucHJvdG90eXBlLnN0YXJ0UG9pbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRChxayh0aGlzLmcpLEgpfTtQLnByb3RvdHlwZS5zZXRTdGFydFBvaW50PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhcmsoYyxhKX07DQpQLnByb3RvdHlwZS5lbmRQb2ludD1mdW5jdGlvbigpe3JldHVybiBEKHNrKHRoaXMuZyksSCl9O1AucHJvdG90eXBlLnNldEVuZFBvaW50PVAucHJvdG90eXBlLnNldEVuZFBvaW50PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhdGsoYyxhKX07UC5wcm90b3R5cGUuZ2V0U3RhcnRQYXJhbT1mdW5jdGlvbigpe3JldHVybiB1ayh0aGlzLmcpfTtQLnByb3RvdHlwZS5nZXRFbmRQYXJhbT1mdW5jdGlvbigpe3JldHVybiB2ayh0aGlzLmcpfTtQLnByb3RvdHlwZS5nZXREaXN0QXRQYXJhbT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gd2soYyxhKX07UC5wcm90b3R5cGUuZ2V0UGFyYW1BdERpc3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHhrKGMsYSl9Ow0KUC5wcm90b3R5cGUuZ2V0RGlzdEF0UG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHlrKGMsYSl9O1AucHJvdG90eXBlLmdldFBvaW50QXREaXN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKHprKGMsYSksSCl9O1AucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIEFrKHRoaXMuZyl9O1AucHJvdG90eXBlLkVyYXNlPWZ1bmN0aW9uKCl7cmV0dXJuISFCayh0aGlzLmcpfTtQLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUNrKGMsYSl9O1AucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoRGsodGhpcy5nKSxHKX07DQpQLnByb3RvdHlwZS5tb3ZlR3JpcFBvaW50c0F0PWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO3JldHVybiEhRWsoZixhLGMsZCxlKX07UC5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKEZrKHRoaXMuZykpfTtQLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoR2sodGhpcy5nKSl9O1AucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihIayh0aGlzLmcpKX07UC5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIUlrKGMsYSl9O1AucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7SmsodGhpcy5nKX07DQpmdW5jdGlvbiBSKCl7dGhpcy5nPUtrKCk7YW8oUilbdGhpcy5nXT10aGlzfVIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobG8ucHJvdG90eXBlKTtSLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1SO1IucHJvdG90eXBlLmw9UjtSLm09e307bi5NZERiVGV4dD1SO1IucHJvdG90eXBlLnBvc2l0aW9uPVIucHJvdG90eXBlLnBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEQoTGsodGhpcy5nKSxIKX07Ui5wcm90b3R5cGUuc2V0UG9zaXRpb249Ui5wcm90b3R5cGUuc2V0UG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFNayhjLGEpfTtSLnByb3RvdHlwZS5hbGlnbm1lbnRQb2ludD1mdW5jdGlvbigpe3JldHVybiBEKE5rKHRoaXMuZyksSCl9Ow0KUi5wcm90b3R5cGUuc2V0QWxpZ25tZW50UG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFPayhjLGEpfTtSLnByb3RvdHlwZS5vYmxpcXVlPWZ1bmN0aW9uKCl7cmV0dXJuIFBrKHRoaXMuZyl9O1IucHJvdG90eXBlLnNldE9ibGlxdWU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFRayhjLGEpfTtSLnByb3RvdHlwZS5yb3RhdGlvbj1SLnByb3RvdHlwZS5yb3RhdGlvbj1mdW5jdGlvbigpe3JldHVybiBSayh0aGlzLmcpfTtSLnByb3RvdHlwZS5zZXRSb3RhdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIVNrKGMsYSl9O1IucHJvdG90eXBlLmhlaWdodD1SLnByb3RvdHlwZS5oZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gVGsodGhpcy5nKX07DQpSLnByb3RvdHlwZS5zZXRIZWlnaHQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFVayhjLGEpfTtSLnByb3RvdHlwZS53aWR0aEZhY3Rvcj1mdW5jdGlvbigpe3JldHVybiBWayh0aGlzLmcpfTtSLnByb3RvdHlwZS5zZXRXaWR0aEZhY3Rvcj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIVdrKGMsYSl9O1IucHJvdG90eXBlLnRleHRTdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gcihYayh0aGlzLmcpKX07Ui5wcm90b3R5cGUuc2V0VGV4dFN0cmluZz1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIVlrKGMsYSl9O1IucHJvdG90eXBlLmhvcml6b250YWxNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIFprKHRoaXMuZyl9Ow0KUi5wcm90b3R5cGUuc2V0SG9yaXpvbnRhbE1vZGU9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISEkayhjLGEpfTtSLnByb3RvdHlwZS52ZXJ0aWNhbE1vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gYWwodGhpcy5nKX07Ui5wcm90b3R5cGUuc2V0VmVydGljYWxNb2RlPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhYmwoYyxhKX07Ui5wcm90b3R5cGUuZ2V0T2JqZWN0SUQ9ZnVuY3Rpb24oKXtyZXR1cm4gY2wodGhpcy5nKX07Ui5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWRsKHRoaXMuZyl9O1IucHJvdG90eXBlLkNvbm5lY3Rpb25UZW1wT2JqZWN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhZWwoYyxhKX07DQpSLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKGZsKHRoaXMuZyksRyl9O1IucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISFnbChmLGEsYyxkLGUpfTtSLnByb3RvdHlwZS5nZXRPYmplY3ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHIoaGwodGhpcy5nKSl9O1IucHJvdG90eXBlLmdldER4ZjA9ZnVuY3Rpb24oKXtyZXR1cm4gcihpbCh0aGlzLmcpKX07Ui5wcm90b3R5cGUuZ2V0SnNvbj1mdW5jdGlvbigpe3JldHVybiByKGpsKHRoaXMuZykpfTsNClIucHJvdG90eXBlLnNldEpzb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFrbChjLGEpfTtSLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe2xsKHRoaXMuZyl9O2Z1bmN0aW9uIFQoKXt0aGlzLmc9bWwoKTthbyhUKVt0aGlzLmddPXRoaXN9VC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShtby5wcm90b3R5cGUpO1QucHJvdG90eXBlLmNvbnN0cnVjdG9yPVQ7VC5wcm90b3R5cGUubD1UO1QubT17fTtuLk1kRGJDaXJjbGU9VDtULnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gRChubCh0aGlzLmcpLEgpfTtULnByb3RvdHlwZS5zZXRDZW50ZXI9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFvbChjLGEpfTtULnByb3RvdHlwZS5yYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gcGwodGhpcy5nKX07DQpULnByb3RvdHlwZS5zZXRSYWRpdXM9VC5wcm90b3R5cGUuc2V0UmFkaXVzPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhcWwoYyxhKX07VC5wcm90b3R5cGUuZ2V0U3RhcnRQYXJhbT1mdW5jdGlvbigpe3JldHVybiBybCh0aGlzLmcpfTtULnByb3RvdHlwZS5nZXRFbmRQYXJhbT1mdW5jdGlvbigpe3JldHVybiBzbCh0aGlzLmcpfTtULnByb3RvdHlwZS5nZXREaXN0QXRQYXJhbT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gdGwoYyxhKX07VC5wcm90b3R5cGUuZ2V0UGFyYW1BdERpc3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHVsKGMsYSl9Ow0KVC5wcm90b3R5cGUuZ2V0RGlzdEF0UG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHZsKGMsYSl9O1QucHJvdG90eXBlLmdldFBvaW50QXREaXN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKHdsKGMsYSksSCl9O1QucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIHhsKHRoaXMuZyl9O1QucHJvdG90eXBlLkVyYXNlPWZ1bmN0aW9uKCl7cmV0dXJuISF5bCh0aGlzLmcpfTtULnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXpsKGMsYSl9O1QucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoQWwodGhpcy5nKSxHKX07DQpULnByb3RvdHlwZS5tb3ZlR3JpcFBvaW50c0F0PWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO3JldHVybiEhQmwoZixhLGMsZCxlKX07VC5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKENsKHRoaXMuZykpfTtULnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoRGwodGhpcy5nKSl9O1QucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihFbCh0aGlzLmcpKX07VC5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIUZsKGMsYSl9O1QucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7R2wodGhpcy5nKX07DQpmdW5jdGlvbiBWKCl7dGhpcy5nPUhsKCk7YW8oVilbdGhpcy5nXT10aGlzfVYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobW8ucHJvdG90eXBlKTtWLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1WO1YucHJvdG90eXBlLmw9VjtWLm09e307bi5NZERiUG9seWxpbmU9VjtWLnByb3RvdHlwZS5zZXRDbG9zZWQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFJbChjLGEpfTtWLnByb3RvdHlwZS5zZXRDb25zdGFudFdpZHRoPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhSmwoYyxhKX07Vi5wcm90b3R5cGUuaXNDbG9zZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hIUtsKHRoaXMuZyl9O1YucHJvdG90eXBlLmdldENvbnN0YW50V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTGwodGhpcy5nKX07DQpWLnByb3RvdHlwZS5hZGRWZXJ0ZXhBdD1mdW5jdGlvbihhLGMsZCxlLGYpe3ZhciBnPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO2YmJiJvYmplY3QiPT09dHlwZW9mIGYmJihmPWYuZyk7cmV0dXJuISFNbChnLGEsYyxkLGUsZil9O1YucHJvdG90eXBlLnJlbW92ZVZlcnRleEF0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhTmwoYyxhKX07Vi5wcm90b3R5cGUubnVtVmVydHM9ZnVuY3Rpb24oKXtyZXR1cm4gT2wodGhpcy5nKX07Vi5wcm90b3R5cGUuZ2V0UG9pbnRBdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gRChQbChjLGEpLEgpfTsNClYucHJvdG90eXBlLmdldEJ1bGdlQXQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIFFsKGMsYSl9O1YucHJvdG90eXBlLmdldFN0YXJ0V2lkdGhzQXQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIFJsKGMsYSl9O1YucHJvdG90eXBlLmdldEVuZFdpZHRoc0F0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBTbChjLGEpfTtWLnByb3RvdHlwZS5zZXRQb2ludEF0PWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtyZXR1cm4hIVRsKGQsYSxjKX07DQpWLnByb3RvdHlwZS5zZXRCdWxnZUF0PWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtyZXR1cm4hIVVsKGQsYSxjKX07Vi5wcm90b3R5cGUuZ2V0U3RhcnRQYXJhbT1mdW5jdGlvbigpe3JldHVybiBWbCh0aGlzLmcpfTtWLnByb3RvdHlwZS5nZXRFbmRQYXJhbT1mdW5jdGlvbigpe3JldHVybiBXbCh0aGlzLmcpfTtWLnByb3RvdHlwZS5nZXREaXN0QXRQYXJhbT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4gWGwoYyxhKX07Vi5wcm90b3R5cGUuZ2V0UGFyYW1BdERpc3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIFlsKGMsYSl9Ow0KVi5wcm90b3R5cGUuZ2V0RGlzdEF0UG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIFpsKGMsYSl9O1YucHJvdG90eXBlLmdldFBvaW50QXREaXN0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBEKCRsKGMsYSksSCl9O1YucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIGFtKHRoaXMuZyl9O1YucHJvdG90eXBlLkVyYXNlPWZ1bmN0aW9uKCl7cmV0dXJuISFibSh0aGlzLmcpfTtWLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIWNtKGMsYSl9O1YucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoZG0odGhpcy5nKSxHKX07DQpWLnByb3RvdHlwZS5tb3ZlR3JpcFBvaW50c0F0PWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO3JldHVybiEhZW0oZixhLGMsZCxlKX07Vi5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKGZtKHRoaXMuZykpfTtWLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoZ20odGhpcy5nKSl9O1YucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihobSh0aGlzLmcpKX07Vi5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIWltKGMsYSl9O1YucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7am0odGhpcy5nKX07DQpmdW5jdGlvbiBXKCl7dGhpcy5nPWttKCk7YW8oVylbdGhpcy5nXT10aGlzfVcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobG8ucHJvdG90eXBlKTtXLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1XO1cucHJvdG90eXBlLmw9VztXLm09e307bi5NZERiQmxvY2tSZWZlcmVuY2U9VztXLnByb3RvdHlwZS5ibG9ja1RhYmxlUmVjb3JkPWZ1bmN0aW9uKCl7cmV0dXJuIGxtKHRoaXMuZyl9O1cucHJvdG90eXBlLnNldEJsb2NrVGFibGVSZWNvcmQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFtbShjLGEpfTtXLnByb3RvdHlwZS5wb3NpdGlvbj1XLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBEKG5tKHRoaXMuZyksSCl9Ow0KVy5wcm90b3R5cGUuc2V0UG9zaXRpb249Vy5wcm90b3R5cGUuc2V0UG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFvbShjLGEpfTtXLnByb3RvdHlwZS5zY2FsZUZhY3RvcnM9ZnVuY3Rpb24oKXtyZXR1cm4gRChwbSh0aGlzLmcpLEgpfTtXLnByb3RvdHlwZS5zZXRTY2FsZUZhY3RvcnM9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFxbShjLGEpfTtXLnByb3RvdHlwZS5yb3RhdGlvbj1XLnByb3RvdHlwZS5yb3RhdGlvbj1mdW5jdGlvbigpe3JldHVybiBybSh0aGlzLmcpfTtXLnByb3RvdHlwZS5zZXRSb3RhdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXNtKGMsYSl9Ow0KVy5wcm90b3R5cGUuYmxvY2tUcmFuc2Zvcm09ZnVuY3Rpb24oKXtyZXR1cm4gRCh0bSh0aGlzLmcpLEwpfTtXLnByb3RvdHlwZS5zZXRCbG9ja1RyYW5zZm9ybT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXVtKGMsYSl9O1cucHJvdG90eXBlLmdldE9iamVjdElEPWZ1bmN0aW9uKCl7cmV0dXJuIHdtKHRoaXMuZyl9O1cucHJvdG90eXBlLkVyYXNlPWZ1bmN0aW9uKCl7cmV0dXJuISF4bSh0aGlzLmcpfTtXLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIXltKGMsYSl9O1cucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoem0odGhpcy5nKSxHKX07DQpXLnByb3RvdHlwZS5tb3ZlR3JpcFBvaW50c0F0PWZ1bmN0aW9uKGEsYyxkLGUpe3ZhciBmPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2MmJiJvYmplY3QiPT09dHlwZW9mIGMmJihjPWMuZyk7ZCYmIm9iamVjdCI9PT10eXBlb2YgZCYmKGQ9ZC5nKTtlJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYoZT1lLmcpO3JldHVybiEhQW0oZixhLGMsZCxlKX07Vy5wcm90b3R5cGUuZ2V0T2JqZWN0TmFtZT1mdW5jdGlvbigpe3JldHVybiByKEJtKHRoaXMuZykpfTtXLnByb3RvdHlwZS5nZXREeGYwPWZ1bmN0aW9uKCl7cmV0dXJuIHIoQ20odGhpcy5nKSl9O1cucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihEbSh0aGlzLmcpKX07Vy5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIUVtKGMsYSl9O1cucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7Rm0odGhpcy5nKX07DQpmdW5jdGlvbiBYKCl7dGhpcy5nPUdtKCk7YW8oWClbdGhpcy5nXT10aGlzfVgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSS5wcm90b3R5cGUpO1gucHJvdG90eXBlLmNvbnN0cnVjdG9yPVg7WC5wcm90b3R5cGUubD1YO1gubT17fTtuLk1kRGJBbGlnbmVkRGltZW5zaW9uPVg7WC5wcm90b3R5cGUueExpbmUxUG9pbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRChIbSh0aGlzLmcpLEgpfTtYLnByb3RvdHlwZS5zZXRYTGluZTFQb2ludD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUltKGMsYSl9O1gucHJvdG90eXBlLnhMaW5lMlBvaW50PWZ1bmN0aW9uKCl7cmV0dXJuIEQoSm0odGhpcy5nKSxIKX07WC5wcm90b3R5cGUuc2V0WExpbmUyUG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFLbShjLGEpfTsNClgucHJvdG90eXBlLmRpbUxpbmVQb2ludD1mdW5jdGlvbigpe3JldHVybiBEKExtKHRoaXMuZyksSCl9O1gucHJvdG90eXBlLnNldERpbUxpbmVQb2ludD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIU1tKGMsYSl9O1gucHJvdG90eXBlLm9ibGlxdWU9ZnVuY3Rpb24oKXtyZXR1cm4gTm0odGhpcy5nKX07WC5wcm90b3R5cGUuc2V0T2JsaXF1ZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIU9tKGMsYSl9O1gucHJvdG90eXBlLnRleHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiBEKFBtKHRoaXMuZyksSCl9O1gucHJvdG90eXBlLnNldFRleHRQb3NpdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIVFtKGMsYSl9Ow0KWC5wcm90b3R5cGUuaXNVc2luZ0RlZmF1bHRUZXh0UG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4hIVJtKHRoaXMuZyl9O1gucHJvdG90eXBlLnVzZVNldFRleHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiEhU20odGhpcy5nKX07WC5wcm90b3R5cGUudXNlRGVmYXVsdFRleHRQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiEhVG0odGhpcy5nKX07WC5wcm90b3R5cGUuZWxldmF0aW9uPVgucHJvdG90eXBlLmVsZXZhdGlvbj1mdW5jdGlvbigpe3JldHVybiBVbSh0aGlzLmcpfTtYLnByb3RvdHlwZS5zZXRFbGV2YXRpb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFWbShjLGEpfTtYLnByb3RvdHlwZS5kaW1lbnNpb25UZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHIoV20odGhpcy5nKSl9Ow0KWC5wcm90b3R5cGUuc2V0RGltZW5zaW9uVGV4dD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIVhtKGMsYSl9O1gucHJvdG90eXBlLnRleHRSb3RhdGlvbj1mdW5jdGlvbigpe3JldHVybiBZbSh0aGlzLmcpfTtYLnByb3RvdHlwZS5zZXRUZXh0Um90YXRpb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFabShjLGEpfTtYLnByb3RvdHlwZS5kaW1lbnNpb25TdHlsZT1mdW5jdGlvbigpe3JldHVybiAkbSh0aGlzLmcpfTtYLnByb3RvdHlwZS5zZXREaW1lbnNpb25TdHlsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIWFuKGMsYSl9O1gucHJvdG90eXBlLnRleHRBdHRhY2htZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGJuKHRoaXMuZyl9Ow0KWC5wcm90b3R5cGUuc2V0VGV4dEF0dGFjaG1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFjbihjLGEpfTtYLnByb3RvdHlwZS5ob3Jpem9udGFsUm90YXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gZG4odGhpcy5nKX07WC5wcm90b3R5cGUuc2V0SG9yaXpvbnRhbFJvdGF0aW9uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhZW4oYyxhKX07WC5wcm90b3R5cGUucmVjb21wdXRlRGltQmxvY2s9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFmbihjLGEpfTtYLnByb3RvdHlwZS5HZXREaW1WYXJJbnQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIGduKGMsYSl9Ow0KWC5wcm90b3R5cGUuU2V0RGltVmFySW50PWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtyZXR1cm4hIWhuKGQsYSxjKX07WC5wcm90b3R5cGUuR2V0RGltVmFyRG91YmxlPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiBqbihjLGEpfTtYLnByb3RvdHlwZS5TZXREaW1WYXJEb3VibGU9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO3JldHVybiEha24oZCxhLGMpfTtYLnByb3RvdHlwZS5HZXREaW1WYXJTdHJpbmc9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIHIobG4oYyxhKSl9Ow0KWC5wcm90b3R5cGUuU2V0RGltVmFyU3RyaW5nPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO0UoKTthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO2M9YyYmIm9iamVjdCI9PT10eXBlb2YgYz9jLmc6RihjKTtyZXR1cm4hIW1uKGQsYSxjKX07WC5wcm90b3R5cGUuR2V0RGltVmFyT2JqZWN0SWQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuIG5uKGMsYSl9O1gucHJvdG90eXBlLlNldERpbVZhck9iamVjdElkPWZ1bmN0aW9uKGEsYyl7dmFyIGQ9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtyZXR1cm4hIW9uKGQsYSxjKX07WC5wcm90b3R5cGUuZ2V0T2JqZWN0SUQ9ZnVuY3Rpb24oKXtyZXR1cm4gcG4odGhpcy5nKX07WC5wcm90b3R5cGUuRXJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIXFuKHRoaXMuZyl9Ow0KWC5wcm90b3R5cGUuQ29ubmVjdGlvblRlbXBPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFybihjLGEpfTtYLnByb3RvdHlwZS5DbG9uZT1mdW5jdGlvbigpe3JldHVybiBEKHNuKHRoaXMuZyksRyl9O1gucHJvdG90eXBlLm1vdmVHcmlwUG9pbnRzQXQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7YyYmIm9iamVjdCI9PT10eXBlb2YgYyYmKGM9Yy5nKTtkJiYib2JqZWN0Ij09PXR5cGVvZiBkJiYoZD1kLmcpO2UmJiJvYmplY3QiPT09dHlwZW9mIGUmJihlPWUuZyk7cmV0dXJuISF0bihmLGEsYyxkLGUpfTtYLnByb3RvdHlwZS5nZXRPYmplY3ROYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHIodW4odGhpcy5nKSl9O1gucHJvdG90eXBlLmdldER4ZjA9ZnVuY3Rpb24oKXtyZXR1cm4gcih2bih0aGlzLmcpKX07DQpYLnByb3RvdHlwZS5nZXRKc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHIod24odGhpcy5nKSl9O1gucHJvdG90eXBlLnNldEpzb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISF4bihjLGEpfTtYLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3luKHRoaXMuZyl9O2Z1bmN0aW9uIFkoKXt0aGlzLmc9em4oKTthbyhZKVt0aGlzLmddPXRoaXN9WS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShsby5wcm90b3R5cGUpO1kucHJvdG90eXBlLmNvbnN0cnVjdG9yPVk7WS5wcm90b3R5cGUubD1ZO1kubT17fTtuLk1kRGJNVGV4dD1ZO1kucHJvdG90eXBlLmxvY2F0aW9uPVkucHJvdG90eXBlLmxvY2F0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEQoQW4odGhpcy5nKSxIKX07DQpZLnByb3RvdHlwZS5zZXRMb2NhdGlvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUJuKGMsYSl9O1kucHJvdG90eXBlLnJvdGF0aW9uPVkucHJvdG90eXBlLnJvdGF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIENuKHRoaXMuZyl9O1kucHJvdG90eXBlLnNldFJvdGF0aW9uPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZzthJiYib2JqZWN0Ij09PXR5cGVvZiBhJiYoYT1hLmcpO3JldHVybiEhRG4oYyxhKX07WS5wcm90b3R5cGUud2lkdGg9WS5wcm90b3R5cGUud2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gRW4odGhpcy5nKX07WS5wcm90b3R5cGUuc2V0V2lkdGg9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO2EmJiJvYmplY3QiPT09dHlwZW9mIGEmJihhPWEuZyk7cmV0dXJuISFGbihjLGEpfTtZLnByb3RvdHlwZS50ZXh0SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIEduKHRoaXMuZyl9Ow0KWS5wcm90b3R5cGUuc2V0VGV4dEhlaWdodD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUhuKGMsYSl9O1kucHJvdG90eXBlLmF0dGFjaG1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gSW4odGhpcy5nKX07WS5wcm90b3R5cGUuc2V0QXR0YWNobWVudD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIUpuKGMsYSl9O1kucHJvdG90eXBlLmNvbnRlbnRzPVkucHJvdG90eXBlLmk9ZnVuY3Rpb24oKXtyZXR1cm4gcihLbih0aGlzLmcpKX07WS5wcm90b3R5cGUuc2V0Q29udGVudHM9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5nO0UoKTthPWEmJiJvYmplY3QiPT09dHlwZW9mIGE/YS5nOkYoYSk7cmV0dXJuISFMbihjLGEpfTtZLnByb3RvdHlwZS5nZXRPYmplY3RJRD1mdW5jdGlvbigpe3JldHVybiBNbih0aGlzLmcpfTtZLnByb3RvdHlwZS5FcmFzZT1mdW5jdGlvbigpe3JldHVybiEhTm4odGhpcy5nKX07DQpZLnByb3RvdHlwZS5Db25uZWN0aW9uVGVtcE9iamVjdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtyZXR1cm4hIU9uKGMsYSl9O1kucHJvdG90eXBlLkNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIEQoUG4odGhpcy5nKSxHKX07WS5wcm90b3R5cGUubW92ZUdyaXBQb2ludHNBdD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLmc7YSYmIm9iamVjdCI9PT10eXBlb2YgYSYmKGE9YS5nKTtjJiYib2JqZWN0Ij09PXR5cGVvZiBjJiYoYz1jLmcpO2QmJiJvYmplY3QiPT09dHlwZW9mIGQmJihkPWQuZyk7ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmKGU9ZS5nKTtyZXR1cm4hIVFuKGYsYSxjLGQsZSl9O1kucHJvdG90eXBlLmdldE9iamVjdE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gcihSbih0aGlzLmcpKX07WS5wcm90b3R5cGUuZ2V0RHhmMD1mdW5jdGlvbigpe3JldHVybiByKFNuKHRoaXMuZykpfTsNClkucHJvdG90eXBlLmdldEpzb249ZnVuY3Rpb24oKXtyZXR1cm4gcihUbih0aGlzLmcpKX07WS5wcm90b3R5cGUuc2V0SnNvbj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmc7RSgpO2E9YSYmIm9iamVjdCI9PT10eXBlb2YgYT9hLmc6RihhKTtyZXR1cm4hIVVuKGMsYSl9O1kucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7Vm4odGhpcy5nKX07DQoNCg0KICByZXR1cm4gbXhkcmF3YXNzZW1ibHkucmVhZHkNCn0NCg0KKTsNCn0pKCk7DQppZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKQ0KICBtb2R1bGUuZXhwb3J0cyA9IG14ZHJhd2Fzc2VtYmx5Ow0KZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmVbJ2FtZCddKQ0KICBkZWZpbmUoW10sIGZ1bmN0aW9uKCkgeyByZXR1cm4gbXhkcmF3YXNzZW1ibHk7IH0pOw0KZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKQ0KICBleHBvcnRzWyJteGRyYXdhc3NlbWJseSJdID0gbXhkcmF3YXNzZW1ibHk7DQo=",self.location).href});J.MxCpp.mxcadassemblyimp=A;let v=new A.McApp;v.Init(),J.MxCpp.App.init(v),X(J.MxCpp)}}function xn(X,o){return new Promise(async(u,Z)=>{try{X.locateFile||(X.locateFile=jn),X.wasmBinary||(X.wasmBinary=await bn(X.locateFile("mxdraw3d_min.wasm",self.location.origin)));const h=new Ke(X);Ke.onloadWasmMxDraw3dModel=()=>{o&&o(h),u(h)}}catch(h){Z(h)}})}const la=Object.freeze(Object.defineProperty({__proto__:null,fetchAndInstantiate:Jn,b64Encode:It,b64Decode:zt,saveAsFileDialog:Ut,downloadFile:Ot,MxTools:Oe,drawText:kn,drawCircle:Qt,drawLine:rn,drawMText:Tn,drawPolyLine:cn,drawPolygon:ln,drawArc:on,drawEllipticalArc:mn,mxErase:un,McObject:xe,MdRxObject:at,MdDbDatabase:en,MdDbLayerTable:$t,MdDbEntity:Se,MdDbCurve:ot,MdDbLine:mt,MdDbText:ut,MdDbCircle:yt,get McDb(){return J.McDb},McDrawUtility:Gt,MxObjectId:ht,McDrawResbuf:Mn,MdDbPolyline:tn,MxDraw3d:Ke,get MxCpp(){return J.MxCpp},loadMxCADassembly:Sn,loadMxCADassembly3d:xn},Symbol.toStringTag,{value:"Module"}));var Yt=(()=>{var X=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(X=X||__filename),function(o={}){var u=typeof o<"u"?o:{},Z,h;u.ready=new Promise(function(e,t){Z=e,h=t});var R=Object.assign({},u),A="./this.program",v=(e,t)=>{throw t},S=typeof window=="object",T=typeof importScripts=="function",L=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",z="";function te(e){return u.locateFile?u.locateFile(e,z):z+e}var j,Q,de;if(L){var ne=require("fs"),$=require("path");T?z=$.dirname(z)+"/":z=__dirname+"/",j=(e,t)=>(e=Vt(e)?new URL(e):$.normalize(e),ne.readFileSync(e,t?void 0:"utf8")),de=e=>{var t=j(e,!0);return t.buffer||(t=new Uint8Array(t)),t},Q=(e,t,n)=>{e=Vt(e)?new URL(e):$.normalize(e),ne.readFile(e,function(i,r){i?n(i):t(r.buffer)})},!u.thisProgram&&process.argv.length>1&&(A=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),v=(e,t)=>{throw process.exitCode=e,t},u.inspect=function(){return"[Emscripten Module object]"}}else(S||T)&&(T?z=self.location.href:typeof document<"u"&&document.currentScript&&(z=document.currentScript.src),X&&(z=X),z.indexOf("blob:")!==0?z=z.substr(0,z.replace(/[?#].*/,"").lastIndexOf("/")+1):z="",j=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},T&&(de=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),Q=(e,t,n)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{if(i.status==200||i.status==0&&i.response){t(i.response);return}n()},i.onerror=n,i.send(null)});var se=u.print||console.log.bind(console),ee=u.printErr||console.warn.bind(console);Object.assign(u,R),R=null,u.arguments&&u.arguments,u.thisProgram&&(A=u.thisProgram),u.quit&&(v=u.quit);var Fe;u.wasmBinary&&(Fe=u.wasmBinary);var Ze=u.noExitRuntime||!0;typeof WebAssembly!="object"&&Pe("no native wasm support detected");var fe,pe=!1,Xe;function Qe(e,t){e||Pe(t)}var ue,ie,Ye,bt,W,U,x,Re;function Kn(){var e=fe.buffer;u.HEAP8=ue=new Int8Array(e),u.HEAP16=Ye=new Int16Array(e),u.HEAP32=W=new Int32Array(e),u.HEAPU8=ie=new Uint8Array(e),u.HEAPU16=bt=new Uint16Array(e),u.HEAPU32=U=new Uint32Array(e),u.HEAPF32=x=new Float32Array(e),u.HEAPF64=Re=new Float64Array(e)}var Ln,Pn=[],Hn=[],da=[],In=[],oa=0;function zn(){return Ze||oa>0}function ma(){if(u.preRun)for(typeof u.preRun=="function"&&(u.preRun=[u.preRun]);u.preRun.length;)pa(u.preRun.shift());gt(Pn)}function ua(){!u.noFSInit&&!s.init.initialized&&s.init(),s.ignorePermissions=!1,gt(Hn)}function ba(){gt(da)}function sa(){if(u.postRun)for(typeof u.postRun=="function"&&(u.postRun=[u.postRun]);u.postRun.length;)Da(u.postRun.shift());gt(In)}function pa(e){Pn.unshift(e)}function Ea(e){Hn.unshift(e)}function Da(e){In.unshift(e)}var Le=0,st=null;function U2(e){return e}function sn(e){Le++,u.monitorRunDependencies&&u.monitorRunDependencies(Le)}function Rt(e){if(Le--,u.monitorRunDependencies&&u.monitorRunDependencies(Le),Le==0&&st){var t=st;st=null,t()}}function Pe(e){u.onAbort&&u.onAbort(e),e="Aborted("+e+")",ee(e),pe=!0,Xe=1,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw h(t),t}var fa="data:application/octet-stream;base64,";function Un(e){return e.startsWith(fa)}function Vt(e){return e.startsWith("file://")}var qe;qe="mxdraw3d_min.wasm",Un(qe)||(qe=te(qe));function On(e){try{if(e==qe&&Fe)return new Uint8Array(Fe);if(de)return de(e);throw"both async and sync fetching of the wasm failed"}catch(t){Pe(t)}}function Ba(e){if(!Fe&&(S||T)){if(typeof fetch=="function"&&!Vt(e))return fetch(e,{credentials:"same-origin"}).then(function(t){if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()}).catch(function(){return On(e)});if(Q)return new Promise(function(t,n){Q(e,function(i){t(new Uint8Array(i))},n)})}return Promise.resolve().then(function(){return On(e)})}function Qn(e,t,n){return Ba(e).then(function(i){return WebAssembly.instantiate(i,t)}).then(function(i){return i}).then(n,function(i){ee("failed to asynchronously prepare wasm: "+i),Pe(i)})}function Ca(e,t,n,i){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!Un(t)&&!Vt(t)&&!L&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(function(r){var c=WebAssembly.instantiateStreaming(r,n);return c.then(i,function(l){return ee("wasm streaming compile failed: "+l),ee("falling back to ArrayBuffer instantiation"),Qn(t,n,i)})}):Qn(t,n,i)}function _a(){var e={env:Fl,wasi_snapshot_preview1:Fl};function t(i,r){var c=i.exports;return u.asm=c,fe=u.asm.memory,Kn(),Ln=u.asm.__indirect_function_table,Ea(u.asm.__wasm_call_ctors),Rt(),c}sn();function n(i){t(i.instance)}if(u.instantiateWasm)try{return u.instantiateWasm(e,t)}catch(i){ee("Module.instantiateWasm callback failed with error: "+i),h(i)}return Ca(Fe,qe,e,n).catch(h),{}}var I,me,Fa={1946609:()=>{u.noExitRuntime=!0},1946640:(e,t,n,i)=>{u.ctx.getBufferSubData(e,t,ie.subarray(n,n+i))}};function Za(){u._myCanvasRect=u.canvas.getBoundingClientRect()}function Xa(){return Math.round(u._myCanvasRect.top)}function Wa(){return Math.round(u._myCanvasRect.left)}function ya(){return u.HEAP8.length}function ha(e){console.debug(be(e))}function Ga(e){console.info(be(e))}function Ya(e){console.warn(be(e))}function Ra(e){console.error(be(e))}function qn(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function gt(e){for(;e.length>0;)e.shift()(u)}var At=[];function Va(e){e.add_ref()}function ga(e){var t=new pn(e);return t.get_caught()||t.set_caught(!0),t.set_rethrown(!1),At.push(t),Va(t),t.get_exception_ptr()}var Je=0,vt=[];function D(e){var t=vt[e];return t||(e>=vt.length&&(vt.length=e+1),vt[e]=t=Ln.get(e)),t}function Aa(e){if(e.release_ref()&&!e.get_rethrown()){var t=e.get_destructor();t&&D(t)(e.excPtr),Gl(e.excPtr)}}function va(){f(0);var e=At.pop();Aa(e),Je=0}function pn(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(t){U[this.ptr+4>>2]=t},this.get_type=function(){return U[this.ptr+4>>2]},this.set_destructor=function(t){U[this.ptr+8>>2]=t},this.get_destructor=function(){return U[this.ptr+8>>2]},this.set_refcount=function(t){W[this.ptr>>2]=t},this.set_caught=function(t){t=t?1:0,ue[this.ptr+12>>0]=t},this.get_caught=function(){return ue[this.ptr+12>>0]!=0},this.set_rethrown=function(t){t=t?1:0,ue[this.ptr+13>>0]=t},this.get_rethrown=function(){return ue[this.ptr+13>>0]!=0},this.init=function(t,n){this.set_adjusted_ptr(0),this.set_type(t),this.set_destructor(n),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var t=W[this.ptr>>2];W[this.ptr>>2]=t+1},this.release_ref=function(){var t=W[this.ptr>>2];return W[this.ptr>>2]=t-1,t===1},this.set_adjusted_ptr=function(t){U[this.ptr+16>>2]=t},this.get_adjusted_ptr=function(){return U[this.ptr+16>>2]},this.get_exception_ptr=function(){var t=vl(this.get_type());if(t)return U[this.excPtr>>2];var n=this.get_adjusted_ptr();return n!==0?n:this.excPtr}}function Ja(e){throw Je||(Je=e),Je}function Jt(){var e=Je;if(!e)return Ft(0),0;var t=new pn(e);t.set_adjusted_ptr(e);var n=t.get_type();if(!n)return Ft(0),e;for(var i=0;i<arguments.length;i++){var r=arguments[i];if(r===0||r===n)break;var c=t.ptr+16;if(Al(r,n,c))return Ft(r),e}return Ft(n),e}var ka=Jt,Na=Jt,Ma=Jt,wa=Jt;function Ta(){var e=At.pop();e||Pe("no exception to throw");var t=e.excPtr;throw e.get_rethrown()||(At.push(e),e.set_rethrown(!0),e.set_caught(!1)),Je=t,Je}function ja(e,t,n){var i=new pn(e);throw i.init(t,n),Je=e,Je}var ae={isAbs:e=>e.charAt(0)==="/",splitPath:e=>{var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return t.exec(e).slice(1)},normalizeArray:(e,t)=>{for(var n=0,i=e.length-1;i>=0;i--){var r=e[i];r==="."?e.splice(i,1):r===".."?(e.splice(i,1),n++):n&&(e.splice(i,1),n--)}if(t)for(;n;n--)e.unshift("..");return e},normalize:e=>{var t=ae.isAbs(e),n=e.substr(-1)==="/";return e=ae.normalizeArray(e.split("/").filter(i=>!!i),!t).join("/"),!e&&!t&&(e="."),e&&n&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=ae.splitPath(e),n=t[0],i=t[1];return!n&&!i?".":(i&&(i=i.substr(0,i.length-1)),n+i)},basename:e=>{if(e==="/")return"/";e=ae.normalize(e),e=e.replace(/\/$/,"");var t=e.lastIndexOf("/");return t===-1?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments);return ae.normalize(e.join("/"))},join2:(e,t)=>ae.normalize(e+"/"+t)};function Sa(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return i=>crypto.getRandomValues(i);if(L)try{var e=require("crypto"),t=e.randomFillSync;if(t)return i=>e.randomFillSync(i);var n=e.randomBytes;return i=>(i.set(n(i.byteLength)),i)}catch{}Pe("initRandomDevice")}function $n(e){return($n=Sa())(e)}var Ve={resolve:function(){for(var e="",t=!1,n=arguments.length-1;n>=-1&&!t;n--){var i=n>=0?arguments[n]:s.cwd();if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=ae.isAbs(i)}return e=ae.normalizeArray(e.split("/").filter(r=>!!r),!t).join("/"),(t?"/":"")+e||"."},relative:(e,t)=>{e=Ve.resolve(e).substr(1),t=Ve.resolve(t).substr(1);function n(m){for(var b=0;b<m.length&&m[b]==="";b++);for(var p=m.length-1;p>=0&&m[p]==="";p--);return b>p?[]:m.slice(b,p-b+1)}for(var i=n(e.split("/")),r=n(t.split("/")),c=Math.min(i.length,r.length),l=c,a=0;a<c;a++)if(i[a]!==r[a]){l=a;break}for(var d=[],a=l;a<i.length;a++)d.push("..");return d=d.concat(r.slice(l)),d.join("/")}};function $e(e){for(var t=0,n=0;n<e.length;++n){var i=e.charCodeAt(n);i<=127?t++:i<=2047?t+=2:i>=55296&&i<=57343?(t+=4,++n):t+=3}return t}function En(e,t,n,i){if(!(i>0))return 0;for(var r=n,c=n+i-1,l=0;l<e.length;++l){var a=e.charCodeAt(l);if(a>=55296&&a<=57343){var d=e.charCodeAt(++l);a=65536+((a&1023)<<10)|d&1023}if(a<=127){if(n>=c)break;t[n++]=a}else if(a<=2047){if(n+1>=c)break;t[n++]=192|a>>6,t[n++]=128|a&63}else if(a<=65535){if(n+2>=c)break;t[n++]=224|a>>12,t[n++]=128|a>>6&63,t[n++]=128|a&63}else{if(n+3>=c)break;t[n++]=240|a>>18,t[n++]=128|a>>12&63,t[n++]=128|a>>6&63,t[n++]=128|a&63}}return t[n]=0,n-r}function kt(e,t,n){var i=n>0?n:$e(e)+1,r=new Array(i),c=En(e,r,0,r.length);return t&&(r.length=c),r}var He={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){He.ttys[e]={input:[],output:[],ops:t},s.registerDevice(e,He.stream_ops)},stream_ops:{open:function(e){var t=He.ttys[e.node.rdev];if(!t)throw new s.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.fsync(e.tty)},fsync:function(e){e.tty.ops.fsync(e.tty)},read:function(e,t,n,i,r){if(!e.tty||!e.tty.ops.get_char)throw new s.ErrnoError(60);for(var c=0,l=0;l<i;l++){var a;try{a=e.tty.ops.get_char(e.tty)}catch{throw new s.ErrnoError(29)}if(a===void 0&&c===0)throw new s.ErrnoError(6);if(a==null)break;c++,t[n+l]=a}return c&&(e.node.timestamp=Date.now()),c},write:function(e,t,n,i,r){if(!e.tty||!e.tty.ops.put_char)throw new s.ErrnoError(60);try{for(var c=0;c<i;c++)e.tty.ops.put_char(e.tty,t[n+c])}catch{throw new s.ErrnoError(29)}return i&&(e.node.timestamp=Date.now()),c}},default_tty_ops:{get_char:function(e){if(!e.input.length){var t=null;if(L){var n=256,i=Buffer.alloc(n),r=0;try{r=ne.readSync(process.stdin.fd,i,0,n,-1)}catch(c){if(c.toString().includes("EOF"))r=0;else throw c}r>0?t=i.slice(0,r).toString("utf-8"):t=null}else typeof window<"u"&&typeof window.prompt=="function"?(t=window.prompt("Input: "),t!==null&&(t+=`
|
|
508
508
|
`)):typeof readline=="function"&&(t=readline(),t!==null&&(t+=`
|
|
509
509
|
`));if(!t)return null;e.input=kt(t,!0)}return e.input.shift()},put_char:function(e,t){t===null||t===10?(se(et(e.output,0)),e.output=[]):t!=0&&e.output.push(t)},fsync:function(e){e.output&&e.output.length>0&&(se(et(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){t===null||t===10?(ee(et(e.output,0)),e.output=[]):t!=0&&e.output.push(t)},fsync:function(e){e.output&&e.output.length>0&&(ee(et(e.output,0)),e.output=[])}}};function xa(e,t){return ie.fill(0,e,e+t),e}function Ka(e,t){return Math.ceil(e/t)*t}function ei(e){e=Ka(e,65536);var t=Vl(65536,e);return t?xa(t,e):0}var q={ops_table:null,mount:function(e){return q.createNode(null,"/",16895,0)},createNode:function(e,t,n,i){if(s.isBlkdev(n)||s.isFIFO(n))throw new s.ErrnoError(63);q.ops_table||(q.ops_table={dir:{node:{getattr:q.node_ops.getattr,setattr:q.node_ops.setattr,lookup:q.node_ops.lookup,mknod:q.node_ops.mknod,rename:q.node_ops.rename,unlink:q.node_ops.unlink,rmdir:q.node_ops.rmdir,readdir:q.node_ops.readdir,symlink:q.node_ops.symlink},stream:{llseek:q.stream_ops.llseek}},file:{node:{getattr:q.node_ops.getattr,setattr:q.node_ops.setattr},stream:{llseek:q.stream_ops.llseek,read:q.stream_ops.read,write:q.stream_ops.write,allocate:q.stream_ops.allocate,mmap:q.stream_ops.mmap,msync:q.stream_ops.msync}},link:{node:{getattr:q.node_ops.getattr,setattr:q.node_ops.setattr,readlink:q.node_ops.readlink},stream:{}},chrdev:{node:{getattr:q.node_ops.getattr,setattr:q.node_ops.setattr},stream:s.chrdev_stream_ops}});var r=s.createNode(e,t,n,i);return s.isDir(r.mode)?(r.node_ops=q.ops_table.dir.node,r.stream_ops=q.ops_table.dir.stream,r.contents={}):s.isFile(r.mode)?(r.node_ops=q.ops_table.file.node,r.stream_ops=q.ops_table.file.stream,r.usedBytes=0,r.contents=null):s.isLink(r.mode)?(r.node_ops=q.ops_table.link.node,r.stream_ops=q.ops_table.link.stream):s.isChrdev(r.mode)&&(r.node_ops=q.ops_table.chrdev.node,r.stream_ops=q.ops_table.chrdev.stream),r.timestamp=Date.now(),e&&(e.contents[t]=r,e.timestamp=r.timestamp),r},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var n=e.contents?e.contents.length:0;if(!(n>=t)){var i=1024*1024;t=Math.max(t,n*(n<i?2:1.125)>>>0),n!=0&&(t=Math.max(t,256));var r=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(r.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(t==0)e.contents=null,e.usedBytes=0;else{var n=e.contents;e.contents=new Uint8Array(t),n&&e.contents.set(n.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=s.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,s.isDir(e.mode)?t.size=4096:s.isFile(e.mode)?t.size=e.usedBytes:s.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){t.mode!==void 0&&(e.mode=t.mode),t.timestamp!==void 0&&(e.timestamp=t.timestamp),t.size!==void 0&&q.resizeFileStorage(e,t.size)},lookup:function(e,t){throw s.genericErrors[44]},mknod:function(e,t,n,i){return q.createNode(e,t,n,i)},rename:function(e,t,n){if(s.isDir(e.mode)){var i;try{i=s.lookupNode(t,n)}catch{}if(i)for(var r in i.contents)throw new s.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=n,t.contents[n]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var n=s.lookupNode(e,t);for(var i in n.contents)throw new s.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var n in e.contents)!e.contents.hasOwnProperty(n)||t.push(n);return t},symlink:function(e,t,n){var i=q.createNode(e,t,41471,0);return i.link=n,i},readlink:function(e){if(!s.isLink(e.mode))throw new s.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,n,i,r){var c=e.node.contents;if(r>=e.node.usedBytes)return 0;var l=Math.min(e.node.usedBytes-r,i);if(l>8&&c.subarray)t.set(c.subarray(r,r+l),n);else for(var a=0;a<l;a++)t[n+a]=c[r+a];return l},write:function(e,t,n,i,r,c){if(t.buffer===ue.buffer&&(c=!1),!i)return 0;var l=e.node;if(l.timestamp=Date.now(),t.subarray&&(!l.contents||l.contents.subarray)){if(c)return l.contents=t.subarray(n,n+i),l.usedBytes=i,i;if(l.usedBytes===0&&r===0)return l.contents=t.slice(n,n+i),l.usedBytes=i,i;if(r+i<=l.usedBytes)return l.contents.set(t.subarray(n,n+i),r),i}if(q.expandFileStorage(l,r+i),l.contents.subarray&&t.subarray)l.contents.set(t.subarray(n,n+i),r);else for(var a=0;a<i;a++)l.contents[r+a]=t[n+a];return l.usedBytes=Math.max(l.usedBytes,r+i),i},llseek:function(e,t,n){var i=t;if(n===1?i+=e.position:n===2&&s.isFile(e.node.mode)&&(i+=e.node.usedBytes),i<0)throw new s.ErrnoError(28);return i},allocate:function(e,t,n){q.expandFileStorage(e.node,t+n),e.node.usedBytes=Math.max(e.node.usedBytes,t+n)},mmap:function(e,t,n,i,r){if(!s.isFile(e.node.mode))throw new s.ErrnoError(43);var c,l,a=e.node.contents;if(!(r&2)&&a.buffer===ue.buffer)l=!1,c=a.byteOffset;else{if((n>0||n+t<a.length)&&(a.subarray?a=a.subarray(n,n+t):a=Array.prototype.slice.call(a,n,n+t)),l=!0,c=ei(t),!c)throw new s.ErrnoError(48);ue.set(a,c)}return{ptr:c,allocated:l}},msync:function(e,t,n,i,r){return q.stream_ops.write(e,t,0,i,n,!1),0}}};function ti(e,t,n,i){var r=i?"":"al "+e;Q(e,c=>{Qe(c,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(c)),r&&Rt()},c=>{if(n)n();else throw'Loading data file "'+e+'" failed.'}),r&&sn()}var s={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(e,t={})=>{if(e=Ve.resolve(e),!e)return{path:"",node:null};var n={follow_mount:!0,recurse_count:0};if(t=Object.assign(n,t),t.recurse_count>8)throw new s.ErrnoError(32);for(var i=e.split("/").filter(p=>!!p),r=s.root,c="/",l=0;l<i.length;l++){var a=l===i.length-1;if(a&&t.parent)break;if(r=s.lookupNode(r,i[l]),c=ae.join2(c,i[l]),s.isMountpoint(r)&&(!a||a&&t.follow_mount)&&(r=r.mounted.root),!a||t.follow)for(var d=0;s.isLink(r.mode);){var m=s.readlink(c);c=Ve.resolve(ae.dirname(c),m);var b=s.lookupPath(c,{recurse_count:t.recurse_count+1});if(r=b.node,d++>40)throw new s.ErrnoError(32)}}return{path:c,node:r}},getPath:e=>{for(var t;;){if(s.isRoot(e)){var n=e.mount.mountpoint;return t?n[n.length-1]!=="/"?n+"/"+t:n+t:n}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var n=0,i=0;i<t.length;i++)n=(n<<5)-n+t.charCodeAt(i)|0;return(e+n>>>0)%s.nameTable.length},hashAddNode:e=>{var t=s.hashName(e.parent.id,e.name);e.name_next=s.nameTable[t],s.nameTable[t]=e},hashRemoveNode:e=>{var t=s.hashName(e.parent.id,e.name);if(s.nameTable[t]===e)s.nameTable[t]=e.name_next;else for(var n=s.nameTable[t];n;){if(n.name_next===e){n.name_next=e.name_next;break}n=n.name_next}},lookupNode:(e,t)=>{var n=s.mayLookup(e);if(n)throw new s.ErrnoError(n,e);for(var i=s.hashName(e.id,t),r=s.nameTable[i];r;r=r.name_next){var c=r.name;if(r.parent.id===e.id&&c===t)return r}return s.lookup(e,t)},createNode:(e,t,n,i)=>{var r=new s.FSNode(e,t,n,i);return s.hashAddNode(r),r},destroyNode:e=>{s.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>(e&61440)===32768,isDir:e=>(e&61440)===16384,isLink:e=>(e&61440)===40960,isChrdev:e=>(e&61440)===8192,isBlkdev:e=>(e&61440)===24576,isFIFO:e=>(e&61440)===4096,isSocket:e=>(e&49152)===49152,flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=s.flagModes[e];if(typeof t>"u")throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][e&3];return e&512&&(t+="w"),t},nodePermissions:(e,t)=>s.ignorePermissions?0:t.includes("r")&&!(e.mode&292)||t.includes("w")&&!(e.mode&146)||t.includes("x")&&!(e.mode&73)?2:0,mayLookup:e=>{var t=s.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{var n=s.lookupNode(e,t);return 20}catch{}return s.nodePermissions(e,"wx")},mayDelete:(e,t,n)=>{var i;try{i=s.lookupNode(e,t)}catch(c){return c.errno}var r=s.nodePermissions(e,"wx");if(r)return r;if(n){if(!s.isDir(i.mode))return 54;if(s.isRoot(i)||s.getPath(i)===s.cwd())return 10}else if(s.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?s.isLink(e.mode)?32:s.isDir(e.mode)&&(s.flagsToPermissionString(t)!=="r"||t&512)?31:s.nodePermissions(e,s.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:(e=0,t=s.MAX_OPEN_FDS)=>{for(var n=e;n<=t;n++)if(!s.streams[n])return n;throw new s.ErrnoError(33)},getStream:e=>s.streams[e],createStream:(e,t,n)=>{s.FSStream||(s.FSStream=function(){this.shared={}},s.FSStream.prototype={},Object.defineProperties(s.FSStream.prototype,{object:{get:function(){return this.node},set:function(r){this.node=r}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(r){this.shared.flags=r}},position:{get:function(){return this.shared.position},set:function(r){this.shared.position=r}}})),e=Object.assign(new s.FSStream,e);var i=s.nextfd(t,n);return e.fd=i,s.streams[i]=e,e},closeStream:e=>{s.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=s.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new s.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{s.devices[e]={stream_ops:t}},getDevice:e=>s.devices[e],getMounts:e=>{for(var t=[],n=[e];n.length;){var i=n.pop();t.push(i),n.push.apply(n,i.mounts)}return t},syncfs:(e,t)=>{typeof e=="function"&&(t=e,e=!1),s.syncFSRequests++,s.syncFSRequests>1&&ee("warning: "+s.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var n=s.getMounts(s.root.mount),i=0;function r(l){return s.syncFSRequests--,t(l)}function c(l){if(l)return c.errored?void 0:(c.errored=!0,r(l));++i>=n.length&&r(null)}n.forEach(l=>{if(!l.type.syncfs)return c(null);l.type.syncfs(l,e,c)})},mount:(e,t,n)=>{var i=n==="/",r=!n,c;if(i&&s.root)throw new s.ErrnoError(10);if(!i&&!r){var l=s.lookupPath(n,{follow_mount:!1});if(n=l.path,c=l.node,s.isMountpoint(c))throw new s.ErrnoError(10);if(!s.isDir(c.mode))throw new s.ErrnoError(54)}var a={type:e,opts:t,mountpoint:n,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,i?s.root=d:c&&(c.mounted=a,c.mount&&c.mount.mounts.push(a)),d},unmount:e=>{var t=s.lookupPath(e,{follow_mount:!1});if(!s.isMountpoint(t.node))throw new s.ErrnoError(28);var n=t.node,i=n.mounted,r=s.getMounts(i);Object.keys(s.nameTable).forEach(l=>{for(var a=s.nameTable[l];a;){var d=a.name_next;r.includes(a.mount)&&s.destroyNode(a),a=d}}),n.mounted=null;var c=n.mount.mounts.indexOf(i);n.mount.mounts.splice(c,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,n)=>{var i=s.lookupPath(e,{parent:!0}),r=i.node,c=ae.basename(e);if(!c||c==="."||c==="..")throw new s.ErrnoError(28);var l=s.mayCreate(r,c);if(l)throw new s.ErrnoError(l);if(!r.node_ops.mknod)throw new s.ErrnoError(63);return r.node_ops.mknod(r,c,t,n)},create:(e,t)=>(t=t!==void 0?t:438,t&=4095,t|=32768,s.mknod(e,t,0)),mkdir:(e,t)=>(t=t!==void 0?t:511,t&=1023,t|=16384,s.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var n=e.split("/"),i="",r=0;r<n.length;++r)if(!!n[r]){i+="/"+n[r];try{s.mkdir(i,t)}catch(c){if(c.errno!=20)throw c}}},mkdev:(e,t,n)=>(typeof n>"u"&&(n=t,t=438),t|=8192,s.mknod(e,t,n)),symlink:(e,t)=>{if(!Ve.resolve(e))throw new s.ErrnoError(44);var n=s.lookupPath(t,{parent:!0}),i=n.node;if(!i)throw new s.ErrnoError(44);var r=ae.basename(t),c=s.mayCreate(i,r);if(c)throw new s.ErrnoError(c);if(!i.node_ops.symlink)throw new s.ErrnoError(63);return i.node_ops.symlink(i,r,e)},rename:(e,t)=>{var n=ae.dirname(e),i=ae.dirname(t),r=ae.basename(e),c=ae.basename(t),l,a,d;if(l=s.lookupPath(e,{parent:!0}),a=l.node,l=s.lookupPath(t,{parent:!0}),d=l.node,!a||!d)throw new s.ErrnoError(44);if(a.mount!==d.mount)throw new s.ErrnoError(75);var m=s.lookupNode(a,r),b=Ve.relative(e,i);if(b.charAt(0)!==".")throw new s.ErrnoError(28);if(b=Ve.relative(t,n),b.charAt(0)!==".")throw new s.ErrnoError(55);var p;try{p=s.lookupNode(d,c)}catch{}if(m!==p){var F=s.isDir(m.mode),y=s.mayDelete(a,r,F);if(y)throw new s.ErrnoError(y);if(y=p?s.mayDelete(d,c,F):s.mayCreate(d,c),y)throw new s.ErrnoError(y);if(!a.node_ops.rename)throw new s.ErrnoError(63);if(s.isMountpoint(m)||p&&s.isMountpoint(p))throw new s.ErrnoError(10);if(d!==a&&(y=s.nodePermissions(a,"w"),y))throw new s.ErrnoError(y);s.hashRemoveNode(m);try{a.node_ops.rename(m,d,c)}catch(G){throw G}finally{s.hashAddNode(m)}}},rmdir:e=>{var t=s.lookupPath(e,{parent:!0}),n=t.node,i=ae.basename(e),r=s.lookupNode(n,i),c=s.mayDelete(n,i,!0);if(c)throw new s.ErrnoError(c);if(!n.node_ops.rmdir)throw new s.ErrnoError(63);if(s.isMountpoint(r))throw new s.ErrnoError(10);n.node_ops.rmdir(n,i),s.destroyNode(r)},readdir:e=>{var t=s.lookupPath(e,{follow:!0}),n=t.node;if(!n.node_ops.readdir)throw new s.ErrnoError(54);return n.node_ops.readdir(n)},unlink:e=>{var t=s.lookupPath(e,{parent:!0}),n=t.node;if(!n)throw new s.ErrnoError(44);var i=ae.basename(e),r=s.lookupNode(n,i),c=s.mayDelete(n,i,!1);if(c)throw new s.ErrnoError(c);if(!n.node_ops.unlink)throw new s.ErrnoError(63);if(s.isMountpoint(r))throw new s.ErrnoError(10);n.node_ops.unlink(n,i),s.destroyNode(r)},readlink:e=>{var t=s.lookupPath(e),n=t.node;if(!n)throw new s.ErrnoError(44);if(!n.node_ops.readlink)throw new s.ErrnoError(28);return Ve.resolve(s.getPath(n.parent),n.node_ops.readlink(n))},stat:(e,t)=>{var n=s.lookupPath(e,{follow:!t}),i=n.node;if(!i)throw new s.ErrnoError(44);if(!i.node_ops.getattr)throw new s.ErrnoError(63);return i.node_ops.getattr(i)},lstat:e=>s.stat(e,!0),chmod:(e,t,n)=>{var i;if(typeof e=="string"){var r=s.lookupPath(e,{follow:!n});i=r.node}else i=e;if(!i.node_ops.setattr)throw new s.ErrnoError(63);i.node_ops.setattr(i,{mode:t&4095|i.mode&-4096,timestamp:Date.now()})},lchmod:(e,t)=>{s.chmod(e,t,!0)},fchmod:(e,t)=>{var n=s.getStream(e);if(!n)throw new s.ErrnoError(8);s.chmod(n.node,t)},chown:(e,t,n,i)=>{var r;if(typeof e=="string"){var c=s.lookupPath(e,{follow:!i});r=c.node}else r=e;if(!r.node_ops.setattr)throw new s.ErrnoError(63);r.node_ops.setattr(r,{timestamp:Date.now()})},lchown:(e,t,n)=>{s.chown(e,t,n,!0)},fchown:(e,t,n)=>{var i=s.getStream(e);if(!i)throw new s.ErrnoError(8);s.chown(i.node,t,n)},truncate:(e,t)=>{if(t<0)throw new s.ErrnoError(28);var n;if(typeof e=="string"){var i=s.lookupPath(e,{follow:!0});n=i.node}else n=e;if(!n.node_ops.setattr)throw new s.ErrnoError(63);if(s.isDir(n.mode))throw new s.ErrnoError(31);if(!s.isFile(n.mode))throw new s.ErrnoError(28);var r=s.nodePermissions(n,"w");if(r)throw new s.ErrnoError(r);n.node_ops.setattr(n,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var n=s.getStream(e);if(!n)throw new s.ErrnoError(8);if((n.flags&2097155)===0)throw new s.ErrnoError(28);s.truncate(n.node,t)},utime:(e,t,n)=>{var i=s.lookupPath(e,{follow:!0}),r=i.node;r.node_ops.setattr(r,{timestamp:Math.max(t,n)})},open:(e,t,n)=>{if(e==="")throw new s.ErrnoError(44);t=typeof t=="string"?s.modeStringToFlags(t):t,n=typeof n>"u"?438:n,t&64?n=n&4095|32768:n=0;var i;if(typeof e=="object")i=e;else{e=ae.normalize(e);try{var r=s.lookupPath(e,{follow:!(t&131072)});i=r.node}catch{}}var c=!1;if(t&64)if(i){if(t&128)throw new s.ErrnoError(20)}else i=s.mknod(e,n,0),c=!0;if(!i)throw new s.ErrnoError(44);if(s.isChrdev(i.mode)&&(t&=-513),t&65536&&!s.isDir(i.mode))throw new s.ErrnoError(54);if(!c){var l=s.mayOpen(i,t);if(l)throw new s.ErrnoError(l)}t&512&&!c&&s.truncate(i,0),t&=-131713;var a=s.createStream({node:i,path:s.getPath(i),flags:t,seekable:!0,position:0,stream_ops:i.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),u.logReadFiles&&!(t&1)&&(s.readFiles||(s.readFiles={}),e in s.readFiles||(s.readFiles[e]=1)),a},close:e=>{if(s.isClosed(e))throw new s.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(t){throw t}finally{s.closeStream(e.fd)}e.fd=null},isClosed:e=>e.fd===null,llseek:(e,t,n)=>{if(s.isClosed(e))throw new s.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new s.ErrnoError(70);if(n!=0&&n!=1&&n!=2)throw new s.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,n),e.ungotten=[],e.position},read:(e,t,n,i,r)=>{if(i<0||r<0)throw new s.ErrnoError(28);if(s.isClosed(e))throw new s.ErrnoError(8);if((e.flags&2097155)===1)throw new s.ErrnoError(8);if(s.isDir(e.node.mode))throw new s.ErrnoError(31);if(!e.stream_ops.read)throw new s.ErrnoError(28);var c=typeof r<"u";if(!c)r=e.position;else if(!e.seekable)throw new s.ErrnoError(70);var l=e.stream_ops.read(e,t,n,i,r);return c||(e.position+=l),l},write:(e,t,n,i,r,c)=>{if(i<0||r<0)throw new s.ErrnoError(28);if(s.isClosed(e))throw new s.ErrnoError(8);if((e.flags&2097155)===0)throw new s.ErrnoError(8);if(s.isDir(e.node.mode))throw new s.ErrnoError(31);if(!e.stream_ops.write)throw new s.ErrnoError(28);e.seekable&&e.flags&1024&&s.llseek(e,0,2);var l=typeof r<"u";if(!l)r=e.position;else if(!e.seekable)throw new s.ErrnoError(70);var a=e.stream_ops.write(e,t,n,i,r,c);return l||(e.position+=a),a},allocate:(e,t,n)=>{if(s.isClosed(e))throw new s.ErrnoError(8);if(t<0||n<=0)throw new s.ErrnoError(28);if((e.flags&2097155)===0)throw new s.ErrnoError(8);if(!s.isFile(e.node.mode)&&!s.isDir(e.node.mode))throw new s.ErrnoError(43);if(!e.stream_ops.allocate)throw new s.ErrnoError(138);e.stream_ops.allocate(e,t,n)},mmap:(e,t,n,i,r)=>{if((i&2)!==0&&(r&2)===0&&(e.flags&2097155)!==2)throw new s.ErrnoError(2);if((e.flags&2097155)===1)throw new s.ErrnoError(2);if(!e.stream_ops.mmap)throw new s.ErrnoError(43);return e.stream_ops.mmap(e,t,n,i,r)},msync:(e,t,n,i,r)=>e.stream_ops.msync?e.stream_ops.msync(e,t,n,i,r):0,munmap:e=>0,ioctl:(e,t,n)=>{if(!e.stream_ops.ioctl)throw new s.ErrnoError(59);return e.stream_ops.ioctl(e,t,n)},readFile:(e,t={})=>{if(t.flags=t.flags||0,t.encoding=t.encoding||"binary",t.encoding!=="utf8"&&t.encoding!=="binary")throw new Error('Invalid encoding type "'+t.encoding+'"');var n,i=s.open(e,t.flags),r=s.stat(e),c=r.size,l=new Uint8Array(c);return s.read(i,l,0,c,0),t.encoding==="utf8"?n=et(l,0):t.encoding==="binary"&&(n=l),s.close(i),n},writeFile:(e,t,n={})=>{n.flags=n.flags||577;var i=s.open(e,n.flags,n.mode);if(typeof t=="string"){var r=new Uint8Array($e(t)+1),c=En(t,r,0,r.length);s.write(i,r,0,c,void 0,n.canOwn)}else if(ArrayBuffer.isView(t))s.write(i,t,0,t.byteLength,void 0,n.canOwn);else throw new Error("Unsupported data type");s.close(i)},cwd:()=>s.currentPath,chdir:e=>{var t=s.lookupPath(e,{follow:!0});if(t.node===null)throw new s.ErrnoError(44);if(!s.isDir(t.node.mode))throw new s.ErrnoError(54);var n=s.nodePermissions(t.node,"x");if(n)throw new s.ErrnoError(n);s.currentPath=t.path},createDefaultDirectories:()=>{s.mkdir("/tmp"),s.mkdir("/home"),s.mkdir("/home/web_user")},createDefaultDevices:()=>{s.mkdir("/dev"),s.registerDevice(s.makedev(1,3),{read:()=>0,write:(i,r,c,l,a)=>l}),s.mkdev("/dev/null",s.makedev(1,3)),He.register(s.makedev(5,0),He.default_tty_ops),He.register(s.makedev(6,0),He.default_tty1_ops),s.mkdev("/dev/tty",s.makedev(5,0)),s.mkdev("/dev/tty1",s.makedev(6,0));var e=new Uint8Array(1024),t=0,n=()=>(t===0&&(t=$n(e).byteLength),e[--t]);s.createDevice("/dev","random",n),s.createDevice("/dev","urandom",n),s.mkdir("/dev/shm"),s.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{s.mkdir("/proc");var e=s.mkdir("/proc/self");s.mkdir("/proc/self/fd"),s.mount({mount:()=>{var t=s.createNode(e,"fd",16895,73);return t.node_ops={lookup:(n,i)=>{var r=+i,c=s.getStream(r);if(!c)throw new s.ErrnoError(8);var l={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>c.path}};return l.parent=l,l}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{u.stdin?s.createDevice("/dev","stdin",u.stdin):s.symlink("/dev/tty","/dev/stdin"),u.stdout?s.createDevice("/dev","stdout",null,u.stdout):s.symlink("/dev/tty","/dev/stdout"),u.stderr?s.createDevice("/dev","stderr",null,u.stderr):s.symlink("/dev/tty1","/dev/stderr"),s.open("/dev/stdin",0),s.open("/dev/stdout",1),s.open("/dev/stderr",1)},ensureErrnoError:()=>{s.ErrnoError||(s.ErrnoError=function(t,n){this.name="ErrnoError",this.node=n,this.setErrno=function(i){this.errno=i},this.setErrno(t),this.message="FS error"},s.ErrnoError.prototype=new Error,s.ErrnoError.prototype.constructor=s.ErrnoError,[44].forEach(e=>{s.genericErrors[e]=new s.ErrnoError(e),s.genericErrors[e].stack="<generic error, no stack>"}))},staticInit:()=>{s.ensureErrnoError(),s.nameTable=new Array(4096),s.mount(q,{},"/"),s.createDefaultDirectories(),s.createDefaultDevices(),s.createSpecialDirectories(),s.filesystems={MEMFS:q}},init:(e,t,n)=>{s.init.initialized=!0,s.ensureErrnoError(),u.stdin=e||u.stdin,u.stdout=t||u.stdout,u.stderr=n||u.stderr,s.createStandardStreams()},quit:()=>{s.init.initialized=!1;for(var e=0;e<s.streams.length;e++){var t=s.streams[e];!t||s.close(t)}},getMode:(e,t)=>{var n=0;return e&&(n|=365),t&&(n|=146),n},findObject:(e,t)=>{var n=s.analyzePath(e,t);return n.exists?n.object:null},analyzePath:(e,t)=>{try{var n=s.lookupPath(e,{follow:!t});e=n.path}catch{}var i={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=s.lookupPath(e,{parent:!0});i.parentExists=!0,i.parentPath=n.path,i.parentObject=n.node,i.name=ae.basename(e),n=s.lookupPath(e,{follow:!t}),i.exists=!0,i.path=n.path,i.object=n.node,i.name=n.node.name,i.isRoot=n.path==="/"}catch(r){i.error=r.errno}return i},createPath:(e,t,n,i)=>{e=typeof e=="string"?e:s.getPath(e);for(var r=t.split("/").reverse();r.length;){var c=r.pop();if(!!c){var l=ae.join2(e,c);try{s.mkdir(l)}catch{}e=l}}return l},createFile:(e,t,n,i,r)=>{var c=ae.join2(typeof e=="string"?e:s.getPath(e),t),l=s.getMode(i,r);return s.create(c,l)},createDataFile:(e,t,n,i,r,c)=>{var l=t;e&&(e=typeof e=="string"?e:s.getPath(e),l=t?ae.join2(e,t):e);var a=s.getMode(i,r),d=s.create(l,a);if(n){if(typeof n=="string"){for(var m=new Array(n.length),b=0,p=n.length;b<p;++b)m[b]=n.charCodeAt(b);n=m}s.chmod(d,a|146);var F=s.open(d,577);s.write(F,n,0,n.length,0,c),s.close(F),s.chmod(d,a)}return d},createDevice:(e,t,n,i)=>{var r=ae.join2(typeof e=="string"?e:s.getPath(e),t),c=s.getMode(!!n,!!i);s.createDevice.major||(s.createDevice.major=64);var l=s.makedev(s.createDevice.major++,0);return s.registerDevice(l,{open:a=>{a.seekable=!1},close:a=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(a,d,m,b,p)=>{for(var F=0,y=0;y<b;y++){var G;try{G=n()}catch{throw new s.ErrnoError(29)}if(G===void 0&&F===0)throw new s.ErrnoError(6);if(G==null)break;F++,d[m+y]=G}return F&&(a.node.timestamp=Date.now()),F},write:(a,d,m,b,p)=>{for(var F=0;F<b;F++)try{i(d[m+F])}catch{throw new s.ErrnoError(29)}return b&&(a.node.timestamp=Date.now()),F}}),s.mkdev(r,c,l)},forceLoadFile:e=>{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if(typeof XMLHttpRequest<"u")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(j)try{e.contents=kt(j(e.url),!0),e.usedBytes=e.contents.length}catch{throw new s.ErrnoError(29)}else throw new Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(e,t,n,i,r)=>{function c(){this.lengthKnown=!1,this.chunks=[]}if(c.prototype.get=function(y){if(!(y>this.length-1||y<0)){var G=y%this.chunkSize,g=y/this.chunkSize|0;return this.getter(g)[G]}},c.prototype.setDataGetter=function(y){this.getter=y},c.prototype.cacheLength=function(){var y=new XMLHttpRequest;if(y.open("HEAD",n,!1),y.send(null),!(y.status>=200&&y.status<300||y.status===304))throw new Error("Couldn't load "+n+". Status: "+y.status);var G=Number(y.getResponseHeader("Content-length")),g,N=(g=y.getResponseHeader("Accept-Ranges"))&&g==="bytes",P=(g=y.getResponseHeader("Content-Encoding"))&&g==="gzip",V=1024*1024;N||(V=G);var w=(H,oe)=>{if(H>oe)throw new Error("invalid range ("+H+", "+oe+") or no bytes requested!");if(oe>G-1)throw new Error("only "+G+" bytes available! programmer error!");var le=new XMLHttpRequest;if(le.open("GET",n,!1),G!==V&&le.setRequestHeader("Range","bytes="+H+"-"+oe),le.responseType="arraybuffer",le.overrideMimeType&&le.overrideMimeType("text/plain; charset=x-user-defined"),le.send(null),!(le.status>=200&&le.status<300||le.status===304))throw new Error("Couldn't load "+n+". Status: "+le.status);return le.response!==void 0?new Uint8Array(le.response||[]):kt(le.responseText||"",!0)},ce=this;ce.setDataGetter(H=>{var oe=H*V,le=(H+1)*V-1;if(le=Math.min(le,G-1),typeof ce.chunks[H]>"u"&&(ce.chunks[H]=w(oe,le)),typeof ce.chunks[H]>"u")throw new Error("doXHR failed!");return ce.chunks[H]}),(P||!G)&&(V=G=1,G=this.getter(0).length,V=G,se("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=G,this._chunkSize=V,this.lengthKnown=!0},typeof XMLHttpRequest<"u"){if(!T)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var l=new c;Object.defineProperties(l,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:l}}else var a={isDevice:!1,url:n};var d=s.createFile(e,t,a,i,r);a.contents?d.contents=a.contents:a.url&&(d.contents=null,d.url=a.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var m={},b=Object.keys(d.stream_ops);b.forEach(F=>{var y=d.stream_ops[F];m[F]=function(){return s.forceLoadFile(d),y.apply(null,arguments)}});function p(F,y,G,g,N){var P=F.node.contents;if(N>=P.length)return 0;var V=Math.min(P.length-N,g);if(P.slice)for(var w=0;w<V;w++)y[G+w]=P[N+w];else for(var w=0;w<V;w++)y[G+w]=P.get(N+w);return V}return m.read=(F,y,G,g,N)=>(s.forceLoadFile(d),p(F,y,G,g,N)),m.mmap=(F,y,G,g,N)=>{s.forceLoadFile(d);var P=ei(y);if(!P)throw new s.ErrnoError(48);return p(F,ue,P,y,G),{ptr:P,allocated:!0}},d.stream_ops=m,d},createPreloadedFile:(e,t,n,i,r,c,l,a,d,m)=>{var b=t?Ve.resolve(ae.join2(e,t)):e;function p(F){function y(G){m&&m(),a||s.createDataFile(e,t,G,i,r,d),c&&c(),Rt()}Y.handledByPreloadPlugin(F,b,y,()=>{l&&l(),Rt()})||y(F)}sn(),typeof n=="string"?ti(n,F=>p(F),l):p(n)}},ni=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function et(e,t,n){for(var i=t+n,r=t;e[r]&&!(r>=i);)++r;if(r-t>16&&e.buffer&&ni)return ni.decode(e.subarray(t,r));for(var c="";t<r;){var l=e[t++];if(!(l&128)){c+=String.fromCharCode(l);continue}var a=e[t++]&63;if((l&224)==192){c+=String.fromCharCode((l&31)<<6|a);continue}var d=e[t++]&63;if((l&240)==224?l=(l&15)<<12|a<<6|d:l=(l&7)<<18|a<<12|d<<6|e[t++]&63,l<65536)c+=String.fromCharCode(l);else{var m=l-65536;c+=String.fromCharCode(55296|m>>10,56320|m&1023)}}return c}function be(e,t){return e?et(ie,e,t):""}var re={DEFAULT_POLLMASK:5,calculateAt:function(e,t,n){if(ae.isAbs(t))return t;var i;if(e===-100)i=s.cwd();else{var r=re.getStreamFromFD(e);i=r.path}if(t.length==0){if(!n)throw new s.ErrnoError(44);return i}return ae.join2(i,t)},doStat:function(e,t,n){try{var i=e(t)}catch(a){if(a&&a.node&&ae.normalize(t)!==ae.normalize(s.getPath(a.node)))return-54;throw a}W[n>>2]=i.dev,W[n+8>>2]=i.ino,W[n+12>>2]=i.mode,U[n+16>>2]=i.nlink,W[n+20>>2]=i.uid,W[n+24>>2]=i.gid,W[n+28>>2]=i.rdev,me=[i.size>>>0,(I=i.size,+Math.abs(I)>=1?I>0?(Math.min(+Math.floor(I/4294967296),4294967295)|0)>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],W[n+40>>2]=me[0],W[n+44>>2]=me[1],W[n+48>>2]=4096,W[n+52>>2]=i.blocks;var r=i.atime.getTime(),c=i.mtime.getTime(),l=i.ctime.getTime();return me=[Math.floor(r/1e3)>>>0,(I=Math.floor(r/1e3),+Math.abs(I)>=1?I>0?(Math.min(+Math.floor(I/4294967296),4294967295)|0)>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],W[n+56>>2]=me[0],W[n+60>>2]=me[1],U[n+64>>2]=r%1e3*1e3,me=[Math.floor(c/1e3)>>>0,(I=Math.floor(c/1e3),+Math.abs(I)>=1?I>0?(Math.min(+Math.floor(I/4294967296),4294967295)|0)>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],W[n+72>>2]=me[0],W[n+76>>2]=me[1],U[n+80>>2]=c%1e3*1e3,me=[Math.floor(l/1e3)>>>0,(I=Math.floor(l/1e3),+Math.abs(I)>=1?I>0?(Math.min(+Math.floor(I/4294967296),4294967295)|0)>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],W[n+88>>2]=me[0],W[n+92>>2]=me[1],U[n+96>>2]=l%1e3*1e3,me=[i.ino>>>0,(I=i.ino,+Math.abs(I)>=1?I>0?(Math.min(+Math.floor(I/4294967296),4294967295)|0)>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],W[n+104>>2]=me[0],W[n+108>>2]=me[1],0},doMsync:function(e,t,n,i,r){if(!s.isFile(t.node.mode))throw new s.ErrnoError(43);if(i&2)return 0;var c=ie.slice(e,e+n);s.msync(t,c,r,n,i)},varargs:void 0,get:function(){re.varargs+=4;var e=W[re.varargs-4>>2];return e},getStr:function(e){var t=be(e);return t},getStreamFromFD:function(e){var t=s.getStream(e);if(!t)throw new s.ErrnoError(8);return t}};function La(e,t){try{return e=re.getStr(e),s.chmod(e,t),0}catch(n){if(typeof s>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}function Pa(e,t,n,i){try{if(t=re.getStr(t),t=re.calculateAt(e,t),n&-8)return-28;var r=s.lookupPath(t,{follow:!0}),c=r.node;if(!c)return-44;var l="";return n&4&&(l+="r"),n&2&&(l+="w"),n&1&&(l+="x"),l&&s.nodePermissions(c,l)?-2:0}catch(a){if(typeof s>"u"||a.name!=="ErrnoError")throw a;return-a.errno}}function Ha(e){return W[Yl()>>2]=e,e}function Ia(e,t,n){re.varargs=n;try{var i=re.getStreamFromFD(e);switch(t){case 0:{var r=re.get();if(r<0)return-28;var c;return c=s.createStream(i,r),c.fd}case 1:case 2:return 0;case 3:return i.flags;case 4:{var r=re.get();return i.flags|=r,0}case 5:{var r=re.get(),l=0;return Ye[r+l>>1]=2,0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:return Ha(28),-1;default:return-28}}catch(a){if(typeof s>"u"||a.name!=="ErrnoError")throw a;return-a.errno}}function za(e,t){try{var n=re.getStreamFromFD(e);return re.doStat(s.stat,n.path,t)}catch(i){if(typeof s>"u"||i.name!=="ErrnoError")throw i;return-i.errno}}function Ee(e,t,n){return En(e,ie,t,n)}function Ua(e,t,n){try{var i=re.getStreamFromFD(e);i.getdents||(i.getdents=s.readdir(i.path));for(var r=280,c=0,l=s.llseek(i,0,1),a=Math.floor(l/r);a<i.getdents.length&&c+r<=n;){var d,m,b=i.getdents[a];if(b===".")d=i.node.id,m=4;else if(b===".."){var p=s.lookupPath(i.path,{parent:!0});d=p.node.id,m=4}else{var F=s.lookupNode(i.node,b);d=F.id,m=s.isChrdev(F.mode)?2:s.isDir(F.mode)?4:s.isLink(F.mode)?10:8}me=[d>>>0,(I=d,+Math.abs(I)>=1?I>0?(Math.min(+Math.floor(I/4294967296),4294967295)|0)>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],W[t+c>>2]=me[0],W[t+c+4>>2]=me[1],me=[(a+1)*r>>>0,(I=(a+1)*r,+Math.abs(I)>=1?I>0?(Math.min(+Math.floor(I/4294967296),4294967295)|0)>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],W[t+c+8>>2]=me[0],W[t+c+12>>2]=me[1],Ye[t+c+16>>1]=280,ue[t+c+18>>0]=m,Ee(b,t+c+19,256),c+=r,a+=1}return s.llseek(i,a*r,0),c}catch(y){if(typeof s>"u"||y.name!=="ErrnoError")throw y;return-y.errno}}function Oa(e,t,n){re.varargs=n;try{var i=re.getStreamFromFD(e);switch(t){case 21509:case 21505:return i.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return i.tty?0:-59;case 21519:{if(!i.tty)return-59;var r=re.get();return W[r>>2]=0,0}case 21520:return i.tty?-28:-59;case 21531:{var r=re.get();return s.ioctl(i,t,r)}case 21523:return i.tty?0:-59;case 21524:return i.tty?0:-59;default:return-28}}catch(c){if(typeof s>"u"||c.name!=="ErrnoError")throw c;return-c.errno}}function Qa(e,t){try{return e=re.getStr(e),re.doStat(s.lstat,e,t)}catch(n){if(typeof s>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}function qa(e,t,n,i){try{t=re.getStr(t);var r=i&256,c=i&4096;return i=i&-6401,t=re.calculateAt(e,t,c),re.doStat(r?s.lstat:s.stat,t,n)}catch(l){if(typeof s>"u"||l.name!=="ErrnoError")throw l;return-l.errno}}function $a(e,t,n,i){re.varargs=i;try{t=re.getStr(t),t=re.calculateAt(e,t);var r=i?re.get():0;return s.open(t,n,r).fd}catch(c){if(typeof s>"u"||c.name!=="ErrnoError")throw c;return-c.errno}}function ed(e,t){try{return e=re.getStr(e),re.doStat(s.stat,e,t)}catch(n){if(typeof s>"u"||n.name!=="ErrnoError")throw n;return-n.errno}}function td(e,t,n,i,r){}function Dn(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}function nd(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ii=e}var ii=void 0;function ge(e){for(var t="",n=e;ie[n];)t+=ii[ie[n++]];return t}var tt={},nt={},Nt={},id=48,rd=57;function ri(e){if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return t>=id&&t<=rd?"_"+e:e}function ci(e,t){return e=ri(e),{[e]:function(){return t.apply(this,arguments)}}[e]}function fn(e,t){var n=ci(t,function(i){this.name=t,this.message=i;var r=new Error(i).stack;r!==void 0&&(this.stack=this.toString()+`
|
|
510
510
|
`+r.replace(/^Error(:[^\n]*)?\n/,""))});return n.prototype=Object.create(e.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},n}var li=void 0;function We(e){throw new li(e)}var ai=void 0;function di(e){throw new ai(e)}function cd(e,t,n){e.forEach(function(a){Nt[a]=t});function i(a){var d=n(a);d.length!==e.length&&di("Mismatched type converter count");for(var m=0;m<e.length;++m)ke(e[m],d[m])}var r=new Array(t.length),c=[],l=0;t.forEach((a,d)=>{nt.hasOwnProperty(a)?r[d]=nt[a]:(c.push(a),tt.hasOwnProperty(a)||(tt[a]=[]),tt[a].push(()=>{r[d]=nt[a],++l,l===c.length&&i(r)}))}),c.length===0&&i(r)}function ke(e,t,n={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||We('type "'+i+'" must have a positive integer typeid pointer'),nt.hasOwnProperty(e)){if(n.ignoreDuplicateRegistrations)return;We("Cannot register type '"+i+"' twice")}if(nt[e]=t,delete Nt[e],tt.hasOwnProperty(e)){var r=tt[e];delete tt[e],r.forEach(c=>c())}}function ld(e,t,n,i,r){var c=Dn(n);t=ge(t),ke(e,{name:t,fromWireType:function(l){return!!l},toWireType:function(l,a){return a?i:r},argPackAdvance:8,readValueFromPointer:function(l){var a;if(n===1)a=ue;else if(n===2)a=Ye;else if(n===4)a=W;else throw new TypeError("Unknown boolean type size: "+t);return this.fromWireType(a[l>>c])},destructorFunction:null})}function ad(){this.allocated=[void 0],this.freelist=[],this.get=function(e){return this.allocated[e]},this.allocate=function(e){let t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},this.free=function(e){this.allocated[e]=void 0,this.freelist.push(e)}}var Ae=new ad;function dd(e){e>=Ae.reserved&&--Ae.get(e).refcount===0&&Ae.free(e)}function od(){for(var e=0,t=Ae.reserved;t<Ae.allocated.length;++t)Ae.allocated[t]!==void 0&&++e;return e}function md(){Ae.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Ae.reserved=Ae.allocated.length,u.count_emval_handles=od}var oi={toValue:e=>(e||We("Cannot use deleted val. handle = "+e),Ae.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Ae.allocate({refcount:1,value:e})}}};function Bn(e){return this.fromWireType(W[e>>2])}function ud(e,t){t=ge(t),ke(e,{name:t,fromWireType:function(n){var i=oi.toValue(n);return dd(n),i},toWireType:function(n,i){return oi.toHandle(i)},argPackAdvance:8,readValueFromPointer:Bn,destructorFunction:null})}function bd(e,t){switch(t){case 2:return function(n){return this.fromWireType(x[n>>2])};case 3:return function(n){return this.fromWireType(Re[n>>3])};default:throw new TypeError("Unknown float type: "+e)}}function sd(e,t,n){var i=Dn(n);t=ge(t),ke(e,{name:t,fromWireType:function(r){return r},toWireType:function(r,c){return c},argPackAdvance:8,readValueFromPointer:bd(t,i),destructorFunction:null})}function pd(e){for(;e.length;){var t=e.pop(),n=e.pop();n(t)}}function Ed(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var n=ci(e.name||"unknownFunctionName",function(){});n.prototype=e.prototype;var i=new n,r=e.apply(i,t);return r instanceof Object?r:i}function Dd(e,t,n,i,r,c){var l=t.length;l<2&&We("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=t[1]!==null&&n!==null,d=!1,m=1;m<t.length;++m)if(t[m]!==null&&t[m].destructorFunction===void 0){d=!0;break}for(var b=t[0].name!=="void",p="",F="",m=0;m<l-2;++m)p+=(m!==0?", ":"")+"arg"+m,F+=(m!==0?", ":"")+"arg"+m+"Wired";var y="return function "+ri(e)+"("+p+`) {
|
|
@@ -527,4 +527,4 @@ return ret;
|
|
|
527
527
|
`)}(e&16||!P)&&(e&64&&(y=y.substring(y.replace(/\\/g,"/").lastIndexOf("/")+1)),t+=(P?" = "+F:" at "+F)+" ("+y+":"+G+":"+g+`)
|
|
528
528
|
`),e&128&&c[0]&&(c[1]==F&&c[2].length>0&&(t=t.replace(/\s+$/,""),t+=" with values: "+c[1]+c[2]+`
|
|
529
529
|
`),c=Zn(c[0]))}return t=t.replace(/\s+$/,""),t}function yo(e,t,n){var i=Wo(e);if(!t||n<=0)return $e(i)+1;var r=Ee(i,t,n);return r+1}var K={inEventHandler:0,removeAllEventListeners:function(){for(var e=K.eventHandlers.length-1;e>=0;--e)K._removeHandler(e);K.eventHandlers=[],K.deferredCalls=[]},registerRemoveEventListeners:function(){K.removeEventListenersRegistered||(K.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(e,t,n){function i(l,a){if(l.length!=a.length)return!1;for(var d in l)if(l[d]!=a[d])return!1;return!0}for(var r in K.deferredCalls){var c=K.deferredCalls[r];if(c.targetFunction==e&&i(c.argsList,n))return}K.deferredCalls.push({targetFunction:e,precedence:t,argsList:n}),K.deferredCalls.sort(function(l,a){return l.precedence<a.precedence})},removeDeferredCalls:function(e){for(var t=0;t<K.deferredCalls.length;++t)K.deferredCalls[t].targetFunction==e&&(K.deferredCalls.splice(t,1),--t)},canPerformEventHandlerRequests:function(){return K.inEventHandler&&K.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!!K.canPerformEventHandlerRequests())for(var e=0;e<K.deferredCalls.length;++e){var t=K.deferredCalls[e];K.deferredCalls.splice(e,1),--e,t.targetFunction.apply(null,t.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(e,t){for(var n=0;n<K.eventHandlers.length;++n)K.eventHandlers[n].target==e&&(!t||t==K.eventHandlers[n].eventTypeString)&&K._removeHandler(n--)},_removeHandler:function(e){var t=K.eventHandlers[e];t.target.removeEventListener(t.eventTypeString,t.eventListenerFunc,t.useCapture),K.eventHandlers.splice(e,1)},registerOrRemoveHandler:function(e){var t=function(r){++K.inEventHandler,K.currentEventHandler=e,K.runDeferredCalls(),e.handlerFunc(r),K.runDeferredCalls(),--K.inEventHandler};if(e.callbackfunc)e.eventListenerFunc=t,e.target.addEventListener(e.eventTypeString,t,e.useCapture),K.eventHandlers.push(e),K.registerRemoveEventListeners();else for(var n=0;n<K.eventHandlers.length;++n)K.eventHandlers[n].target==e.target&&K.eventHandlers[n].eventTypeString==e.eventTypeString&&K._removeHandler(n--)},getNodeNameForTarget:function(e){return e?e==window?"#window":e==screen?"#screen":e&&e.nodeName?e.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function ho(e){return e>2?be(e):e}var Fi=[0,typeof document<"u"?document:0,typeof window<"u"?window:0];function Me(e){e=ho(e);var t=Fi[e]||(typeof document<"u"?document.querySelector(e):void 0);return t}function Zi(e){return Me(e)}function Go(e,t,n){var i=Zi(e);if(!i)return-4;W[t>>2]=i.width,W[n>>2]=i.height}function Yo(){return typeof devicePixelRatio=="number"&&devicePixelRatio||1}function Xn(e){return Fi.indexOf(e)<0?e.getBoundingClientRect():{left:0,top:0}}function Ro(e,t,n){if(e=Me(e),!e)return-4;var i=Xn(e);return Re[t>>3]=i.width,Re[n>>3]=i.height,0}function Xi(){return 2147483648}function Vo(){return Xi()}function go(e,t,n){(e|0)===e&&(e=be(e)),e=Ve.resolve(e);var i=_l[e];if(i){var r=i.getContext("2d"),c=r.getImageData(0,0,i.width,i.height),l=_e(i.width*i.height*4);return ie.set(c.data,l),W[t>>2]=i.width,W[n>>2]=i.height,l}return 0}function Wi(e){E.activeTexture(e)}var Ao=Wi;function yi(e,t){E.attachShader(_.programs[e],_.shaders[t])}var vo=yi;function Jo(e,t){E.beginQuery(e,_.queries[t])}var ko=Jo;function No(e,t){E.disjointTimerQueryExt.beginQueryEXT(e,_.queries[t])}var Mo=No;function wo(e){E.beginTransformFeedback(e)}var To=wo;function hi(e,t,n){E.bindAttribLocation(_.programs[e],t,be(n))}var jo=hi;function Gi(e,t){e==34962?E.currentArrayBufferBinding=t:e==34963&&(E.currentElementArrayBufferBinding=t),e==35051?E.currentPixelPackBufferBinding=t:e==35052&&(E.currentPixelUnpackBufferBinding=t),E.bindBuffer(e,_.buffers[t])}var So=Gi;function xo(e,t,n){E.bindBufferBase(e,t,_.buffers[n])}var Ko=xo;function Lo(e,t,n,i,r){E.bindBufferRange(e,t,_.buffers[n],i,r)}var Po=Lo;function Yi(e,t){E.bindFramebuffer(e,_.framebuffers[t])}var Ho=Yi;function Ri(e,t){E.bindRenderbuffer(e,_.renderbuffers[t])}var Io=Ri;function zo(e,t){E.bindSampler(e,_.samplers[t])}var Uo=zo;function Vi(e,t){E.bindTexture(e,_.textures[t])}var Oo=Vi;function Qo(e,t){E.bindTransformFeedback(e,_.transformFeedbacks[t])}var qo=Qo;function gi(e){E.bindVertexArray(_.vaos[e]);var t=E.getParameter(34965);E.currentElementArrayBufferBinding=t?t.name|0:0}var $o=gi,em=gi,tm=em;function Ai(e,t,n,i){E.blendColor(e,t,n,i)}var nm=Ai;function vi(e){E.blendEquation(e)}var im=vi;function Ji(e,t){E.blendEquationSeparate(e,t)}var rm=Ji;function ki(e,t){E.blendFunc(e,t)}var cm=ki;function Ni(e,t,n,i){E.blendFuncSeparate(e,t,n,i)}var lm=Ni;function am(e,t,n,i,r,c,l,a,d,m){E.blitFramebuffer(e,t,n,i,r,c,l,a,d,m)}var dm=am;function Mi(e,t,n,i){_.currentContext.version>=2?n&&t?E.bufferData(e,ie,i,n,t):E.bufferData(e,t,i):E.bufferData(e,n?ie.subarray(n,n+t):t,i)}var om=Mi;function wi(e,t,n,i){if(_.currentContext.version>=2){n&&E.bufferSubData(e,t,ie,i,n);return}E.bufferSubData(e,t,ie.subarray(i,i+n))}var mm=wi;function Ti(e){return E.checkFramebufferStatus(e)}var um=Ti;function ji(e){E.clear(e)}var bm=ji;function sm(e,t,n,i){E.clearBufferfi(e,t,n,i)}var pm=sm;function Em(e,t,n){E.clearBufferfv(e,t,x,n>>2)}var Dm=Em;function fm(e,t,n){E.clearBufferiv(e,t,W,n>>2)}var Bm=fm;function Cm(e,t,n){E.clearBufferuiv(e,t,U,n>>2)}var _m=Cm;function Si(e,t,n,i){E.clearColor(e,t,n,i)}var Fm=Si;function xi(e){E.clearDepth(e)}var Zm=xi;function Ki(e){E.clearStencil(e)}var Xm=Ki;function Li(e,t){return(e>>>0)+t*4294967296}function Wm(e,t,n,i){var r=Li(n,i);return E.clientWaitSync(_.syncs[e],t,r)}var ym=Wm;function Pi(e,t,n,i){E.colorMask(!!e,!!t,!!n,!!i)}var hm=Pi;function Hi(e){E.compileShader(_.shaders[e])}var Gm=Hi;function Ii(e,t,n,i,r,c,l,a){if(_.currentContext.version>=2){E.currentPixelUnpackBufferBinding||!l?E.compressedTexImage2D(e,t,n,i,r,c,l,a):E.compressedTexImage2D(e,t,n,i,r,c,ie,a,l);return}E.compressedTexImage2D(e,t,n,i,r,c,a?ie.subarray(a,a+l):null)}var Ym=Ii;function Rm(e,t,n,i,r,c,l,a,d){E.currentPixelUnpackBufferBinding?E.compressedTexImage3D(e,t,n,i,r,c,l,a,d):E.compressedTexImage3D(e,t,n,i,r,c,l,ie,d,a)}var Vm=Rm;function zi(e,t,n,i,r,c,l,a,d){if(_.currentContext.version>=2){E.currentPixelUnpackBufferBinding||!a?E.compressedTexSubImage2D(e,t,n,i,r,c,l,a,d):E.compressedTexSubImage2D(e,t,n,i,r,c,l,ie,d,a);return}E.compressedTexSubImage2D(e,t,n,i,r,c,l,d?ie.subarray(d,d+a):null)}var gm=zi;function Am(e,t,n,i,r,c,l,a,d,m,b){E.currentPixelUnpackBufferBinding?E.compressedTexSubImage3D(e,t,n,i,r,c,l,a,d,m,b):E.compressedTexSubImage3D(e,t,n,i,r,c,l,a,d,ie,b,m)}var vm=Am;function Jm(e,t,n,i,r){E.copyBufferSubData(e,t,n,i,r)}var km=Jm;function Ui(e,t,n,i,r,c,l,a){E.copyTexImage2D(e,t,n,i,r,c,l,a)}var Nm=Ui;function Oi(e,t,n,i,r,c,l,a){E.copyTexSubImage2D(e,t,n,i,r,c,l,a)}var Mm=Oi;function wm(e,t,n,i,r,c,l,a,d){E.copyTexSubImage3D(e,t,n,i,r,c,l,a,d)}var Tm=wm;function Qi(){var e=_.getNewId(_.programs),t=E.createProgram();return t.name=e,t.maxUniformLength=t.maxAttributeLength=t.maxUniformBlockNameLength=0,t.uniformIdCounter=1,_.programs[e]=t,e}var jm=Qi;function qi(e){var t=_.getNewId(_.shaders);return _.shaders[t]=E.createShader(e),t}var Sm=qi;function $i(e){E.cullFace(e)}var xm=$i;function er(e,t){for(var n=0;n<e;n++){var i=W[t+n*4>>2],r=_.buffers[i];!r||(E.deleteBuffer(r),r.name=0,_.buffers[i]=null,i==E.currentArrayBufferBinding&&(E.currentArrayBufferBinding=0),i==E.currentElementArrayBufferBinding&&(E.currentElementArrayBufferBinding=0),i==E.currentPixelPackBufferBinding&&(E.currentPixelPackBufferBinding=0),i==E.currentPixelUnpackBufferBinding&&(E.currentPixelUnpackBufferBinding=0))}}var Km=er;function tr(e,t){for(var n=0;n<e;++n){var i=W[t+n*4>>2],r=_.framebuffers[i];!r||(E.deleteFramebuffer(r),r.name=0,_.framebuffers[i]=null)}}var Lm=tr;function nr(e){if(!!e){var t=_.programs[e];if(!t){_.recordError(1281);return}E.deleteProgram(t),t.name=0,_.programs[e]=null}}var Pm=nr;function Hm(e,t){for(var n=0;n<e;n++){var i=W[t+n*4>>2],r=_.queries[i];!r||(E.deleteQuery(r),_.queries[i]=null)}}var Im=Hm;function zm(e,t){for(var n=0;n<e;n++){var i=W[t+n*4>>2],r=_.queries[i];!r||(E.disjointTimerQueryExt.deleteQueryEXT(r),_.queries[i]=null)}}var Um=zm;function ir(e,t){for(var n=0;n<e;n++){var i=W[t+n*4>>2],r=_.renderbuffers[i];!r||(E.deleteRenderbuffer(r),r.name=0,_.renderbuffers[i]=null)}}var Om=ir;function Qm(e,t){for(var n=0;n<e;n++){var i=W[t+n*4>>2],r=_.samplers[i];!r||(E.deleteSampler(r),r.name=0,_.samplers[i]=null)}}var qm=Qm;function rr(e){if(!!e){var t=_.shaders[e];if(!t){_.recordError(1281);return}E.deleteShader(t),_.shaders[e]=null}}var $m=rr;function eu(e){if(!!e){var t=_.syncs[e];if(!t){_.recordError(1281);return}E.deleteSync(t),t.name=0,_.syncs[e]=null}}var tu=eu;function cr(e,t){for(var n=0;n<e;n++){var i=W[t+n*4>>2],r=_.textures[i];!r||(E.deleteTexture(r),r.name=0,_.textures[i]=null)}}var nu=cr;function iu(e,t){for(var n=0;n<e;n++){var i=W[t+n*4>>2],r=_.transformFeedbacks[i];!r||(E.deleteTransformFeedback(r),r.name=0,_.transformFeedbacks[i]=null)}}var ru=iu;function lr(e,t){for(var n=0;n<e;n++){var i=W[t+n*4>>2];E.deleteVertexArray(_.vaos[i]),_.vaos[i]=null}}var cu=lr,lu=lr,au=lu;function ar(e){E.depthFunc(e)}var du=ar;function dr(e){E.depthMask(!!e)}var ou=dr;function or(e,t){E.depthRange(e,t)}var mu=or;function mr(e,t){E.detachShader(_.programs[e],_.shaders[t])}var uu=mr;function ur(e){E.disable(e)}var bu=ur;function br(e){var t=_.currentContext.clientBuffers[e];t.enabled=!1,E.disableVertexAttribArray(e)}var su=br;function sr(e,t,n){_.preDrawHandleClientVertexAttribBindings(t+n),E.drawArrays(e,t,n),_.postDrawHandleClientVertexAttribBindings()}var pu=sr;function Dt(e,t,n,i){E.drawArraysInstanced(e,t,n,i)}var Eu=Dt,Du=Dt,fu=Du,Bu=Dt,Cu=Bu,_u=Dt,Fu=_u,Zu=Dt,Xu=Zu,Mt=[];function Wn(e,t){for(var n=Mt[e],i=0;i<e;i++)n[i]=W[t+i*4>>2];E.drawBuffers(n)}var Wu=Wn,yu=Wn,hu=yu,Gu=Wn,Yu=Gu;function yn(e,t,n,i){var r;if(!E.currentElementArrayBufferBinding){var c=_.calcBufLength(1,n,0,t);r=_.getTempIndexBuffer(c),E.bindBuffer(34963,r),E.bufferSubData(34963,0,ie.subarray(i,i+c)),i=0}_.preDrawHandleClientVertexAttribBindings(t),E.drawElements(e,t,n,i),_.postDrawHandleClientVertexAttribBindings(t),E.currentElementArrayBufferBinding||E.bindBuffer(34963,null)}var Ru=yn;function ft(e,t,n,i,r){E.drawElementsInstanced(e,t,n,i,r)}var Vu=ft,gu=ft,Au=gu,vu=ft,Ju=vu,ku=ft,Nu=ku,Mu=ft,wu=Mu;function Tu(e,t,n,i,r,c){yn(e,i,r,c)}var ju=Tu;function pr(e){E.enable(e)}var Su=pr;function Er(e){var t=_.currentContext.clientBuffers[e];t.enabled=!0,E.enableVertexAttribArray(e)}var xu=Er;function Ku(e){E.endQuery(e)}var Lu=Ku;function Pu(e){E.disjointTimerQueryExt.endQueryEXT(e)}var Hu=Pu;function Iu(){E.endTransformFeedback()}var zu=Iu;function Uu(e,t){var n=E.fenceSync(e,t);if(n){var i=_.getNewId(_.syncs);return n.name=i,_.syncs[i]=n,i}return 0}var Ou=Uu;function Dr(){E.finish()}var Qu=Dr;function fr(){E.flush()}var qu=fr;function wt(e){switch(e){case 34962:e=34964;break;case 34963:e=34965;break;case 35051:e=35053;break;case 35052:e=35055;break;case 35982:e=35983;break;case 36662:e=36662;break;case 36663:e=36663;break;case 35345:e=35368;break}var t=E.getParameter(e);return t?t.name|0:0}function hn(e){switch(e){case 34962:case 34963:case 36662:case 36663:case 35051:case 35052:case 35882:case 35982:case 35345:return!0;default:return!1}}function $u(e,t,n){if(!hn(e)){_.recordError(1280),ee("GL_INVALID_ENUM in glFlushMappedBufferRange");return}var i=_.mappedBuffers[wt(e)];if(!i){_.recordError(1282),ee("buffer was never mapped in glFlushMappedBufferRange");return}if(!(i.access&16)){_.recordError(1282),ee("buffer was not mapped with GL_MAP_FLUSH_EXPLICIT_BIT in glFlushMappedBufferRange");return}if(t<0||n<0||t+n>i.length){_.recordError(1281),ee("invalid range in glFlushMappedBufferRange");return}E.bufferSubData(e,i.offset,ie.subarray(i.mem+t,i.mem+t+n))}var eb=$u;function Br(e,t,n,i){E.framebufferRenderbuffer(e,t,n,_.renderbuffers[i])}var tb=Br;function Cr(e,t,n,i,r){E.framebufferTexture2D(e,t,n,_.textures[i],r)}var nb=Cr;function ib(e,t,n,i,r){E.framebufferTextureLayer(e,t,_.textures[n],i,r)}var rb=ib;function _r(e){E.frontFace(e)}var cb=_r;function Te(e,t,n,i){for(var r=0;r<e;r++){var c=E[n](),l=c&&_.getNewId(i);c?(c.name=l,i[l]=c):_.recordError(1282),W[t+r*4>>2]=l}}function Fr(e,t){Te(e,t,"createBuffer",_.buffers)}var lb=Fr;function Zr(e,t){Te(e,t,"createFramebuffer",_.framebuffers)}var ab=Zr;function db(e,t){Te(e,t,"createQuery",_.queries)}var ob=db;function mb(e,t){for(var n=0;n<e;n++){var i=E.disjointTimerQueryExt.createQueryEXT();if(!i){for(_.recordError(1282);n<e;)W[t+n++*4>>2]=0;return}var r=_.getNewId(_.queries);i.name=r,_.queries[r]=i,W[t+n*4>>2]=r}}var ub=mb;function Xr(e,t){Te(e,t,"createRenderbuffer",_.renderbuffers)}var bb=Xr;function sb(e,t){Te(e,t,"createSampler",_.samplers)}var pb=sb;function Wr(e,t){Te(e,t,"createTexture",_.textures)}var Eb=Wr;function Db(e,t){Te(e,t,"createTransformFeedback",_.transformFeedbacks)}var fb=Db;function yr(e,t){Te(e,t,"createVertexArray",_.vaos)}var Bb=yr,Cb=yr,_b=Cb;function hr(e){E.generateMipmap(e)}var Fb=hr;function Gr(e,t,n,i,r,c,l,a){t=_.programs[t];var d=E[e](t,n);if(d){var m=a&&Ee(d.name,a,i);r&&(W[r>>2]=m),c&&(W[c>>2]=d.size),l&&(W[l>>2]=d.type)}}function Yr(e,t,n,i,r,c,l){Gr("getActiveAttrib",e,t,n,i,r,c,l)}var Zb=Yr;function Rr(e,t,n,i,r,c,l){Gr("getActiveUniform",e,t,n,i,r,c,l)}var Xb=Rr;function Wb(e,t,n,i,r){e=_.programs[e];var c=E.getActiveUniformBlockName(e,t);if(!!c)if(r&&n>0){var l=Ee(c,r,n);i&&(W[i>>2]=l)}else i&&(W[i>>2]=0)}var yb=Wb;function hb(e,t,n,i){if(!i){_.recordError(1281);return}if(e=_.programs[e],n==35393){var r=E.getActiveUniformBlockName(e,t);W[i>>2]=r.length+1;return}var c=E.getActiveUniformBlockParameter(e,t,n);if(c!==null)if(n==35395)for(var l=0;l<c.length;l++)W[i+l*4>>2]=c[l];else W[i>>2]=c}var Gb=hb;function Yb(e,t,n,i,r){if(!r){_.recordError(1281);return}if(t>0&&n==0){_.recordError(1281);return}e=_.programs[e];for(var c=[],l=0;l<t;l++)c.push(W[n+l*4>>2]);var a=E.getActiveUniforms(e,c,i);if(!!a)for(var d=a.length,l=0;l<d;l++)W[r+l*4>>2]=a[l]}var Rb=Yb;function Vr(e,t,n,i){var r=E.getAttachedShaders(_.programs[e]),c=r.length;c>t&&(c=t),W[n>>2]=c;for(var l=0;l<c;++l){var a=_.shaders.indexOf(r[l]);W[i+l*4>>2]=a}}var Vb=Vr;function gr(e,t){return E.getAttribLocation(_.programs[e],be(t))}var gb=gr;function Tt(e,t){U[e>>2]=t,U[e+4>>2]=(t-U[e>>2])/4294967296}function jt(e,t,n){if(!t){_.recordError(1281);return}var i=void 0;switch(e){case 36346:i=1;break;case 36344:n!=0&&n!=1&&_.recordError(1280);return;case 34814:case 36345:i=0;break;case 34466:var r=E.getParameter(34467);i=r?r.length:0;break;case 33309:if(_.currentContext.version<2){_.recordError(1282);return}var c=E.getSupportedExtensions()||[];i=2*c.length;break;case 33307:case 33308:if(_.currentContext.version<2){_.recordError(1280);return}i=e==33307?3:0;break}if(i===void 0){var l=E.getParameter(e);switch(typeof l){case"number":i=l;break;case"boolean":i=l?1:0;break;case"string":_.recordError(1280);return;case"object":if(l===null)switch(e){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:{i=0;break}default:{_.recordError(1280);return}}else if(l instanceof Float32Array||l instanceof Uint32Array||l instanceof Int32Array||l instanceof Array){for(var a=0;a<l.length;++a)switch(n){case 0:W[t+a*4>>2]=l[a];break;case 2:x[t+a*4>>2]=l[a];break;case 4:ue[t+a>>0]=l[a]?1:0;break}return}else try{i=l.name|0}catch(d){_.recordError(1280),ee("GL_INVALID_ENUM in glGet"+n+"v: Unknown object returned from WebGL getParameter("+e+")! (error: "+d+")");return}break;default:_.recordError(1280),ee("GL_INVALID_ENUM in glGet"+n+"v: Native code calling glGet"+n+"v("+e+") and it returns "+l+" of type "+typeof l+"!");return}}switch(n){case 1:Tt(t,i);break;case 0:W[t>>2]=i;break;case 2:x[t>>2]=i;break;case 4:ue[t>>0]=i?1:0;break}}function Ar(e,t){jt(e,t,4)}var Ab=Ar;function vb(e,t,n){if(!n){_.recordError(1281);return}Tt(n,E.getBufferParameter(e,t))}var Jb=vb;function vr(e,t,n){if(!n){_.recordError(1281);return}W[n>>2]=E.getBufferParameter(e,t)}var kb=vr;function Nb(e,t,n){if(t==35005){var i=0,r=_.mappedBuffers[wt(e)];r&&(i=r.mem),W[n>>2]=i}else _.recordError(1280),ee("GL_INVALID_ENUM in glGetBufferPointerv")}var Mb=Nb;function Jr(){var e=E.getError()||_.lastError;return _.lastError=0,e}var wb=Jr;function kr(e,t){jt(e,t,2)}var Tb=kr;function jb(e,t){return E.getFragDataLocation(_.programs[e],be(t))}var Sb=jb;function Nr(e,t,n,i){var r=E.getFramebufferAttachmentParameter(e,t,n);(r instanceof WebGLRenderbuffer||r instanceof WebGLTexture)&&(r=r.name|0),W[i>>2]=r}var xb=Nr;function Mr(e,t,n,i){if(!n){_.recordError(1281);return}var r=E.getIndexedParameter(e,t),c;switch(typeof r){case"boolean":c=r?1:0;break;case"number":c=r;break;case"object":if(r===null)switch(e){case 35983:case 35368:c=0;break;default:{_.recordError(1280);return}}else if(r instanceof WebGLBuffer)c=r.name|0;else{_.recordError(1280);return}break;default:_.recordError(1280);return}switch(i){case 1:Tt(n,c);break;case 0:W[n>>2]=c;break;case 2:x[n>>2]=c;break;case 4:ue[n>>0]=c?1:0;break;default:throw"internal emscriptenWebGLGetIndexed() error, bad type: "+i}}function Kb(e,t,n){Mr(e,t,n,1)}var Lb=Kb;function Pb(e,t){jt(e,t,1)}var Hb=Pb;function Ib(e,t,n){Mr(e,t,n,0)}var zb=Ib;function wr(e,t){jt(e,t,0)}var Ub=wr;function Ob(e,t,n,i,r){if(i<0){_.recordError(1281);return}if(!r){_.recordError(1281);return}var c=E.getInternalformatParameter(e,t,n);if(c!==null)for(var l=0;l<c.length&&l<i;++l)W[r+l*4>>2]=c[l]}var Qb=Ob;function qb(e,t,n,i,r){_.recordError(1282)}var $b=qb;function Tr(e,t,n,i){var r=E.getProgramInfoLog(_.programs[e]);r===null&&(r="(unknown error)");var c=t>0&&i?Ee(r,i,t):0;n&&(W[n>>2]=c)}var e9=Tr;function jr(e,t,n){if(!n){_.recordError(1281);return}if(e>=_.counter){_.recordError(1281);return}if(e=_.programs[e],t==35716){var i=E.getProgramInfoLog(e);i===null&&(i="(unknown error)"),W[n>>2]=i.length+1}else if(t==35719){if(!e.maxUniformLength)for(var r=0;r<E.getProgramParameter(e,35718);++r)e.maxUniformLength=Math.max(e.maxUniformLength,E.getActiveUniform(e,r).name.length+1);W[n>>2]=e.maxUniformLength}else if(t==35722){if(!e.maxAttributeLength)for(var r=0;r<E.getProgramParameter(e,35721);++r)e.maxAttributeLength=Math.max(e.maxAttributeLength,E.getActiveAttrib(e,r).name.length+1);W[n>>2]=e.maxAttributeLength}else if(t==35381){if(!e.maxUniformBlockNameLength)for(var r=0;r<E.getProgramParameter(e,35382);++r)e.maxUniformBlockNameLength=Math.max(e.maxUniformBlockNameLength,E.getActiveUniformBlockName(e,r).length+1);W[n>>2]=e.maxUniformBlockNameLength}else W[n>>2]=E.getProgramParameter(e,t)}var t9=jr;function Sr(e,t,n){if(!n){_.recordError(1281);return}var i=_.queries[e],r;_.currentContext.version<2?r=E.disjointTimerQueryExt.getQueryObjectEXT(i,t):r=E.getQueryParameter(i,t);var c;typeof r=="boolean"?c=r?1:0:c=r,Tt(n,c)}var n9=Sr;function xr(e,t,n){if(!n){_.recordError(1281);return}var i=_.queries[e],r=E.disjointTimerQueryExt.getQueryObjectEXT(i,t),c;typeof r=="boolean"?c=r?1:0:c=r,W[n>>2]=c}var i9=xr,r9=Sr,c9=r9;function l9(e,t,n){if(!n){_.recordError(1281);return}var i=_.queries[e],r=E.getQueryParameter(i,t),c;typeof r=="boolean"?c=r?1:0:c=r,W[n>>2]=c}var a9=l9,d9=xr,o9=d9;function m9(e,t,n){if(!n){_.recordError(1281);return}W[n>>2]=E.getQuery(e,t)}var u9=m9;function b9(e,t,n){if(!n){_.recordError(1281);return}W[n>>2]=E.disjointTimerQueryExt.getQueryEXT(e,t)}var s9=b9;function Kr(e,t,n){if(!n){_.recordError(1281);return}W[n>>2]=E.getRenderbufferParameter(e,t)}var p9=Kr;function E9(e,t,n){if(!n){_.recordError(1281);return}x[n>>2]=E.getSamplerParameter(_.samplers[e],t)}var D9=E9;function f9(e,t,n){if(!n){_.recordError(1281);return}W[n>>2]=E.getSamplerParameter(_.samplers[e],t)}var B9=f9;function Lr(e,t,n,i){var r=E.getShaderInfoLog(_.shaders[e]);r===null&&(r="(unknown error)");var c=t>0&&i?Ee(r,i,t):0;n&&(W[n>>2]=c)}var C9=Lr;function Pr(e,t,n,i){var r=E.getShaderPrecisionFormat(e,t);W[n>>2]=r.rangeMin,W[n+4>>2]=r.rangeMax,W[i>>2]=r.precision}var _9=Pr;function Hr(e,t,n,i){var r=E.getShaderSource(_.shaders[e]);if(!!r){var c=t>0&&i?Ee(r,i,t):0;n&&(W[n>>2]=c)}}var F9=Hr;function Ir(e,t,n){if(!n){_.recordError(1281);return}if(t==35716){var i=E.getShaderInfoLog(_.shaders[e]);i===null&&(i="(unknown error)");var r=i?i.length+1:0;W[n>>2]=r}else if(t==35720){var c=E.getShaderSource(_.shaders[e]),l=c?c.length+1:0;W[n>>2]=l}else W[n>>2]=E.getShaderParameter(_.shaders[e],t)}var Z9=Ir;function zr(e){var t=_.stringCache[e];if(!t){switch(e){case 7939:var n=E.getSupportedExtensions()||[];n=n.concat(n.map(function(d){return"GL_"+d})),t=Ne(n.join(" "));break;case 7936:case 7937:case 37445:case 37446:var i=E.getParameter(e);i||_.recordError(1280),t=i&&Ne(i);break;case 7938:var r=E.getParameter(7938);_.currentContext.version>=2?r="OpenGL ES 3.0 ("+r+")":r="OpenGL ES 2.0 ("+r+")",t=Ne(r);break;case 35724:var c=E.getParameter(35724),l=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/,a=c.match(l);a!==null&&(a[1].length==3&&(a[1]=a[1]+"0"),c="OpenGL ES GLSL ES "+a[1]+" ("+c+")"),t=Ne(c);break;default:_.recordError(1280)}_.stringCache[e]=t}return t}var X9=zr;function W9(e,t){if(_.currentContext.version<2)return _.recordError(1282),0;var n=_.stringiCache[e];if(n)return t<0||t>=n.length?(_.recordError(1281),0):n[t];switch(e){case 7939:var i=E.getSupportedExtensions()||[];return i=i.concat(i.map(function(r){return"GL_"+r})),i=i.map(function(r){return Ne(r)}),n=_.stringiCache[e]=i,t<0||t>=n.length?(_.recordError(1281),0):n[t];default:return _.recordError(1280),0}}var y9=W9;function h9(e,t,n,i,r){if(n<0){_.recordError(1281);return}if(!r){_.recordError(1281);return}var c=E.getSyncParameter(_.syncs[e],t);c!==null&&(W[r>>2]=c,i&&(W[i>>2]=1))}var G9=h9;function Ur(e,t,n){if(!n){_.recordError(1281);return}x[n>>2]=E.getTexParameter(e,t)}var Y9=Ur;function Or(e,t,n){if(!n){_.recordError(1281);return}W[n>>2]=E.getTexParameter(e,t)}var R9=Or;function V9(e,t,n,i,r,c,l){e=_.programs[e];var a=E.getTransformFeedbackVarying(e,t);if(!!a){if(l&&n>0){var d=Ee(a.name,l,n);i&&(W[i>>2]=d)}else i&&(W[i>>2]=0);r&&(W[r>>2]=a.size),c&&(W[c>>2]=a.type)}}var g9=V9;function A9(e,t){return E.getUniformBlockIndex(_.programs[e],be(t))}var v9=A9;function J9(e,t,n,i){if(!i){_.recordError(1281);return}if(t>0&&(n==0||i==0)){_.recordError(1281);return}e=_.programs[e];for(var r=[],c=0;c<t;c++)r.push(be(W[n+c*4>>2]));var l=E.getUniformIndices(e,r);if(!!l)for(var a=l.length,c=0;c<a;c++)W[i+c*4>>2]=l[c]}var k9=J9;function N9(e){return parseInt(e)}function Qr(e){return e.slice(-1)=="]"&&e.lastIndexOf("[")}function qr(e){var t=e.uniformLocsById,n=e.uniformSizeAndIdsByName,i,r;if(!t)for(e.uniformLocsById=t={},e.uniformArrayNamesById={},i=0;i<E.getProgramParameter(e,35718);++i){var c=E.getActiveUniform(e,i),l=c.name,a=c.size,d=Qr(l),m=d>0?l.slice(0,d):l,b=e.uniformIdCounter;for(e.uniformIdCounter+=a,n[m]=[a,b],r=0;r<a;++r)t[b]=r,e.uniformArrayNamesById[b++]=m}}function $r(e,t){if(t=be(t),e=_.programs[e]){qr(e);var n=e.uniformLocsById,i=0,r=t,c=Qr(t);c>0&&(i=N9(t.slice(c+1))>>>0,r=t.slice(0,c));var l=e.uniformSizeAndIdsByName[r];if(l&&i<l[0]&&(i+=l[1],n[i]=n[i]||E.getUniformLocation(e,t)))return i}else _.recordError(1281);return-1}var M9=$r;function O(e){var t=E.currentProgram;if(t){var n=t.uniformLocsById[e];return typeof n=="number"&&(t.uniformLocsById[e]=n=E.getUniformLocation(t,t.uniformArrayNamesById[e]+(n>0?"["+n+"]":""))),n}else _.recordError(1282)}function Gn(e,t,n,i){if(!n){_.recordError(1281);return}e=_.programs[e],qr(e);var r=E.getUniform(e,O(t));if(typeof r=="number"||typeof r=="boolean")switch(i){case 0:W[n>>2]=r;break;case 2:x[n>>2]=r;break}else for(var c=0;c<r.length;c++)switch(i){case 0:W[n+c*4>>2]=r[c];break;case 2:x[n+c*4>>2]=r[c];break}}function ec(e,t,n){Gn(e,t,n,2)}var w9=ec;function tc(e,t,n){Gn(e,t,n,0)}var T9=tc;function j9(e,t,n){Gn(e,t,n,0)}var S9=j9;function Yn(e,t,n,i){if(!n){_.recordError(1281);return}_.currentContext.clientBuffers[e].enabled&&ee("glGetVertexAttrib*v on client-side array: not supported, bad data returned");var r=E.getVertexAttrib(e,t);if(t==34975)W[n>>2]=r&&r.name;else if(typeof r=="number"||typeof r=="boolean")switch(i){case 0:W[n>>2]=r;break;case 2:x[n>>2]=r;break;case 5:W[n>>2]=Math.fround(r);break}else for(var c=0;c<r.length;c++)switch(i){case 0:W[n+c*4>>2]=r[c];break;case 2:x[n+c*4>>2]=r[c];break;case 5:W[n+c*4>>2]=Math.fround(r[c]);break}}function nc(e,t,n){Yn(e,t,n,0)}var x9=nc,K9=nc,L9=K9;function ic(e,t,n){if(!n){_.recordError(1281);return}_.currentContext.clientBuffers[e].enabled&&ee("glGetVertexAttribPointer on client-side array: not supported, bad data returned"),W[n>>2]=E.getVertexAttribOffset(e,t)}var P9=ic;function rc(e,t,n){Yn(e,t,n,2)}var H9=rc;function cc(e,t,n){Yn(e,t,n,5)}var I9=cc;function lc(e,t){E.hint(e,t)}var z9=lc;function U9(e,t,n){for(var i=Mt[t],r=0;r<t;r++)i[r]=W[n+r*4>>2];E.invalidateFramebuffer(e,i)}var O9=U9;function Q9(e,t,n,i,r,c,l){for(var a=Mt[t],d=0;d<t;d++)a[d]=W[n+d*4>>2];E.invalidateSubFramebuffer(e,a,i,r,c,l)}var q9=Q9;function ac(e){var t=_.buffers[e];return t?E.isBuffer(t):0}var $9=ac;function dc(e){return E.isEnabled(e)}var es=dc;function oc(e){var t=_.framebuffers[e];return t?E.isFramebuffer(t):0}var ts=oc;function mc(e){return e=_.programs[e],e?E.isProgram(e):0}var ns=mc;function is(e){var t=_.queries[e];return t?E.isQuery(t):0}var rs=is;function cs(e){var t=_.queries[e];return t?E.disjointTimerQueryExt.isQueryEXT(t):0}var ls=cs;function uc(e){var t=_.renderbuffers[e];return t?E.isRenderbuffer(t):0}var as=uc;function ds(e){var t=_.samplers[e];return t?E.isSampler(t):0}var os=ds;function bc(e){var t=_.shaders[e];return t?E.isShader(t):0}var ms=bc;function us(e){return E.isSync(_.syncs[e])}var bs=us;function sc(e){var t=_.textures[e];return t?E.isTexture(t):0}var ss=sc;function ps(e){return E.isTransformFeedback(_.transformFeedbacks[e])}var Es=ps;function pc(e){var t=_.vaos[e];return t?E.isVertexArray(t):0}var Ds=pc,fs=pc,Bs=fs;function Ec(e){E.lineWidth(e)}var Cs=Ec;function Dc(e){e=_.programs[e],E.linkProgram(e),e.uniformLocsById=0,e.uniformSizeAndIdsByName={}}var _s=Dc;function Fs(e,t,n,i){if((i&33)!=0)return ee("glMapBufferRange access does not support MAP_READ or MAP_UNSYNCHRONIZED"),0;if((i&2)==0)return ee("glMapBufferRange access must include MAP_WRITE"),0;if((i&12)==0)return ee("glMapBufferRange access must include INVALIDATE_BUFFER or INVALIDATE_RANGE"),0;if(!hn(e))return _.recordError(1280),ee("GL_INVALID_ENUM in glMapBufferRange"),0;var r=_e(n);return r?(_.mappedBuffers[wt(e)]={offset:t,length:n,mem:r,access:i},r):0}var Zs=Fs;function Xs(){E.pauseTransformFeedback()}var Ws=Xs;function fc(e,t){e==3317&&(_.unpackAlignment=t),E.pixelStorei(e,t)}var ys=fc;function Bc(e,t){E.polygonOffset(e,t)}var hs=Bc;function Gs(e,t,n,i){_.recordError(1280)}var Ys=Gs;function Rs(e,t,n){_.recordError(1280)}var Vs=Rs;function gs(e,t){E.disjointTimerQueryExt.queryCounterEXT(_.queries[e],t)}var As=gs;function vs(e){E.readBuffer(e)}var Js=vs;function ks(e,t,n,i){function r(a,d){return a+d-1&-d}var c=e*n,l=r(c,i);return t*l}function Ns(e){var t={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return t[e-6402]||1}function rt(e){return e-=5120,e==0?ue:e==1?ie:e==2?Ye:e==4?W:e==6?x:e==5||e==28922||e==28520||e==30779||e==30782?U:bt}function ct(e){return 31-Math.clz32(e.BYTES_PER_ELEMENT)}function Rn(e,t,n,i,r,c){var l=rt(e),a=ct(l),d=1<<a,m=Ns(t)*d,b=ks(n,i,m,_.unpackAlignment);return l.subarray(r>>a,r+b>>a)}function Cc(e,t,n,i,r,c,l){if(_.currentContext.version>=2){if(E.currentPixelPackBufferBinding)E.readPixels(e,t,n,i,r,c,l);else{var a=rt(c);E.readPixels(e,t,n,i,r,c,a,l>>ct(a))}return}var d=Rn(c,r,n,i,l);if(!d){_.recordError(1280);return}E.readPixels(e,t,n,i,r,c,d)}var Ms=Cc;function _c(){}var ws=_c;function Fc(e,t,n,i){E.renderbufferStorage(e,t,n,i)}var Ts=Fc;function js(e,t,n,i,r){E.renderbufferStorageMultisample(e,t,n,i,r)}var Ss=js;function xs(){E.resumeTransformFeedback()}var Ks=xs;function Zc(e,t){E.sampleCoverage(e,!!t)}var Ls=Zc;function Ps(e,t,n){E.samplerParameterf(_.samplers[e],t,n)}var Hs=Ps;function Is(e,t,n){var i=x[n>>2];E.samplerParameterf(_.samplers[e],t,i)}var zs=Is;function Us(e,t,n){E.samplerParameteri(_.samplers[e],t,n)}var Os=Us;function Qs(e,t,n){var i=W[n>>2];E.samplerParameteri(_.samplers[e],t,i)}var qs=Qs;function Xc(e,t,n,i){E.scissor(e,t,n,i)}var $s=Xc;function Wc(e,t,n,i,r){_.recordError(1280)}var ep=Wc;function yc(e,t,n,i){var r=_.getSource(e,t,n,i);E.shaderSource(_.shaders[e],r)}var tp=yc;function hc(e,t,n){E.stencilFunc(e,t,n)}var np=hc;function Gc(e,t,n,i){E.stencilFuncSeparate(e,t,n,i)}var ip=Gc;function Yc(e){E.stencilMask(e)}var rp=Yc;function Rc(e,t){E.stencilMaskSeparate(e,t)}var cp=Rc;function Vc(e,t,n){E.stencilOp(e,t,n)}var lp=Vc;function gc(e,t,n,i){E.stencilOpSeparate(e,t,n,i)}var ap=gc;function Ac(e,t,n,i,r,c,l,a,d){if(_.currentContext.version>=2){if(E.currentPixelUnpackBufferBinding)E.texImage2D(e,t,n,i,r,c,l,a,d);else if(d){var m=rt(a);E.texImage2D(e,t,n,i,r,c,l,a,m,d>>ct(m))}else E.texImage2D(e,t,n,i,r,c,l,a,null);return}E.texImage2D(e,t,n,i,r,c,l,a,d?Rn(a,l,i,r,d):null)}var dp=Ac;function op(e,t,n,i,r,c,l,a,d,m){if(E.currentPixelUnpackBufferBinding)E.texImage3D(e,t,n,i,r,c,l,a,d,m);else if(m){var b=rt(d);E.texImage3D(e,t,n,i,r,c,l,a,d,b,m>>ct(b))}else E.texImage3D(e,t,n,i,r,c,l,a,d,null)}var mp=op;function vc(e,t,n){E.texParameterf(e,t,n)}var up=vc;function Jc(e,t,n){var i=x[n>>2];E.texParameterf(e,t,i)}var bp=Jc;function kc(e,t,n){E.texParameteri(e,t,n)}var sp=kc;function Nc(e,t,n){var i=W[n>>2];E.texParameteri(e,t,i)}var pp=Nc;function Ep(e,t,n,i,r){E.texStorage2D(e,t,n,i,r)}var Dp=Ep;function fp(e,t,n,i,r,c){E.texStorage3D(e,t,n,i,r,c)}var Bp=fp;function Mc(e,t,n,i,r,c,l,a,d){if(_.currentContext.version>=2){if(E.currentPixelUnpackBufferBinding)E.texSubImage2D(e,t,n,i,r,c,l,a,d);else if(d){var m=rt(a);E.texSubImage2D(e,t,n,i,r,c,l,a,m,d>>ct(m))}else E.texSubImage2D(e,t,n,i,r,c,l,a,null);return}var b=null;d&&(b=Rn(a,l,r,c,d)),E.texSubImage2D(e,t,n,i,r,c,l,a,b)}var Cp=Mc;function _p(e,t,n,i,r,c,l,a,d,m,b){if(E.currentPixelUnpackBufferBinding)E.texSubImage3D(e,t,n,i,r,c,l,a,d,m,b);else if(b){var p=rt(m);E.texSubImage3D(e,t,n,i,r,c,l,a,d,m,p,b>>ct(p))}else E.texSubImage3D(e,t,n,i,r,c,l,a,d,m,null)}var Fp=_p;function Zp(e,t,n,i){e=_.programs[e];for(var r=[],c=0;c<t;c++)r.push(be(W[n+c*4>>2]));E.transformFeedbackVaryings(e,r,i)}var Xp=Zp;function wc(e,t){E.uniform1f(O(e),t)}var Wp=wc,je=[];function Tc(e,t,n){if(_.currentContext.version>=2){t&&E.uniform1fv(O(e),x,n>>2,t);return}if(t<=288)for(var i=je[t-1],r=0;r<t;++r)i[r]=x[n+4*r>>2];else var i=x.subarray(n>>2,n+t*4>>2);E.uniform1fv(O(e),i)}var yp=Tc;function jc(e,t){E.uniform1i(O(e),t)}var hp=jc,Bt=[];function Sc(e,t,n){if(_.currentContext.version>=2){t&&E.uniform1iv(O(e),W,n>>2,t);return}if(t<=288)for(var i=Bt[t-1],r=0;r<t;++r)i[r]=W[n+4*r>>2];else var i=W.subarray(n>>2,n+t*4>>2);E.uniform1iv(O(e),i)}var Gp=Sc;function Yp(e,t){E.uniform1ui(O(e),t)}var Rp=Yp;function Vp(e,t,n){t&&E.uniform1uiv(O(e),U,n>>2,t)}var gp=Vp;function xc(e,t,n){E.uniform2f(O(e),t,n)}var Ap=xc;function Kc(e,t,n){if(_.currentContext.version>=2){t&&E.uniform2fv(O(e),x,n>>2,t*2);return}if(t<=144)for(var i=je[2*t-1],r=0;r<2*t;r+=2)i[r]=x[n+4*r>>2],i[r+1]=x[n+(4*r+4)>>2];else var i=x.subarray(n>>2,n+t*8>>2);E.uniform2fv(O(e),i)}var vp=Kc;function Lc(e,t,n){E.uniform2i(O(e),t,n)}var Jp=Lc;function Pc(e,t,n){if(_.currentContext.version>=2){t&&E.uniform2iv(O(e),W,n>>2,t*2);return}if(t<=144)for(var i=Bt[2*t-1],r=0;r<2*t;r+=2)i[r]=W[n+4*r>>2],i[r+1]=W[n+(4*r+4)>>2];else var i=W.subarray(n>>2,n+t*8>>2);E.uniform2iv(O(e),i)}var kp=Pc;function Np(e,t,n){E.uniform2ui(O(e),t,n)}var Mp=Np;function wp(e,t,n){t&&E.uniform2uiv(O(e),U,n>>2,t*2)}var Tp=wp;function Hc(e,t,n,i){E.uniform3f(O(e),t,n,i)}var jp=Hc;function Ic(e,t,n){if(_.currentContext.version>=2){t&&E.uniform3fv(O(e),x,n>>2,t*3);return}if(t<=96)for(var i=je[3*t-1],r=0;r<3*t;r+=3)i[r]=x[n+4*r>>2],i[r+1]=x[n+(4*r+4)>>2],i[r+2]=x[n+(4*r+8)>>2];else var i=x.subarray(n>>2,n+t*12>>2);E.uniform3fv(O(e),i)}var Sp=Ic;function zc(e,t,n,i){E.uniform3i(O(e),t,n,i)}var xp=zc;function Uc(e,t,n){if(_.currentContext.version>=2){t&&E.uniform3iv(O(e),W,n>>2,t*3);return}if(t<=96)for(var i=Bt[3*t-1],r=0;r<3*t;r+=3)i[r]=W[n+4*r>>2],i[r+1]=W[n+(4*r+4)>>2],i[r+2]=W[n+(4*r+8)>>2];else var i=W.subarray(n>>2,n+t*12>>2);E.uniform3iv(O(e),i)}var Kp=Uc;function Lp(e,t,n,i){E.uniform3ui(O(e),t,n,i)}var Pp=Lp;function Hp(e,t,n){t&&E.uniform3uiv(O(e),U,n>>2,t*3)}var Ip=Hp;function Oc(e,t,n,i,r){E.uniform4f(O(e),t,n,i,r)}var zp=Oc;function Qc(e,t,n){if(_.currentContext.version>=2){t&&E.uniform4fv(O(e),x,n>>2,t*4);return}if(t<=72){var i=je[4*t-1],r=x;n>>=2;for(var c=0;c<4*t;c+=4){var l=n+c;i[c]=r[l],i[c+1]=r[l+1],i[c+2]=r[l+2],i[c+3]=r[l+3]}}else var i=x.subarray(n>>2,n+t*16>>2);E.uniform4fv(O(e),i)}var Up=Qc;function qc(e,t,n,i,r){E.uniform4i(O(e),t,n,i,r)}var Op=qc;function $c(e,t,n){if(_.currentContext.version>=2){t&&E.uniform4iv(O(e),W,n>>2,t*4);return}if(t<=72)for(var i=Bt[4*t-1],r=0;r<4*t;r+=4)i[r]=W[n+4*r>>2],i[r+1]=W[n+(4*r+4)>>2],i[r+2]=W[n+(4*r+8)>>2],i[r+3]=W[n+(4*r+12)>>2];else var i=W.subarray(n>>2,n+t*16>>2);E.uniform4iv(O(e),i)}var Qp=$c;function qp(e,t,n,i,r){E.uniform4ui(O(e),t,n,i,r)}var $p=qp;function e0(e,t,n){t&&E.uniform4uiv(O(e),U,n>>2,t*4)}var t0=e0;function n0(e,t,n){e=_.programs[e],E.uniformBlockBinding(e,t,n)}var i0=n0;function el(e,t,n,i){if(_.currentContext.version>=2){t&&E.uniformMatrix2fv(O(e),!!n,x,i>>2,t*4);return}if(t<=72)for(var r=je[4*t-1],c=0;c<4*t;c+=4)r[c]=x[i+4*c>>2],r[c+1]=x[i+(4*c+4)>>2],r[c+2]=x[i+(4*c+8)>>2],r[c+3]=x[i+(4*c+12)>>2];else var r=x.subarray(i>>2,i+t*16>>2);E.uniformMatrix2fv(O(e),!!n,r)}var r0=el;function c0(e,t,n,i){t&&E.uniformMatrix2x3fv(O(e),!!n,x,i>>2,t*6)}var l0=c0;function a0(e,t,n,i){t&&E.uniformMatrix2x4fv(O(e),!!n,x,i>>2,t*8)}var d0=a0;function tl(e,t,n,i){if(_.currentContext.version>=2){t&&E.uniformMatrix3fv(O(e),!!n,x,i>>2,t*9);return}if(t<=32)for(var r=je[9*t-1],c=0;c<9*t;c+=9)r[c]=x[i+4*c>>2],r[c+1]=x[i+(4*c+4)>>2],r[c+2]=x[i+(4*c+8)>>2],r[c+3]=x[i+(4*c+12)>>2],r[c+4]=x[i+(4*c+16)>>2],r[c+5]=x[i+(4*c+20)>>2],r[c+6]=x[i+(4*c+24)>>2],r[c+7]=x[i+(4*c+28)>>2],r[c+8]=x[i+(4*c+32)>>2];else var r=x.subarray(i>>2,i+t*36>>2);E.uniformMatrix3fv(O(e),!!n,r)}var o0=tl;function m0(e,t,n,i){t&&E.uniformMatrix3x2fv(O(e),!!n,x,i>>2,t*6)}var u0=m0;function b0(e,t,n,i){t&&E.uniformMatrix3x4fv(O(e),!!n,x,i>>2,t*12)}var s0=b0;function nl(e,t,n,i){if(_.currentContext.version>=2){t&&E.uniformMatrix4fv(O(e),!!n,x,i>>2,t*16);return}if(t<=18){var r=je[16*t-1],c=x;i>>=2;for(var l=0;l<16*t;l+=16){var a=i+l;r[l]=c[a],r[l+1]=c[a+1],r[l+2]=c[a+2],r[l+3]=c[a+3],r[l+4]=c[a+4],r[l+5]=c[a+5],r[l+6]=c[a+6],r[l+7]=c[a+7],r[l+8]=c[a+8],r[l+9]=c[a+9],r[l+10]=c[a+10],r[l+11]=c[a+11],r[l+12]=c[a+12],r[l+13]=c[a+13],r[l+14]=c[a+14],r[l+15]=c[a+15]}}else var r=x.subarray(i>>2,i+t*64>>2);E.uniformMatrix4fv(O(e),!!n,r)}var p0=nl;function E0(e,t,n,i){t&&E.uniformMatrix4x2fv(O(e),!!n,x,i>>2,t*8)}var D0=E0;function f0(e,t,n,i){t&&E.uniformMatrix4x3fv(O(e),!!n,x,i>>2,t*12)}var B0=f0;function C0(e){if(!hn(e))return _.recordError(1280),ee("GL_INVALID_ENUM in glUnmapBuffer"),0;var t=wt(e),n=_.mappedBuffers[t];return n?(_.mappedBuffers[t]=null,n.access&16||(_.currentContext.version>=2?E.bufferSubData(e,n.offset,ie,n.mem,n.length):E.bufferSubData(e,n.offset,ie.subarray(n.mem,n.mem+n.length))),ve(n.mem),1):(_.recordError(1282),ee("buffer was never mapped in glUnmapBuffer"),0)}var _0=C0;function il(e){e=_.programs[e],E.useProgram(e),E.currentProgram=e}var F0=il;function rl(e){E.validateProgram(_.programs[e])}var Z0=rl;function cl(e,t){E.vertexAttrib1f(e,t)}var X0=cl;function ll(e,t){E.vertexAttrib1f(e,x[t>>2])}var W0=ll;function al(e,t,n){E.vertexAttrib2f(e,t,n)}var y0=al;function dl(e,t){E.vertexAttrib2f(e,x[t>>2],x[t+4>>2])}var h0=dl;function ol(e,t,n,i){E.vertexAttrib3f(e,t,n,i)}var G0=ol;function ml(e,t){E.vertexAttrib3f(e,x[t>>2],x[t+4>>2],x[t+8>>2])}var Y0=ml;function ul(e,t,n,i,r){E.vertexAttrib4f(e,t,n,i,r)}var R0=ul;function bl(e,t){E.vertexAttrib4f(e,x[t>>2],x[t+4>>2],x[t+8>>2],x[t+12>>2])}var V0=bl;function Ct(e,t){E.vertexAttribDivisor(e,t)}var g0=Ct,A0=Ct,v0=A0,J0=Ct,k0=J0,N0=Ct,M0=N0,w0=Ct,T0=w0;function j0(e,t,n,i,r){E.vertexAttribI4i(e,t,n,i,r)}var S0=j0;function x0(e,t){E.vertexAttribI4i(e,W[t>>2],W[t+4>>2],W[t+8>>2],W[t+12>>2])}var K0=x0;function L0(e,t,n,i,r){E.vertexAttribI4ui(e,t,n,i,r)}var P0=L0;function H0(e,t){E.vertexAttribI4ui(e,U[t>>2],U[t+4>>2],U[t+8>>2],U[t+12>>2])}var I0=H0;function z0(e,t,n,i,r){var c=_.currentContext.clientBuffers[e];if(!E.currentArrayBufferBinding){c.size=t,c.type=n,c.normalized=!1,c.stride=i,c.ptr=r,c.clientside=!0,c.vertexAttribPointerAdaptor=function(l,a,d,m,b,p){this.vertexAttribIPointer(l,a,d,b,p)};return}c.clientside=!1,E.vertexAttribIPointer(e,t,n,i,r)}var U0=z0;function sl(e,t,n,i,r,c){var l=_.currentContext.clientBuffers[e];if(!E.currentArrayBufferBinding){l.size=t,l.type=n,l.normalized=i,l.stride=r,l.ptr=c,l.clientside=!0,l.vertexAttribPointerAdaptor=function(a,d,m,b,p,F){this.vertexAttribPointer(a,d,m,b,p,F)};return}l.clientside=!1,E.vertexAttribPointer(e,t,n,!!i,r,c)}var O0=sl;function pl(e,t,n,i){E.viewport(e,t,n,i)}var Q0=pl;function q0(e,t,n,i){var r=Li(n,i);E.waitSync(_.syncs[e],t,r)}var $0=q0;function eE(e,t,n){ie.copyWithin(e,t,t+n)}function tE(e){var t=fe.buffer;try{return fe.grow(e-t.byteLength+65535>>>16),Kn(),1}catch{}}function nE(e){var t=ie.length;e=e>>>0;var n=Xi();if(e>n)return!1;let i=(d,m)=>d+(m-d%m)%m;for(var r=1;r<=4;r*=2){var c=t*(1+.2/r);c=Math.min(c,e+100663296);var l=Math.min(n,i(Math.max(e,c),65536)),a=tE(l);if(a)return!0}return!1}function iE(e,t,n){var i=Zi(e);return i?(i.width=t,i.height=n,0):-4}function El(e,t,n){Re[e>>3]=t.timeStamp;var i=e>>2;W[i+2]=t.screenX,W[i+3]=t.screenY,W[i+4]=t.clientX,W[i+5]=t.clientY,W[i+6]=t.ctrlKey,W[i+7]=t.shiftKey,W[i+8]=t.altKey,W[i+9]=t.metaKey,Ye[i*2+20]=t.button,Ye[i*2+21]=t.buttons,W[i+11]=t.movementX,W[i+12]=t.movementY;var r=Xn(n);W[i+13]=t.clientX-r.left,W[i+14]=t.clientY-r.top}function lt(e,t,n,i,r,c,l){K.mouseEvent||(K.mouseEvent=_e(72)),e=Me(e);var a=function(m=event){El(K.mouseEvent,m,e),D(i)(r,K.mouseEvent,t)&&m.preventDefault()},d={target:e,allowsDeferredCalls:c!="mousemove"&&c!="mouseenter"&&c!="mouseleave",eventTypeString:c,callbackfunc:i,handlerFunc:a,useCapture:n};K.registerOrRemoveHandler(d)}function rE(e,t,n,i,r){return lt(e,t,n,i,4,"click"),0}function cE(e,t,n,i,r){return lt(e,t,n,i,7,"dblclick"),0}function lE(e,t,n){return e=Me(e),e?(e.style.width=t+"px",e.style.height=n+"px",0):-4}function aE(e,t,n,i,r,c,l){K.focusEvent||(K.focusEvent=_e(256));var a=function(m=event){var b=K.getNodeNameForTarget(m.target),p=m.target.id?m.target.id:"",F=K.focusEvent;Ee(b,F+0,128),Ee(p,F+128,128),D(i)(r,F,t)&&m.preventDefault()},d={target:Me(e),eventTypeString:c,callbackfunc:i,handlerFunc:a,useCapture:n};K.registerOrRemoveHandler(d)}function dE(e,t,n,i,r){return aE(e,t,n,i,15,"focusout"),0}function Dl(e,t,n,i,r,c,l){K.keyEvent||(K.keyEvent=_e(176));var a=function(m){var b=K.keyEvent;Re[b>>3]=m.timeStamp;var p=b>>2;W[p+2]=m.location,W[p+3]=m.ctrlKey,W[p+4]=m.shiftKey,W[p+5]=m.altKey,W[p+6]=m.metaKey,W[p+7]=m.repeat,W[p+8]=m.charCode,W[p+9]=m.keyCode,W[p+10]=m.which,Ee(m.key||"",b+44,32),Ee(m.code||"",b+76,32),Ee(m.char||"",b+108,32),Ee(m.locale||"",b+140,32),D(i)(r,b,t)&&m.preventDefault()},d={target:Me(e),allowsDeferredCalls:!0,eventTypeString:c,callbackfunc:i,handlerFunc:a,useCapture:n};K.registerOrRemoveHandler(d)}function oE(e,t,n,i,r){return Dl(e,t,n,i,2,"keydown"),0}function mE(e,t,n,i,r){return Dl(e,t,n,i,3,"keyup"),0}function uE(e,t,n){var i=D(e);bi(i,t,n)}function bE(e,t,n,i,r){return lt(e,t,n,i,5,"mousedown"),0}function sE(e,t,n,i,r){return lt(e,t,n,i,33,"mouseenter"),0}function pE(e,t,n,i,r){return lt(e,t,n,i,8,"mousemove"),0}function EE(e,t,n,i,r){return lt(e,t,n,i,6,"mouseup"),0}function DE(e,t,n,i,r,c,l){K.uiEvent||(K.uiEvent=_e(36)),e=Me(e);var a=function(m=event){if(m.target==e){var b=document.body;if(!!b){var p=K.uiEvent;W[p>>2]=m.detail,W[p+4>>2]=b.clientWidth,W[p+8>>2]=b.clientHeight,W[p+12>>2]=innerWidth,W[p+16>>2]=innerHeight,W[p+20>>2]=outerWidth,W[p+24>>2]=outerHeight,W[p+28>>2]=pageXOffset,W[p+32>>2]=pageYOffset,D(i)(r,p,t)&&m.preventDefault()}}},d={target:e,eventTypeString:c,callbackfunc:i,handlerFunc:a,useCapture:n};K.registerOrRemoveHandler(d)}function fE(e,t,n,i,r){return DE(e,t,n,i,10,"resize"),0}function St(e,t,n,i,r,c,l){K.touchEvent||(K.touchEvent=_e(1696)),e=Me(e);var a=function(m){for(var b,p={},F=m.touches,y=0;y<F.length;++y)b=F[y],b.isChanged=b.onTarget=0,p[b.identifier]=b;for(var y=0;y<m.changedTouches.length;++y)b=m.changedTouches[y],b.isChanged=1,p[b.identifier]=b;for(var y=0;y<m.targetTouches.length;++y)p[m.targetTouches[y].identifier].onTarget=1;var G=K.touchEvent;Re[G>>3]=m.timeStamp;var g=G>>2;W[g+3]=m.ctrlKey,W[g+4]=m.shiftKey,W[g+5]=m.altKey,W[g+6]=m.metaKey,g+=7;var N=Xn(e),P=0;for(var y in p)if(b=p[y],W[g+0]=b.identifier,W[g+1]=b.screenX,W[g+2]=b.screenY,W[g+3]=b.clientX,W[g+4]=b.clientY,W[g+5]=b.pageX,W[g+6]=b.pageY,W[g+7]=b.isChanged,W[g+8]=b.onTarget,W[g+9]=b.clientX-N.left,W[g+10]=b.clientY-N.top,g+=13,++P>31)break;W[G+8>>2]=P,D(i)(r,G,t)&&m.preventDefault()},d={target:e,allowsDeferredCalls:c=="touchstart"||c=="touchend",eventTypeString:c,callbackfunc:i,handlerFunc:a,useCapture:n};K.registerOrRemoveHandler(d)}function BE(e,t,n,i,r){return St(e,t,n,i,25,"touchcancel"),0}function CE(e,t,n,i,r){return St(e,t,n,i,23,"touchend"),0}function _E(e,t,n,i,r){return St(e,t,n,i,24,"touchmove"),0}function FE(e,t,n,i,r){return St(e,t,n,i,22,"touchstart"),0}function ZE(e,t,n,i,r,c,l){K.wheelEvent||(K.wheelEvent=_e(104));var a=function(m=event){var b=K.wheelEvent;El(b,m,e),Re[b+72>>3]=m.deltaX,Re[b+80>>3]=m.deltaY,Re[b+88>>3]=m.deltaZ,W[b+96>>2]=m.deltaMode,D(i)(r,b,t)&&m.preventDefault()},d={target:e,allowsDeferredCalls:!0,eventTypeString:c,callbackfunc:i,handlerFunc:a,useCapture:n};K.registerOrRemoveHandler(d)}function XE(e,t,n,i,r){return e=Me(e),typeof e.onwheel<"u"?(ZE(e,t,n,i,9,"wheel"),0):-1}function WE(e,t){var n=_.getContext(e),i=be(t);i.startsWith("GL_")&&(i=i.substr(3)),i=="ANGLE_instanced_arrays"&&Ei(E),i=="OES_vertex_array_object"&&Di(E),i=="WEBGL_draw_buffers"&&fi(E),i=="WEBGL_draw_instanced_base_vertex_base_instance"&&Bi(E),i=="WEBGL_multi_draw_instanced_base_vertex_base_instance"&&Ci(E),i=="WEBGL_multi_draw"&&_i(E);var r=n.GLctx.getExtension(i);return!!r}var yE=["default","low-power","high-performance"];function hE(e,t){if(!t)return-5;if(e=_.contexts[e],!e)return-3;var n=e.GLctx;if(!n)return-3;n=n.getContextAttributes(),W[t>>2]=n.alpha,W[t+4>>2]=n.depth,W[t+8>>2]=n.stencil,W[t+12>>2]=n.antialias,W[t+16>>2]=n.premultipliedAlpha,W[t+20>>2]=n.preserveDrawingBuffer;var i=n.powerPreference&&yE.indexOf(n.powerPreference);return W[t+24>>2]=i,W[t+28>>2]=n.failIfMajorPerformanceCaveat,W[t+32>>2]=e.version,W[t+36>>2]=0,W[t+40>>2]=e.attributes.enableExtensionsByDefault,0}function GE(){return _.currentContext?_.currentContext.handle:0}var YE=GE,Vn={};function RE(){return A||"./this.program"}function _t(){if(!_t.strings){var e=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",t={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:e,_:RE()};for(var n in Vn)Vn[n]===void 0?delete t[n]:t[n]=Vn[n];var i=[];for(var n in t)i.push(n+"="+t[n]);_t.strings=i}return _t.strings}function VE(e,t){for(var n=0;n<e.length;++n)ue[t++>>0]=e.charCodeAt(n);ue[t>>0]=0}function gE(e,t){var n=0;return _t().forEach(function(i,r){var c=t+n;U[e+r*4>>2]=c,VE(i,c),n+=i.length+1}),0}function AE(e,t){var n=_t();U[e>>2]=n.length;var i=0;return n.forEach(function(r){i+=r.length+1}),U[t>>2]=i,0}function vE(e){try{var t=re.getStreamFromFD(e);return s.close(t),0}catch(n){if(typeof s>"u"||n.name!=="ErrnoError")throw n;return n.errno}}function JE(e,t,n,i){for(var r=0,c=0;c<n;c++){var l=U[t>>2],a=U[t+4>>2];t+=8;var d=s.read(e,ue,l,a,i);if(d<0)return-1;if(r+=d,d<a)break;typeof i<"u"&&(i+=d)}return r}function kE(e,t,n,i){try{var r=re.getStreamFromFD(e),c=JE(r,t,n);return U[i>>2]=c,0}catch(l){if(typeof s>"u"||l.name!=="ErrnoError")throw l;return l.errno}}function NE(e,t){return t+2097152>>>0<4194305-!!e?(e>>>0)+t*4294967296:NaN}function ME(e,t,n,i,r){try{var c=NE(t,n);if(isNaN(c))return 61;var l=re.getStreamFromFD(e);return s.llseek(l,c,i),me=[l.position>>>0,(I=l.position,+Math.abs(I)>=1?I>0?(Math.min(+Math.floor(I/4294967296),4294967295)|0)>>>0:~~+Math.ceil((I-+(~~I>>>0))/4294967296)>>>0:0)],W[r>>2]=me[0],W[r+4>>2]=me[1],l.getdents&&c===0&&i===0&&(l.getdents=null),0}catch(a){if(typeof s>"u"||a.name!=="ErrnoError")throw a;return a.errno}}function wE(e,t,n,i){for(var r=0,c=0;c<n;c++){var l=U[t>>2],a=U[t+4>>2];t+=8;var d=s.write(e,ue,l,a,i);if(d<0)return-1;r+=d,typeof i<"u"&&(i+=d)}return r}function TE(e,t,n,i){try{var r=re.getStreamFromFD(e),c=wE(r,t,n);return U[i>>2]=c,0}catch(l){if(typeof s>"u"||l.name!=="ErrnoError")throw l;return l.errno}}function jE(e){return e}function xt(e){return e%4===0&&(e%100!==0||e%400===0)}function SE(e,t){for(var n=0,i=0;i<=t;n+=e[i++]);return n}var fl=[31,29,31,30,31,30,31,31,30,31,30,31],Bl=[31,28,31,30,31,30,31,31,30,31,30,31];function xE(e,t){for(var n=new Date(e.getTime());t>0;){var i=xt(n.getFullYear()),r=n.getMonth(),c=(i?fl:Bl)[r];if(t>c-n.getDate())t-=c-n.getDate()+1,n.setDate(1),r<11?n.setMonth(r+1):(n.setMonth(0),n.setFullYear(n.getFullYear()+1));else return n.setDate(n.getDate()+t),n}return n}function KE(e,t){ue.set(e,t)}function LE(e,t,n,i){var r=W[i+40>>2],c={tm_sec:W[i>>2],tm_min:W[i+4>>2],tm_hour:W[i+8>>2],tm_mday:W[i+12>>2],tm_mon:W[i+16>>2],tm_year:W[i+20>>2],tm_wday:W[i+24>>2],tm_yday:W[i+28>>2],tm_isdst:W[i+32>>2],tm_gmtoff:W[i+36>>2],tm_zone:r?be(r):""},l=be(n),a={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var d in a)l=l.replace(new RegExp(d,"g"),a[d]);var m=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],b=["January","February","March","April","May","June","July","August","September","October","November","December"];function p(V,w,ce){for(var H=typeof V=="number"?V.toString():V||"";H.length<w;)H=ce[0]+H;return H}function F(V,w){return p(V,w,"0")}function y(V,w){function ce(oe){return oe<0?-1:oe>0?1:0}var H;return(H=ce(V.getFullYear()-w.getFullYear()))===0&&(H=ce(V.getMonth()-w.getMonth()))===0&&(H=ce(V.getDate()-w.getDate())),H}function G(V){switch(V.getDay()){case 0:return new Date(V.getFullYear()-1,11,29);case 1:return V;case 2:return new Date(V.getFullYear(),0,3);case 3:return new Date(V.getFullYear(),0,2);case 4:return new Date(V.getFullYear(),0,1);case 5:return new Date(V.getFullYear()-1,11,31);case 6:return new Date(V.getFullYear()-1,11,30)}}function g(V){var w=xE(new Date(V.tm_year+1900,0,1),V.tm_yday),ce=new Date(w.getFullYear(),0,4),H=new Date(w.getFullYear()+1,0,4),oe=G(ce),le=G(H);return y(oe,w)<=0?y(le,w)<=0?w.getFullYear()+1:w.getFullYear():w.getFullYear()-1}var N={"%a":function(V){return m[V.tm_wday].substring(0,3)},"%A":function(V){return m[V.tm_wday]},"%b":function(V){return b[V.tm_mon].substring(0,3)},"%B":function(V){return b[V.tm_mon]},"%C":function(V){var w=V.tm_year+1900;return F(w/100|0,2)},"%d":function(V){return F(V.tm_mday,2)},"%e":function(V){return p(V.tm_mday,2," ")},"%g":function(V){return g(V).toString().substring(2)},"%G":function(V){return g(V)},"%H":function(V){return F(V.tm_hour,2)},"%I":function(V){var w=V.tm_hour;return w==0?w=12:w>12&&(w-=12),F(w,2)},"%j":function(V){return F(V.tm_mday+SE(xt(V.tm_year+1900)?fl:Bl,V.tm_mon-1),3)},"%m":function(V){return F(V.tm_mon+1,2)},"%M":function(V){return F(V.tm_min,2)},"%n":function(){return`
|
|
530
|
-
`},"%p":function(V){return V.tm_hour>=0&&V.tm_hour<12?"AM":"PM"},"%S":function(V){return F(V.tm_sec,2)},"%t":function(){return" "},"%u":function(V){return V.tm_wday||7},"%U":function(V){var w=V.tm_yday+7-V.tm_wday;return F(Math.floor(w/7),2)},"%V":function(V){var w=Math.floor((V.tm_yday+7-(V.tm_wday+6)%7)/7);if((V.tm_wday+371-V.tm_yday-2)%7<=2&&w++,w){if(w==53){var H=(V.tm_wday+371-V.tm_yday)%7;H!=4&&(H!=3||!xt(V.tm_year))&&(w=1)}}else{w=52;var ce=(V.tm_wday+7-V.tm_yday-1)%7;(ce==4||ce==5&&xt(V.tm_year%400-1))&&w++}return F(w,2)},"%w":function(V){return V.tm_wday},"%W":function(V){var w=V.tm_yday+7-(V.tm_wday+6)%7;return F(Math.floor(w/7),2)},"%y":function(V){return(V.tm_year+1900).toString().substring(2)},"%Y":function(V){return V.tm_year+1900},"%z":function(V){var w=V.tm_gmtoff,ce=w>=0;return w=Math.abs(w)/60,w=w/60*100+w%60,(ce?"+":"-")+String("0000"+w).slice(-4)},"%Z":function(V){return V.tm_zone},"%%":function(){return"%"}};l=l.replace(/%%/g,"\0\0");for(var d in N)l.includes(d)&&(l=l.replace(new RegExp(d,"g"),N[d](c)));l=l.replace(/\0\0/g,"%");var P=kt(l,!1);return P.length>t?0:(KE(P,e),P.length-1)}function PE(e,t,n,i,r){return LE(e,t,n,i)}var Cl=function(e,t,n,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=s.nextInode++,this.name=t,this.mode=n,this.node_ops={},this.stream_ops={},this.rdev=i},Kt=365,Lt=146;Object.defineProperties(Cl.prototype,{read:{get:function(){return(this.mode&Kt)===Kt},set:function(e){e?this.mode|=Kt:this.mode&=~Kt}},write:{get:function(){return(this.mode&Lt)===Lt},set:function(e){e?this.mode|=Lt:this.mode&=~Lt}},isFolder:{get:function(){return s.isDir(this.mode)}},isDevice:{get:function(){return s.isChrdev(this.mode)}}}),s.FSNode=Cl,s.staticInit(),nd(),li=u.BindingError=fn(Error,"BindingError"),ai=u.InternalError=fn(Error,"InternalError"),md(),mi=u.UnboundTypeError=fn(Error,"UnboundTypeError"),u.requestFullscreen=function(t,n){Y.requestFullscreen(t,n)},u.requestAnimationFrame=function(t){Y.requestAnimationFrame(t)},u.setCanvasSize=function(t,n,i){Y.setCanvasSize(t,n,i)},u.pauseMainLoop=function(){Y.mainLoop.pause()},u.resumeMainLoop=function(){Y.mainLoop.resume()},u.getUserMedia=function(){Y.getUserMedia()},u.createContext=function(t,n,i,r){return Y.createContext(t,n,i,r)};for(var _l={},E,Ce=0;Ce<32;++Ce)Mt.push(new Array(Ce));for(var HE=new Float32Array(288),Ce=0;Ce<288;++Ce)je[Ce]=HE.subarray(0,Ce+1);for(var IE=new Int32Array(288),Ce=0;Ce<288;++Ce)Bt[Ce]=IE.subarray(0,Ce+1);var Fl={OSD_MemInfo_getModuleHeapLength:ya,__cxa_begin_catch:ga,__cxa_end_catch:va,__cxa_find_matching_catch_2:ka,__cxa_find_matching_catch_3:Na,__cxa_find_matching_catch_4:Ma,__cxa_find_matching_catch_5:wa,__cxa_rethrow:Ta,__cxa_throw:ja,__resumeException:Ja,__syscall_chmod:La,__syscall_faccessat:Pa,__syscall_fcntl64:Ia,__syscall_fstat64:za,__syscall_getdents64:Ua,__syscall_ioctl:Oa,__syscall_lstat64:Qa,__syscall_newfstatat:qa,__syscall_openat:$a,__syscall_stat64:ed,_embind_register_bigint:td,_embind_register_bool:ld,_embind_register_emval:ud,_embind_register_float:sd,_embind_register_function:Gd,_embind_register_integer:Rd,_embind_register_memory_view:Vd,_embind_register_std_string:gd,_embind_register_std_wstring:wd,_embind_register_void:Td,_emscripten_get_now_is_monotonic:Sd,_emscripten_throw_longjmp:xd,_mmap_js:Kd,_munmap_js:Ld,abort:Pd,eglBindAPI:zd,eglChooseConfig:Ud,eglCreateContext:Od,eglCreateWindowSurface:Qd,eglDestroyContext:qd,eglDestroySurface:$d,eglGetCurrentContext:eo,eglGetCurrentDisplay:to,eglGetCurrentSurface:no,eglGetDisplay:io,eglGetError:ro,eglInitialize:co,eglMakeCurrent:lo,eglQueryString:ao,eglQuerySurface:oo,eglSwapBuffers:mo,eglSwapInterval:uo,eglTerminate:bo,emscripten_asm_const_int:Eo,emscripten_async_call:Do,emscripten_async_wget:Co,emscripten_async_wget_data:_o,emscripten_cancel_main_loop:Fo,emscripten_date_now:Zo,emscripten_get_callstack:yo,emscripten_get_canvas_element_size:Go,emscripten_get_device_pixel_ratio:Yo,emscripten_get_element_css_size:Ro,emscripten_get_heap_max:Vo,emscripten_get_now:Et,emscripten_get_preloaded_image_data:go,emscripten_glActiveTexture:Ao,emscripten_glAttachShader:vo,emscripten_glBeginQuery:ko,emscripten_glBeginQueryEXT:Mo,emscripten_glBeginTransformFeedback:To,emscripten_glBindAttribLocation:jo,emscripten_glBindBuffer:So,emscripten_glBindBufferBase:Ko,emscripten_glBindBufferRange:Po,emscripten_glBindFramebuffer:Ho,emscripten_glBindRenderbuffer:Io,emscripten_glBindSampler:Uo,emscripten_glBindTexture:Oo,emscripten_glBindTransformFeedback:qo,emscripten_glBindVertexArray:$o,emscripten_glBindVertexArrayOES:tm,emscripten_glBlendColor:nm,emscripten_glBlendEquation:im,emscripten_glBlendEquationSeparate:rm,emscripten_glBlendFunc:cm,emscripten_glBlendFuncSeparate:lm,emscripten_glBlitFramebuffer:dm,emscripten_glBufferData:om,emscripten_glBufferSubData:mm,emscripten_glCheckFramebufferStatus:um,emscripten_glClear:bm,emscripten_glClearBufferfi:pm,emscripten_glClearBufferfv:Dm,emscripten_glClearBufferiv:Bm,emscripten_glClearBufferuiv:_m,emscripten_glClearColor:Fm,emscripten_glClearDepthf:Zm,emscripten_glClearStencil:Xm,emscripten_glClientWaitSync:ym,emscripten_glColorMask:hm,emscripten_glCompileShader:Gm,emscripten_glCompressedTexImage2D:Ym,emscripten_glCompressedTexImage3D:Vm,emscripten_glCompressedTexSubImage2D:gm,emscripten_glCompressedTexSubImage3D:vm,emscripten_glCopyBufferSubData:km,emscripten_glCopyTexImage2D:Nm,emscripten_glCopyTexSubImage2D:Mm,emscripten_glCopyTexSubImage3D:Tm,emscripten_glCreateProgram:jm,emscripten_glCreateShader:Sm,emscripten_glCullFace:xm,emscripten_glDeleteBuffers:Km,emscripten_glDeleteFramebuffers:Lm,emscripten_glDeleteProgram:Pm,emscripten_glDeleteQueries:Im,emscripten_glDeleteQueriesEXT:Um,emscripten_glDeleteRenderbuffers:Om,emscripten_glDeleteSamplers:qm,emscripten_glDeleteShader:$m,emscripten_glDeleteSync:tu,emscripten_glDeleteTextures:nu,emscripten_glDeleteTransformFeedbacks:ru,emscripten_glDeleteVertexArrays:cu,emscripten_glDeleteVertexArraysOES:au,emscripten_glDepthFunc:du,emscripten_glDepthMask:ou,emscripten_glDepthRangef:mu,emscripten_glDetachShader:uu,emscripten_glDisable:bu,emscripten_glDisableVertexAttribArray:su,emscripten_glDrawArrays:pu,emscripten_glDrawArraysInstanced:Eu,emscripten_glDrawArraysInstancedANGLE:fu,emscripten_glDrawArraysInstancedARB:Cu,emscripten_glDrawArraysInstancedEXT:Fu,emscripten_glDrawArraysInstancedNV:Xu,emscripten_glDrawBuffers:Wu,emscripten_glDrawBuffersEXT:hu,emscripten_glDrawBuffersWEBGL:Yu,emscripten_glDrawElements:Ru,emscripten_glDrawElementsInstanced:Vu,emscripten_glDrawElementsInstancedANGLE:Au,emscripten_glDrawElementsInstancedARB:Ju,emscripten_glDrawElementsInstancedEXT:Nu,emscripten_glDrawElementsInstancedNV:wu,emscripten_glDrawRangeElements:ju,emscripten_glEnable:Su,emscripten_glEnableVertexAttribArray:xu,emscripten_glEndQuery:Lu,emscripten_glEndQueryEXT:Hu,emscripten_glEndTransformFeedback:zu,emscripten_glFenceSync:Ou,emscripten_glFinish:Qu,emscripten_glFlush:qu,emscripten_glFlushMappedBufferRange:eb,emscripten_glFramebufferRenderbuffer:tb,emscripten_glFramebufferTexture2D:nb,emscripten_glFramebufferTextureLayer:rb,emscripten_glFrontFace:cb,emscripten_glGenBuffers:lb,emscripten_glGenFramebuffers:ab,emscripten_glGenQueries:ob,emscripten_glGenQueriesEXT:ub,emscripten_glGenRenderbuffers:bb,emscripten_glGenSamplers:pb,emscripten_glGenTextures:Eb,emscripten_glGenTransformFeedbacks:fb,emscripten_glGenVertexArrays:Bb,emscripten_glGenVertexArraysOES:_b,emscripten_glGenerateMipmap:Fb,emscripten_glGetActiveAttrib:Zb,emscripten_glGetActiveUniform:Xb,emscripten_glGetActiveUniformBlockName:yb,emscripten_glGetActiveUniformBlockiv:Gb,emscripten_glGetActiveUniformsiv:Rb,emscripten_glGetAttachedShaders:Vb,emscripten_glGetAttribLocation:gb,emscripten_glGetBooleanv:Ab,emscripten_glGetBufferParameteri64v:Jb,emscripten_glGetBufferParameteriv:kb,emscripten_glGetBufferPointerv:Mb,emscripten_glGetError:wb,emscripten_glGetFloatv:Tb,emscripten_glGetFragDataLocation:Sb,emscripten_glGetFramebufferAttachmentParameteriv:xb,emscripten_glGetInteger64i_v:Lb,emscripten_glGetInteger64v:Hb,emscripten_glGetIntegeri_v:zb,emscripten_glGetIntegerv:Ub,emscripten_glGetInternalformativ:Qb,emscripten_glGetProgramBinary:$b,emscripten_glGetProgramInfoLog:e9,emscripten_glGetProgramiv:t9,emscripten_glGetQueryObjecti64vEXT:n9,emscripten_glGetQueryObjectivEXT:i9,emscripten_glGetQueryObjectui64vEXT:c9,emscripten_glGetQueryObjectuiv:a9,emscripten_glGetQueryObjectuivEXT:o9,emscripten_glGetQueryiv:u9,emscripten_glGetQueryivEXT:s9,emscripten_glGetRenderbufferParameteriv:p9,emscripten_glGetSamplerParameterfv:D9,emscripten_glGetSamplerParameteriv:B9,emscripten_glGetShaderInfoLog:C9,emscripten_glGetShaderPrecisionFormat:_9,emscripten_glGetShaderSource:F9,emscripten_glGetShaderiv:Z9,emscripten_glGetString:X9,emscripten_glGetStringi:y9,emscripten_glGetSynciv:G9,emscripten_glGetTexParameterfv:Y9,emscripten_glGetTexParameteriv:R9,emscripten_glGetTransformFeedbackVarying:g9,emscripten_glGetUniformBlockIndex:v9,emscripten_glGetUniformIndices:k9,emscripten_glGetUniformLocation:M9,emscripten_glGetUniformfv:w9,emscripten_glGetUniformiv:T9,emscripten_glGetUniformuiv:S9,emscripten_glGetVertexAttribIiv:x9,emscripten_glGetVertexAttribIuiv:L9,emscripten_glGetVertexAttribPointerv:P9,emscripten_glGetVertexAttribfv:H9,emscripten_glGetVertexAttribiv:I9,emscripten_glHint:z9,emscripten_glInvalidateFramebuffer:O9,emscripten_glInvalidateSubFramebuffer:q9,emscripten_glIsBuffer:$9,emscripten_glIsEnabled:es,emscripten_glIsFramebuffer:ts,emscripten_glIsProgram:ns,emscripten_glIsQuery:rs,emscripten_glIsQueryEXT:ls,emscripten_glIsRenderbuffer:as,emscripten_glIsSampler:os,emscripten_glIsShader:ms,emscripten_glIsSync:bs,emscripten_glIsTexture:ss,emscripten_glIsTransformFeedback:Es,emscripten_glIsVertexArray:Ds,emscripten_glIsVertexArrayOES:Bs,emscripten_glLineWidth:Cs,emscripten_glLinkProgram:_s,emscripten_glMapBufferRange:Zs,emscripten_glPauseTransformFeedback:Ws,emscripten_glPixelStorei:ys,emscripten_glPolygonOffset:hs,emscripten_glProgramBinary:Ys,emscripten_glProgramParameteri:Vs,emscripten_glQueryCounterEXT:As,emscripten_glReadBuffer:Js,emscripten_glReadPixels:Ms,emscripten_glReleaseShaderCompiler:ws,emscripten_glRenderbufferStorage:Ts,emscripten_glRenderbufferStorageMultisample:Ss,emscripten_glResumeTransformFeedback:Ks,emscripten_glSampleCoverage:Ls,emscripten_glSamplerParameterf:Hs,emscripten_glSamplerParameterfv:zs,emscripten_glSamplerParameteri:Os,emscripten_glSamplerParameteriv:qs,emscripten_glScissor:$s,emscripten_glShaderBinary:ep,emscripten_glShaderSource:tp,emscripten_glStencilFunc:np,emscripten_glStencilFuncSeparate:ip,emscripten_glStencilMask:rp,emscripten_glStencilMaskSeparate:cp,emscripten_glStencilOp:lp,emscripten_glStencilOpSeparate:ap,emscripten_glTexImage2D:dp,emscripten_glTexImage3D:mp,emscripten_glTexParameterf:up,emscripten_glTexParameterfv:bp,emscripten_glTexParameteri:sp,emscripten_glTexParameteriv:pp,emscripten_glTexStorage2D:Dp,emscripten_glTexStorage3D:Bp,emscripten_glTexSubImage2D:Cp,emscripten_glTexSubImage3D:Fp,emscripten_glTransformFeedbackVaryings:Xp,emscripten_glUniform1f:Wp,emscripten_glUniform1fv:yp,emscripten_glUniform1i:hp,emscripten_glUniform1iv:Gp,emscripten_glUniform1ui:Rp,emscripten_glUniform1uiv:gp,emscripten_glUniform2f:Ap,emscripten_glUniform2fv:vp,emscripten_glUniform2i:Jp,emscripten_glUniform2iv:kp,emscripten_glUniform2ui:Mp,emscripten_glUniform2uiv:Tp,emscripten_glUniform3f:jp,emscripten_glUniform3fv:Sp,emscripten_glUniform3i:xp,emscripten_glUniform3iv:Kp,emscripten_glUniform3ui:Pp,emscripten_glUniform3uiv:Ip,emscripten_glUniform4f:zp,emscripten_glUniform4fv:Up,emscripten_glUniform4i:Op,emscripten_glUniform4iv:Qp,emscripten_glUniform4ui:$p,emscripten_glUniform4uiv:t0,emscripten_glUniformBlockBinding:i0,emscripten_glUniformMatrix2fv:r0,emscripten_glUniformMatrix2x3fv:l0,emscripten_glUniformMatrix2x4fv:d0,emscripten_glUniformMatrix3fv:o0,emscripten_glUniformMatrix3x2fv:u0,emscripten_glUniformMatrix3x4fv:s0,emscripten_glUniformMatrix4fv:p0,emscripten_glUniformMatrix4x2fv:D0,emscripten_glUniformMatrix4x3fv:B0,emscripten_glUnmapBuffer:_0,emscripten_glUseProgram:F0,emscripten_glValidateProgram:Z0,emscripten_glVertexAttrib1f:X0,emscripten_glVertexAttrib1fv:W0,emscripten_glVertexAttrib2f:y0,emscripten_glVertexAttrib2fv:h0,emscripten_glVertexAttrib3f:G0,emscripten_glVertexAttrib3fv:Y0,emscripten_glVertexAttrib4f:R0,emscripten_glVertexAttrib4fv:V0,emscripten_glVertexAttribDivisor:g0,emscripten_glVertexAttribDivisorANGLE:v0,emscripten_glVertexAttribDivisorARB:k0,emscripten_glVertexAttribDivisorEXT:M0,emscripten_glVertexAttribDivisorNV:T0,emscripten_glVertexAttribI4i:S0,emscripten_glVertexAttribI4iv:K0,emscripten_glVertexAttribI4ui:P0,emscripten_glVertexAttribI4uiv:I0,emscripten_glVertexAttribIPointer:U0,emscripten_glVertexAttribPointer:O0,emscripten_glViewport:Q0,emscripten_glWaitSync:$0,emscripten_memcpy_big:eE,emscripten_resize_heap:nE,emscripten_set_canvas_element_size:iE,emscripten_set_click_callback_on_thread:rE,emscripten_set_dblclick_callback_on_thread:cE,emscripten_set_element_css_size:lE,emscripten_set_focusout_callback_on_thread:dE,emscripten_set_keydown_callback_on_thread:oE,emscripten_set_keyup_callback_on_thread:mE,emscripten_set_main_loop:uE,emscripten_set_mousedown_callback_on_thread:bE,emscripten_set_mouseenter_callback_on_thread:sE,emscripten_set_mousemove_callback_on_thread:pE,emscripten_set_mouseup_callback_on_thread:EE,emscripten_set_resize_callback_on_thread:fE,emscripten_set_touchcancel_callback_on_thread:BE,emscripten_set_touchend_callback_on_thread:CE,emscripten_set_touchmove_callback_on_thread:_E,emscripten_set_touchstart_callback_on_thread:FE,emscripten_set_wheel_callback_on_thread:XE,emscripten_webgl_enable_extension:WE,emscripten_webgl_get_context_attributes:hE,emscripten_webgl_get_current_context:YE,environ_get:gE,environ_sizes_get:AE,exit:pi,fd_close:vE,fd_read:kE,fd_seek:ME,fd_write:TE,glActiveTexture:Wi,glAttachShader:yi,glBindAttribLocation:hi,glBindBuffer:Gi,glBindFramebuffer:Yi,glBindRenderbuffer:Ri,glBindTexture:Vi,glBlendColor:Ai,glBlendEquation:vi,glBlendEquationSeparate:Ji,glBlendFunc:ki,glBlendFuncSeparate:Ni,glBufferData:Mi,glBufferSubData:wi,glCheckFramebufferStatus:Ti,glClear:ji,glClearColor:Si,glClearDepthf:xi,glClearStencil:Ki,glColorMask:Pi,glCompileShader:Hi,glCompressedTexImage2D:Ii,glCompressedTexSubImage2D:zi,glCopyTexImage2D:Ui,glCopyTexSubImage2D:Oi,glCreateProgram:Qi,glCreateShader:qi,glCullFace:$i,glDeleteBuffers:er,glDeleteFramebuffers:tr,glDeleteProgram:nr,glDeleteRenderbuffers:ir,glDeleteShader:rr,glDeleteTextures:cr,glDepthFunc:ar,glDepthMask:dr,glDepthRangef:or,glDetachShader:mr,glDisable:ur,glDisableVertexAttribArray:br,glDrawArrays:sr,glDrawElements:yn,glEnable:pr,glEnableVertexAttribArray:Er,glFinish:Dr,glFlush:fr,glFramebufferRenderbuffer:Br,glFramebufferTexture2D:Cr,glFrontFace:_r,glGenBuffers:Fr,glGenFramebuffers:Zr,glGenRenderbuffers:Xr,glGenTextures:Wr,glGenerateMipmap:hr,glGetActiveAttrib:Yr,glGetActiveUniform:Rr,glGetAttachedShaders:Vr,glGetAttribLocation:gr,glGetBooleanv:Ar,glGetBufferParameteriv:vr,glGetError:Jr,glGetFloatv:kr,glGetFramebufferAttachmentParameteriv:Nr,glGetIntegerv:wr,glGetProgramInfoLog:Tr,glGetProgramiv:jr,glGetRenderbufferParameteriv:Kr,glGetShaderInfoLog:Lr,glGetShaderPrecisionFormat:Pr,glGetShaderSource:Hr,glGetShaderiv:Ir,glGetString:zr,glGetTexParameterfv:Ur,glGetTexParameteriv:Or,glGetUniformLocation:$r,glGetUniformfv:ec,glGetUniformiv:tc,glGetVertexAttribPointerv:ic,glGetVertexAttribfv:rc,glGetVertexAttribiv:cc,glHint:lc,glIsBuffer:ac,glIsEnabled:dc,glIsFramebuffer:oc,glIsProgram:mc,glIsRenderbuffer:uc,glIsShader:bc,glIsTexture:sc,glLineWidth:Ec,glLinkProgram:Dc,glPixelStorei:fc,glPolygonOffset:Bc,glReadPixels:Cc,glReleaseShaderCompiler:_c,glRenderbufferStorage:Fc,glSampleCoverage:Zc,glScissor:Xc,glShaderBinary:Wc,glShaderSource:yc,glStencilFunc:hc,glStencilFuncSeparate:Gc,glStencilMask:Yc,glStencilMaskSeparate:Rc,glStencilOp:Vc,glStencilOpSeparate:gc,glTexImage2D:Ac,glTexParameterf:vc,glTexParameterfv:Jc,glTexParameteri:kc,glTexParameteriv:Nc,glTexSubImage2D:Mc,glUniform1f:wc,glUniform1fv:Tc,glUniform1i:jc,glUniform1iv:Sc,glUniform2f:xc,glUniform2fv:Kc,glUniform2i:Lc,glUniform2iv:Pc,glUniform3f:Hc,glUniform3fv:Ic,glUniform3i:zc,glUniform3iv:Uc,glUniform4f:Oc,glUniform4fv:Qc,glUniform4i:qc,glUniform4iv:$c,glUniformMatrix2fv:el,glUniformMatrix3fv:tl,glUniformMatrix4fv:nl,glUseProgram:il,glValidateProgram:rl,glVertexAttrib1f:cl,glVertexAttrib1fv:ll,glVertexAttrib2f:al,glVertexAttrib2fv:dl,glVertexAttrib3f:ol,glVertexAttrib3fv:ml,glVertexAttrib4f:ul,glVertexAttrib4fv:bl,glVertexAttribPointer:sl,glViewport:pl,invoke_d:ef,invoke_dd:ND,invoke_ddd:MD,invoke_dddd:L5,invoke_di:YD,invoke_did:gf,invoke_didd:U5,invoke_diddd:af,invoke_diddi:pf,invoke_didi:P5,invoke_dii:ID,invoke_diid:D5,invoke_diiddd:f5,invoke_diiddi:IC,invoke_diii:uf,invoke_diiii:RB,invoke_diiiii:_B,invoke_diiiiii:XB,invoke_diiiiiii:fC,invoke_fiii:_D,invoke_i:QE,invoke_iddid:J5,invoke_iddiiiiii:xC,invoke_idi:N5,invoke_idiiiii:qB,invoke_ii:OE,invoke_iid:ZD,invoke_iidd:o5,invoke_iiddd:Ff,invoke_iiddddd:f2,invoke_iiddddddddddddii:l5,invoke_iiddddddddiii:yB,invoke_iiddddddiiii:b2,invoke_iiddddi:GB,invoke_iiddddii:yC,invoke_iidddi:$D,invoke_iidddidd:oC,invoke_iidddii:jD,invoke_iidddiii:UD,invoke_iiddi:m5,invoke_iiddid:s2,invoke_iiddii:SD,invoke_iiddiid:o2,invoke_iiddiiiii:a2,invoke_iidi:mf,invoke_iidid:R5,invoke_iidii:LD,invoke_iidiiddiid:XC,invoke_iidiii:HD,invoke_iidiiii:JD,invoke_iif:CD,invoke_iii:$E,invoke_iiid:OD,invoke_iiidd:Vf,invoke_iiiddd:eB,invoke_iiidddd:bB,invoke_iiidddddd:k5,invoke_iiiddddi:Z5,invoke_iiiddddidd:Df,invoke_iiiddddii:lf,invoke_iiidddi:cB,invoke_iiidddid:E2,invoke_iiidddii:tf,invoke_iiidddiid:jC,invoke_iiiddi:Of,invoke_iiiddid:i2,invoke_iiiddidd:C5,invoke_iiiddidddd:wC,invoke_iiiddii:Jf,invoke_iiiddiiii:RC,invoke_iiidi:Bf,invoke_iiidid:V5,invoke_iiidii:lB,invoke_iiidiid:h5,invoke_iiidiii:zD,invoke_iiidiiiii:Q5,invoke_iiii:qE,invoke_iiiid:wD,invoke_iiiidd:$5,invoke_iiiiddd:If,invoke_iiiidddd:K5,invoke_iiiidddddd:Y5,invoke_iiiiddddddi:eC,invoke_iiiidddi:BB,invoke_iiiiddi:Wf,invoke_iiiiddii:KD,invoke_iiiiddiii:CC,invoke_iiiiddiiii:sB,invoke_iiiidi:g5,invoke_iiiidii:vB,invoke_iiiidiii:QD,invoke_iiiidiiiii:xB,invoke_iiiif:XD,invoke_iiiii:zE,invoke_iiiiid:s5,invoke_iiiiiddd:TC,invoke_iiiiidddd:n5,invoke_iiiiiddi:Xf,invoke_iiiiidi:z5,invoke_iiiiidii:$B,invoke_iiiiidiidd:uC,invoke_iiiiidiiiiii:rC,invoke_iiiiii:nD,invoke_iiiiiid:Lf,invoke_iiiiiidd:I5,invoke_iiiiiidddd:a5,invoke_iiiiiiddiddiii:p5,invoke_iiiiiiddiiiii:bC,invoke_iiiiiidi:Yf,invoke_iiiiiidii:xD,invoke_iiiiiidiiidd:lC,invoke_iiiiiii:lD,invoke_iiiiiiid:E5,invoke_iiiiiiidddiiddi:c2,invoke_iiiiiiiddi:iC,invoke_iiiiiiii:bD,invoke_iiiiiiiidd:HB,invoke_iiiiiiiidddddddddiiddii:UB,invoke_iiiiiiiidddddddiii:hB,invoke_iiiiiiiiddi:CB,invoke_iiiiiiiiddiiii:gC,invoke_iiiiiiiiddiiiii:YC,invoke_iiiiiiiifiii:iD,invoke_iiiiiiiii:hf,invoke_iiiiiiiiid:DB,invoke_iiiiiiiiidi:_2,invoke_iiiiiiiiii:q5,invoke_iiiiiiiiiiddidd:ZB,invoke_iiiiiiiiiii:Kf,invoke_iiiiiiiiiiidi:mC,invoke_iiiiiiiiiiii:LC,invoke_iiiiiiiiiiiid:Z2,invoke_iiiiiiiiiiiiid:t2,invoke_iiiiiiiiiiiiii:PC,invoke_iiiiiiiiiiiiiii:A5,invoke_iiji:V2,invoke_v:aD,invoke_vd:yD,invoke_vddddiiiiiiiiiiii:UC,invoke_vdddii:mB,invoke_vdddiii:WC,invoke_vdddiiii:hC,invoke_vddi:oB,invoke_vddii:uB,invoke_vddiii:y2,invoke_vddiiii:PD,invoke_vddiiiiiii:zC,invoke_vddiiiiiiiiiiiiiii:OC,invoke_vddiiiiiiiiiiiiiiiii:QC,invoke_vddiiiiiiiiiiiiiiiiiiii:HC,invoke_vddiiiiiiiiiiiiiiiiiiiiiiii:qC,invoke_vdi:EB,invoke_vdiddddi:aB,invoke_vdiddii:jB,invoke_vdiddiiii:fB,invoke_vdidii:rf,invoke_vdiii:X5,invoke_vdiiii:kC,invoke_vdiiiii:NC,invoke_vdiiiiiiii:VC,invoke_vdiiiiiiiii:vC,invoke_vdiiiiiiiiii:JC,invoke_vdiiiiiiiiiii:W2,invoke_vffff:hD,invoke_vi:UE,invoke_vid:FD,invoke_vidd:VD,invoke_viddd:Af,invoke_vidddd:kD,invoke_vidddddd:TD,invoke_viddddddd:D2,invoke_vidddddddddddd:pC,invoke_vidddddddii:p2,invoke_vidddddi:nB,invoke_viddddii:FC,invoke_viddddiiii:r2,invoke_vidddi:tB,invoke_vidddidddddd:$f,invoke_vidddii:kB,invoke_vidddiiidi:ZC,invoke_viddi:Rf,invoke_viddid:KB,invoke_viddidd:LB,invoke_viddidddiiii:B5,invoke_viddii:yf,invoke_viddiii:zf,invoke_viddiiii:W5,invoke_viddiiiiii:Sf,invoke_viddiiiiiiiiii:m2,invoke_vidfdfii:Pf,invoke_vidi:Zf,invoke_vidid:nf,invoke_vididd:x5,invoke_vididdi:zB,invoke_vididi:IB,invoke_vidii:bf,invoke_vidiiddddii:_C,invoke_vidiidii:y5,invoke_vidiii:AD,invoke_vidiiidi:G5,invoke_vidiiii:H5,invoke_vidiiiiidd:F2,invoke_vidiiiiii:sC,invoke_vif:BD,invoke_vii:tD,invoke_viid:RD,invoke_viidd:gD,invoke_viiddd:sf,invoke_viidddd:F5,invoke_viidddddd:O5,invoke_viidddddddd:aC,invoke_viidddddddiiii:OB,invoke_viiddddi:vD,invoke_viiddddidd:v5,invoke_viidddi:dB,invoke_viidddidi:ff,invoke_viidddii:MC,invoke_viiddi:vf,invoke_viiddidd:rB,invoke_viiddii:jf,invoke_viiddiii:S5,invoke_viiddiiii:u2,invoke_viiddiiiiii:h2,invoke_viiddiiiiiiii:d2,invoke_viidi:fD,invoke_viidid:Tf,invoke_viididd:qf,invoke_viidii:df,invoke_viidiii:Cf,invoke_viidiiid:BC,invoke_viidiiii:of,invoke_viidiiiii:AC,invoke_viif:w5,invoke_viiffffi:DD,invoke_viifi:ED,invoke_viifiii:pD,invoke_viii:eD,invoke_viiid:Mf,invoke_viiidd:Ef,invoke_viiiddd:TB,invoke_viiidddd:JB,invoke_viiiddddi:GC,invoke_viiiddi:kf,invoke_viiiddidi:Gf,invoke_viiiddiiii:pB,invoke_viiiddiiiiiiiiiiiiii:l2,invoke_viiidi:WB,invoke_viiidid:iB,invoke_viiidii:NB,invoke_viiidiii:qD,invoke_viiidiiii:tC,invoke_viiidiiiii:n2,invoke_viiidiiiiii:cf,invoke_viiifiiiii:GD,invoke_viiii:rD,invoke_viiiid:xf,invoke_viiiidd:j5,invoke_viiiidddd:Hf,invoke_viiiiddddd:KC,invoke_viiiidddddd:SC,invoke_viiiidddi:Nf,invoke_viiiiddiiid:_f,invoke_viiiidii:YB,invoke_viiiidiii:AB,invoke_viiiii:sD,invoke_viiiiid:wf,invoke_viiiiidd:t5,invoke_viiiiidddd:Qf,invoke_viiiiidddddd:gB,invoke_viiiiidddddddd:cC,invoke_viiiiiddddi:nC,invoke_viiiiiddi:wB,invoke_viiiiiddidd:_5,invoke_viiiiiddiii:VB,invoke_viiiiiddiiii:MB,invoke_viiiiidi:M5,invoke_viiiiidii:DC,invoke_viiiiii:cD,invoke_viiiiiid:T5,invoke_viiiiiidddi:dC,invoke_viiiiiiddi:B2,invoke_viiiiiiddiii:X2,invoke_viiiiiiddiiii:G2,invoke_viiiiiidii:EC,invoke_viiiiiidiidid:SB,invoke_viiiiiii:dD,invoke_viiiiiiif:WD,invoke_viiiiiiii:oD,invoke_viiiiiiiid:u5,invoke_viiiiiiiiddi:QB,invoke_viiiiiiiii:mD,invoke_viiiiiiiiid:PB,invoke_viiiiiiiiiddi:FB,invoke_viiiiiiiiii:uD,invoke_viiiiiiiiiid:b5,invoke_viiiiiiiiiidfdf:d5,invoke_viiiiiiiiiii:i5,invoke_viiiiiiiiiiidd:e5,invoke_viiiiiiiiiiidi:C2,invoke_viiiiiiiiiiiidi:e2,invoke_viiiiiiiiiiiidii:$C,invoke_viiiiiiiiiiiii:Uf,invoke_viiiiiiiiiiiiiiiiiiiiiiiiiiii:r5,invoke_viiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii:c5,invoke_viiiij:Y2,invoke_viiiiji:R2,invoke_viijii:g2,jsGetBoundingClientLeft:Wa,jsGetBoundingClientTop:Xa,jsUpdateBoundingClientRect:Za,llvm_eh_typeid_for:jE,occJSConsoleDebug:ha,occJSConsoleError:Ra,occJSConsoleInfo:Ga,occJSConsoleWarn:Ya,strftime_l:PE};_a();var Zl=u._emscripten_bind_VoidPtr___destroy___0=function(){return(Zl=u._emscripten_bind_VoidPtr___destroy___0=u.asm.emscripten_bind_VoidPtr___destroy___0).apply(null,arguments)},Xl=u._emscripten_bind_MxDraw3DTools_MxDraw3DTools_0=function(){return(Xl=u._emscripten_bind_MxDraw3DTools_MxDraw3DTools_0=u.asm.emscripten_bind_MxDraw3DTools_MxDraw3DTools_0).apply(null,arguments)},Wl=u._emscripten_bind_MxDraw3DTools_TestCreateBox_0=function(){return(Wl=u._emscripten_bind_MxDraw3DTools_TestCreateBox_0=u.asm.emscripten_bind_MxDraw3DTools_TestCreateBox_0).apply(null,arguments)},yl=u._emscripten_bind_MxDraw3DTools___destroy___0=function(){return(yl=u._emscripten_bind_MxDraw3DTools___destroy___0=u.asm.emscripten_bind_MxDraw3DTools___destroy___0).apply(null,arguments)};u.___original_main=function(){return(u.___original_main=u.asm.__original_main).apply(null,arguments)};var hl=u._main=function(){return(hl=u._main=u.asm.main).apply(null,arguments)},ve=u._free=function(){return(ve=u._free=u.asm.free).apply(null,arguments)},Gl=function(){return(Gl=u.asm.__cxa_free_exception).apply(null,arguments)},_e=u._malloc=function(){return(_e=u._malloc=u.asm.malloc).apply(null,arguments)},Ft=function(){return(Ft=u.asm.setTempRet0).apply(null,arguments)},Yl=function(){return(Yl=u.asm.__errno_location).apply(null,arguments)},Rl=u.___getTypeName=function(){return(Rl=u.___getTypeName=u.asm.__getTypeName).apply(null,arguments)};u.__embind_initialize_bindings=function(){return(u.__embind_initialize_bindings=u.asm._embind_initialize_bindings).apply(null,arguments)};var Vl=function(){return(Vl=u.asm.emscripten_builtin_memalign).apply(null,arguments)},f=function(){return(f=u.asm.setThrew).apply(null,arguments)},B=function(){return(B=u.asm.stackSave).apply(null,arguments)},C=function(){return(C=u.asm.stackRestore).apply(null,arguments)},gl=function(){return(gl=u.asm.stackAlloc).apply(null,arguments)},Al=function(){return(Al=u.asm.__cxa_can_catch).apply(null,arguments)},vl=function(){return(vl=u.asm.__cxa_is_pointer_type).apply(null,arguments)},Jl=u.dynCall_viiiij=function(){return(Jl=u.dynCall_viiiij=u.asm.dynCall_viiiij).apply(null,arguments)},kl=u.dynCall_iiji=function(){return(kl=u.dynCall_iiji=u.asm.dynCall_iiji).apply(null,arguments)},Nl=u.dynCall_viiiiji=function(){return(Nl=u.dynCall_viiiiji=u.asm.dynCall_viiiiji).apply(null,arguments)},Ml=u.dynCall_viijii=function(){return(Ml=u.dynCall_viijii=u.asm.dynCall_viijii).apply(null,arguments)};u.dynCall_jiji=function(){return(u.dynCall_jiji=u.asm.dynCall_jiji).apply(null,arguments)},u.dynCall_iiiiij=function(){return(u.dynCall_iiiiij=u.asm.dynCall_iiiiij).apply(null,arguments)},u.dynCall_iiiiijj=function(){return(u.dynCall_iiiiijj=u.asm.dynCall_iiiiijj).apply(null,arguments)},u.dynCall_iiiiiijj=function(){return(u.dynCall_iiiiiijj=u.asm.dynCall_iiiiiijj).apply(null,arguments)},u.___start_em_js=1946032,u.___stop_em_js=1946609;function zE(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function UE(e,t){var n=B();try{D(e)(t)}catch(i){if(C(n),i!==i+0)throw i;f(1,0)}}function OE(e,t){var n=B();try{return D(e)(t)}catch(i){if(C(n),i!==i+0)throw i;f(1,0)}}function QE(e){var t=B();try{return D(e)()}catch(n){if(C(t),n!==n+0)throw n;f(1,0)}}function qE(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function $E(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function eD(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function tD(e,t,n){var i=B();try{D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function nD(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function iD(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function rD(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function cD(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function lD(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function aD(e){var t=B();try{D(e)()}catch(n){if(C(t),n!==n+0)throw n;f(1,0)}}function dD(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function oD(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function mD(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function uD(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function bD(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function sD(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function pD(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function ED(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function DD(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function fD(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function BD(e,t,n){var i=B();try{D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function CD(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function _D(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function FD(e,t,n){var i=B();try{D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function ZD(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function XD(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function WD(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function yD(e,t){var n=B();try{D(e)(t)}catch(i){if(C(n),i!==i+0)throw i;f(1,0)}}function hD(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function GD(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function YD(e,t){var n=B();try{return D(e)(t)}catch(i){if(C(n),i!==i+0)throw i;f(1,0)}}function RD(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function VD(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function gD(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function AD(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function vD(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function JD(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function kD(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function ND(e,t){var n=B();try{return D(e)(t)}catch(i){if(C(n),i!==i+0)throw i;f(1,0)}}function MD(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function wD(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function TD(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function jD(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function SD(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function xD(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function KD(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function LD(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function PD(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function HD(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function ID(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function zD(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function UD(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function OD(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function QD(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function qD(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function $D(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function ef(e){var t=B();try{return D(e)()}catch(n){if(C(t),n!==n+0)throw n;f(1,0)}}function tf(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function nf(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function rf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function cf(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function lf(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function af(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function df(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function of(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function mf(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function uf(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function bf(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function sf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function pf(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function Ef(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function Df(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function ff(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function Bf(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function Cf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function _f(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function Ff(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function Zf(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function Xf(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function Wf(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function yf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function hf(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function Gf(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function Yf(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function Rf(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function Vf(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function gf(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function Af(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function vf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function Jf(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function kf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Nf(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function Mf(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function wf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Tf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function jf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Sf(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function xf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function Kf(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function Lf(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Pf(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function Hf(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function If(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function zf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Uf(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function Of(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function Qf(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function qf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function $f(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function e5(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function t5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function n5(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function i5(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function r5(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt,Xt,Ue){var An=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt,Xt,Ue)}catch(Wt){if(C(An),Wt!==Wt+0)throw Wt;f(1,0)}}function c5(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt,Xt,Ue,An,Wt,w2,T2,j2,S2,x2,K2,L2,P2,H2,I2){var z2=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt,Xt,Ue,An,Wt,w2,T2,j2,S2,x2,K2,L2,P2,H2,I2)}catch(vn){if(C(z2),vn!==vn+0)throw vn;f(1,0)}}function l5(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g){var N=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g)}catch(P){if(C(N),P!==P+0)throw P;f(1,0)}}function a5(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function d5(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function o5(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function m5(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function u5(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function b5(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function s5(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function p5(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function E5(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function D5(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function f5(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function B5(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function C5(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function _5(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function F5(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Z5(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function X5(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function W5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function y5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function h5(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function G5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function Y5(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function R5(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function V5(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function g5(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function A5(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function v5(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function J5(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function k5(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function N5(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function M5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function w5(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function T5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function j5(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function S5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function x5(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function K5(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function L5(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function P5(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function H5(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function I5(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function z5(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function U5(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function O5(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function Q5(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function q5(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function $5(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function eB(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function tB(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function nB(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function iB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function rB(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function cB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function lB(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function aB(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function dB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function oB(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function mB(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function uB(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function bB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function sB(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function pB(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function EB(e,t,n){var i=B();try{D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function DB(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function fB(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function BB(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function CB(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function _B(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function FB(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function ZB(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function XB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function WB(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function yB(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function hB(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P){var V=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P)}catch(w){if(C(V),w!==w+0)throw w;f(1,0)}}function GB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function YB(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function RB(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function VB(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function gB(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function AB(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function vB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function JB(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function kB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function NB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function MB(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function wB(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function TB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function jB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function SB(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function xB(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function KB(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function LB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function PB(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function HB(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function IB(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function zB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function UB(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe){var le=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe)}catch(De){if(C(le),De!==De+0)throw De;f(1,0)}}function OB(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function QB(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function qB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function $B(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function eC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function tC(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function nC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function iC(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function rC(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function cC(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function lC(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function aC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function dC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function oC(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function mC(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function uC(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function bC(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function sC(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function pC(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function EC(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function DC(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function fC(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function BC(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function CC(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function _C(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function FC(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function ZC(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function XC(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function WC(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function yC(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function hC(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function GC(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function YC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function RC(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function VC(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function gC(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function AC(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function vC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function JC(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function kC(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function NC(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function MC(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function wC(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function TC(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function jC(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function SC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function xC(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function KC(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function LC(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function PC(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function HC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe){var le=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe)}catch(De){if(C(le),De!==De+0)throw De;f(1,0)}}function IC(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function zC(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function UC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N){var P=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N)}catch(V){if(C(P),V!==V+0)throw V;f(1,0)}}function OC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P){var V=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P)}catch(w){if(C(V),w!==w+0)throw w;f(1,0)}}function QC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w){var ce=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w)}catch(H){if(C(ce),H!==H+0)throw H;f(1,0)}}function qC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt){var Xt=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt)}catch(Ue){if(C(Xt),Ue!==Ue+0)throw Ue;f(1,0)}}function $C(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g){var N=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g)}catch(P){if(C(N),P!==P+0)throw P;f(1,0)}}function e2(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function t2(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function n2(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function i2(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function r2(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function c2(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function l2(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w){var ce=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w)}catch(H){if(C(ce),H!==H+0)throw H;f(1,0)}}function a2(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function d2(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function o2(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function m2(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function u2(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function b2(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function s2(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function p2(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function E2(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function D2(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function f2(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function B2(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function C2(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function _2(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function F2(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function Z2(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function X2(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function W2(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function y2(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function h2(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function G2(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function Y2(e,t,n,i,r,c,l){var a=B();try{Jl(e,t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function R2(e,t,n,i,r,c,l,a){var d=B();try{Nl(e,t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function V2(e,t,n,i,r){var c=B();try{return kl(e,t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function g2(e,t,n,i,r,c,l){var a=B();try{Ml(e,t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}var Pt;st=function e(){Pt||wl(),Pt||(st=e)};function A2(){var e=hl,t=0,n=0;try{var i=e(t,n);return si(i,!0),i}catch(r){return Cn(r)}}function wl(){if(Le>0||(ma(),Le>0))return;function e(){Pt||(Pt=!0,u.calledRun=!0,!pe&&(ua(),ba(),X(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),Tl&&A2(),sa()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),e()},1)):e()}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();var Tl=!0;u.noInitialRun&&(Tl=!1),wl();function ye(){}ye.prototype=Object.create(ye.prototype),ye.prototype.constructor=ye,ye.prototype.__class__=ye,ye.__cache__={},u.WrapperObject=ye;function Ht(e){return(e||ye).__cache__}u.getCache=Ht;function gn(e,t){var n=Ht(t),i=n[e];return i||(i=Object.create((t||ye).prototype),i.ptr=e,n[e]=i)}u.wrapPointer=gn;function v2(e,t){return gn(e.ptr,t)}u.castObject=v2,u.NULL=gn(0);function J2(e){if(!e.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";e.__destroy__(),delete Ht(e.__class__)[e.ptr]}u.destroy=J2;function k2(e,t){return e.ptr===t.ptr}u.compare=k2;function N2(e){return e.ptr}u.getPointer=N2;function M2(e){return e.__class__}u.getClass=M2;function we(){throw"cannot construct a VoidPtr, no constructor in IDL"}we.prototype=Object.create(ye.prototype),we.prototype.constructor=we,we.prototype.__class__=we,we.__cache__={},u.VoidPtr=we,we.prototype.__destroy__=we.prototype.__destroy__=function(){var e=this.ptr;Zl(e)};function he(){this.ptr=Xl(),Ht(he)[this.ptr]=this}return he.prototype=Object.create(ye.prototype),he.prototype.constructor=he,he.prototype.__class__=he,he.__cache__={},u.MxDraw3DTools=he,he.prototype.TestCreateBox=he.prototype.TestCreateBox=function(){var e=this.ptr;return!!Wl(e)},he.prototype.__destroy__=he.prototype.__destroy__=function(){var e=this.ptr;yl(e)},o.ready}})();typeof J=="object"&&typeof module=="object"?module.exports=Yt:typeof define=="function"&&define.amd?define([],function(){return Yt}):typeof J=="object"&&(J.mxdraw3d=Yt);const aa=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));J.McDrawResbuf=Mn,J.McDrawUtility=Gt,J.McObject=xe,J.MdDbCircle=yt,J.MdDbCurve=ot,J.MdDbDatabase=en,J.MdDbEntity=Se,J.MdDbLayerTable=$t,J.MdDbLine=mt,J.MdDbPolyline=tn,J.MdDbText=ut,J.MdRxObject=at,J.MxDraw3d=Ke,J.MxObjectId=ht,J.MxTools=Oe,J.b64Decode=zt,J.b64Encode=It,J.default=la,J.downloadFile=Ot,J.drawArc=on,J.drawCircle=Qt,J.drawEllipticalArc=mn,J.drawLine=rn,J.drawMText=Tn,J.drawPolyLine=cn,J.drawPolygon=ln,J.drawText=kn,J.fetchAndInstantiate=Jn,J.loadMxCADassembly=Sn,J.loadMxCADassembly3d=xn,J.loadWasmModule=bn,J.mxErase=un,J.saveAsFileDialog=Ut,Object.defineProperties(J,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
530
|
+
`},"%p":function(V){return V.tm_hour>=0&&V.tm_hour<12?"AM":"PM"},"%S":function(V){return F(V.tm_sec,2)},"%t":function(){return" "},"%u":function(V){return V.tm_wday||7},"%U":function(V){var w=V.tm_yday+7-V.tm_wday;return F(Math.floor(w/7),2)},"%V":function(V){var w=Math.floor((V.tm_yday+7-(V.tm_wday+6)%7)/7);if((V.tm_wday+371-V.tm_yday-2)%7<=2&&w++,w){if(w==53){var H=(V.tm_wday+371-V.tm_yday)%7;H!=4&&(H!=3||!xt(V.tm_year))&&(w=1)}}else{w=52;var ce=(V.tm_wday+7-V.tm_yday-1)%7;(ce==4||ce==5&&xt(V.tm_year%400-1))&&w++}return F(w,2)},"%w":function(V){return V.tm_wday},"%W":function(V){var w=V.tm_yday+7-(V.tm_wday+6)%7;return F(Math.floor(w/7),2)},"%y":function(V){return(V.tm_year+1900).toString().substring(2)},"%Y":function(V){return V.tm_year+1900},"%z":function(V){var w=V.tm_gmtoff,ce=w>=0;return w=Math.abs(w)/60,w=w/60*100+w%60,(ce?"+":"-")+String("0000"+w).slice(-4)},"%Z":function(V){return V.tm_zone},"%%":function(){return"%"}};l=l.replace(/%%/g,"\0\0");for(var d in N)l.includes(d)&&(l=l.replace(new RegExp(d,"g"),N[d](c)));l=l.replace(/\0\0/g,"%");var P=kt(l,!1);return P.length>t?0:(KE(P,e),P.length-1)}function PE(e,t,n,i,r){return LE(e,t,n,i)}var Cl=function(e,t,n,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=s.nextInode++,this.name=t,this.mode=n,this.node_ops={},this.stream_ops={},this.rdev=i},Kt=365,Lt=146;Object.defineProperties(Cl.prototype,{read:{get:function(){return(this.mode&Kt)===Kt},set:function(e){e?this.mode|=Kt:this.mode&=~Kt}},write:{get:function(){return(this.mode&Lt)===Lt},set:function(e){e?this.mode|=Lt:this.mode&=~Lt}},isFolder:{get:function(){return s.isDir(this.mode)}},isDevice:{get:function(){return s.isChrdev(this.mode)}}}),s.FSNode=Cl,s.staticInit(),nd(),li=u.BindingError=fn(Error,"BindingError"),ai=u.InternalError=fn(Error,"InternalError"),md(),mi=u.UnboundTypeError=fn(Error,"UnboundTypeError"),u.requestFullscreen=function(t,n){Y.requestFullscreen(t,n)},u.requestAnimationFrame=function(t){Y.requestAnimationFrame(t)},u.setCanvasSize=function(t,n,i){Y.setCanvasSize(t,n,i)},u.pauseMainLoop=function(){Y.mainLoop.pause()},u.resumeMainLoop=function(){Y.mainLoop.resume()},u.getUserMedia=function(){Y.getUserMedia()},u.createContext=function(t,n,i,r){return Y.createContext(t,n,i,r)};for(var _l={},E,Ce=0;Ce<32;++Ce)Mt.push(new Array(Ce));for(var HE=new Float32Array(288),Ce=0;Ce<288;++Ce)je[Ce]=HE.subarray(0,Ce+1);for(var IE=new Int32Array(288),Ce=0;Ce<288;++Ce)Bt[Ce]=IE.subarray(0,Ce+1);var Fl={OSD_MemInfo_getModuleHeapLength:ya,__cxa_begin_catch:ga,__cxa_end_catch:va,__cxa_find_matching_catch_2:ka,__cxa_find_matching_catch_3:Na,__cxa_find_matching_catch_4:Ma,__cxa_find_matching_catch_5:wa,__cxa_rethrow:Ta,__cxa_throw:ja,__resumeException:Ja,__syscall_chmod:La,__syscall_faccessat:Pa,__syscall_fcntl64:Ia,__syscall_fstat64:za,__syscall_getdents64:Ua,__syscall_ioctl:Oa,__syscall_lstat64:Qa,__syscall_newfstatat:qa,__syscall_openat:$a,__syscall_stat64:ed,_embind_register_bigint:td,_embind_register_bool:ld,_embind_register_emval:ud,_embind_register_float:sd,_embind_register_function:Gd,_embind_register_integer:Rd,_embind_register_memory_view:Vd,_embind_register_std_string:gd,_embind_register_std_wstring:wd,_embind_register_void:Td,_emscripten_get_now_is_monotonic:Sd,_emscripten_throw_longjmp:xd,_mmap_js:Kd,_munmap_js:Ld,abort:Pd,eglBindAPI:zd,eglChooseConfig:Ud,eglCreateContext:Od,eglCreateWindowSurface:Qd,eglDestroyContext:qd,eglDestroySurface:$d,eglGetCurrentContext:eo,eglGetCurrentDisplay:to,eglGetCurrentSurface:no,eglGetDisplay:io,eglGetError:ro,eglInitialize:co,eglMakeCurrent:lo,eglQueryString:ao,eglQuerySurface:oo,eglSwapBuffers:mo,eglSwapInterval:uo,eglTerminate:bo,emscripten_asm_const_int:Eo,emscripten_async_call:Do,emscripten_async_wget:Co,emscripten_async_wget_data:_o,emscripten_cancel_main_loop:Fo,emscripten_date_now:Zo,emscripten_get_callstack:yo,emscripten_get_canvas_element_size:Go,emscripten_get_device_pixel_ratio:Yo,emscripten_get_element_css_size:Ro,emscripten_get_heap_max:Vo,emscripten_get_now:Et,emscripten_get_preloaded_image_data:go,emscripten_glActiveTexture:Ao,emscripten_glAttachShader:vo,emscripten_glBeginQuery:ko,emscripten_glBeginQueryEXT:Mo,emscripten_glBeginTransformFeedback:To,emscripten_glBindAttribLocation:jo,emscripten_glBindBuffer:So,emscripten_glBindBufferBase:Ko,emscripten_glBindBufferRange:Po,emscripten_glBindFramebuffer:Ho,emscripten_glBindRenderbuffer:Io,emscripten_glBindSampler:Uo,emscripten_glBindTexture:Oo,emscripten_glBindTransformFeedback:qo,emscripten_glBindVertexArray:$o,emscripten_glBindVertexArrayOES:tm,emscripten_glBlendColor:nm,emscripten_glBlendEquation:im,emscripten_glBlendEquationSeparate:rm,emscripten_glBlendFunc:cm,emscripten_glBlendFuncSeparate:lm,emscripten_glBlitFramebuffer:dm,emscripten_glBufferData:om,emscripten_glBufferSubData:mm,emscripten_glCheckFramebufferStatus:um,emscripten_glClear:bm,emscripten_glClearBufferfi:pm,emscripten_glClearBufferfv:Dm,emscripten_glClearBufferiv:Bm,emscripten_glClearBufferuiv:_m,emscripten_glClearColor:Fm,emscripten_glClearDepthf:Zm,emscripten_glClearStencil:Xm,emscripten_glClientWaitSync:ym,emscripten_glColorMask:hm,emscripten_glCompileShader:Gm,emscripten_glCompressedTexImage2D:Ym,emscripten_glCompressedTexImage3D:Vm,emscripten_glCompressedTexSubImage2D:gm,emscripten_glCompressedTexSubImage3D:vm,emscripten_glCopyBufferSubData:km,emscripten_glCopyTexImage2D:Nm,emscripten_glCopyTexSubImage2D:Mm,emscripten_glCopyTexSubImage3D:Tm,emscripten_glCreateProgram:jm,emscripten_glCreateShader:Sm,emscripten_glCullFace:xm,emscripten_glDeleteBuffers:Km,emscripten_glDeleteFramebuffers:Lm,emscripten_glDeleteProgram:Pm,emscripten_glDeleteQueries:Im,emscripten_glDeleteQueriesEXT:Um,emscripten_glDeleteRenderbuffers:Om,emscripten_glDeleteSamplers:qm,emscripten_glDeleteShader:$m,emscripten_glDeleteSync:tu,emscripten_glDeleteTextures:nu,emscripten_glDeleteTransformFeedbacks:ru,emscripten_glDeleteVertexArrays:cu,emscripten_glDeleteVertexArraysOES:au,emscripten_glDepthFunc:du,emscripten_glDepthMask:ou,emscripten_glDepthRangef:mu,emscripten_glDetachShader:uu,emscripten_glDisable:bu,emscripten_glDisableVertexAttribArray:su,emscripten_glDrawArrays:pu,emscripten_glDrawArraysInstanced:Eu,emscripten_glDrawArraysInstancedANGLE:fu,emscripten_glDrawArraysInstancedARB:Cu,emscripten_glDrawArraysInstancedEXT:Fu,emscripten_glDrawArraysInstancedNV:Xu,emscripten_glDrawBuffers:Wu,emscripten_glDrawBuffersEXT:hu,emscripten_glDrawBuffersWEBGL:Yu,emscripten_glDrawElements:Ru,emscripten_glDrawElementsInstanced:Vu,emscripten_glDrawElementsInstancedANGLE:Au,emscripten_glDrawElementsInstancedARB:Ju,emscripten_glDrawElementsInstancedEXT:Nu,emscripten_glDrawElementsInstancedNV:wu,emscripten_glDrawRangeElements:ju,emscripten_glEnable:Su,emscripten_glEnableVertexAttribArray:xu,emscripten_glEndQuery:Lu,emscripten_glEndQueryEXT:Hu,emscripten_glEndTransformFeedback:zu,emscripten_glFenceSync:Ou,emscripten_glFinish:Qu,emscripten_glFlush:qu,emscripten_glFlushMappedBufferRange:eb,emscripten_glFramebufferRenderbuffer:tb,emscripten_glFramebufferTexture2D:nb,emscripten_glFramebufferTextureLayer:rb,emscripten_glFrontFace:cb,emscripten_glGenBuffers:lb,emscripten_glGenFramebuffers:ab,emscripten_glGenQueries:ob,emscripten_glGenQueriesEXT:ub,emscripten_glGenRenderbuffers:bb,emscripten_glGenSamplers:pb,emscripten_glGenTextures:Eb,emscripten_glGenTransformFeedbacks:fb,emscripten_glGenVertexArrays:Bb,emscripten_glGenVertexArraysOES:_b,emscripten_glGenerateMipmap:Fb,emscripten_glGetActiveAttrib:Zb,emscripten_glGetActiveUniform:Xb,emscripten_glGetActiveUniformBlockName:yb,emscripten_glGetActiveUniformBlockiv:Gb,emscripten_glGetActiveUniformsiv:Rb,emscripten_glGetAttachedShaders:Vb,emscripten_glGetAttribLocation:gb,emscripten_glGetBooleanv:Ab,emscripten_glGetBufferParameteri64v:Jb,emscripten_glGetBufferParameteriv:kb,emscripten_glGetBufferPointerv:Mb,emscripten_glGetError:wb,emscripten_glGetFloatv:Tb,emscripten_glGetFragDataLocation:Sb,emscripten_glGetFramebufferAttachmentParameteriv:xb,emscripten_glGetInteger64i_v:Lb,emscripten_glGetInteger64v:Hb,emscripten_glGetIntegeri_v:zb,emscripten_glGetIntegerv:Ub,emscripten_glGetInternalformativ:Qb,emscripten_glGetProgramBinary:$b,emscripten_glGetProgramInfoLog:e9,emscripten_glGetProgramiv:t9,emscripten_glGetQueryObjecti64vEXT:n9,emscripten_glGetQueryObjectivEXT:i9,emscripten_glGetQueryObjectui64vEXT:c9,emscripten_glGetQueryObjectuiv:a9,emscripten_glGetQueryObjectuivEXT:o9,emscripten_glGetQueryiv:u9,emscripten_glGetQueryivEXT:s9,emscripten_glGetRenderbufferParameteriv:p9,emscripten_glGetSamplerParameterfv:D9,emscripten_glGetSamplerParameteriv:B9,emscripten_glGetShaderInfoLog:C9,emscripten_glGetShaderPrecisionFormat:_9,emscripten_glGetShaderSource:F9,emscripten_glGetShaderiv:Z9,emscripten_glGetString:X9,emscripten_glGetStringi:y9,emscripten_glGetSynciv:G9,emscripten_glGetTexParameterfv:Y9,emscripten_glGetTexParameteriv:R9,emscripten_glGetTransformFeedbackVarying:g9,emscripten_glGetUniformBlockIndex:v9,emscripten_glGetUniformIndices:k9,emscripten_glGetUniformLocation:M9,emscripten_glGetUniformfv:w9,emscripten_glGetUniformiv:T9,emscripten_glGetUniformuiv:S9,emscripten_glGetVertexAttribIiv:x9,emscripten_glGetVertexAttribIuiv:L9,emscripten_glGetVertexAttribPointerv:P9,emscripten_glGetVertexAttribfv:H9,emscripten_glGetVertexAttribiv:I9,emscripten_glHint:z9,emscripten_glInvalidateFramebuffer:O9,emscripten_glInvalidateSubFramebuffer:q9,emscripten_glIsBuffer:$9,emscripten_glIsEnabled:es,emscripten_glIsFramebuffer:ts,emscripten_glIsProgram:ns,emscripten_glIsQuery:rs,emscripten_glIsQueryEXT:ls,emscripten_glIsRenderbuffer:as,emscripten_glIsSampler:os,emscripten_glIsShader:ms,emscripten_glIsSync:bs,emscripten_glIsTexture:ss,emscripten_glIsTransformFeedback:Es,emscripten_glIsVertexArray:Ds,emscripten_glIsVertexArrayOES:Bs,emscripten_glLineWidth:Cs,emscripten_glLinkProgram:_s,emscripten_glMapBufferRange:Zs,emscripten_glPauseTransformFeedback:Ws,emscripten_glPixelStorei:ys,emscripten_glPolygonOffset:hs,emscripten_glProgramBinary:Ys,emscripten_glProgramParameteri:Vs,emscripten_glQueryCounterEXT:As,emscripten_glReadBuffer:Js,emscripten_glReadPixels:Ms,emscripten_glReleaseShaderCompiler:ws,emscripten_glRenderbufferStorage:Ts,emscripten_glRenderbufferStorageMultisample:Ss,emscripten_glResumeTransformFeedback:Ks,emscripten_glSampleCoverage:Ls,emscripten_glSamplerParameterf:Hs,emscripten_glSamplerParameterfv:zs,emscripten_glSamplerParameteri:Os,emscripten_glSamplerParameteriv:qs,emscripten_glScissor:$s,emscripten_glShaderBinary:ep,emscripten_glShaderSource:tp,emscripten_glStencilFunc:np,emscripten_glStencilFuncSeparate:ip,emscripten_glStencilMask:rp,emscripten_glStencilMaskSeparate:cp,emscripten_glStencilOp:lp,emscripten_glStencilOpSeparate:ap,emscripten_glTexImage2D:dp,emscripten_glTexImage3D:mp,emscripten_glTexParameterf:up,emscripten_glTexParameterfv:bp,emscripten_glTexParameteri:sp,emscripten_glTexParameteriv:pp,emscripten_glTexStorage2D:Dp,emscripten_glTexStorage3D:Bp,emscripten_glTexSubImage2D:Cp,emscripten_glTexSubImage3D:Fp,emscripten_glTransformFeedbackVaryings:Xp,emscripten_glUniform1f:Wp,emscripten_glUniform1fv:yp,emscripten_glUniform1i:hp,emscripten_glUniform1iv:Gp,emscripten_glUniform1ui:Rp,emscripten_glUniform1uiv:gp,emscripten_glUniform2f:Ap,emscripten_glUniform2fv:vp,emscripten_glUniform2i:Jp,emscripten_glUniform2iv:kp,emscripten_glUniform2ui:Mp,emscripten_glUniform2uiv:Tp,emscripten_glUniform3f:jp,emscripten_glUniform3fv:Sp,emscripten_glUniform3i:xp,emscripten_glUniform3iv:Kp,emscripten_glUniform3ui:Pp,emscripten_glUniform3uiv:Ip,emscripten_glUniform4f:zp,emscripten_glUniform4fv:Up,emscripten_glUniform4i:Op,emscripten_glUniform4iv:Qp,emscripten_glUniform4ui:$p,emscripten_glUniform4uiv:t0,emscripten_glUniformBlockBinding:i0,emscripten_glUniformMatrix2fv:r0,emscripten_glUniformMatrix2x3fv:l0,emscripten_glUniformMatrix2x4fv:d0,emscripten_glUniformMatrix3fv:o0,emscripten_glUniformMatrix3x2fv:u0,emscripten_glUniformMatrix3x4fv:s0,emscripten_glUniformMatrix4fv:p0,emscripten_glUniformMatrix4x2fv:D0,emscripten_glUniformMatrix4x3fv:B0,emscripten_glUnmapBuffer:_0,emscripten_glUseProgram:F0,emscripten_glValidateProgram:Z0,emscripten_glVertexAttrib1f:X0,emscripten_glVertexAttrib1fv:W0,emscripten_glVertexAttrib2f:y0,emscripten_glVertexAttrib2fv:h0,emscripten_glVertexAttrib3f:G0,emscripten_glVertexAttrib3fv:Y0,emscripten_glVertexAttrib4f:R0,emscripten_glVertexAttrib4fv:V0,emscripten_glVertexAttribDivisor:g0,emscripten_glVertexAttribDivisorANGLE:v0,emscripten_glVertexAttribDivisorARB:k0,emscripten_glVertexAttribDivisorEXT:M0,emscripten_glVertexAttribDivisorNV:T0,emscripten_glVertexAttribI4i:S0,emscripten_glVertexAttribI4iv:K0,emscripten_glVertexAttribI4ui:P0,emscripten_glVertexAttribI4uiv:I0,emscripten_glVertexAttribIPointer:U0,emscripten_glVertexAttribPointer:O0,emscripten_glViewport:Q0,emscripten_glWaitSync:$0,emscripten_memcpy_big:eE,emscripten_resize_heap:nE,emscripten_set_canvas_element_size:iE,emscripten_set_click_callback_on_thread:rE,emscripten_set_dblclick_callback_on_thread:cE,emscripten_set_element_css_size:lE,emscripten_set_focusout_callback_on_thread:dE,emscripten_set_keydown_callback_on_thread:oE,emscripten_set_keyup_callback_on_thread:mE,emscripten_set_main_loop:uE,emscripten_set_mousedown_callback_on_thread:bE,emscripten_set_mouseenter_callback_on_thread:sE,emscripten_set_mousemove_callback_on_thread:pE,emscripten_set_mouseup_callback_on_thread:EE,emscripten_set_resize_callback_on_thread:fE,emscripten_set_touchcancel_callback_on_thread:BE,emscripten_set_touchend_callback_on_thread:CE,emscripten_set_touchmove_callback_on_thread:_E,emscripten_set_touchstart_callback_on_thread:FE,emscripten_set_wheel_callback_on_thread:XE,emscripten_webgl_enable_extension:WE,emscripten_webgl_get_context_attributes:hE,emscripten_webgl_get_current_context:YE,environ_get:gE,environ_sizes_get:AE,exit:pi,fd_close:vE,fd_read:kE,fd_seek:ME,fd_write:TE,glActiveTexture:Wi,glAttachShader:yi,glBindAttribLocation:hi,glBindBuffer:Gi,glBindFramebuffer:Yi,glBindRenderbuffer:Ri,glBindTexture:Vi,glBlendColor:Ai,glBlendEquation:vi,glBlendEquationSeparate:Ji,glBlendFunc:ki,glBlendFuncSeparate:Ni,glBufferData:Mi,glBufferSubData:wi,glCheckFramebufferStatus:Ti,glClear:ji,glClearColor:Si,glClearDepthf:xi,glClearStencil:Ki,glColorMask:Pi,glCompileShader:Hi,glCompressedTexImage2D:Ii,glCompressedTexSubImage2D:zi,glCopyTexImage2D:Ui,glCopyTexSubImage2D:Oi,glCreateProgram:Qi,glCreateShader:qi,glCullFace:$i,glDeleteBuffers:er,glDeleteFramebuffers:tr,glDeleteProgram:nr,glDeleteRenderbuffers:ir,glDeleteShader:rr,glDeleteTextures:cr,glDepthFunc:ar,glDepthMask:dr,glDepthRangef:or,glDetachShader:mr,glDisable:ur,glDisableVertexAttribArray:br,glDrawArrays:sr,glDrawElements:yn,glEnable:pr,glEnableVertexAttribArray:Er,glFinish:Dr,glFlush:fr,glFramebufferRenderbuffer:Br,glFramebufferTexture2D:Cr,glFrontFace:_r,glGenBuffers:Fr,glGenFramebuffers:Zr,glGenRenderbuffers:Xr,glGenTextures:Wr,glGenerateMipmap:hr,glGetActiveAttrib:Yr,glGetActiveUniform:Rr,glGetAttachedShaders:Vr,glGetAttribLocation:gr,glGetBooleanv:Ar,glGetBufferParameteriv:vr,glGetError:Jr,glGetFloatv:kr,glGetFramebufferAttachmentParameteriv:Nr,glGetIntegerv:wr,glGetProgramInfoLog:Tr,glGetProgramiv:jr,glGetRenderbufferParameteriv:Kr,glGetShaderInfoLog:Lr,glGetShaderPrecisionFormat:Pr,glGetShaderSource:Hr,glGetShaderiv:Ir,glGetString:zr,glGetTexParameterfv:Ur,glGetTexParameteriv:Or,glGetUniformLocation:$r,glGetUniformfv:ec,glGetUniformiv:tc,glGetVertexAttribPointerv:ic,glGetVertexAttribfv:rc,glGetVertexAttribiv:cc,glHint:lc,glIsBuffer:ac,glIsEnabled:dc,glIsFramebuffer:oc,glIsProgram:mc,glIsRenderbuffer:uc,glIsShader:bc,glIsTexture:sc,glLineWidth:Ec,glLinkProgram:Dc,glPixelStorei:fc,glPolygonOffset:Bc,glReadPixels:Cc,glReleaseShaderCompiler:_c,glRenderbufferStorage:Fc,glSampleCoverage:Zc,glScissor:Xc,glShaderBinary:Wc,glShaderSource:yc,glStencilFunc:hc,glStencilFuncSeparate:Gc,glStencilMask:Yc,glStencilMaskSeparate:Rc,glStencilOp:Vc,glStencilOpSeparate:gc,glTexImage2D:Ac,glTexParameterf:vc,glTexParameterfv:Jc,glTexParameteri:kc,glTexParameteriv:Nc,glTexSubImage2D:Mc,glUniform1f:wc,glUniform1fv:Tc,glUniform1i:jc,glUniform1iv:Sc,glUniform2f:xc,glUniform2fv:Kc,glUniform2i:Lc,glUniform2iv:Pc,glUniform3f:Hc,glUniform3fv:Ic,glUniform3i:zc,glUniform3iv:Uc,glUniform4f:Oc,glUniform4fv:Qc,glUniform4i:qc,glUniform4iv:$c,glUniformMatrix2fv:el,glUniformMatrix3fv:tl,glUniformMatrix4fv:nl,glUseProgram:il,glValidateProgram:rl,glVertexAttrib1f:cl,glVertexAttrib1fv:ll,glVertexAttrib2f:al,glVertexAttrib2fv:dl,glVertexAttrib3f:ol,glVertexAttrib3fv:ml,glVertexAttrib4f:ul,glVertexAttrib4fv:bl,glVertexAttribPointer:sl,glViewport:pl,invoke_d:ef,invoke_dd:ND,invoke_ddd:MD,invoke_dddd:L5,invoke_di:YD,invoke_did:gf,invoke_didd:U5,invoke_diddd:af,invoke_diddi:pf,invoke_didi:P5,invoke_dii:ID,invoke_diid:D5,invoke_diiddd:f5,invoke_diiddi:IC,invoke_diii:uf,invoke_diiii:RB,invoke_diiiii:_B,invoke_diiiiii:XB,invoke_diiiiiii:fC,invoke_fiii:_D,invoke_i:QE,invoke_iddid:J5,invoke_iddiiiiii:xC,invoke_idi:N5,invoke_idiiiii:qB,invoke_ii:OE,invoke_iid:ZD,invoke_iidd:o5,invoke_iiddd:Ff,invoke_iiddddd:f2,invoke_iiddddddddddddii:l5,invoke_iiddddddddiii:yB,invoke_iiddddddiiii:b2,invoke_iiddddi:GB,invoke_iiddddii:yC,invoke_iidddi:$D,invoke_iidddidd:oC,invoke_iidddii:jD,invoke_iidddiii:UD,invoke_iiddi:m5,invoke_iiddid:s2,invoke_iiddii:SD,invoke_iiddiid:o2,invoke_iiddiiiii:a2,invoke_iidi:mf,invoke_iidid:R5,invoke_iidii:LD,invoke_iidiiddiid:XC,invoke_iidiii:HD,invoke_iidiiii:JD,invoke_iif:CD,invoke_iii:$E,invoke_iiid:OD,invoke_iiidd:Vf,invoke_iiiddd:eB,invoke_iiidddd:bB,invoke_iiidddddd:k5,invoke_iiiddddi:Z5,invoke_iiiddddidd:Df,invoke_iiiddddii:lf,invoke_iiidddi:cB,invoke_iiidddid:E2,invoke_iiidddii:tf,invoke_iiidddiid:jC,invoke_iiiddi:Of,invoke_iiiddid:i2,invoke_iiiddidd:C5,invoke_iiiddidddd:wC,invoke_iiiddii:Jf,invoke_iiiddiiii:RC,invoke_iiidi:Bf,invoke_iiidid:V5,invoke_iiidii:lB,invoke_iiidiid:h5,invoke_iiidiii:zD,invoke_iiidiiiii:Q5,invoke_iiii:qE,invoke_iiiid:wD,invoke_iiiidd:$5,invoke_iiiiddd:If,invoke_iiiidddd:K5,invoke_iiiidddddd:Y5,invoke_iiiiddddddi:eC,invoke_iiiidddi:BB,invoke_iiiiddi:Wf,invoke_iiiiddii:KD,invoke_iiiiddiii:CC,invoke_iiiiddiiii:sB,invoke_iiiidi:g5,invoke_iiiidii:vB,invoke_iiiidiii:QD,invoke_iiiidiiiii:xB,invoke_iiiif:XD,invoke_iiiii:zE,invoke_iiiiid:s5,invoke_iiiiiddd:TC,invoke_iiiiidddd:n5,invoke_iiiiiddi:Xf,invoke_iiiiidi:z5,invoke_iiiiidii:$B,invoke_iiiiidiidd:uC,invoke_iiiiidiiiiii:rC,invoke_iiiiii:nD,invoke_iiiiiid:Lf,invoke_iiiiiidd:I5,invoke_iiiiiidddd:a5,invoke_iiiiiiddiddiii:p5,invoke_iiiiiiddiiiii:bC,invoke_iiiiiidi:Yf,invoke_iiiiiidii:xD,invoke_iiiiiidiiidd:lC,invoke_iiiiiii:lD,invoke_iiiiiiid:E5,invoke_iiiiiiidddiiddi:c2,invoke_iiiiiiiddi:iC,invoke_iiiiiiii:bD,invoke_iiiiiiiidd:HB,invoke_iiiiiiiidddddddddiiddii:UB,invoke_iiiiiiiidddddddiii:hB,invoke_iiiiiiiiddi:CB,invoke_iiiiiiiiddiiii:gC,invoke_iiiiiiiiddiiiii:YC,invoke_iiiiiiiifiii:iD,invoke_iiiiiiiii:hf,invoke_iiiiiiiiid:DB,invoke_iiiiiiiiidi:_2,invoke_iiiiiiiiii:q5,invoke_iiiiiiiiiiddidd:ZB,invoke_iiiiiiiiiii:Kf,invoke_iiiiiiiiiiidi:mC,invoke_iiiiiiiiiiii:LC,invoke_iiiiiiiiiiiid:Z2,invoke_iiiiiiiiiiiiid:t2,invoke_iiiiiiiiiiiiii:PC,invoke_iiiiiiiiiiiiiii:A5,invoke_iiji:V2,invoke_v:aD,invoke_vd:yD,invoke_vddddiiiiiiiiiiii:UC,invoke_vdddii:mB,invoke_vdddiii:WC,invoke_vdddiiii:hC,invoke_vddi:oB,invoke_vddii:uB,invoke_vddiii:y2,invoke_vddiiii:PD,invoke_vddiiiiiii:zC,invoke_vddiiiiiiiiiiiiiii:OC,invoke_vddiiiiiiiiiiiiiiiii:QC,invoke_vddiiiiiiiiiiiiiiiiiiii:HC,invoke_vddiiiiiiiiiiiiiiiiiiiiiiii:qC,invoke_vdi:EB,invoke_vdiddddi:aB,invoke_vdiddii:jB,invoke_vdiddiiii:fB,invoke_vdidii:rf,invoke_vdiii:X5,invoke_vdiiii:kC,invoke_vdiiiii:NC,invoke_vdiiiiiiii:VC,invoke_vdiiiiiiiii:vC,invoke_vdiiiiiiiiii:JC,invoke_vdiiiiiiiiiii:W2,invoke_vffff:hD,invoke_vi:UE,invoke_vid:FD,invoke_vidd:VD,invoke_viddd:Af,invoke_vidddd:kD,invoke_vidddddd:TD,invoke_viddddddd:D2,invoke_vidddddddddddd:pC,invoke_vidddddddii:p2,invoke_vidddddi:nB,invoke_viddddii:FC,invoke_viddddiiii:r2,invoke_vidddi:tB,invoke_vidddidddddd:$f,invoke_vidddii:kB,invoke_vidddiiidi:ZC,invoke_viddi:Rf,invoke_viddid:KB,invoke_viddidd:LB,invoke_viddidddiiii:B5,invoke_viddii:yf,invoke_viddiii:zf,invoke_viddiiii:W5,invoke_viddiiiiii:Sf,invoke_viddiiiiiiiiii:m2,invoke_vidfdfii:Pf,invoke_vidi:Zf,invoke_vidid:nf,invoke_vididd:x5,invoke_vididdi:zB,invoke_vididi:IB,invoke_vidii:bf,invoke_vidiiddddii:_C,invoke_vidiidii:y5,invoke_vidiii:AD,invoke_vidiiidi:G5,invoke_vidiiii:H5,invoke_vidiiiiidd:F2,invoke_vidiiiiii:sC,invoke_vif:BD,invoke_vii:tD,invoke_viid:RD,invoke_viidd:gD,invoke_viiddd:sf,invoke_viidddd:F5,invoke_viidddddd:O5,invoke_viidddddddd:aC,invoke_viidddddddiiii:OB,invoke_viiddddi:vD,invoke_viiddddidd:v5,invoke_viidddi:dB,invoke_viidddidi:ff,invoke_viidddii:MC,invoke_viiddi:vf,invoke_viiddidd:rB,invoke_viiddii:jf,invoke_viiddiii:S5,invoke_viiddiiii:u2,invoke_viiddiiiiii:h2,invoke_viiddiiiiiiii:d2,invoke_viidi:fD,invoke_viidid:Tf,invoke_viididd:qf,invoke_viidii:df,invoke_viidiii:Cf,invoke_viidiiid:BC,invoke_viidiiii:of,invoke_viidiiiii:AC,invoke_viif:w5,invoke_viiffffi:DD,invoke_viifi:ED,invoke_viifiii:pD,invoke_viii:eD,invoke_viiid:Mf,invoke_viiidd:Ef,invoke_viiiddd:TB,invoke_viiidddd:JB,invoke_viiiddddi:GC,invoke_viiiddi:kf,invoke_viiiddidi:Gf,invoke_viiiddiiii:pB,invoke_viiiddiiiiiiiiiiiiii:l2,invoke_viiidi:WB,invoke_viiidid:iB,invoke_viiidii:NB,invoke_viiidiii:qD,invoke_viiidiiii:tC,invoke_viiidiiiii:n2,invoke_viiidiiiiii:cf,invoke_viiifiiiii:GD,invoke_viiii:rD,invoke_viiiid:xf,invoke_viiiidd:j5,invoke_viiiidddd:Hf,invoke_viiiiddddd:KC,invoke_viiiidddddd:SC,invoke_viiiidddi:Nf,invoke_viiiiddiiid:_f,invoke_viiiidii:YB,invoke_viiiidiii:AB,invoke_viiiii:sD,invoke_viiiiid:wf,invoke_viiiiidd:t5,invoke_viiiiidddd:Qf,invoke_viiiiidddddd:gB,invoke_viiiiidddddddd:cC,invoke_viiiiiddddi:nC,invoke_viiiiiddi:wB,invoke_viiiiiddidd:_5,invoke_viiiiiddiii:VB,invoke_viiiiiddiiii:MB,invoke_viiiiidi:M5,invoke_viiiiidii:DC,invoke_viiiiii:cD,invoke_viiiiiid:T5,invoke_viiiiiidddi:dC,invoke_viiiiiiddi:B2,invoke_viiiiiiddiii:X2,invoke_viiiiiiddiiii:G2,invoke_viiiiiidii:EC,invoke_viiiiiidiidid:SB,invoke_viiiiiii:dD,invoke_viiiiiiif:WD,invoke_viiiiiiii:oD,invoke_viiiiiiiid:u5,invoke_viiiiiiiiddi:QB,invoke_viiiiiiiii:mD,invoke_viiiiiiiiid:PB,invoke_viiiiiiiiiddi:FB,invoke_viiiiiiiiii:uD,invoke_viiiiiiiiiid:b5,invoke_viiiiiiiiiidfdf:d5,invoke_viiiiiiiiiii:i5,invoke_viiiiiiiiiiidd:e5,invoke_viiiiiiiiiiidi:C2,invoke_viiiiiiiiiiiidi:e2,invoke_viiiiiiiiiiiidii:$C,invoke_viiiiiiiiiiiii:Uf,invoke_viiiiiiiiiiiiiiiiiiiiiiiiiiii:r5,invoke_viiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii:c5,invoke_viiiij:Y2,invoke_viiiiji:R2,invoke_viijii:g2,jsGetBoundingClientLeft:Wa,jsGetBoundingClientTop:Xa,jsUpdateBoundingClientRect:Za,llvm_eh_typeid_for:jE,occJSConsoleDebug:ha,occJSConsoleError:Ra,occJSConsoleInfo:Ga,occJSConsoleWarn:Ya,strftime_l:PE};_a();var Zl=u._emscripten_bind_VoidPtr___destroy___0=function(){return(Zl=u._emscripten_bind_VoidPtr___destroy___0=u.asm.emscripten_bind_VoidPtr___destroy___0).apply(null,arguments)},Xl=u._emscripten_bind_MxDraw3DTools_MxDraw3DTools_0=function(){return(Xl=u._emscripten_bind_MxDraw3DTools_MxDraw3DTools_0=u.asm.emscripten_bind_MxDraw3DTools_MxDraw3DTools_0).apply(null,arguments)},Wl=u._emscripten_bind_MxDraw3DTools_TestCreateBox_0=function(){return(Wl=u._emscripten_bind_MxDraw3DTools_TestCreateBox_0=u.asm.emscripten_bind_MxDraw3DTools_TestCreateBox_0).apply(null,arguments)},yl=u._emscripten_bind_MxDraw3DTools___destroy___0=function(){return(yl=u._emscripten_bind_MxDraw3DTools___destroy___0=u.asm.emscripten_bind_MxDraw3DTools___destroy___0).apply(null,arguments)};u.___original_main=function(){return(u.___original_main=u.asm.__original_main).apply(null,arguments)};var hl=u._main=function(){return(hl=u._main=u.asm.main).apply(null,arguments)},ve=u._free=function(){return(ve=u._free=u.asm.free).apply(null,arguments)},Gl=function(){return(Gl=u.asm.__cxa_free_exception).apply(null,arguments)},_e=u._malloc=function(){return(_e=u._malloc=u.asm.malloc).apply(null,arguments)},Ft=function(){return(Ft=u.asm.setTempRet0).apply(null,arguments)},Yl=function(){return(Yl=u.asm.__errno_location).apply(null,arguments)},Rl=u.___getTypeName=function(){return(Rl=u.___getTypeName=u.asm.__getTypeName).apply(null,arguments)};u.__embind_initialize_bindings=function(){return(u.__embind_initialize_bindings=u.asm._embind_initialize_bindings).apply(null,arguments)};var Vl=function(){return(Vl=u.asm.emscripten_builtin_memalign).apply(null,arguments)},f=function(){return(f=u.asm.setThrew).apply(null,arguments)},B=function(){return(B=u.asm.stackSave).apply(null,arguments)},C=function(){return(C=u.asm.stackRestore).apply(null,arguments)},gl=function(){return(gl=u.asm.stackAlloc).apply(null,arguments)},Al=function(){return(Al=u.asm.__cxa_can_catch).apply(null,arguments)},vl=function(){return(vl=u.asm.__cxa_is_pointer_type).apply(null,arguments)},Jl=u.dynCall_viiiij=function(){return(Jl=u.dynCall_viiiij=u.asm.dynCall_viiiij).apply(null,arguments)},kl=u.dynCall_iiji=function(){return(kl=u.dynCall_iiji=u.asm.dynCall_iiji).apply(null,arguments)},Nl=u.dynCall_viiiiji=function(){return(Nl=u.dynCall_viiiiji=u.asm.dynCall_viiiiji).apply(null,arguments)},Ml=u.dynCall_viijii=function(){return(Ml=u.dynCall_viijii=u.asm.dynCall_viijii).apply(null,arguments)};u.dynCall_jiji=function(){return(u.dynCall_jiji=u.asm.dynCall_jiji).apply(null,arguments)},u.dynCall_iiiiij=function(){return(u.dynCall_iiiiij=u.asm.dynCall_iiiiij).apply(null,arguments)},u.dynCall_iiiiijj=function(){return(u.dynCall_iiiiijj=u.asm.dynCall_iiiiijj).apply(null,arguments)},u.dynCall_iiiiiijj=function(){return(u.dynCall_iiiiiijj=u.asm.dynCall_iiiiiijj).apply(null,arguments)},u.___start_em_js=1946032,u.___stop_em_js=1946609;function zE(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function UE(e,t){var n=B();try{D(e)(t)}catch(i){if(C(n),i!==i+0)throw i;f(1,0)}}function OE(e,t){var n=B();try{return D(e)(t)}catch(i){if(C(n),i!==i+0)throw i;f(1,0)}}function QE(e){var t=B();try{return D(e)()}catch(n){if(C(t),n!==n+0)throw n;f(1,0)}}function qE(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function $E(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function eD(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function tD(e,t,n){var i=B();try{D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function nD(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function iD(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function rD(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function cD(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function lD(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function aD(e){var t=B();try{D(e)()}catch(n){if(C(t),n!==n+0)throw n;f(1,0)}}function dD(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function oD(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function mD(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function uD(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function bD(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function sD(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function pD(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function ED(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function DD(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function fD(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function BD(e,t,n){var i=B();try{D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function CD(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function _D(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function FD(e,t,n){var i=B();try{D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function ZD(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function XD(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function WD(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function yD(e,t){var n=B();try{D(e)(t)}catch(i){if(C(n),i!==i+0)throw i;f(1,0)}}function hD(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function GD(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function YD(e,t){var n=B();try{return D(e)(t)}catch(i){if(C(n),i!==i+0)throw i;f(1,0)}}function RD(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function VD(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function gD(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function AD(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function vD(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function JD(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function kD(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function ND(e,t){var n=B();try{return D(e)(t)}catch(i){if(C(n),i!==i+0)throw i;f(1,0)}}function MD(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function wD(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function TD(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function jD(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function SD(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function xD(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function KD(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function LD(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function PD(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function HD(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function ID(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function zD(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function UD(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function OD(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function QD(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function qD(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function $D(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function ef(e){var t=B();try{return D(e)()}catch(n){if(C(t),n!==n+0)throw n;f(1,0)}}function tf(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function nf(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function rf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function cf(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function lf(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function af(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function df(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function of(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function mf(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function uf(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function bf(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function sf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function pf(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function Ef(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function Df(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function ff(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function Bf(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function Cf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function _f(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function Ff(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function Zf(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function Xf(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function Wf(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function yf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function hf(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function Gf(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function Yf(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function Rf(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function Vf(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function gf(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function Af(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function vf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function Jf(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function kf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Nf(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function Mf(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function wf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Tf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function jf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Sf(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function xf(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function Kf(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function Lf(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Pf(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function Hf(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function If(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function zf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Uf(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function Of(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function Qf(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function qf(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function $f(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function e5(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function t5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function n5(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function i5(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function r5(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt,Xt,Ue){var An=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt,Xt,Ue)}catch(Wt){if(C(An),Wt!==Wt+0)throw Wt;f(1,0)}}function c5(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt,Xt,Ue,An,Wt,w2,T2,j2,S2,x2,K2,L2,P2,H2,I2){var z2=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt,Xt,Ue,An,Wt,w2,T2,j2,S2,x2,K2,L2,P2,H2,I2)}catch(vn){if(C(z2),vn!==vn+0)throw vn;f(1,0)}}function l5(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g){var N=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g)}catch(P){if(C(N),P!==P+0)throw P;f(1,0)}}function a5(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function d5(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function o5(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function m5(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function u5(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function b5(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function s5(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function p5(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function E5(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function D5(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function f5(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function B5(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function C5(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function _5(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function F5(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function Z5(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function X5(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function W5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function y5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function h5(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function G5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function Y5(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function R5(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function V5(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function g5(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function A5(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function v5(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function J5(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function k5(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function N5(e,t,n){var i=B();try{return D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function M5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function w5(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function T5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function j5(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function S5(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function x5(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function K5(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function L5(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function P5(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function H5(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function I5(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function z5(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function U5(e,t,n,i){var r=B();try{return D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function O5(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function Q5(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function q5(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function $5(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function eB(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function tB(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function nB(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function iB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function rB(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function cB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function lB(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function aB(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function dB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function oB(e,t,n,i){var r=B();try{D(e)(t,n,i)}catch(c){if(C(r),c!==c+0)throw c;f(1,0)}}function mB(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function uB(e,t,n,i,r){var c=B();try{D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function bB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function sB(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function pB(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function EB(e,t,n){var i=B();try{D(e)(t,n)}catch(r){if(C(i),r!==r+0)throw r;f(1,0)}}function DB(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function fB(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function BB(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function CB(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function _B(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function FB(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function ZB(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function XB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function WB(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function yB(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function hB(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P){var V=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P)}catch(w){if(C(V),w!==w+0)throw w;f(1,0)}}function GB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function YB(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function RB(e,t,n,i,r){var c=B();try{return D(e)(t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function VB(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function gB(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function AB(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function vB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function JB(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function kB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function NB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function MB(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function wB(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function TB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function jB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function SB(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function xB(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function KB(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function LB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function PB(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function HB(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function IB(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function zB(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function UB(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe){var le=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe)}catch(De){if(C(le),De!==De+0)throw De;f(1,0)}}function OB(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function QB(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function qB(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function $B(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function eC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function tC(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function nC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function iC(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function rC(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function cC(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function lC(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function aC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function dC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function oC(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function mC(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function uC(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function bC(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function sC(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function pC(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function EC(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function DC(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function fC(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function BC(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function CC(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function _C(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function FC(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function ZC(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function XC(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function WC(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function yC(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function hC(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function GC(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function YC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function RC(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function VC(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function gC(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function AC(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function vC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function JC(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function kC(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function NC(e,t,n,i,r,c,l){var a=B();try{D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function MC(e,t,n,i,r,c,l,a){var d=B();try{D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function wC(e,t,n,i,r,c,l,a,d,m){var b=B();try{return D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function TC(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function jC(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function SC(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function xC(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function KC(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function LC(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function PC(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function HC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe){var le=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe)}catch(De){if(C(le),De!==De+0)throw De;f(1,0)}}function IC(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function zC(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function UC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N){var P=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N)}catch(V){if(C(P),V!==V+0)throw V;f(1,0)}}function OC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P){var V=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P)}catch(w){if(C(V),w!==w+0)throw w;f(1,0)}}function QC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w){var ce=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w)}catch(H){if(C(ce),H!==H+0)throw H;f(1,0)}}function qC(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt){var Xt=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w,ce,H,oe,le,De,ze,Zt)}catch(Ue){if(C(Xt),Ue!==Ue+0)throw Ue;f(1,0)}}function $C(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g){var N=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g)}catch(P){if(C(N),P!==P+0)throw P;f(1,0)}}function e2(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function t2(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function n2(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function i2(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function r2(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function c2(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G){var g=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G)}catch(N){if(C(g),N!==N+0)throw N;f(1,0)}}function l2(e,t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w){var ce=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y,G,g,N,P,V,w)}catch(H){if(C(ce),H!==H+0)throw H;f(1,0)}}function a2(e,t,n,i,r,c,l,a,d){var m=B();try{return D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function d2(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function o2(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function m2(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function u2(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function b2(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function s2(e,t,n,i,r,c){var l=B();try{return D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function p2(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function E2(e,t,n,i,r,c,l,a){var d=B();try{return D(e)(t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function D2(e,t,n,i,r,c,l,a,d){var m=B();try{D(e)(t,n,i,r,c,l,a,d)}catch(b){if(C(m),b!==b+0)throw b;f(1,0)}}function f2(e,t,n,i,r,c,l){var a=B();try{return D(e)(t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function B2(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function C2(e,t,n,i,r,c,l,a,d,m,b,p,F,y){var G=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F,y)}catch(g){if(C(G),g!==g+0)throw g;f(1,0)}}function _2(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function F2(e,t,n,i,r,c,l,a,d,m){var b=B();try{D(e)(t,n,i,r,c,l,a,d,m)}catch(p){if(C(b),p!==p+0)throw p;f(1,0)}}function Z2(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{return D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function X2(e,t,n,i,r,c,l,a,d,m,b,p){var F=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p)}catch(y){if(C(F),y!==y+0)throw y;f(1,0)}}function W2(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function y2(e,t,n,i,r,c){var l=B();try{D(e)(t,n,i,r,c)}catch(a){if(C(l),a!==a+0)throw a;f(1,0)}}function h2(e,t,n,i,r,c,l,a,d,m,b){var p=B();try{D(e)(t,n,i,r,c,l,a,d,m,b)}catch(F){if(C(p),F!==F+0)throw F;f(1,0)}}function G2(e,t,n,i,r,c,l,a,d,m,b,p,F){var y=B();try{D(e)(t,n,i,r,c,l,a,d,m,b,p,F)}catch(G){if(C(y),G!==G+0)throw G;f(1,0)}}function Y2(e,t,n,i,r,c,l){var a=B();try{Jl(e,t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}function R2(e,t,n,i,r,c,l,a){var d=B();try{Nl(e,t,n,i,r,c,l,a)}catch(m){if(C(d),m!==m+0)throw m;f(1,0)}}function V2(e,t,n,i,r){var c=B();try{return kl(e,t,n,i,r)}catch(l){if(C(c),l!==l+0)throw l;f(1,0)}}function g2(e,t,n,i,r,c,l){var a=B();try{Ml(e,t,n,i,r,c,l)}catch(d){if(C(a),d!==d+0)throw d;f(1,0)}}var Pt;st=function e(){Pt||wl(),Pt||(st=e)};function A2(){var e=hl,t=0,n=0;try{var i=e(t,n);return si(i,!0),i}catch(r){return Cn(r)}}function wl(){if(Le>0||(ma(),Le>0))return;function e(){Pt||(Pt=!0,u.calledRun=!0,!pe&&(ua(),ba(),Z(u),u.onRuntimeInitialized&&u.onRuntimeInitialized(),Tl&&A2(),sa()))}u.setStatus?(u.setStatus("Running..."),setTimeout(function(){setTimeout(function(){u.setStatus("")},1),e()},1)):e()}if(u.preInit)for(typeof u.preInit=="function"&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();var Tl=!0;u.noInitialRun&&(Tl=!1),wl();function ye(){}ye.prototype=Object.create(ye.prototype),ye.prototype.constructor=ye,ye.prototype.__class__=ye,ye.__cache__={},u.WrapperObject=ye;function Ht(e){return(e||ye).__cache__}u.getCache=Ht;function gn(e,t){var n=Ht(t),i=n[e];return i||(i=Object.create((t||ye).prototype),i.ptr=e,n[e]=i)}u.wrapPointer=gn;function v2(e,t){return gn(e.ptr,t)}u.castObject=v2,u.NULL=gn(0);function J2(e){if(!e.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";e.__destroy__(),delete Ht(e.__class__)[e.ptr]}u.destroy=J2;function k2(e,t){return e.ptr===t.ptr}u.compare=k2;function N2(e){return e.ptr}u.getPointer=N2;function M2(e){return e.__class__}u.getClass=M2;function we(){throw"cannot construct a VoidPtr, no constructor in IDL"}we.prototype=Object.create(ye.prototype),we.prototype.constructor=we,we.prototype.__class__=we,we.__cache__={},u.VoidPtr=we,we.prototype.__destroy__=we.prototype.__destroy__=function(){var e=this.ptr;Zl(e)};function he(){this.ptr=Xl(),Ht(he)[this.ptr]=this}return he.prototype=Object.create(ye.prototype),he.prototype.constructor=he,he.prototype.__class__=he,he.__cache__={},u.MxDraw3DTools=he,he.prototype.TestCreateBox=he.prototype.TestCreateBox=function(){var e=this.ptr;return!!Wl(e)},he.prototype.__destroy__=he.prototype.__destroy__=function(){var e=this.ptr;yl(e)},o.ready}})();typeof J=="object"&&typeof module=="object"?module.exports=Yt:typeof define=="function"&&define.amd?define([],function(){return Yt}):typeof J=="object"&&(J.mxdraw3d=Yt);const aa=Object.freeze(Object.defineProperty({__proto__:null,default:Yt},Symbol.toStringTag,{value:"Module"}));J.McDrawResbuf=Mn,J.McDrawUtility=Gt,J.McObject=xe,J.MdDbCircle=yt,J.MdDbCurve=ot,J.MdDbDatabase=en,J.MdDbEntity=Se,J.MdDbLayerTable=$t,J.MdDbLine=mt,J.MdDbPolyline=tn,J.MdDbText=ut,J.MdRxObject=at,J.MxDraw3d=Ke,J.MxObjectId=ht,J.MxTools=Oe,J.b64Decode=zt,J.b64Encode=It,J.default=la,J.downloadFile=Ot,J.drawArc=on,J.drawCircle=Qt,J.drawEllipticalArc=mn,J.drawLine=rn,J.drawMText=Tn,J.drawPolyLine=cn,J.drawPolygon=ln,J.drawText=kn,J.fetchAndInstantiate=Jn,J.loadMxCADassembly=Sn,J.loadMxCADassembly3d=xn,J.loadWasmModule=bn,J.mxErase=un,J.saveAsFileDialog=Ut,Object.defineProperties(J,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|