Tokens Smart Contract

Words
1
Reading
1 min
Listen
Play
6y

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"tokens","params":"","code":"Y29uc3QgQUNDT1VOVF9CTEFDS0xJU1Q9e2dhdGVpb2RlcG9zaXQ6MSxkZWVwY3J5cHRvODoxLGJpdHRyZXg6MSxwb2xvbmlleDoxLCJodW9iaS1wcm8iOjEsImJpbmFuY2UtaG90IjoxLGJpdHZhdm86MSxibG9ja3RyYWRlczoxLHByb2JpdHN0ZWVtOjEscHJvYml0aGl2ZToxLGlvbm9teToxfSxSRVNFUlZFRF9TWU1CT0xTPXtFTkc6Im51bGwiLFNURUVNUDoic3RlZW0tcGVnIixCVENQOiJidGNwZWciLExUQ1A6Imx0Y3AiLERPR0VQOiJkb2dlcCIsQkNIUDoiYmNocCIsU01UVDoic3RlZW1tb25zdGVycyIsQlVYOiJuYXRlYWd1aWxhIixTVFlMRToic3RlZW1zdHlsZS1pbyIsRlJFRVg6ImZyZWVkb21leCIsRVhZTEU6ImV4eWxlIixTQVZWWToiam9uZ29sc29uIixQQUw6Im1pbm5vd3N1cHBvcnQiLEZTTToibWFyY3Vzd2FobCIsU01BUlRZOiJzbWFydHN0ZWVtIixNTlk6InRoZW1vbmV0YXJ5ZmV3IixSQVA6InRoZW1vbmV0YXJ5ZmV3IixCVUlMRFRFQU06ImJ1aWxkdGVhbSIsVFBZOiJzaGVwejEiLEZCUzoiZnJlZWJvcm5zb2NpZXR5IixEQjoidmVnZXRhIixEVU1QOiJtb3ZpbmdtYW4iLEtSV1M6InN0YWJsZXdvbiIsQlRDOiJyb2VsYW5kcCIsTEVPOiJraGFsZWVsa2F6aSIsU1NTOiJzaG9nbyIsRk9PRDoiamVmZmphZ29lIixSRURGOiJyZWRmaXNoZWxwIixLQkQ6Impha2kwMSIsU0NITUVDS0xFOiJzbWFydHlzY2htZWNrbGVzIixKQVI6ImphcnVuaWsiLFNURUVNOiJsdWNreXN0cmlrZXMiLFNCRDoibHVja3lzdHJpa2VzIixKQ0FSOiJqc3F1YXJlIixFTkdBR0U6ImFiaDEyMzQ1IixOSU5KQToic3RlZW0ubmluamEiLE9SQUNMRUQ6Im9yYWNsZS1kIixTVFY6InN0ZWV2ZWFwcCIsVVNEUzoic3RhYmxld29uIixXQUZSTzoid2FmcmljYSIsTVVMQToiYXJ0em9uZSIsSklUUzoiaml1aml0c3UiLEJVTVBTOiJqaXVqaXRzdSIsR09MRDoiaml1aml0c3UiLE5ZQU5HOiJzb24xMDAwMSIsU1RJTkdZOiJpbmVydGlhIixESVk6InRpYmZveCIsU1dFRVQ6InN3YXBzdGVlbSIsQlRDUzoic3RhYmxld29uIixFVEhTOiJzdGFibGV3b24iLEtFTjoiaW5maW5pdGUtYnQiLFRST0xMOiJ0dWZrYXQiLFZMT0c6InRlYW1odW1ibGUiLEFGSVQ6ImFjdGlmaXQiLEE6InJlc2VsbGVyIixURUFSRFJPUFM6InN1cnBhc3Npbmdnb29nbGUiLFBJQ1dBUjoibmtncmlnb3J5ZXYiLFNNUFQ6ImNyeXN0YWxodW1hbiIsTVNQVzoicjBuZDBuIixKQU06InVta2luIixTVUZCOiJqcGJsaWJlcnR5IixCRUVSOiJkZXRsZXYiLENERDoicmVtbmR0IixMQ1Q6InNlYmVzY2VuODEiLFNURUVNU0M6InN0YWJsZXdvbiIsUExLTjoibWVybWFpZHZhbXBpcmUiLEdMT0JBTE9ORToiZzFudG9rZW4iLERSQUdPTjoibGVnZW5kYXJ5ZHJhZ29ucyIsQUxQSEE6InN0ZWVtbW9uc3RlcnMiLEJFVEE6InN0ZWVtbW9uc3RlcnMiLERFQzoic3RlZW1tb25zdGVycyIsVkFMSVVNOiJwcmluenZhbGl1bSIsR0FNRToicGVubnNpZiIsUEJMOiJob2JvLm1lZGlhIixTQlQ6InBvbGx1eC5vbmUiLFdFRUQ6ImNvZmZlZWJ1ZHMiLFNFUjoic2VvLWJvc3MiLEVOVFJPOiJlbnRyb3BpYSIsU01TTUI6InNhdHJlbiIsR01CTFI6InN0ZWVtaXRxYSIsUkVEOiJyZWRwYWxlc3Rpbm8iLE1BUjoicmVkcGFsZXN0aW5vIixUSFM6InRoZWhvbHlzdHVobCIsSUJDOiJpYmMiLERSQU1BOiJ3aGF0c3VwIixQQVRSSU9UOiJzdGF5b3V0b2Z0aGVyeiIsQkFUVExFOiJiYXR0bGVnYW1lcyIsVE9LRU46Im5vZ2Fub28iLFVOSUNPUk46InR1ZmthdCIsUkVWOiJyZXZpc2Vzb2Npb2xvZ3kiLEhCTzoiaG9iby5tZWRpYSIsQ1JZUFRPOiJqdXN0aW5hc2hieSIsQVRPTVk6ImNqc2RucyIsUFM6InBlcmZzcG90cyIsTkVPOiJuZW94aWFuIixCQ0M6InRyZXZvbmpiIixCQzoiZXJuaWVncmVlbmhpbGwiLEVOVToibGliZXJ0IixQTkM6ImFkZXMiLEpKTToidmlydXM3MDciLFZHSUZUOiJ2aXJ0dWFsZ3Jvd3RoIixDT0ZGRUU6IndvbnBheSIsQkc6ImJhbHRlIixWVDoiaGVscGllLWNhc3RlciIsTUlOSToibWluaWdhbWUiLERUVUJFOiJyZXNlbGxlciIsU0dUSzoic29tZWd1eTEyMyIsREVOVEFMOiJkZXNpZ25wb2QiLEhWT1RFOiJoYXBweXZvdGVyIixTVVJGOiJzdXJmZXJtYXJseSIsR1NCOiJnc2ItdG9rZW4iLFJNU0ZJVE5FU1M6InJtc2JvZHlidWlsZGluZyIsU0hJVDoibmdjIixGVU5EOiJrci1mdW5kIixNQVJLRVQ6ImJlZ2dhcnMiLFRSQURFOiJyaXNlb2Z0aCIsVEZMQU5EU1A6ImdyaWQ5Z2FtZXMiLFRGTEFORFFCOiJncmlkOWdhbWVzIixURkxBTkRCOiJncmlkOWdhbWVzIixURlRPV05SRVM6ImdyaWQ5Z2FtZXMiLFRGQ0lUWVJFUzoiZ3JpZDlnYW1lcyIsRERUOiJkZGFpbHkiLFBFOiJwZXJmc3BvdHMiLFlFU0pBTToidW1raW4iLE5FT1g6Im5lb3hpYW4iLFRJUFU6InRpcHUiLElNUEFDVDoibWFkZXllYXJjaGVyIixTVkM6InN0YWJsZXdvbiIsVEFNSUxDT0lOOiJzdWNjZXNzZm9yYWxsIixUUFU6InRpcHUiLEtFTk46Imtlbm5ldGhib3NhayIsU09MOiJzb2xhaXJpdGFzIixTTUFMUDoic21hbHAiLERVU1Q6ImRhbmllbHNhb3JpIixXT05LQToid29ua2EiLERJQ0U6ImRpY2UtZW5naW5lIixQUk9NSToicHJvbWlzdGVlbSIsRlVUOiJkYW5iYWluIixYSFNUOiJleGhhdXN0IixGVVRVUkU6ImJlZ2dhcnMiLENVOiJjdXJhdGluZyIsQ0FGRToibXVzdGFyZC1zZWVkIixNRUVQOiJpb25seXNheW1lZXAiLE1TQzoic3RlZW0tbXlhbm1hciIsT1RURVI6InRjcG9seW1hdGgiLFlBRERZOiJkY29tbWVyY2UiLFNUSUNLOiJzdGVlbWlsbHUiLFBST1hZOiJwcm94eS50b2tlbiIsTkJDOiJ0ZWFtY24tZnVuZCIsTVNQQUNUSVZFOiJtc3AtYWN0aXZlIixITFA6Im1lbm8iLE9SRzoic29sbmFtdSIsU0ZSOiJhbnRob255YWRhdmlzaWkiLFlFUzoieWVzaW5mbyIsU0FWQUdFOiJqb3NlcGhzYXZhZ2UiLEFDVE5FQVJOOiJhY3RuZWFybiIsSzoic3RhYmxld29uIixHQU1FUjoia3J5cHRvZ2FtZXJzIixCVENNWUs6Im15a29zIixUU0tSOiJzdGVlbXRhc2tyIixCTlc6Im5haGEiLEhMUEU6ImhlbHBpZSIsQ1VQWjoiY3VweiIsVVFFOiJzZW8tYm9zcyIsU0tJTjoic2tpbnRva2VuIixUUk9QSFk6InZpcnVzNzA3IixTSEFERToic2hhZG93c3B1YiIsUE9SVDoicG9ydG9rZW5zIixBU1M6ImFzc2hvbGUiLEJPVDoibXlkaWNlYm90IixSQVJFOiJiZWdnYXJzIixBVVNCSVRTOiJhdXNiaXRiYW5rIixNVVNJQzoiZ3JlZW5jcm9zcyIsS1BPUDoiZnJlZWRvbWV4IixGT09ERDoiZnJlZWRvbWV4IixVU0RPTkU6InVzZG9uZSIsRVBJQzoiZXBpY2RpY2UiLEJMRUVQOiJibGVlcGNvaW4iLFNTQzoidHJhZGluZ2lkZWFzIixBQ1g6Ing2aXgiLFNUQUNIOiJzdGFjaCIsWUJUOiJ5LW8tdS10LWgtbS1lIixZUERUOiJ5LW8tdS10LWgtbS1lIixTQVQ6InN0ZWVtYXJlbmEiLFJTVDoiZHVtaXRyaXUiLEVMVzoibWFyYWJhcmEiLERMVjoidjR2YXBpZCIsQ1Q6ImNsZWFucGxhbmV0IixTU1Q6ImJsYW5jaHkiLENISUNLOiJzdGVlbWNoYXQubGl2ZSIsU1RJUDoic3dhcHN0ZWVtIixTSE9QOiJ0ZWFtY24tc2hvcCIsTEFTU0U6Imxhc3NlZWhsZXJzIixTVkdTOiJzYXZhZ2VsaWZlc3R5bGUiLE1BTk5FOiJzdGVlbWl0cmkiLExFQVRIRVI6InNxdWJlIixNQUQ6Im1hZG1hZ2F6aW5lIixDOiJjb21lZHlvcGVubWljIixEQ0M6InZpZHllbiIsVUdPUzoidWdvcyIsU01UOiJ3ZWhtb2VuIixJU0xBTkQ6ImZhbnRhc3lpc2xhbmQiLFZJTU06InZpbW0iLExPVkU6ImluZGV4dHJhZGVyMjQiLERBQ0g6ImRhY2hjb2xvbnkiLExPVFRPOiJiZWdnYXJzIixDUkFDSzoiYmF0dGxlY3JhY2siLERJQ0tCVVRUOiJzcXViZSIsT1paWToid3RmZGlkb3p6eXNheSIsVUU6ImRhY2hjb2xvbnkiLFJFQ09JTjoiaWxuZWdybyIsQUlUOiJhaS1jaGFubmVsIixESVA6Inp6cm90dCIsVEZNQVJLUzoiZ3JpZDlnYW1lcyIsQlRGOiJhc3Nob2xlIixQSFVROiJzcXViZSIsUUJJVFM6ImdyaWQ5Z2FtZXMiLEVQQzoiZXBpY2RpY2UiLEFORzoibGFzc2VlaGxlcnMiLEFNQToibGFzc2VlaGxlcnMiLFVTVDoiZ3JpZDlnYW1lcyIsRU9TUDoiZW9zLXBlZyIsQkFOSk86ImJhbmpvIixMVU5BOiJtb29ubGlnaHQtZm9ydW0iLEhBQklUOiJtYWtlYWhhYml0IixYQVA6ImFwcGljc2NvbW11bml0eSIsQkxROiJwZ2FyY2dvIixNT09OOiJub2dhbm9vIixZT0dJOiJpbnZlc3RvcnNjbHViIixDUkVESVRTOiJub2dhbm9vIixMSFQ6InJpdmVyZmxvd3MiLENPSU46Im5vZ2Fub28iLFVTQToiY29pbmNyZWF0b3IiLExBUzoibGFzc2VlaGxlcnMiLEFHVDoibGFzc2VlaGxlcnMiLEJFQVNUOiJoYXZvazc3NyIsRE9MUEhJTjoicmliYWkiLFRJQ0tFVFM6Im5vZ2Fub28iLE5FRDoibm9nYW5vbyIsQ09LRToiY29pbmNyZWF0b3IiLFNBTkQ6ImFja3phIixUUlVNUDoibm9nYW5vbyIsREFOOiJhcHBsZWNyaXNwIixBT0M6ImFwcGxlY3Jpc3AiLENQQzoic3RhYmxld29uIixTQ1Q6InNjdCIsUE9STjoiZHBvcm4iLEJPT1NURVI6ImNvaW5jcmVhdG9yIixGQVJNUjoiYW5laWxwYXRlbCIsT1JCOiJzdGVlbW1vbnN0ZXJzIixMSUtFOiJjb29sdmlkZW8iLFRFU1Q6ImJld2FyZWNlbnRlcmJhc2UiLFNNQUxMOiJzd2Fwc3RlZW0iLEdPQVQ6ImNvaW5jcmVhdG9yIixTUFdBTFBIQToic3BsaW50ZXJ3YXJzIixTVEVFTVNHOiJneXNtbyIsQUFBOiJ0cmlwbGVhLnJldmlld3MiLEZVTjoiYmV3YXJlY2VudGVyYmFzZSIsSElQSE9QOiJjb2luY3JlYXRvciIsQ0FCQUw6ImNhYmFsY29mZmVycyIsVFJFRVNFRUQ6ImdyaWQ5Z2FtZXMiLFRSRUVMT0c6ImdyaWQ5Z2FtZXMiLEZJVDoiZml0Y29pbiIsUVVJWjoiYmV3YXJlY2VudGVyYmFzZSIsU1dBUDoic3dhcHN0ZWVtIixQSE9UTzoicGhvdG8tdG9rZW4iLFhSU1RFRU06Inhyd2ViIixTVFI6InN0cm9uZ2JveCIsTEFTU0VDQVNIOiJsYXNzZWVobGVycyIsVk9URToidm90ZXRva2VuIixHT0xPUzoiY29pbmNyZWF0b3IiLFJPUlM6InJvYWRvZnJpY2giLFBNVDoicGVha21vbnN0ZXJzIixTUFQ6InNwbGludGVybGFuZHMiLElORDoiaW5kaWF0b2tlbiIsTUFQWDoibWFwMTBrIixSQU5LT1JFOiJyYW4ua29yZWUiLERGSzoiZHJpdmVmb3JraWRzIixTUEs6IndlaG1vZW4iLENIT1BTOiJzbG9iYmVyY2hvcHMiLEVNOiJzdGVlbS1lbmciLEVNRk9VUjoic3RlZW0tZW5nIixST1g6ImZyZWVkb21leC5kZXYiLE9SR0FORFVPOiJvcmdhbmR1byIsTFVOQVI6Im5pZWw5NiIsQkJUOiJidWlsZHRlYW0iLFpaQU46Inp6YW4iLERDOiJkb253aGFsZSIsRElTTkVZOiJub2dhbm9vIixBTUFaT046Im5vZ2Fub28iLEhVTUFOSVNUOiJjaHJpc3JpY2UiLFBBTE06Im1zcC1maW5hbmNlIixQQUxNTToibXNwLWZpbmFuY2UiLFZPSUNFOiJhcHBsZWNyaXNwIixNT1Q6ImZyZWVkb21leC5kZXYiLEhJTE86Imx1Y2t5aGlsbyIsS1JXUDoic2N0IixIQVJDQURFOiJsdWNreWhpbG8iLEVUSDoibm9nYW5vbyIsRU9TOiJub2dhbm9vIixMVVY6ImphY3V6emkiLFNQSUNFOiJhcHBsZWNyaXNwIixEQUNUOiJkYWN0IixTVEFSUzoibm9nYW5vbyIsSFVHOiJhcHBsZWNyaXNwIixXSEFOOiJ3b25zYW1hIixVTkk6ImNhc2JlcnAiLFBJWlpBOiJwaXp6YS1wYXJ0eSIsTUVNRToiaG9sb3Zpc2lvbiIsUFNPUDoiZW9zLXBlZyIsU0VYOiJqYW5hc2lsdmVyIixEV0Q6ImRydWd3YXJzIixDQU5EWToibm9nYW5vbyIsUE9JTlRTOiJub2dhbm9vIixQUkVESUNUOiJwcmVkaWN0IixEQ01EVDoiZG9ud2hhbGUiLFNQSFI6InRoZS5jaXJjbGUiLEVTUE9SVFM6ImUtc3BvcnRzd29ybGQiLENPT0tJTkc6ImNvb2tpbmctd2FsbGV0IixHRUVLOiJob2xvdmlzaW9uIixBUlQ6Im1lbnRhbGhlYWx0aGd1cnUiLE1TVEs6ImZlZGVzb3giLFNDVE06InNjdCIsQUxVOiJhbHVjaWFuIixCVVRUOiJidXR0Y29pbnMiLE5FT1NURUVNOiJidWlsZHRlYW0iLEFOWFA6ImVvcy1wZWciLFNURDoicm9uZHJhcyIsVlJUOiJzYXJnb29uIixTUE9SVFM6InNwb3J0c3RhbGtzb2NpYWwiLFRSRE86InRoZWd1cnVhc2lhIixLR1NDT0lOOiJrZ2FrYWtpbGxlcmciLERDQ1Q6ImRvbndoYWxlIixROiJxdXJhdG9yIixGTEVFVDoiZmxhdXd5IixIRU1QOiJhMS1zaHJvb20tc3BvcmVzIixTTks6InNuYWNrcGx1cyIsV0lLSToiamFjdXp6aSIsQURTQ0o6ImFkc2FjdGx5IixNQVJMSUFOUzoic3VycGFzc2luZ2dvb2dsZSIsQ0s6ImNvbnRlc3RraW5ncyIsU1BJOiJzcGludmVzdCIsQlNQOiJidWlsZHRlYW0iLFdFRURNOiJjb2ZmZWVidWRzIixTVEVFTVNFTlNFOiJwaWJhcmEiLElOVjoic3RlZW0ubmluamEiLFBIOiJlbWFmZSIsQklTQVlBOiJlbWFmZSIsU0NUUjoic2N0IixXRUVETU06ImNvZmZlZWJ1ZHMiLFpaQU5NOiJ6emFuIixCUEM6ImJpbHBjb2luIixBRFNBQ1Q6ImFkc2FjdGx5IixVTklPTjoiZG9uZWtpbSIsTElWOiJzdHBlb3BsZS50b2tlbiIsTEVPTToic3RlZW0ubGVvIixMRU9NTToic3RlZW0ubGVvIixDUkVBVElWRToic3dlbGtlcjEwMSIsUjoic2N0IixKQUhNOiJyZWdnYWVzdGVlbSIsQlRTUDoiYnRzcCIsTkVPWEFHOiJuZW94aWFudG9rZW4iLEhSTkc6ImhlcnJpbmdsb3JkIixCTE9LWjoic24wbiIsVEFSVUs6Im1hcmNvc2RrIixQTE9PSzoic3dlbGtlcjEwMSIsU1RFRU1TUEVBSzoic3RlZW1zcGVhayIsUEFCOiJwYWIuaW5rIixQT0xJU0g6InBvbGlzaHRva2VuIixJTlQ6ImNyeXN0YWxodW1hbiIsQlRTQ05ZUDoiYml0c2hhcmVzLXRva2VuMSIsQ1JZU1RBTDoiY3J5c3RhbGxpdSIsQlJJREdFQlRDUDoiYml0c2hhcmVzLXRva2VuMSIsQlRTVVNEUDoiYml0c2hhcmVzLXRva2VuMSIsTkVPWEFHTToibmVveGlhbiIsQVRURFVNTVk6InNoYXJpZW1heSIsRURJVDoiZWRpdC5leGNoYW5nZSIsU0lUOiJzdGVlbWluY29tZSIsVlRPOiJsaXR0bGVzY3JpYmUiLEdHOiJzdGVlbS1hY2UiLEdHTToic3RlZW0tYWNlIixDVFA6ImpvbmdvbHNvbiIsVUZNOiJ1cGZ1bmRtZSIsQ09PS0lFOiJ0b3JpY28iLE9ORUNFTlQ6Im9uZWNlbnQiLEdVSUxEOiJ0ZWFtcG9zc2libGUiLElWOiJyb3IuaW52ZW4iLFZUTjoic2FyZ29vbiIsVUZNTToidXBmdW5kbWUiLElWTToicm9yLmludmVuIixDQ0M6ImNyZWF0aXZlY29pbiIsU1RFTToic3RlbWdlZWtzIixBVE9NOiJtdXNpY3ZvdGVyIixTVEVNTToic3RlbWdlZWtzIixTVEVNTU06InN0ZW1nZWVrcyIsQ1JJTkdFOiJjcmluZ2Vjb2luIixNQVBSOiJhY2NlbGVyYXRvciIsUkhCOiJrbm93bGVkZ2VzIixIRURHRToidHJhaWxvZndoYWxlcyIsR09EOiJob2xvdmlzaW9uIixCRUVNOiJzdGVlbWJlZW0iLEJCOiJtYWRzdGFja3MiLENPRkZFRUE6ImMwZmYzM2EiLEZUTE9COiJmdGxvYiIsTk9CRUw6ImFjaGltbWVydGVucyIsS0ZROiJxd295biIsU1dJRlRQOiJidGNwZWciLFRSSUJFOiJibG9jazIxLmNvcnAiLFRNVDoidHJpcHN0ZWVtLnRva2VuIixDQ0NNOiJjcmVhdGl2ZWNvaW4iLFBSSVZFWDoicHJpdmV4IixEVDoiZG9ud2hhbGUiLFNTQ0M6ImhlaW1pbmRhbmdlciIsQ09OVFJPTDoiaG93aGlnaCIsTUlOSUQ6Im1pbmlnYW1lIixOQVRSTDoibmF0dXJhbHByb2R1Y3RzIixBR0FHOiJhZ2dyb2VkIixQTlY6InByZXR0eW5pY2V2aWRlbyIsU0c6InRoZWdob3N0MTk4MCIsWk06Inp6YW4ubWFya2V0IixGT01POiJmb21vLXRva2VuIixCUkFBSUI6ImJyYWFpYm95IixTUEFDTzoic3BhbmlzaC10cmliZSIsQ0VMTDoiYmVnZ2FycyIsQU5JTUU6ImFuaW1ldG9rZW4iLEZSVUlUOiJlYXRtb3JlZnJ1aXQiLFNUQVJEVVNUOiJuZXh0Y29sb255IixDT0NPOiJjbzJmdW5kIixWT0lOOiJpbnZlc3RpbnRoZWZ1dHVyIixMT1RUT1RPS0VOOiJsb3R0b3Rva2VuIixDQVBUQ0hBOiJoZWltaW5kYW5nZXIiLEZMWjoiYmxvY2tjaGFpbmNoYXBlbCIsQUREQVg6ImFkZGF4IixDVFBNOiJqb25nb2xzb24iLEFGSVRYOiJhY3RpZml0IixNQVBYVjoibWFweHYiLFRVTElQOiJidXNiZWNxIixDQVQ6ImNhdG5ldCIsTVJDOiJtYXJzcHJvZml0IixIT05PUjoia25pZ2h0c3VuaXRlZCIsRkNUOiJqazYyNzYuc3BvcnRzIixGSU5FWDoiZmluZXgiLFNQQUNPTToic3BhbmlzaC10cmliZSIsQVBYOiJhcHBpY3MtbWludCIsRVNUTToiZXN0ZWVtLmFwcCIsTkdBOiJlbmdhZ2VnYW1ldGVjaCIsU09OSUM6InNvbmljZ3Jvb3ZlIixMTEFNQToid2VobW9lbiIsR0s6ImFsZXhleWdyaWd1cmtvIixDQk06ImNyeXB0b2JyZXdtYXN0ZXIiLE5HQU06Im5nYW1pbmVycyIsTkdBTU06Im5nYW1pbmVycyIsQ0FOTkE6ImhvdHNhdWNlaXNsZXRoYWwiLEFJUkhBV0s6ImFpcmhhd2stZXhjaGFuZ2UiLFNPTklDTToic29uaWNncm9vdmUiLFRBU0s6ImhlaW1pbmRhbmdlciIsU09OSUNNTToic29uaWNncm9vdmUiLExPTDoibG9sLm9mZmljaWFsIixUSEw6Im1vbmV5a2lja3MwMDciLEtDWDoiY2FzZXljb250ZW50Z29kIixPVFQ6Im9uZXRob3VzYW5kdG9rZW4iLExJRkVTVFlMRToib25lLmxpZmUiLENMSUs6ImRlcmFuZ2VkdmlzaW9ucyIsU05BWFA6InN0ZWVtc25heCIsU0FHTzoic2Fnb2RhIixTQUdPTToic2Fnb2RhIixXRUtVUDoiYml0c2hhcmVzLXRva2VuMSIsQVdJTkI6ImFkdmVudHVyZXJlYWR5IixBV0lOUzoiYWR2ZW50dXJlcmVhZHkiLEFXSU5HOiJhZHZlbnR1cmVyZWFkeSIsQVdJTjoiYWR2ZW50dXJlcmVhZHkiLFVGTzoidWZvbmV0d29yayIsV0lOOiJhZHZlbnR1cmVyZWFkeSIsQ09ERToiY29kZS5pc3N1ZXIiLEdJUEhZOiJjb250cmFib3VyZG9uIixUVU5FUzoic3RlZW12aXNpb24iLFFUTDoicG9ydGFsZ3VuIixBRFNVUDoiYWRzdXAiLExPT0s6Imxvb2twbHoiLFNTOiJwb3J0YWxndW4iLFpaOiJwb3J0YWxndW4iLFpFTlQ6ImNsYXlib3luIixMQUdPOiJsYWdvIixTQkk6InNiaS10b2tlbnMiLFVOVEFNRUQ6InN0ZWVtbW9uc3RlcnMiLE1DQUNIRToibWVnYWNpdHkiLE1IQVNIOiJtZWdhY2l0eSIsTUVHQToibWVnYWNpdHkiLExNOiJvbmUubGlmZSIsU0JJVDoic2JpdCIsTUFYVVY6Im1heHV2IixFQ1U6ImJhc3Rpb25wbSIsSk9COiJuZXdzLXRvZGF5IixERVY6Im5ld3MtdG9kYXkiLExDVE06InNlYmVzY2VuODEiLFNBR09EOiJzYWdvZGEiLENDOiJjb21tZW50Y29pbiIsRUVLOiJ0c25ha3MiLENMSUNLOiJjbGlja3RyaWJlIixTVU46InN1bnRva2VuIixEQVRBOiJwaG9uZWRhdGEiLExJRUJFOiJjcmF6eS1sb3ZlIixET0xMQVJZRE9POiJhdXNiaXRiYW5rIixLQVJNQToiYXVzYml0YmFuayIsUEhPVE9NOiJwaG90by10b2tlbiIsUkVLVDoicmVrdHRva2VuIixIT09UOiJob2JvLm1lZGlhIixRQU5PTjoicWFub25iYW5rIixUT1JSRU5UOiJ0b3JyZW50LnRva2VucyIsTE9UVVM6ImxvdHVzY29pbiIsVE1QUzoidGFza21hbmFnZXIiLERBUFA6ImRhcHB2aWV3IixCWVU6Inl1c2F5bW9uIixGRVQ6Inl1c2F5bW9uIixQRUFLOiJwZWFrLmlzc3VlciIsTkFUVVJFOiJzbXQtaHVudGVyIixCVUlMRDoiYnVpbGQtaXQiLFBIT1RPTU06InBob3RvLXRva2VuIixBRFBMWToid29uc2FtYSIsVExOVDoidGFsZW50Y2x1YiIsRElHSVBFWDoiZGlnaXBleCIsVEFUSUY6InR3b2FuZHR3b2lzZm91ciIsQ0FTSU5POiJ0cmVhc3VyeSIsVklUUDoidml0LXRyaWJlIixCRUFLOiJiZXN0LWxpdmUiLFRQQzoidHlrZWUiLE1COiJteXN0ZXJ5Ym94IixORVdTVEVFTToidGhlbWFya3ltYXJrIixTS0FURToia25vd2hvdzkyIixOT0dBTk9POiJub2dhbm9vIixIT0RMOiJwaG90by10b2tlbiIsSE9ETE06InBob3RvLXRva2VuIixQVEJSOiJlc2N1ZG9yZWFsIixQRVBFOiJhbGllbnMiLERMSUtFUjoiZGxpa2VyIixPT1REOiJlbWFmZSIsQ0FUUzoiY2F0c21ha2VraXR0ZW5zIixLSVRURU5TOiJjYXRzbWFrZWtpdHRlbnMiLFNIT1BQSVg6InNob3BwaXgiLE9SR0FORFVPTToib3JnYW5kdW8iLE1TQ09JTjoiYXhpbWtyYXQiLERUVDoiZGFuY2VycyIsR0lQSFlNOiJjb250cmFib3VyZG9uIixPUkdBTkRVT01NOiJvcmdhbmR1byIsQkZUOiJibG9ja2Z1bmQiLERMSUtFTToiZGxpa2VyIixCQ006ImJjbSIsRE1UOiJheWFodWFzY2Fjb2luIixIRUxQOiJzdGVlbWNybSIsSVBGUzoiaXBmc2NvaW4iLFNBVE9TSEk6InNhdG9zaGl0b2tlbiIsSFNQSzoiaGFyZC1zcG9yayIsU1BWOiJzdGVlbWl0cG9vbCIsVElNRToid2VobW9lbiIsTUFOR0E6Im1hbmdhdG9rZW4iLE9QOiJvbW5lc3BsYW50YWUiLFBFVFM6InBldHNjb3JuZXIiLFBFVDoicGV0c2Nvcm5lciIsQkNUOiJiY3Rva2VuIixXT046InN0YWJsZXdvbiIsSU5DT01FOiJlY29pbnN0YXRzIixFQ086ImVjby1hbGV4IixQRU9TUDoiZW9zLXBlZyIsQ0hFU1M6ImNoZXNzY2FzaCIsQ0hMUDoiZW9zLXBlZyIsSlNOUzoicmVnZ2Flc3RlZW0iLFdFRURTSEFSRToiaGFyYm9ybW1jYyIsVEhDOiJoYXJib3JtbWNjLXRoYyIsQlBDUjoiYmlscGNvaW5yZWNvcmRzIixHRU1TOiJiYXR0bGVnYW1lcyIsQkFTRUQ6ImVyaWN3aWxzb24iLFNSQzoiYW50b25pby52bGFzb3YiLERCTE9HOiJkYmxvZ2dlciIsRk1WSToiZGplbm55Zmxvcm8iLE9MWU1QOiJvbHltcCIsQ09OVEVTVDoiY29udGVzdGNvaW4iLENMT1VEOiJjbG91ZC10b2tlbiIsRFdNQVJJOiJkcnVnd2FycyIsRFdTQUxWOiJkcnVnd2FycyIsRFdQT1BQOiJkcnVnd2FycyIsRFdIQVNIOiJkcnVnd2FycyIsRFdBTkFCOiJkcnVnd2FycyIsRFdDUkFDOiJkcnVnd2FycyIsRFdPUElVOiJkcnVnd2FycyIsRFdIRVJPOiJkcnVnd2FycyIsRFdNRVRIOiJkcnVnd2FycyIsRFdNRE1BOiJkcnVnd2FycyIsRFdMU0Q6ImRydWd3YXJzIixEV1BTSUw6ImRydWd3YXJzIixEV0dIQjoiZHJ1Z3dhcnMiLERXQ09DQToiZHJ1Z3dhcnMiLERXUENQOiJkcnVnd2FycyIsRk9PRElFOiJmb29kaWVzdW5pdGUiLE1NVzoibWFrZW1ld2hhbGUiLFJWQToiR0JBLVJpY2htb25kIixHQkE6Im1hcmstd2FzZXIiLFVQVk9URVM6InVwdm90ZXNjYXNoaWVyIixUWVQ6ImRvbmF0ZWxsbyIsTU9ORVk6Im1hbm5pbWFuIixHT0xPU1A6InN0ZWVtLXRva2VucyIsQ0FNRUw6InNtdC1odW50ZXIiLEJFQVI6ImVvc2NhbGlmb3JuaWEiLEJFVDoidGhlYm9va2llIixKT0s6InRoZW91dGxhdyIsR0lWRUFXQVlTOiJtYWRleWVhcmNoZXIiLE1VU0VCUjoicGF1bG1vb240MTAiLEFMTEFIOiJrYXJheWFzYXRhaGFsYSIsWUhXSDoia2FyYXlhc2F0YWhhbGEiLFNPVUw6InNvdWxjb250cmFjdCIsQk9PSzoibmFoYSIsSEVMRU9TOiJoZWxlb3MiLExPTkRPTjoic3RlZW1sb25kb24iLFVORU9TOiJ1bmVvc2lvIixTSUxWRVI6InN0ZWVtLmNvbnN1bHRhbnQiLFBMQVRBOiJzdGVlbS5jb25zdWx0YW50IixPUk86InN0ZWVtLmNvbnN1bHRhbnQiLE9NRUdBOiJibG9ja3RyZWRzIixBQ0VIOiJhY2Voa29pbiIsSU5GT1dBUlM6ImluZm93YXJzbGlmZSIsREFURToiZGRhdGUiLFNIQ1A6ImVvcy1wZWciLFBUOiJkYW5jZXJzIixCWENUVjoiYWxleHNhbmRyIixCUklDUzoiYnJpY3MiLE5PTkFOT05FOiJ4c3Rlcm45MyIsU0M6InJhZGFxdWVzdCIsVUVDOiJ1ZWMiLERFUkFOR0VEOiJkZXJhbmdlZC5jb2luIixUUkVFOiJ0ZWFtdHJlZXMiLEdSRUFUSk9COiJzYW11ZWwtc3dpbnRvbiIsQk9OVVM6ImJvbnVzdG9rZW4iLENBU0g6InN0cmVhbWNhc2giLFBPT0w6InRoZXBvb2wiLFRMT1NQOiJlb3MtcGVnIixORVRYWVo6Im5ldHh5eiIsQ0VESToiY3J5cHRvY2VkaSIsTkFJUkE6ImNyeXB0b25haXJhIixSQVJFQ0FORFk6Im1pc3NpbmdubyIsQUE6ImFsY29ob2xpY3Nhbm9uIixTTFZQOiJ0aGVzaWx2ZXJwZW5ueSIsTEdCVDoibGdidGJsb2NrY2hhaW4iLFBPSU5UOiJ0YWxraW5ncG9pbnQiLEVST1dJRDoiZXJvd2lkIixUUkFTSDoidHJhc2hkYXBwIixETToiZG1lc3NhZ2VzIixQUklaRUU6ImNyeXB0b3ByaXplZSIsUElORToicGluZWNvaW4iLENWUzoiY3ZzcmV3YXJkcyIsQk9PTToiZWxkZXJzb24iLEtFWToia2V5bG9udGljcyIsTUFSUzoidGlja2V0Mm1hcnMiLFRIRURPTkFMRDoidGhlZG9uYWxkY29pbiIsVVJPQzoidXJvY2tyYWRpbyIsR0FVUkRJQU46InNhdW4iLFVST0NLOiJ1cm9ja3JhZGlvIixTVEM6Imhlcm1pdDQxIixTVEVFTUM6InN0ZWVtLmNsYXNzaWMiLFBFQUNFOiJkcnV0dGVyIixaT086Inpvb2Jsb2NrY2hhaW4iLEtBTkRBOiJ0ZWxva2FuZGEiLEJJTzoiZHVtaXRyaXUiLFdBTToid2FtZ3Jvd3RoIixEVkxQOiJsaW9uMjAwIixTQ0FNOiJzY2FtdG9rZW4iLENVTToiY3VtLWlvIixLTToic2F1biIsUFVNUDoicHVtcGNvaW4iLEFTVFJPOiJhc3Ryb25vbXl0b2tlbiIsQ09QOiJnbG9iYWxwb2xpY2UiLENCSToicWFtMjExMiIsRUI6ImV1cm9iYW5rIixJT1U6ImFpb3UiLFBBWToic3RlZW1pYW5wb2xpdGljcyIsR0FNRUlUOiJnYW1lLWl0IixCRVdBUkU6ImJld2FyZWNlbnRlcmJhc2UiLEFDS1pBOiJhY2t6YSIsQlRDRjoiYnRjZiIsQ1g6Im5pY2Vwb3NlaWRvbiIsSFQ6ImRhbmNlcnMiLENSWVBURVg6ImNyeXB0ZXgyNCIsVEVTTEE6InRlc2xhc3RvY2siLExBTUJPOiJsYW1ib3JnaGluaWJhbmsiLEhCQkM6ImhvbHlicmVhZCIsREVSSEFNOiJkZXJoYW13YWxsZXQiLERCTjoicGlyYXRld29ybGQiLFBPRToicGlyYXRld29ybGQiLFBIQVJNQToiYmVnZ2FycyIsU0VFTVM6InNlZW1zIixBVEM6ImNyeXB0b2FzdHJvbmF1dCIsVEZDOiJ0d2VsdmVvdW5jZXMiLFRSWVNUOiJ0cnlzdCIsRk9POiJmb29jb2luIixESUFNT05EOiJkaWFtb25kdG9rZW4iLERQRVQ6ImRwZXQiLEJPQVJEOiJib3VudHl3b2xmIixIVEtOOiJoYXRvdG8iLExOQlQ6Imx1Y2lhbm5hZ3kiLEZGOiJkeWxhbmhvYmFsYXJ0IixBTkFSQ0hZOiJqaXVqaXRzdSIsUkFJTkJPVzoicmFpbmJvdy5jdXJhdG9yIixNQ0Q6Im9hbGRhbXN0ZXIiLFVTRFRQOiJzY3QiLEVHRzoiY3J5cHRvbWFuY2VyIixEVFJVU1Q6ImRvcmFkby50cnVzdCIsSlA6ImphbnBha2kiLFNCQzoiamFucGFraSIsV0JUOiJsYWNraW5nIixTSU06InN0ZWVtY2l0eXRva2VucyIsR05LOiJvYWxkYW1zdGVyIixXT1c6Indvb2Rvb3Byb2QiLEZJUkU6ImZpcmVtb25leSIsUEhPVE9GVDoid3d3aWViZSIsVVNEUDoic2N0IixET05FOiJqYW5wYWtpIixIRVhZOiJldGhlcmV1bWFsaXN0IixTVVBFUjoic3VwZXJ0b2tlbiIsU1RBUjoic3RhcnRva2VuIixLSU5HOiJraW5ndHJhZGUiLFBJTVA6Implbm55ZmVyYW5kdG9ueSIsUEVTT1M6InBlc29zIixQRVNPOiJ5ZWhleSIsS1BPUkc6InNjdC5zd2FwIixLUFNWQzoic2N0LnN3YXAiLEtQU1RFRU06InNjdC5zd2FwIixLUERFQzoic2N0LnN3YXAiLEtQU0JEOiJzY3Quc3dhcCIsS1BTQ1Q6InNjdC5zd2FwIixLUFNDVE06InNjdC5zd2FwIixZT0dBOiJ5b2dhc3BvcnQiLE9DRDoibWVyY2hlIixMQToiZGFuY2VycyIsUkFUOiJkZW50aSIsSEJDOiJob2x5YnJlYWQiLE5FV1M6Im5ld3NkYWMiLFdUQzoiYmxhY2ttYW4xOTcwIixCTkI6ImJ1eXNlbGwtc3IiLEZSRUU6ImluZGV4dHJhZGVyMjQiLE1JTEs6InN0dWZmYnlzcGVuY2VyIixTUkNBUFRBSU46InNyY2FwdGFpbiIsRU5FUkdZOiJub2dhbm9vIixTUElSOiJzcGludmVzdCIsVEVOOiJtdXNpY2lhbnMiLEVUSEVSOiJldGhlcmV1bS1jb2luIixUUk9OOiJ0cm9uLWNvaW4iLEhPVDoicmF5bW9uZHNwZWFrcyIsQlJPOiJyYXltb25kc3BlYWtzIixMVEM6ImxpdGUtY29pbiIsTFRDUEVHOiJsaXRlLWNvaW4iLE5BQ0hPUzoicXVhbnR1bW5hY2hvcyIsRFVDQVQ6Im9hbGRhbXN0ZXIiLEJEUjoiYm9udXMtdG9rZW4iLFNUT1A6ImNhZGF3ZyIsUExBWToiZ2JhLXJpY2htb25kIixTVU5TSElORToibm9nYW5vbyIsU1RBUkJJVFM6ImF0b21jb2xsZWN0b3IiLFRMSDoidGFpbGFoLmJheXUiLFZJUlVTOiJpbmRleHRyYWRlcjI0IixDT1JPTkE6ImphbmFzaWx2ZXIiLEhORDoiZGFuY2VycyIsVFA6ImNhZGF3ZyIsRVhPRlVFTDoiZWxpbmRvcyIsSElWRVA6InN0ZWVtLXRva2VucyIsSElWRToibm9nYW5vbyIsTEdUOiJnb3RvZ2V0aGVyIixMQVRJTlVNOiJsYXRpbnVtIn07YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ0b2tlbnMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0b2tlbnMiLFsic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYmFsYW5jZXMiLFsiYWNjb3VudCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImNvbnRyYWN0c0JhbGFuY2VzIixbImFjY291bnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBlbmRpbmdVbnN0YWtlcyIsWyJhY2NvdW50IiwidW5zdGFrZUNvbXBsZXRlVGltZXN0YW1wIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiZGVsZWdhdGlvbnMiLFsiZnJvbSIsInRvIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLFsiYWNjb3VudCIsImNvbXBsZXRlVGltZXN0YW1wIl0pO2NvbnN0IHBhcmFtcz17dG9rZW5DcmVhdGlvbkZlZToiMCIsZW5hYmxlRGVsZWdhdGlvbkZlZToiMCIsZW5hYmxlU3Rha2luZ0ZlZToiMCJ9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX19O2NvbnN0IGJhbGFuY2VUZW1wbGF0ZT17YWNjb3VudDpudWxsLHN5bWJvbDpudWxsLGJhbGFuY2U6IjAiLHN0YWtlOiIwIixwZW5kaW5nVW5zdGFrZToiMCIsZGVsZWdhdGlvbnNJbjoiMCIsZGVsZWdhdGlvbnNPdXQ6IjAiLHBlbmRpbmdVbmRlbGVnYXRpb25zOiIwIn0sY2FsY3VsYXRlQmFsYW5jZT0oYmFsYW5jZSxxdWFudGl0eSxwcmVjaXNpb24sYWRkKT0+YWRkP2FwaS5CaWdOdW1iZXIoYmFsYW5jZSkucGx1cyhxdWFudGl0eSkudG9GaXhlZChwcmVjaXNpb24pOmFwaS5CaWdOdW1iZXIoYmFsYW5jZSkubWludXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKSxjb3VudERlY2ltYWxzPXZhbHVlPT5hcGkuQmlnTnVtYmVyKHZhbHVlKS5kcCgpLGFkZFN0YWtlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHkpPT57bGV0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtudWxsPT09YmFsYW5jZSYmKGJhbGFuY2U9YmFsYW5jZVRlbXBsYXRlLGJhbGFuY2UuYWNjb3VudD1hY2NvdW50LGJhbGFuY2Uuc3ltYm9sPXRva2VuLnN5bWJvbCxiYWxhbmNlPWF3YWl0IGFwaS5kYi5pbnNlcnQoImJhbGFuY2VzIixiYWxhbmNlKSksdm9pZCAwPT09YmFsYW5jZS5zdGFrZSYmKGJhbGFuY2Uuc3Rha2U9IjAiLGJhbGFuY2UucGVuZGluZ1Vuc3Rha2U9IjAiKTtjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2U7cmV0dXJuIGJhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksISFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3Qob3JpZ2luYWxTdGFrZSksImNhbm5vdCBhZGQiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSx2b2lkIDA9PT10b2tlbi50b3RhbFN0YWtlZCYmKHRva2VuLnRvdGFsU3Rha2VkPSIwIiksdG9rZW4udG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi50b3RhbFN0YWtlZCxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLCEwKX0sc3ViU3Rha2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSk9Pntjb25zdCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZSwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3RlKHF1YW50aXR5KSwib3ZlcmRyYXduIHN0YWtlIikpe2NvbnN0IG9yaWdpbmFsU3Rha2U9YmFsYW5jZS5zdGFrZSxvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlO2lmKGJhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYmFsYW5jZS5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkubHQob3JpZ2luYWxTdGFrZSkmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkuZ3Qob3JpZ2luYWxQZW5kaW5nU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSlyZXR1cm4gYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLCEwfXJldHVybiExfSxzdWJCYWxhbmNlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHksdGFibGUpPT57Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSh0YWJsZSx7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLmJhbGFuY2UpLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBiYWxhbmNlIikpe2NvbnN0IG9yaWdpbmFsQmFsYW5jZT1iYWxhbmNlLmJhbGFuY2U7aWYoYmFsYW5jZS5iYWxhbmNlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5iYWxhbmNlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkubHQob3JpZ2luYWxCYWxhbmNlKSwiY2Fubm90IHN1YnRyYWN0IikpcmV0dXJuIGF3YWl0IGFwaS5kYi51cGRhdGUodGFibGUsYmFsYW5jZSksITB9cmV0dXJuITF9LGFkZEJhbGFuY2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSx0YWJsZSk9PntsZXQgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSh0YWJsZSx7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtpZihudWxsPT09YmFsYW5jZSlyZXR1cm4gYmFsYW5jZT1iYWxhbmNlVGVtcGxhdGUsYmFsYW5jZS5hY2NvdW50PWFjY291bnQsYmFsYW5jZS5zeW1ib2w9dG9rZW4uc3ltYm9sLGJhbGFuY2UuYmFsYW5jZT1xdWFudGl0eSxhd2FpdCBhcGkuZGIuaW5zZXJ0KHRhYmxlLGJhbGFuY2UpLCEwO2NvbnN0IG9yaWdpbmFsQmFsYW5jZT1iYWxhbmNlLmJhbGFuY2U7cmV0dXJuIGJhbGFuY2UuYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UuYmFsYW5jZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLCEhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkuZ3Qob3JpZ2luYWxCYWxhbmNlKSwiY2Fubm90IGFkZCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSh0YWJsZSxiYWxhbmNlKSwhMCl9O2FjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHt0b2tlbkNyZWF0aW9uRmVlOnRva2VuQ3JlYXRpb25GZWUsZW5hYmxlRGVsZWdhdGlvbkZlZTplbmFibGVEZWxlZ2F0aW9uRmVlLGVuYWJsZVN0YWtpbmdGZWU6ZW5hYmxlU3Rha2luZ0ZlZX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO3BhcmFtcy50b2tlbkNyZWF0aW9uRmVlPXRva2VuQ3JlYXRpb25GZWUscGFyYW1zLmVuYWJsZURlbGVnYXRpb25GZWU9ZW5hYmxlRGVsZWdhdGlvbkZlZSxwYXJhbXMuZW5hYmxlU3Rha2luZ0ZlZT1lbmFibGVTdGFraW5nRmVlLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX0sYWN0aW9ucy51cGRhdGVVcmw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3VybDp1cmwsc3ltYm9sOnN5bWJvbH09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnVybCYmInN0cmluZyI9PXR5cGVvZiB1cmwsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQodXJsLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbiYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl0cnl7Y29uc3QgbWV0YWRhdGE9SlNPTi5wYXJzZSh0b2tlbi5tZXRhZGF0YSk7YXBpLmFzc2VydChtZXRhZGF0YSYmbWV0YWRhdGEudXJsLCJhbiBlcnJvciBvY2N1cmVkIHdoZW4gdHJ5aW5nIHRvIHVwZGF0ZSB0aGUgdXJsIikmJihtZXRhZGF0YS51cmw9dXJsLHRva2VuLm1ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG1ldGFkYXRhKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSl9Y2F0Y2goZSl7fX19LGFjdGlvbnMudXBkYXRlTWV0YWRhdGE9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e21ldGFkYXRhOm1ldGFkYXRhLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZtZXRhZGF0YSYmIm9iamVjdCI9PXR5cGVvZiBtZXRhZGF0YSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbiYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl0cnl7Y29uc3QgZmluYWxNZXRhZGF0YT1KU09OLnN0cmluZ2lmeShtZXRhZGF0YSk7YXBpLmFzc2VydChmaW5hbE1ldGFkYXRhLmxlbmd0aDw9MWUzLCJpbnZhbGlkIG1ldGFkYXRhOiBtYXggbGVuZ3RoIG9mIDEwMDAiKSYmKHRva2VuLm1ldGFkYXRhPWZpbmFsTWV0YWRhdGEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpfWNhdGNoKGUpe319fSxhY3Rpb25zLnVwZGF0ZVByZWNpc2lvbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxwcmVjaXNpb246cHJlY2lzaW9uLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCkmJmFwaS5hc3NlcnQocHJlY2lzaW9uPjAmJnByZWNpc2lvbjw9OCYmTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pLCJpbnZhbGlkIHByZWNpc2lvbiIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO3Rva2VuJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiZhcGkuYXNzZXJ0KHByZWNpc2lvbj50b2tlbi5wcmVjaXNpb24sInByZWNpc2lvbiBjYW4gb25seSBiZSBpbmNyZWFzZWQiKSYmKHRva2VuLnByZWNpc2lvbj1wcmVjaXNpb24sYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpfX0sYWN0aW9ucy50cmFuc2Zlck93bmVyc2hpcD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx0bzp0byxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnRvJiYic3RyaW5nIj09dHlwZW9mIHRvLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKHRva2VuJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTthcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmKHRva2VuLmlzc3Vlcj1maW5hbFRvLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKX19fSxhY3Rpb25zLmNyZWF0ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bmFtZTpuYW1lLHN5bWJvbDpzeW1ib2wsdXJsOnVybCxwcmVjaXNpb246cHJlY2lzaW9uLG1heFN1cHBseTptYXhTdXBwbHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHt0b2tlbkNyZWF0aW9uRmVlOnRva2VuQ3JlYXRpb25GZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxhdXRob3JpemVkQ3JlYXRpb249ISFhcGkuQmlnTnVtYmVyKHRva2VuQ3JlYXRpb25GZWUpLmx0ZSgwKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZSh0b2tlbkNyZWF0aW9uRmVlKTtpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWRDcmVhdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBjcmVhdGlvbiBmZWVzIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmKHZvaWQgMD09PXVybHx8dXJsJiYic3RyaW5nIj09dHlwZW9mIHVybCkmJihwcmVjaXNpb24mJiJudW1iZXIiPT10eXBlb2YgcHJlY2lzaW9ufHwwPT09cHJlY2lzaW9uKSYmbWF4U3VwcGx5JiYic3RyaW5nIj09dHlwZW9mIG1heFN1cHBseSYmIWFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KHN5bWJvbC5sZW5ndGg+MCYmc3ltYm9sLmxlbmd0aDw9MTAmJmFwaS52YWxpZGF0b3IuaXNBbHBoYShhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChzeW1ib2wsIi4iKSkmJmFwaS52YWxpZGF0b3IuaXNVcHBlcmNhc2Uoc3ltYm9sKSYmKC0xPT09c3ltYm9sLmluZGV4T2YoIi4iKXx8c3ltYm9sLmluZGV4T2YoIi4iKT4wJiZzeW1ib2wuaW5kZXhPZigiLiIpPHN5bWJvbC5sZW5ndGgtMSYmc3ltYm9sLmluZGV4T2YoIi4iKT09PXN5bWJvbC5sYXN0SW5kZXhPZigiLiIpKSwnaW52YWxpZCBzeW1ib2w6IHVwcGVyY2FzZSBsZXR0ZXJzIG9ubHkgYW5kIG9uZSAiLiIgYWxsb3dlZCwgbWF4IGxlbmd0aCBvZiAxMCcpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PVJFU0VSVkVEX1NZTUJPTFNbc3ltYm9sXXx8YXBpLnNlbmRlcj09PVJFU0VSVkVEX1NZTUJPTFNbc3ltYm9sXSwiY2Fubm90IHVzZSB0aGlzIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoYXBpLnZhbGlkYXRvci5ibGFja2xpc3QobmFtZSwiICIpKSYmbmFtZS5sZW5ndGg+MCYmbmFtZS5sZW5ndGg8PTUwLCJpbnZhbGlkIG5hbWU6IGxldHRlcnMsIG51bWJlcnMsIHdoaXRlc3BhY2VzIG9ubHksIG1heCBsZW5ndGggb2YgNTAiKSYmYXBpLmFzc2VydCh2b2lkIDA9PT11cmx8fHVybC5sZW5ndGg8PTI1NSwiaW52YWxpZCB1cmw6IG1heCBsZW5ndGggb2YgMjU1IikmJmFwaS5hc3NlcnQocHJlY2lzaW9uPj0wJiZwcmVjaXNpb248PTgmJk51bWJlci5pc0ludGVnZXIocHJlY2lzaW9uKSwiaW52YWxpZCBwcmVjaXNpb24iKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkuZ3QoMCksIm1heFN1cHBseSBtdXN0IGJlIHBvc2l0aXZlIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihtYXhTdXBwbHkpLmx0ZShOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiksIm1heFN1cHBseSBtdXN0IGJlIGxvd2VyIHRoYW4gIitOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsPT09dG9rZW4sInN5bWJvbCBhbHJlYWR5IGV4aXN0cyIpKXtsZXQgbWV0YWRhdGE9e3VybDp2b2lkIDA9PT11cmw/IiI6dXJsfTttZXRhZGF0YT1KU09OLnN0cmluZ2lmeShtZXRhZGF0YSk7Y29uc3QgbmV3VG9rZW49e2lzc3VlcjphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2wsbmFtZTpuYW1lLG1ldGFkYXRhOm1ldGFkYXRhLHByZWNpc2lvbjpwcmVjaXNpb24sbWF4U3VwcGx5OmFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS50b0ZpeGVkKHByZWNpc2lvbiksc3VwcGx5OiIwIixjaXJjdWxhdGluZ1N1cHBseToiMCIsc3Rha2luZ0VuYWJsZWQ6ITEsdW5zdGFraW5nQ29vbGRvd246MSxkZWxlZ2F0aW9uRW5hYmxlZDohMSx1bmRlbGVnYXRpb25Db29sZG93bjowfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJ0b2tlbnMiLG5ld1Rva2VuKSxhcGkuQmlnTnVtYmVyKHRva2VuQ3JlYXRpb25GZWUpLmd0KDApJiZhd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OnRva2VuQ3JlYXRpb25GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pfX19LGFjdGlvbnMuaXNzdWU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3RvOnRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0byYmInN0cmluZyI9PXR5cGVvZiB0byYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYWxsb3dlZCB0byBpc3N1ZSB0b2tlbnMiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgaXNzdWUgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHRva2VuLm1heFN1cHBseSkubWludXModG9rZW4uc3VwcGx5KS5ndGUocXVhbnRpdHkpLCJxdWFudGl0eSBleGNlZWRzIGF2YWlsYWJsZSBzdXBwbHkiKSYmYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikpe2xldCByZXM9YXdhaXQgYWRkQmFsYW5jZSh0b2tlbi5pc3N1ZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIik7ITA9PT1yZXMmJmZpbmFsVG8hPT10b2tlbi5pc3N1ZXImJmF3YWl0IHN1YkJhbGFuY2UodG9rZW4uaXNzdWVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpJiYocmVzPWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSwhMT09PXJlcyYmYXdhaXQgYWRkQmFsYW5jZSh0b2tlbi5pc3N1ZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikpLCEwPT09cmVzJiYodG9rZW4uc3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uc3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksIm51bGwiIT09ZmluYWxUbyYmKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksYXBpLmVtaXQoInRyYW5zZmVyRnJvbUNvbnRyYWN0Iix7ZnJvbToidG9rZW5zIix0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fX0sYWN0aW9ucy5pc3N1ZVRvQ29udHJhY3Q9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3RvOnRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0byYmInN0cmluZyI9PXR5cGVvZiB0byYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJub3QgYWxsb3dlZCB0byBpc3N1ZSB0b2tlbnMiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgaXNzdWUgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHRva2VuLm1heFN1cHBseSkubWludXModG9rZW4uc3VwcGx5KS5ndGUocXVhbnRpdHkpLCJxdWFudGl0eSBleGNlZWRzIGF2YWlsYWJsZSBzdXBwbHkiKSYmYXBpLmFzc2VydChmaW5hbFRvLmxlbmd0aD49MyYmZmluYWxUby5sZW5ndGg8PTUwLCJpbnZhbGlkIHRvIikpeyEwPT09YXdhaXQgYWRkQmFsYW5jZShmaW5hbFRvLHRva2VuLHF1YW50aXR5LCJjb250cmFjdHNCYWxhbmNlcyIpJiYodG9rZW4uc3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uc3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksIm51bGwiIT09ZmluYWxUbyYmKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksYXBpLmVtaXQoImlzc3VlVG9Db250cmFjdCIse2Zyb206InRva2VucyIsdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX19LGFjdGlvbnMudHJhbnNmZXI9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3RvOnRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0byYmInN0cmluZyI9PXR5cGVvZiB0byYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGZpbmFsVG8hPT1hcGkuc2VuZGVyLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1BQ0NPVU5UX0JMQUNLTElTVFtmaW5hbFRvXSwibm90IGFsbG93ZWQgdG8gc2VuZCB0byAiK2ZpbmFsVG8pKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgdHJhbnNmZXIgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpKXtyZXR1cm4hMT09PWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKT8oYXdhaXQgYWRkQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpLCExKTooIm51bGwiPT09ZmluYWxUbyYmKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSksYXBpLmVtaXQoInRyYW5zZmVyIix7ZnJvbTphcGkuc2VuZGVyLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCEwKX19fXJldHVybiExfSxhY3Rpb25zLnRyYW5zZmVyVG9Db250cmFjdD1hc3luYyBwYXlsb2FkPT57Y29uc3R7ZnJvbTpmcm9tLHRvOnRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxmaW5hbEZyb209dm9pZCAwPT09ZnJvbXx8Im51bGwiIT09YXBpLnNlbmRlcj9hcGkuc2VuZGVyOmZyb207aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleXx8Im51bGwiPT09YXBpLnNlbmRlciwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCkudG9Mb3dlckNhc2UoKTtpZihhcGkuYXNzZXJ0KGZpbmFsVG8hPT1maW5hbEZyb20sImNhbm5vdCB0cmFuc2ZlciB0byBzZWxmIikmJmFwaS5hc3NlcnQoZmluYWxUby5sZW5ndGg+PTMmJmZpbmFsVG8ubGVuZ3RoPD01MCwiaW52YWxpZCB0byIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgdHJhbnNmZXIgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShmaW5hbEZyb20sdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikpeyExPT09YXdhaXQgYWRkQmFsYW5jZShmaW5hbFRvLHRva2VuLHF1YW50aXR5LCJjb250cmFjdHNCYWxhbmNlcyIpP2F3YWl0IGFkZEJhbGFuY2UoZmluYWxGcm9tLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpOigibnVsbCI9PT1maW5hbFRvJiYodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKSxhcGkuZW1pdCgidHJhbnNmZXJUb0NvbnRyYWN0Iix7ZnJvbTpmaW5hbEZyb20sdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX19fSxhY3Rpb25zLnRyYW5zZmVyRnJvbUNvbnRyYWN0PWFzeW5jIHBheWxvYWQ9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0e2Zyb206ZnJvbSx0bzp0byxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHR5cGU6dHlwZX09cGF5bG9hZCx0eXBlcz1bInVzZXIiLCJjb250cmFjdCJdO2lmKGFwaS5hc3NlcnQodG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJmZyb20mJiJzdHJpbmciPT10eXBlb2YgZnJvbSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdHlwZSYmdHlwZXMuaW5jbHVkZXModHlwZSkmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCksdGFibGU9InVzZXIiPT09dHlwZT8iYmFsYW5jZXMiOiJjb250cmFjdHNCYWxhbmNlcyI7aWYoYXBpLmFzc2VydCgidXNlciI9PT10eXBlfHwiY29udHJhY3QiPT09dHlwZSYmZmluYWxUbyE9PWZyb20sImNhbm5vdCB0cmFuc2ZlciB0byBzZWxmIikpe2NvbnN0IHRvVmFsaWQ9InVzZXIiPT09dHlwZT9hcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pOmZpbmFsVG8ubGVuZ3RoPj0zJiZmaW5hbFRvLmxlbmd0aDw9NTA7aWYoYXBpLmFzc2VydCghMD09PXRvVmFsaWQsImludmFsaWQgdG8iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHRyYW5zZmVyIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN1YkJhbGFuY2UoZnJvbSx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKSl7ITE9PT1hd2FpdCBhZGRCYWxhbmNlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHksdGFibGUpP2F3YWl0IGFkZEJhbGFuY2UoZnJvbSx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKTooIm51bGwiPT09ZmluYWxUbyYmKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSksYXBpLmVtaXQoInRyYW5zZmVyRnJvbUNvbnRyYWN0Iix7ZnJvbTpmcm9tLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19fX19fTtjb25zdCBwcm9jZXNzVW5zdGFrZT1hc3luYyB1bnN0YWtlPT57Y29uc3R7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHkscXVhbnRpdHlMZWZ0OnF1YW50aXR5TGVmdCxudW1iZXJUcmFuc2FjdGlvbnNMZWZ0Om51bWJlclRyYW5zYWN0aW9uc0xlZnR9PXVuc3Rha2UsbmV3VW5zdGFrZT11bnN0YWtlLGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2x9KSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2xldCB0b2tlbnNUb1JlbGVhc2U9MDtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0IikmJigxPT09bnVtYmVyVHJhbnNhY3Rpb25zTGVmdD8odG9rZW5zVG9SZWxlYXNlPXF1YW50aXR5TGVmdCxhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5zdGFrZXMiLHVuc3Rha2UpKToodG9rZW5zVG9SZWxlYXNlPWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmRpdmlkZWRCeSh0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnMpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksbmV3VW5zdGFrZS5xdWFudGl0eUxlZnQ9YXBpLkJpZ051bWJlcihuZXdVbnN0YWtlLnF1YW50aXR5TGVmdCkubWludXModG9rZW5zVG9SZWxlYXNlKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksbmV3VW5zdGFrZS5udW1iZXJUcmFuc2FjdGlvbnNMZWZ0LT0xLG5ld1Vuc3Rha2UubmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wPWFwaS5CaWdOdW1iZXIobmV3VW5zdGFrZS5uZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXApLnBsdXMobmV3VW5zdGFrZS5taWxsaXNlY1BlclBlcmlvZCkudG9OdW1iZXIoKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwZW5kaW5nVW5zdGFrZXMiLG5ld1Vuc3Rha2UpKSxhcGkuQmlnTnVtYmVyKHRva2Vuc1RvUmVsZWFzZSkuZ3QoMCkpKXtjb25zdCBvcmlnaW5hbEJhbGFuY2U9YmFsYW5jZS5iYWxhbmNlLG9yaWdpbmFsUGVuZGluZ1N0YWtlPWJhbGFuY2UucGVuZGluZ1Vuc3Rha2U7YmFsYW5jZS5iYWxhbmNlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5iYWxhbmNlLHRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITApLGJhbGFuY2UucGVuZGluZ1Vuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnBlbmRpbmdVbnN0YWtlLHRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLnBlbmRpbmdVbnN0YWtlKS5sdChvcmlnaW5hbFBlbmRpbmdTdGFrZSkmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5iYWxhbmNlKS5ndChvcmlnaW5hbEJhbGFuY2UpLCJjYW5ub3Qgc3VidHJhY3QiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSx0b2tlbi50b3RhbFN0YWtlZD1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnRvdGFsU3Rha2VkLHRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLGFwaS5lbWl0KCJ1bnN0YWtlIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6dG9rZW5zVG9SZWxlYXNlfSkpfX07YWN0aW9ucy5jaGVja1BlbmRpbmdVbnN0YWtlcz1hc3luYygpPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCk7bGV0IHBlbmRpbmdVbnN0YWtlcz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1Vuc3Rha2VzIix7bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19KSxuYlBlbmRpbmdVbnN0YWtlcz1wZW5kaW5nVW5zdGFrZXMubGVuZ3RoO2Zvcig7bmJQZW5kaW5nVW5zdGFrZXM+MDspe2ZvcihsZXQgaW5kZXg9MDtpbmRleDxuYlBlbmRpbmdVbnN0YWtlcztpbmRleCs9MSl7Y29uc3QgcGVuZGluZ1Vuc3Rha2U9cGVuZGluZ1Vuc3Rha2VzW2luZGV4XTthd2FpdCBwcm9jZXNzVW5zdGFrZShwZW5kaW5nVW5zdGFrZSl9cGVuZGluZ1Vuc3Rha2VzPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5zdGFrZXMiLHtuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6eyRsdGU6dGltZXN0YW1wfX0pLG5iUGVuZGluZ1Vuc3Rha2VzPXBlbmRpbmdVbnN0YWtlcy5sZW5ndGh9fX0sYWN0aW9ucy5lbmFibGVTdGFraW5nPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHVuc3Rha2luZ0Nvb2xkb3duOnVuc3Rha2luZ0Nvb2xkb3duLG51bWJlclRyYW5zYWN0aW9uczpudW1iZXJUcmFuc2FjdGlvbnMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtlbmFibGVTdGFraW5nRmVlOmVuYWJsZVN0YWtpbmdGZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxlbm91Z2hGdW5kcz11dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGVuYWJsZVN0YWtpbmdGZWUpLGF1dGhvcml6ZWQ9dm9pZCAwPT09ZW5hYmxlU3Rha2luZ0ZlZXx8YXBpLkJpZ051bWJlcihlbmFibGVTdGFraW5nRmVlKS5sdGUoMCl8fGVub3VnaEZ1bmRzO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZCwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyICBmZWVzIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wsImludmFsaWQgc3ltYm9sIikmJmFwaS5hc3NlcnQodW5zdGFraW5nQ29vbGRvd24mJk51bWJlci5pc0ludGVnZXIodW5zdGFraW5nQ29vbGRvd24pJiZ1bnN0YWtpbmdDb29sZG93bj4wJiZ1bnN0YWtpbmdDb29sZG93bjw9MTgyNTAsInVuc3Rha2luZ0Nvb2xkb3duIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDE4MjUwIikmJmFwaS5hc3NlcnQobnVtYmVyVHJhbnNhY3Rpb25zJiZOdW1iZXIuaXNJbnRlZ2VyKG51bWJlclRyYW5zYWN0aW9ucykmJm51bWJlclRyYW5zYWN0aW9ucz4wJiZudW1iZXJUcmFuc2FjdGlvbnM8PTE4MjUwLCJudW1iZXJUcmFuc2FjdGlvbnMgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTgyNTAiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTthcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWR8fCExPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgYWxyZWFkeSBlbmFibGVkIikmJih0b2tlbi5zdGFraW5nRW5hYmxlZD0hMCx0b2tlbi50b3RhbFN0YWtlZD0iMCIsdG9rZW4udW5zdGFraW5nQ29vbGRvd249dW5zdGFraW5nQ29vbGRvd24sdG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zPW51bWJlclRyYW5zYWN0aW9ucyxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuQmlnTnVtYmVyKGVuYWJsZVN0YWtpbmdGZWUpLmd0KDApJiZhd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmVuYWJsZVN0YWtpbmdGZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pKX19LGFjdGlvbnMuc3Rha2U9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdG86dG8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pLGZpbmFsVG89dG8udHJpbSgpO2lmKGFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBzdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikpeyExPT09YXdhaXQgYWRkU3Rha2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSk/YXdhaXQgYWRkQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpOmFwaS5lbWl0KCJzdGFrZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSl9fX0sYWN0aW9ucy5zdGFrZUZyb21Db250cmFjdD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSx0bzp0byxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQ7aWYoY2FsbGluZ0NvbnRyYWN0SW5mbyYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pLGZpbmFsVG89dG8udHJpbSgpO2lmKGFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBzdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKGNhbGxpbmdDb250cmFjdEluZm8ubmFtZSx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKSl7ITE9PT1hd2FpdCBhZGRTdGFrZShmaW5hbFRvLHRva2VuLHF1YW50aXR5KT9hd2FpdCBhZGRCYWxhbmNlKGNhbGxpbmdDb250cmFjdEluZm8ubmFtZSx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTphcGkuZW1pdCgic3Rha2VGcm9tQ29udHJhY3QiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pfX19O2NvbnN0IHN0YXJ0VW5zdGFrZT1hc3luYyhhY2NvdW50LHRva2VuLHF1YW50aXR5KT0+e2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLGNvb2xkb3duUGVyaW9kTWlsbGlzZWM9MjQqdG9rZW4udW5zdGFraW5nQ29vbGRvd24qMzYwMCoxZTMsbWlsbGlzZWNQZXJQZXJpb2Q9YXBpLkJpZ051bWJlcihjb29sZG93blBlcmlvZE1pbGxpc2VjKS5kaXZpZGVkQnkodG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zKS5pbnRlZ2VyVmFsdWUoYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS5wbHVzKG1pbGxpc2VjUGVyUGVyaW9kKS50b051bWJlcigpLHVuc3Rha2U9e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHF1YW50aXR5TGVmdDpxdWFudGl0eSxuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wLG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6dG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zLG1pbGxpc2VjUGVyUGVyaW9kOm1pbGxpc2VjUGVyUGVyaW9kLHR4SUQ6YXBpLnRyYW5zYWN0aW9uSWR9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBlbmRpbmdVbnN0YWtlcyIsdW5zdGFrZSl9O2FjdGlvbnMudW5zdGFrZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTthcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoITA9PT10b2tlbi5zdGFraW5nRW5hYmxlZCwic3Rha2luZyBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB1bnN0YWtlIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN1YlN0YWtlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHkpJiYoYXdhaXQgc3RhcnRVbnN0YWtlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHkpLGFwaS5lbWl0KCJ1bnN0YWtlU3RhcnQiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19O2NvbnN0IHByb2Nlc3NDYW5jZWxVbnN0YWtlPWFzeW5jIHVuc3Rha2U9Pntjb25zdHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eUxlZnQ6cXVhbnRpdHlMZWZ0fT11bnN0YWtlLGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2x9KSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UpLmd0ZShxdWFudGl0eUxlZnQpLCJvdmVyZHJhd24gcGVuZGluZ1Vuc3Rha2UiKSl7Y29uc3Qgb3JpZ2luYWxTdGFrZT1iYWxhbmNlLnN0YWtlLG9yaWdpbmFsUGVuZGluZ1N0YWtlPWJhbGFuY2UucGVuZGluZ1Vuc3Rha2U7aWYoYmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UscXVhbnRpdHlMZWZ0LHRva2VuLnByZWNpc2lvbiwhMCksYmFsYW5jZS5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UscXVhbnRpdHlMZWZ0LHRva2VuLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UpLmx0KG9yaWdpbmFsUGVuZGluZ1N0YWtlKSYmYXBpLkJpZ051bWJlcihiYWxhbmNlLnN0YWtlKS5ndChvcmlnaW5hbFN0YWtlKSwiY2Fubm90IHN1YnRyYWN0IikpcmV0dXJuIGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSxhcGkuZW1pdCgidW5zdGFrZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5TGVmdH0pLCEwfXJldHVybiExfTthY3Rpb25zLmNhbmNlbFVuc3Rha2U9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3R4SUQ6dHhJRCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHR4SUQmJiJzdHJpbmciPT10eXBlb2YgdHhJRCwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdW5zdGFrZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGVuZGluZ1Vuc3Rha2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHR4SUQ6dHhJRH0pO2FwaS5hc3NlcnQodW5zdGFrZSwidW5zdGFrZSBkb2VzIG5vdCBleGlzdCIpJiZhd2FpdCBwcm9jZXNzQ2FuY2VsVW5zdGFrZSh1bnN0YWtlKSYmYXdhaXQgYXBpLmRiLnJlbW92ZSgicGVuZGluZ1Vuc3Rha2VzIix1bnN0YWtlKX19LGFjdGlvbnMuZW5hYmxlRGVsZWdhdGlvbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx1bmRlbGVnYXRpb25Db29sZG93bjp1bmRlbGVnYXRpb25Db29sZG93bixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2VuYWJsZURlbGVnYXRpb25GZWU6ZW5hYmxlRGVsZWdhdGlvbkZlZX09cGFyYW1zLHV0aWxpdHlUb2tlbkJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGVub3VnaEZ1bmRzPXV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUoZW5hYmxlRGVsZWdhdGlvbkZlZSksYXV0aG9yaXplZD12b2lkIDA9PT1lbmFibGVEZWxlZ2F0aW9uRmVlfHxhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmx0ZSgwKXx8ZW5vdWdoRnVuZHM7aWYoYXBpLmFzc2VydChhdXRob3JpemVkLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgIGZlZXMiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCwiaW52YWxpZCBzeW1ib2wiKSYmYXBpLmFzc2VydCh1bmRlbGVnYXRpb25Db29sZG93biYmTnVtYmVyLmlzSW50ZWdlcih1bmRlbGVnYXRpb25Db29sZG93bikmJnVuZGVsZWdhdGlvbkNvb2xkb3duPjAmJnVuZGVsZWdhdGlvbkNvb2xkb3duPD0xODI1MCwidW5kZWxlZ2F0aW9uQ29vbGRvd24gbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTgyNTAiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTthcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQoITA9PT10b2tlbi5zdGFraW5nRW5hYmxlZCwic3Rha2luZyBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXRva2VuLmRlbGVnYXRpb25FbmFibGVkfHwhMT09PXRva2VuLmRlbGVnYXRpb25FbmFibGVkLCJkZWxlZ2F0aW9uIGFscmVhZHkgZW5hYmxlZCIpJiYodG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQ9ITAsdG9rZW4udW5kZWxlZ2F0aW9uQ29vbGRvd249dW5kZWxlZ2F0aW9uQ29vbGRvd24sYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksYXBpLkJpZ051bWJlcihlbmFibGVEZWxlZ2F0aW9uRmVlKS5ndCgwKSYmYXdhaXQgYWN0aW9ucy50cmFuc2Zlcih7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTplbmFibGVEZWxlZ2F0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSl9fSxhY3Rpb25zLmRlbGVnYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHRvOnRvLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCk7aWYoYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXRva2VuLmRlbGVnYXRpb25FbmFibGVkLCJkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoZmluYWxUbyE9PWFwaS5zZW5kZXIsImNhbm5vdCBkZWxlZ2F0ZSB0byB5b3Vyc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IGRlbGVnYXRlIHBvc2l0aXZlIHF1YW50aXR5Iikpe2NvbnN0IGJhbGFuY2VGcm9tPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZUZyb20sImJhbGFuY2VGcm9tIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlRnJvbS5zdGFrZSkuZ3RlKHF1YW50aXR5KSwib3ZlcmRyYXduIHN0YWtlIikpe3ZvaWQgMD09PWJhbGFuY2VGcm9tLnN0YWtlPyhiYWxhbmNlRnJvbS5zdGFrZT0iMCIsYmFsYW5jZUZyb20ucGVuZGluZ1Vuc3Rha2U9IjAiLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zSW49IjAiLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PSIwIixiYWxhbmNlRnJvbS5wZW5kaW5nVW5kZWxlZ2F0aW9ucz0iMCIpOnZvaWQgMD09PWJhbGFuY2VGcm9tLmRlbGVnYXRpb25zSW4mJihiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luPSIwIixiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dD0iMCIsYmFsYW5jZUZyb20ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiLGJhbGFuY2VGcm9tLmRlbGVnYXRlZFN0YWtlJiYoZGVsZXRlIGJhbGFuY2VGcm9tLmRlbGVnYXRlZFN0YWtlLGRlbGV0ZSBiYWxhbmNlRnJvbS5yZWNlaXZlZFN0YWtlKSk7bGV0IGJhbGFuY2VUbz1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbH0pO251bGw9PT1iYWxhbmNlVG8/KGJhbGFuY2VUbz1iYWxhbmNlVGVtcGxhdGUsYmFsYW5jZVRvLmFjY291bnQ9ZmluYWxUbyxiYWxhbmNlVG8uc3ltYm9sPXN5bWJvbCxiYWxhbmNlVG89YXdhaXQgYXBpLmRiLmluc2VydCgiYmFsYW5jZXMiLGJhbGFuY2VUbykpOnZvaWQgMD09PWJhbGFuY2VUby5zdGFrZT8oYmFsYW5jZVRvLnN0YWtlPSIwIixiYWxhbmNlVG8ucGVuZGluZ1Vuc3Rha2U9IjAiLGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luPSIwIixiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQ9IjAiLGJhbGFuY2VUby5wZW5kaW5nVW5kZWxlZ2F0aW9ucz0iMCIpOnZvaWQgMD09PWJhbGFuY2VUby5kZWxlZ2F0aW9uc0luJiYoYmFsYW5jZVRvLmRlbGVnYXRpb25zSW49IjAiLGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dD0iMCIsYmFsYW5jZVRvLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIixiYWxhbmNlVG8uZGVsZWdhdGVkU3Rha2UmJihkZWxldGUgYmFsYW5jZVRvLmRlbGVnYXRlZFN0YWtlLGRlbGV0ZSBiYWxhbmNlVG8ucmVjZWl2ZWRTdGFrZSkpO2xldCBkZWxlZ2F0aW9uPWF3YWl0IGFwaS5kYi5maW5kT25lKCJkZWxlZ2F0aW9ucyIse3RvOmZpbmFsVG8sZnJvbTphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCk7bnVsbD09ZGVsZWdhdGlvbj8oYmFsYW5jZUZyb20uc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZUZyb20pLGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZVRvLmRlbGVnYXRpb25zSW4scXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZVRvKSxkZWxlZ2F0aW9uPXt9LGRlbGVnYXRpb24uZnJvbT1hcGkuc2VuZGVyLGRlbGVnYXRpb24udG89ZmluYWxUbyxkZWxlZ2F0aW9uLnN5bWJvbD1zeW1ib2wsZGVsZWdhdGlvbi5xdWFudGl0eT1xdWFudGl0eSxkZWxlZ2F0aW9uLmNyZWF0ZWQ9dGltZXN0YW1wLGRlbGVnYXRpb24udXBkYXRlZD10aW1lc3RhbXAsYXdhaXQgYXBpLmRiLmluc2VydCgiZGVsZWdhdGlvbnMiLGRlbGVnYXRpb24pLGFwaS5lbWl0KCJkZWxlZ2F0ZSIse3RvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKTooYmFsYW5jZUZyb20uc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZUZyb20pLGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZVRvLmRlbGVnYXRpb25zSW4scXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZVRvKSxkZWxlZ2F0aW9uLnF1YW50aXR5PWNhbGN1bGF0ZUJhbGFuY2UoZGVsZWdhdGlvbi5xdWFudGl0eSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGRlbGVnYXRpb24udXBkYXRlZD10aW1lc3RhbXAsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiZGVsZWdhdGlvbnMiLGRlbGVnYXRpb24pLGFwaS5lbWl0KCJkZWxlZ2F0ZSIse3RvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19fX19LGFjdGlvbnMudW5kZWxlZ2F0ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxmcm9tOmZyb20saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZmcm9tJiYic3RyaW5nIj09dHlwZW9mIGZyb20mJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxGcm9tPWZyb20udHJpbSgpO2lmKGFwaS5hc3NlcnQoZmluYWxGcm9tLmxlbmd0aD49MyYmZmluYWxGcm9tLmxlbmd0aDw9MTYsImludmFsaWQgZnJvbSIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoITA9PT10b2tlbi5kZWxlZ2F0aW9uRW5hYmxlZCwiZGVsZWdhdGlvbiBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGZpbmFsRnJvbSE9PWFwaS5zZW5kZXIsImNhbm5vdCB1bmRlbGVnYXRlIGZyb20geW91cnNlbGYiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB1bmRlbGVnYXRlIHBvc2l0aXZlIHF1YW50aXR5Iikpe2NvbnN0IGJhbGFuY2VUbz1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2VUbywiYmFsYW5jZVRvIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQpLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBkZWxlZ2F0aW9uIikpe2NvbnN0IGJhbGFuY2VGcm9tPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6ZmluYWxGcm9tLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlRnJvbSwiYmFsYW5jZUZyb20gZG9lcyBub3QgZXhpc3QiKSl7Y29uc3QgZGVsZWdhdGlvbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgiZGVsZWdhdGlvbnMiLHt0bzpmaW5hbEZyb20sZnJvbTphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1kZWxlZ2F0aW9uLCJkZWxlZ2F0aW9uIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihkZWxlZ2F0aW9uLnF1YW50aXR5KS5ndGUocXVhbnRpdHkpLCJvdmVyZHJhd24gZGVsZWdhdGlvbiIpKXtiYWxhbmNlVG8ucGVuZGluZ1VuZGVsZWdhdGlvbnM9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5wZW5kaW5nVW5kZWxlZ2F0aW9ucyxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dD1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dCxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlVG8pLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VGcm9tKSxkZWxlZ2F0aW9uLnF1YW50aXR5PWNhbGN1bGF0ZUJhbGFuY2UoZGVsZWdhdGlvbi5xdWFudGl0eSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGFwaS5CaWdOdW1iZXIoZGVsZWdhdGlvbi5xdWFudGl0eSkuZ3QoMCk/YXdhaXQgYXBpLmRiLnVwZGF0ZSgiZGVsZWdhdGlvbnMiLGRlbGVnYXRpb24pOmF3YWl0IGFwaS5kYi5yZW1vdmUoImRlbGVnYXRpb25zIixkZWxlZ2F0aW9uKTtjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKSxjb29sZG93blBlcmlvZE1pbGxpc2VjPTI0KnRva2VuLnVuZGVsZWdhdGlvbkNvb2xkb3duKjM2MDAqMWUzLGNvbXBsZXRlVGltZXN0YW1wPWJsb2NrRGF0ZS5nZXRUaW1lKCkrY29vbGRvd25QZXJpb2RNaWxsaXNlYyx1bmRlbGVnYXRpb249e2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGNvbXBsZXRlVGltZXN0YW1wOmNvbXBsZXRlVGltZXN0YW1wLHR4SUQ6YXBpLnRyYW5zYWN0aW9uSWR9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix1bmRlbGVnYXRpb24pLGFwaS5lbWl0KCJ1bmRlbGVnYXRlU3RhcnQiLHtmcm9tOmZpbmFsRnJvbSxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSl9fX19fX19O2NvbnN0IHByb2Nlc3NVbmRlbGVnYXRpb249YXN5bmMgdW5kZWxlZ2F0aW9uPT57Y29uc3R7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9PXVuZGVsZWdhdGlvbixiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sfSksdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0Iikpe2NvbnN0IG9yaWdpbmFsU3Rha2U9YmFsYW5jZS5zdGFrZSxvcmlnaW5hbFBlbmRpbmdVbmRlbGVnYXRpb25zPWJhbGFuY2UucGVuZGluZ1VuZGVsZWdhdGlvbnM7YmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxiYWxhbmNlLnBlbmRpbmdVbmRlbGVnYXRpb25zPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5wZW5kaW5nVW5kZWxlZ2F0aW9ucyxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLnBlbmRpbmdVbmRlbGVnYXRpb25zKS5sdChvcmlnaW5hbFBlbmRpbmdVbmRlbGVnYXRpb25zKSYmYXBpLkJpZ051bWJlcihiYWxhbmNlLnN0YWtlKS5ndChvcmlnaW5hbFN0YWtlKSwiY2Fubm90IHN1YnRyYWN0IikmJihhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZSksYXdhaXQgYXBpLmRiLnJlbW92ZSgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHVuZGVsZWdhdGlvbiksYXBpLmVtaXQoInVuZGVsZWdhdGVEb25lIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fTthY3Rpb25zLmNoZWNrUGVuZGluZ1VuZGVsZWdhdGlvbnM9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpO2xldCBwZW5kaW5nVW5kZWxlZ2F0aW9ucz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHtjb21wbGV0ZVRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSksbmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz1wZW5kaW5nVW5kZWxlZ2F0aW9ucy5sZW5ndGg7Zm9yKDtuYlBlbmRpbmdVbmRlbGVnYXRpb25zPjA7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJQZW5kaW5nVW5kZWxlZ2F0aW9ucztpbmRleCs9MSl7Y29uc3QgcGVuZGluZ1VuZGVsZWdhdGlvbj1wZW5kaW5nVW5kZWxlZ2F0aW9uc1tpbmRleF07YXdhaXQgcHJvY2Vzc1VuZGVsZWdhdGlvbihwZW5kaW5nVW5kZWxlZ2F0aW9uKX1wZW5kaW5nVW5kZWxlZ2F0aW9ucz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHtjb21wbGV0ZVRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSksbmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz1wZW5kaW5nVW5kZWxlZ2F0aW9ucy5sZW5ndGh9fX07"}}}

Tokens Smart Contract | Ecency